39 lines
1.0 KiB
GDScript3
Raw Normal View History

2025-01-11 00:25:52 +01:00
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