protected virtual void OnBeforeSceneLoaded(SceneManager manager, ISceneBehaviour sceneBehaviour)
 {
     if (this.BeforeSceneCreated != null) this.BeforeSceneCreated(sceneBehaviour);
 }
 protected virtual void OnSceneStarted(SceneManager manager, ISceneBehaviour sceneBehaviour)
 {
     if (this.SceneStarted != null) this.SceneStarted(sceneBehaviour);
 }
 void ISceneBehaviourLoadOptions.OnBeforeSceneLoaded(SceneManager manager, ISceneBehaviour sceneBehaviour)
 {
     this.OnBeforeSceneLoaded(manager, sceneBehaviour);
 }
 void ISceneBehaviourLoadOptions.OnSceneStarted(SceneManager manager, ISceneBehaviour sceneBehaviour)
 {
     this.OnSceneStarted(manager, sceneBehaviour);
 }
 void ISceneBehaviourLoadOptions.OnSceneStarted(SceneManager manager, SceneLoadingEventArgs e)
 {
     this.OnSceneStarted(manager, e);
 }
 protected virtual void OnSceneLoaded(SceneManager manager, SceneLoadingEventArgs e)
 {
     if (this.SceneLoaded != null) this.SceneLoaded(e);
 }
        protected virtual void OnSceneStarted(SceneManager manager, SceneLoadingEventArgs e)
        {

        }
 protected virtual Scene GetScene(SceneManager manager)
 {
     return _scene;
 }
        protected virtual void OnBeforeSceneLoaded(SceneManager manager, SceneLoadingEventArgs e)
        {

        }
 void ISceneLoadOptions.OnSceneLoaded(SceneManager manager, SceneLoadingEventArgs e)
 {
     this.OnSceneLoaded(manager, e);
 }
 ISceneBehaviour ISceneLoadOptions.LoadCustomSceneBehaviour(SceneManager manager)
 {
     return this.LoadCustomSceneBehaviour(manager);
 }
 protected virtual ISceneBehaviour LoadCustomSceneBehaviour(SceneManager manager)
 {
     return SceneBehaviour.SceneLoadedInstance;
 }
 Scene ISceneLoadOptions.GetScene(SceneManager manager)
 {
     return this.GetScene(manager);
 }
 public void Start(SceneManager manager, ISceneLoadOptions options, ISceneBehaviour lastScene)
 {
     _manager = manager;
     _options = options;
     _lastScene = lastScene;
     _routine = manager.StartRadicalCoroutine(this.DoLoad()); //GameLoopEntry.Hook.StartRadicalCoroutine(this.DoLoad(), RadicalCoroutineDisableMode.Default);
 }
 void ISceneBehaviourLoadOptions.OnBeforeSceneLoaded(SceneManager manager, SceneLoadingEventArgs e)
 {
     this.OnBeforeSceneLoaded(manager, e);
 }
 public SceneLoadingEventArgs(SceneManager manager, ISceneBehaviour scene, ISceneBehaviourLoadOptions loadOptions)
 {
     _manager = manager;
     _scene = scene;
     _options = loadOptions;
 }
 public SceneLoadingEventArgs(SceneManager manager, ISceneLoadOptions loadOptions)
 {
     _manager = manager;
     _options = loadOptions;
 }