Exemplo n.º 1
0
        public void ValidateClosed()
        {
            if (closed != m_ClosedInternal)
            {
                if (closed && m_Hermite.Positions[0] != m_Hermite.Positions[m_Hermite.Positions.Count - 1])
                {
                    var newPos = m_Hermite.Positions[0];

                    m_Hermite.AddPositionNatural(newPos);
                    m_Hermite.MakeUniformTimes();
                    m_Hermite.SetInTangent(m_Hermite.Positions.Count - 2, m_Hermite.OutTangents[0]);

                    points.Clear();
                    points.AddRange(m_Hermite.Positions);
                    inTangents.Clear();
                    inTangents.AddRange(m_Hermite.InTangents);
                    outTangents.Clear();
                    outTangents.AddRange(m_Hermite.OutTangents);
                    times.Clear();
                    times.AddRange(m_Hermite.Times);
                }
                else if (m_Hermite.Positions[0] == m_Hermite.Positions[m_Hermite.Positions.Count - 1])
                {
                    m_Hermite.RemovePosition(m_Hermite.Positions.Count - 1);

                    points.Clear();
                    points.AddRange(m_Hermite.Positions);
                    inTangents.Clear();
                    inTangents.AddRange(m_Hermite.InTangents);
                    outTangents.Clear();
                    outTangents.AddRange(m_Hermite.OutTangents);
                    m_Hermite.MakeUniformTimes();
                    times.Clear();
                    times.AddRange(m_Hermite.Times);
                }

                m_ClosedInternal = closed;
            }
        }