addSystem<S extends SceneSystem<T>> method

  1. @mustCallSuper
void addSystem<S extends SceneSystem<T>>(
  1. 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));
}