39 lines
1.0 KiB
GDScript
39 lines
1.0 KiB
GDScript
extends Comparable
|
|
class_name ScheduledItem
|
|
|
|
## Represents a scheduled action.
|
|
|
|
var scheduler : SchedulerBase
|
|
var state
|
|
var action : Callable
|
|
var duetime : float
|
|
var disposable : SingleAssignmentDisposable
|
|
|
|
func _init(scheduler_ : SchedulerBase, duetime_ : float, state_ = null, action_ : Callable = GDRx.basic.noop):
|
|
self.scheduler = scheduler_
|
|
self.state = state_
|
|
self.action = action_
|
|
self.duetime = duetime_
|
|
self.disposable = SingleAssignmentDisposable.new()
|
|
|
|
func invoke():
|
|
var ret = self.scheduler.invoke_action(self.action, self.state)
|
|
self.disposable.disposable = ret
|
|
|
|
## Cancels the work item by disposing the resource returned by
|
|
## invoke_core as soon as possible.
|
|
func cancel():
|
|
self.disposable.dispose()
|
|
|
|
func is_cancelled() -> bool:
|
|
return self.disposable.is_disposed
|
|
|
|
func lt(other : ScheduledItem) -> bool:
|
|
return self.duetime < other.duetime
|
|
|
|
func gt(other : ScheduledItem) -> bool:
|
|
return self.duetime > other.duetime
|
|
|
|
func eq(other : ScheduledItem) -> bool:
|
|
return self.duetime == other.duetime
|