EvilCocoGame1/addons/reactivex/disposable/scheduleddisposable.gd
2025-01-11 00:25:52 +01:00

29 lines
733 B
GDScript

extends DisposableBase
class_name ScheduledDisposable
var scheduler : SchedulerBase
var disposable : SingleAssignmentDisposable
var lock : RLock
func _init(scheduler_ : SchedulerBase, disposable_ : DisposableBase):
self.scheduler = scheduler_
self.disposable = SingleAssignmentDisposable.new()
self.disposable.disposable = disposable_
self.lock = RLock.new()
super._init()
var is_disposed:
get: return self.disposable.is_disposed
func dispose():
var action = func(_scheduler : SchedulerBase, _state):
this.disposable.dispose()
this.scheduler.schedule(action)
## Links disposable to [Object] lifetime via an [AutoDisposer]
func dispose_with(obj : Object) -> DisposableBase:
AutoDisposer.add(obj, self)
return self