SignalSubscription
Namespace:
namespace Lenga\Engine\Core;
class SignalSubscription
Methods
dispose
public function dispose()
isDisposed
public function isDisposed()
Example
use Lenga\Engine\Core\Behaviour;
use Lenga\Engine\Core\Signal;
use Lenga\Engine\Core\SignalSubscription;
final class Door extends Behaviour
{
public Signal $onOpened;
public function awake(): void
{
$this->onOpened = $this->createSignal();
}
public function open(): void
{
$this->onOpened->dispatch($this);
}
}
final class DoorIndicator extends Behaviour
{
public ?Door $door = null;
private ?SignalSubscription $subscription = null;
public function onEnable(): void
{
$this->subscription = $this->door?->onOpened->add(function (Door $door): void {
$this->flashIndicator();
});
}
public function onDisable(): void
{
if ($this->subscription !== null && !$this->subscription->isDisposed()) {
$this->subscription->dispose();
}
$this->subscription = null;
}
private function flashIndicator(): void
{
}
}