// -------------------------------------------

        /*
         * Stop all existing animations
         */
        public bool StopAll()
        {
            for (int i = 0; i < m_inteporlateObjects.Count; i++)
            {
                IInterpolateData item = m_inteporlateObjects[i];
                item.Destroy();
                m_inteporlateObjects.RemoveAt(i);
            }
            return(false);
        }
        // -------------------------------------------

        /*
         * Stop existing gameobject
         */
        public bool Stop(GameObject _actor)
        {
            for (int i = 0; i < m_inteporlateObjects.Count; i++)
            {
                IInterpolateData item = m_inteporlateObjects[i];
                if (item.GameActor == _actor)
                {
                    item.Destroy();
                    m_inteporlateObjects.RemoveAt(i);
                    return(true);
                }
            }
            return(false);
        }
        // -------------------------------------------

        /*
         * Logic
         */
        public void Logic()
        {
            try
            {
                for (int i = 0; i < m_inteporlateObjects.Count; i++)
                {
                    IInterpolateData itemData = m_inteporlateObjects[i];
                    if (itemData.Inperpolate())
                    {
                        itemData.Destroy();
                        m_inteporlateObjects.RemoveAt(i);
                        i--;
                    }
                }
            }
            catch (Exception err) { };
            for (int j = 0; j < m_inteporlateQueue.Count; j++)
            {
                IInterpolateData newItem = m_inteporlateQueue[j];
                bool             found   = false;
                for (int i = 0; i < m_inteporlateObjects.Count; i++)
                {
                    IInterpolateData item = m_inteporlateObjects[i];
                    if ((item.GameActor == newItem.GameActor) && (item.TypeData == newItem.TypeData))
                    {
                        item.ResetData(newItem.GameActor.transform, newItem.Goal, newItem.TotalTime, 0);
                        found = true;
                    }
                }
                if (!found)
                {
                    m_inteporlateObjects.Add(newItem);
                }
                else
                {
                    newItem.Destroy();
                    newItem = null;
                }
            }
            m_inteporlateQueue.Clear();
        }