Пример #1
0
    public void RemoveActionByTag(int tag, Transform target)
    {
        Debug.Assert(tag != MtAction.INVALID_TAG, "Invalid tag value!");
        Debug.Assert(target != null, "target can't be null!");
        if (target == null || !m_dicActionElement.ContainsKey(target))
        {
            return;
        }

        LinkedListNode <MtActionElement> element = m_dicActionElement[target];

        if (element != null)
        {
            int count = element.Value.actions.Count;
            for (int i = 0; i < count; i++)
            {
                MtAction action = element.Value.actions[i] as MtAction;
                action.Stop();
                if (action.Tag == tag && action.Target.Equals(target))
                {
                    RemoveActionAtIndex(i, element);
                    break;
                }
            }
        }
    }
Пример #2
0
    public void RemoveActionAtIndex(int index, LinkedListNode <MtActionElement> element)
    {
        MtAction action = element.Value.actions[index] as MtAction;

        action.Stop();
        element.Value.actions.RemoveAt(index);
        if (element.Value.actionIndex >= index)
        {
            element.Value.actionIndex--;
        }
        if (element.Value.actions.Count == 0)
        {
            m_dicActionElement.Remove(action.Target);
            LinkedListNode <MtActionElement> nodeTemp = element.Next;
            m_targets.Remove(element);
            m_currentTarget = nodeTemp;
        }
    }