TestGame/addons/reactivex/abc/disposable.gd

29 lines
814 B
GDScript3
Raw Normal View History

2024-12-27 21:00:07 +01:00
class_name DisposableBase
## Disposables represent Subscriptions in GDRx
## [br][br]
## Whenever [method dispose] is called, the corresponding
## action is performed, e.g. to destroy and clean up a subscription.
## This is the [b]this[/b] reference. It acts like
## [code]std::enable_shared_from_this<>[/code] and is ignored in ref-counting.
## Yes, I do know what I am doing! I coded something similar in C++!
var this
func _init():
this = self
this.unreference()
## Disposes the disposable and executes a defined action.
func dispose():
NotImplementedError.raise()
## Links disposable to [Object] lifetime via an [AutoDisposer]
func dispose_with(_obj : Object) -> DisposableBase:
NotImplementedError.raise()
return null
func _notification(what):
if what == NOTIFICATION_PREDELETE:
this.dispose()