scriptName TrapTriggerTimeInterval extends TrapTriggerBase
;
;
;========================================================

float property initialDelay = 0.1 Auto
float property initialDelayRange = 0.1 auto

float property triggerInterval = 15.0 auto
{how often to trigger the trap, EG: every 15.0 seconds
	default = 15.0}
float property triggerIntervalRange = 3.0 auto
{random amount of time to increase/decrease the triggerInterval
	default = 3.0}
;NOTE: make sure that triggerInterval cannot be 0 or less.
	
float lowerTriggerIntervalRange
bool property isLoaded = false auto hidden
Cell property myParentCell auto hidden

auto state TimedFireState

	event onCellAttach()
; 		debug.Trace(self + ": should be loaded")
		isLoaded = true
		lowerTriggerIntervalRange = (0.0 - triggerIntervalRange)
		myParentCell = self.getParentCell()
		registerForSingleUpdate(math.abs(initialDelay + utility.RandomFloat(0.0, InitialDelayRange)))
	endEvent

	event onCellDetach()
; 		debug.Trace(self + ": should be unloaded")
		isLoaded = false
	endEvent


	event onUpdate()
; 		debug.Trace(self + ": has ran an update at timestamp: " + utility.getCurrentRealTime())
		if myParentCell.isAttached()
			utility.wait(0.0)
			self.activate(self)
; 			debug.Trace(self + ": has found that 3d is loaded")
			registerForSingleUpdate(triggerInterval + utility.RandomFloat(lowerTriggerIntervalRange, triggerIntervalRange))
		else
; 			debug.Trace(self + ": has found that 3d is NOT loaded")
			isLoaded = false
		endif
	endEvent
endState


event onCellAttach()
endEvent

event onCellDetach()
endEvent