public bool Remove(Action <PriorityChainNode> processor) { if (head == null) { return(false); } if (head.Processor == processor) { head = head.Next; return(true); } var predecessor = head; while (predecessor.Next != null) { if (predecessor.Next.Processor == processor) { predecessor.Next = predecessor.Next.Next; return(true); } predecessor = predecessor.Next; } return(false); }
private void InitializeAndStartGame(PriorityChainNode chainNode) { InitializeRun.Invoke(); #if UNITY_EDITOR LogEvent("StartGame"); #endif GameTime.StartRace(); if (StartGame != null) { StartGame(); } chainNode.ExecuteNext(); }
/// <summary> /// Adds a new node to the chained list /// </summary> /// <param name="callbackOrder">The lower the value, the earlier this node will be called</param> /// <param name="processor">The method that will be processed</param> public void Add(int callbackOrder, Action <PriorityChainNode> processor) { var newNode = new PriorityChainNode(callbackOrder, processor); if (head == null || head.CallbackOrder > callbackOrder) { newNode.Next = head; head = newNode; return; } var predecessor = head; while (predecessor.Next != null && predecessor.Next.CallbackOrder <= callbackOrder) { predecessor = predecessor.Next; } newNode.Next = predecessor.Next; predecessor.Next = newNode; }
public int CompareTo(PriorityChainNode other) { return(CallbackOrder.CompareTo(other.CallbackOrder)); }