Exemple #1
0
        public void AddModifier(IPoseModifier obj)
        {
            if (obj == null)
            {
                return;
            }

            if (modifierSet == null)
            {
                modifierSet = new OrderedIndexedSet <IPoseModifier>();
                modifierSet.Add(obj);
            }
            else if (!modifierSet.Contains(obj))
            {
                // insert obj with right priority order
                if (obj.priority > modifierSet[modifierSet.Count - 1].priority)
                {
                    modifierSet.Add(obj);
                }
                else
                {
                    for (int i = 0, imax = modifierSet.Count; i < imax; ++i)
                    {
                        if (obj.priority <= modifierSet[i].priority)
                        {
                            modifierSet.Insert(i, obj);
                            break;
                        }
                    }
                }
            }
        }
Exemple #2
0
        public bool RemoveModifier(IPoseModifier obj)
        {
            LinkedListNode <IPoseModifier> node;

            if (!modifierTable.TryGetValue(obj, out node))
            {
                return(false);
            }
            modifierTable.Remove(obj);
            modifiers.Remove(node);
            node.Value = null;
            modifiers.AddLast(node);
            return(true);
        }
        public void AddModifier(IPoseModifier obj)
        {
            if (obj == null)
            {
                return;
            }

            if (modifierSet == null)
            {
                modifierSet = new OrderedIndexedSet <IPoseModifier>();
                modifierSet.Add(obj);
            }
            else if (!modifierSet.Contains(obj))
            {
                for (int i = modifierSet.Count - 1; i >= 0; --i)
                {
                    if (modifierSet[i].priority <= obj.priority)
                    {
                        modifierSet.Insert(i + 1, obj);
                    }
                }
            }
        }
Exemple #4
0
        public void AddModifier(IPoseModifier obj)
        {
            if (obj == null || modifierTable.ContainsKey(obj))
            {
                return;
            }

            var node = modifiers.Last;

            if (node == null || node.Value != null)
            {
                node = modifiers.AddFirst(obj);
            }
            else
            {
                modifiers.Remove(node);
                node.Value = obj;
                modifiers.AddFirst(node);
            }

            modifierTable.Add(obj, node);

            // sort new modifier node
            var priorNode = node;

            while (priorNode.Next != null && priorNode.Next.Value != null && priorNode.Next.Value.priority < obj.priority)
            {
                priorNode = priorNode.Next;
            }

            if (priorNode != node)
            {
                modifiers.Remove(node);
                modifiers.AddAfter(priorNode, node);
            }
        }
Exemple #5
0
 public bool RemoveModifier(IPoseModifier obj)
 {
     return(modifierSet == null ? false : modifierSet.Remove(obj));
 }