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); } }
private void DoActions(MemeController controller) { if (m_Actions == null) { return; } foreach (var t in m_Actions) { t.Invoke(controller); } }
public (int priority, Meme meme) Invoke(MemeController memeController) { return(priority : m_Priority, meme : m_Func.Invoke(memeController)); }
public void UpdateState(MemeController controller) { DoActions(controller); Acted?.Invoke(); CheckTransitions(controller); }
public void Invoke(MemeController memeController) { m_Func.Invoke(memeController); acted?.Invoke(this); }
public void Invoke(MemeController memeController) { _func?.Invoke(memeController); Acted?.Invoke(this); }