protected virtual void OnEnable()
        {
            var sceneID = this.gameObject.scene.name;

            if (SceneHistory.First == null || SceneHistory.First.Value != sceneID)
            {
                SceneHistory.AddFirst(sceneID);
                if (SceneHistory.Count > 6)
                {
                    SceneHistory.RemoveLast();
                }
            }

            if (Persistence.GetState(this))
            {
                if (m_respawn > 0)
                {
                    var head  = SceneHistory.First.Next;
                    int steps = 0;
                    while (head != null)
                    {
                        if (head.Value == sceneID)
                        {
                            break;
                        }
                        steps++;
                        head = head.Next;
                    }

                    if (steps > m_respawn)
                    {
                        Persistence.SetState(this, false);
                    }
                    else
                    {
                        OnTriggeredBefore.Invoke();
                    }
                }
                else
                {
                    OnTriggeredBefore.Invoke();
                }
            }
        }
Example #2
0
 public override void TriggerState()
 {
     Persistence.SetState(this, true);
     GetComponent <PlayableDirector>().Play();
 }
 public override void TriggerState()
 {
     OnTrigger.Invoke();
     Persistence.SetState(this, true);
 }