コード例 #1
0
ファイル: HermiteCurveOld.cs プロジェクト: pavel-fadrhonc/of2
    public GameObject AddNewPoint()
    {
        if (m_Points.Count < 3)
        {
            Debug.LogWarning("Can't add point when less than two points.");
        }

        Vector3 newPos = LastPoint.position +
                         (LastPoint.position - m_Points[m_Points.Count - 2].position);

        if (m_Hermite.AddPositionNatural(newPos))
        {
            AddNewPointInternal();

            AddNewIntagentInternal(m_Hermite.Positions.Count - 1);
            AddNewOutTangentInternal(m_Hermite.Positions.Count - 2);

            return(LastPoint.gameObject);
        }

        return(null);
    }
コード例 #2
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;
            }
        }