public override void Update(KeyPoint kp)
        {
            int i = m_Value.IndexOf(kp);

            if (i != -1)
            {
                Vector3KeyPoint vkp = kp as Vector3KeyPoint;
                m_DataSource.SetValue(i, kp.Time, vkp.m_Value);
            }
        }
 public void Bind(NDistributionVector3Curve curve)
 {
     m_DataSource = curve;
     GetStream().Clear();
     for (int j = 0; j < m_DataSource.KeyCount; ++j)
     {
         Vector3KeyPoint kp = new Vector3KeyPoint();
         kp.Time    = m_DataSource.GetTime(j);
         kp.m_Value = m_DataSource.GetValue(j);
         m_Value.Add(kp);
     }
 }
        public override void AddKeyPoint(float time)
        {
            Vector3 v = m_DataSource.GetValue(time);

            m_DataSource.AddKey(v, time);
            Vector3KeyPoint kp = new Vector3KeyPoint();

            kp.m_Value = v;
            kp.Time    = time;
            m_Value.Add(kp);
            KeyPointComparer kpc = new KeyPointComparer();

            m_Value.Sort(kpc);
        }