예제 #1
0
파일: Curve.cs 프로젝트: flippynips/EFZ
        /// <summary>
        /// Add the next value at the specified delta time.
        /// </summary>
        public void Add(double delta, B value)
        {
            switch (Values.Count)
            {
            case 0:
                Values.Add(value);
                Deltas.Add(delta);
                break;

            case 1:
                if (delta > Deltas[0])
                {
                    Values.Add(value);
                    Deltas.Add(delta);
                }
                else
                {
                    Values.Insert(value, 0);
                    Deltas.Insert(delta, 0);
                }
                break;

            default:
                int index = Values.Count + 1;
                while (--index > 0)
                {
                    if (Deltas[index] < delta)
                    {
                        Values.Insert(value, index);
                        Deltas.Insert(delta, index);
                        return;
                    }
                    if (Deltas[index].Equal(delta))
                    {
                        Values[index] = value;
                        return;
                    }
                }
                break;
            }
        }