Example #1
0
        private void Update()
        {
            if (m_spline == null)
            {
                return;
            }

            if (transform.localPosition != m_localPosition)
            {
                if (m_spline.SetControlPointLocal(m_index, transform.localPosition))
                {
                    m_localPosition = transform.localPosition;
                }
                else
                {
                    transform.localPosition = m_localPosition;
                }
            }


            if (transform.rotation != m_rotation)
            {
                if (m_index % 3 == 0)
                {
                    Vector3 v         = Vector3.back;
                    int     prevIndex = m_index - 1;
                    if (prevIndex < 0)
                    {
                        prevIndex = m_index + 1;
                        v         = Vector3.forward;
                    }

                    Vector3 prevPt = m_spline.GetControlPoint(prevIndex);
                    Vector3 pt     = m_spline.GetControlPoint(m_index);
                    Vector3 toPrev = (transform.rotation * v).normalized * (pt - prevPt).magnitude;

                    Twist twist = m_spline.GetTwist(m_index);

                    m_rotation = transform.rotation;
                    twist.Data = transform.eulerAngles.z;

                    m_updateAngle = false;
                    m_spline.SetTwist(m_index, twist);
                    m_spline.SetControlPoint(prevIndex, pt + toPrev);
                    m_updateAngle = true;
                }
                else
                {
                    transform.rotation = m_rotation;
                }
            }

            Thickness thickness     = m_spline.GetThickness(m_index);
            Vector3   thicknessData = thickness.Data;

            if (transform.localScale != thicknessData)
            {
                thickness.Data = transform.localScale;
                m_spline.SetThickness(m_index, thickness);
            }
        }