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()); } } }
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(); } } }