public KeyframeEntry SetFrameValue(KeyFrameMode mode, int index, float value)
        {
            KeyframeEntry entry = null, root;
            for (int x = (int)mode & 0xF, y = x + ((int)mode >> 4); x < y; x++)
            {
                root = _keyRoots[x];

                if ((root._prev == root) || (root._prev._index < index))
                    entry = root;
                else
                    for (entry = root._next; (entry != root) && (entry._index <= index); entry = entry._next) ;

                entry = entry._prev;
                if (entry._index != index)
                {
                    _keyCounts[x]++;
                    entry.InsertAfter(entry = new KeyframeEntry(index, value));
                }
                else
                    entry._value = value;
            }
            return entry;
        }
        public KeyframeEntry SetFrameValue(int index, float value)
        {
            KeyframeEntry entry = null;
            if ((_keyRoot._prev == _keyRoot) || (_keyRoot._prev._index < index))
                entry = _keyRoot;
            else
                for (entry = _keyRoot._next; (entry != _keyRoot) && (entry._index <= index); entry = entry._next) ;

            entry = entry._prev;
            if (entry._index != index)
            {
                _keyCount++;
                entry.InsertAfter(entry = new KeyframeEntry(index, value));
            }
            else
                entry._value = value;

            return entry;
        }