29 lines
814 B
GDScript3
29 lines
814 B
GDScript3
|
|
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()
|