Example #1
0
 private void DoPendingAction()
 {
     if (this._runningAction == SceneLoadTrigger.Actions.None)
     {
         this._runningAction = this._pendingAction;
         this._pendingAction = SceneLoadTrigger.Actions.None;
         SceneLoadTrigger.Actions runningAction = this._runningAction;
         if (runningAction != SceneLoadTrigger.Actions.Load)
         {
             if (runningAction != SceneLoadTrigger.Actions.Unload)
             {
                 if (runningAction == SceneLoadTrigger.Actions.CrossingEventOnly)
                 {
                     this.OnActionFinished();
                 }
             }
             else
             {
                 TheForest.Utils.Scene.ActiveMB.StartCoroutine(this.UnloadScene());
             }
         }
         else
         {
             base.StartCoroutine(this.StreamSceneRoutine());
         }
     }
 }
Example #2
0
 private void OnTriggerExit(Collider other)
 {
     if (other.CompareTag(this._triggerTag))
     {
         bool flag = Vector3.Dot(base.transform.forward, other.transform.position - base.transform.position) > 0f;
         SceneLoadTrigger.Actions actions = (!flag) ? this._backwardAction : this._forwardAction;
         if (flag)
         {
             this._onCrossingForwards.Invoke();
         }
         else if (!flag)
         {
             this._onCrossingBackwards.Invoke();
         }
         if (actions != this._runningAction && actions != this._pendingAction)
         {
             this._pendingAction = actions;
             this.DoPendingAction();
         }
     }
 }