コード例 #1
0
        private void CheckTransitions(MemeController controller)
        {
            if (m_Transitions.Count == 0)
            {
                Debug.LogError($"This meme: {Name} has not transitions !");
                return;
            }
            var minPm = m_Transitions[0].Invoke(controller);

            // For each transitions, invoke the decision function
            // Get the transition with the lowest priority it is the one which will be ran
            for (var i = 1; i < m_Transitions.Count; i++)
            {
                var pm = m_Transitions[i].Invoke(controller);
                // If this transition doesn't request a change, keep iterating
                if (pm.meme == null)
                {
                    continue;
                }

                // Otherwise if we found a more important transition, pick the minimum one
                if (pm.priority < minPm.priority)
                {
                    minPm = pm;
                }
            }

            // Transition to the picked meme if it's valid
            if (minPm.meme != null)
            {
                controller.Transition(minPm.meme);
            }
        }
コード例 #2
0
 private void DoActions(MemeController controller)
 {
     if (m_Actions == null)
     {
         return;
     }
     foreach (var t in m_Actions)
     {
         t.Invoke(controller);
     }
 }
コード例 #3
0
ファイル: Transition.cs プロジェクト: akridge/niwrad
 public (int priority, Meme meme) Invoke(MemeController memeController)
 {
     return(priority : m_Priority, meme : m_Func.Invoke(memeController));
 }
コード例 #4
0
 public void UpdateState(MemeController controller)
 {
     DoActions(controller);
     Acted?.Invoke();
     CheckTransitions(controller);
 }
コード例 #5
0
ファイル: Action.cs プロジェクト: akridge/niwrad
 public void Invoke(MemeController memeController)
 {
     m_Func.Invoke(memeController);
     acted?.Invoke(this);
 }
コード例 #6
0
ファイル: Action.cs プロジェクト: louis030195/niwrad
 public void Invoke(MemeController memeController)
 {
     _func?.Invoke(memeController);
     Acted?.Invoke(this);
 }