53 lines
1.4 KiB
Plaintext
53 lines
1.4 KiB
Plaintext
Scriptname Trigger extends ObjectReference
|
|
{
|
|
base class for a trigger that watches for a target to enter and exit
|
|
|
|
fireTriggerEvent function is called whenever the target enters or leaves the trigger
|
|
|
|
Derive from this script, and override fireTriggerEvent function for whatever you need -- you can use IsTargetInTrigger to check if the target has just entered or left
|
|
|
|
}
|
|
|
|
bool bTargetInTrigger = false conditional
|
|
|
|
objectReference property targetRef auto
|
|
{ if None (default), watching for player
|
|
otherwise, watching for this reference
|
|
}
|
|
|
|
Event onLoad()
|
|
if targetRef == None
|
|
targetRef = (Game.GetForm(0x14) as Actor)
|
|
endif
|
|
endEvent
|
|
|
|
Event onTriggerEnter(objectReference triggerRef)
|
|
if(triggerRef == targetRef)
|
|
;target has entered the trigger
|
|
SetTargetInTrigger(true)
|
|
; debug.trace(self + " target has entered the trigger")
|
|
endif
|
|
endEvent
|
|
|
|
Event onTriggerLeave(objectReference triggerRef)
|
|
if (triggerRef == targetRef)
|
|
;target has left the trigger
|
|
SetTargetInTrigger(false)
|
|
; debug.trace(self + " target has left the trigger")
|
|
endif
|
|
endEvent
|
|
|
|
bool function IsTargetInTrigger()
|
|
return bTargetInTrigger
|
|
endFunction
|
|
|
|
; PRIVATE function - do not call from outside this script
|
|
function SetTargetInTrigger(bool isInTrigger)
|
|
bTargetInTrigger = isInTrigger
|
|
fireTriggerEvent()
|
|
endFunction
|
|
|
|
function fireTriggerEvent()
|
|
; do something when target enters/leaves trigger
|
|
endFunction
|