addSystem<S extends SceneSystem<T> > method
- @mustCallSuper
- S system
Registers system in this scene and runs the full add lifecycle.
If a system of the same runtime type is already registered it is removed first. Emits EventSceneSystemAdding; cancellable hooks emit EventSceneSystemAddCancelled. On success emits EventSceneSystemAdded.
Implementation
@mustCallSuper
void addSystem<S extends SceneSystem<T>>(S system) {
emit(EventSceneSystemAdding(app, scene, system));
if (!_doOnBeforeSceneSystemAdd(system)) {
emit(EventSceneSystemAddCancelled(app, scene, system));
return;
}
if (!system._doOnBeforeAdd(self)) {
emit(EventSceneSystemAddCancelled(app, scene, system));
return;
}
_doOnSceneSystemAdd(system);
if (!system.isClone) system._doAdd(self);
_systems.add(system);
system._doOnAfterAdd(self);
_doOnAfterSceneSystemAdd(system);
emit(EventSceneSystemAdded(app, scene, system));
}