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; } }