public void Reset() { mNodes.Clear(); mState = "Reset"; mCurrentIdx = 1; mCurrentTime = 0; mRotations = false; mHermiteEndPointsMode = HermiteeEndPointsMode.AUTO; }
void SetExplicitMode() { if (mState != "Reset") throw new System.Exception("Cannot change mode after start"); mHermiteEndPointsMode = HermiteeEndPointsMode.EXPLICIT; }
public void SetAutoCloseMode(float joiningPointTime) { if (mState != "Reset") throw new System.Exception("Cannot change mode after start"); mHermiteEndPointsMode = HermiteeEndPointsMode.AUTOCLOSED; mNodes.Add(new SplineNode(mNodes[0] as SplineNode)); mNodes[mNodes.Count - 1].Time = joiningPointTime; Vector3 vInitDir = (mNodes[1].Point - mNodes[0].Point).normalized; Vector3 vEndDir = (mNodes[mNodes.Count - 2].Point - mNodes[mNodes.Count - 1].Point).normalized; float firstLength = (mNodes[1].Point - mNodes[0].Point).magnitude; float lastLength = (mNodes[mNodes.Count - 2].Point - mNodes[mNodes.Count - 1].Point).magnitude; SplineNode firstNode = new SplineNode(mNodes[0] as SplineNode); firstNode.Point = mNodes[0].Point + vEndDir * firstLength; SplineNode lastNode = new SplineNode(mNodes[mNodes.Count - 1] as SplineNode); lastNode.Point = mNodes[0].Point + vInitDir * lastLength; mNodes.Insert(0, firstNode); mNodes.Add(lastNode); }