/// <summary> /// Defines the _vectorListTarget member and adds its events into the editor. /// </summary> protected void InitializeVector() { VectorListTarget = target as VectorList; TargetTransform = VectorListTarget.transform; OnAwake -= VectorListTarget.OnAwakened; OnMoveVertex -= VectorListTarget.MovedVertex; OnInsertVertex -= VectorListTarget.InsertedVertex; OnDeleteVertex -= VectorListTarget.DeletedVertex; OnAwake += VectorListTarget.OnAwakened; OnMoveVertex += VectorListTarget.MovedVertex; OnInsertVertex += VectorListTarget.InsertedVertex; OnDeleteVertex += VectorListTarget.DeletedVertex; VertexOrderList = new VertexOrderList(VectorListTarget.LocalVector3Coords.Count); RotationChecker = VectorListTarget.transform.rotation; }
/// <summary> /// /// </summary> /// <param name="vectorIndex"></param> /// <param name="finalPosition"></param> private void InsertVertex(int vectorIndex, Vector3 finalPosition) { var nextDist = DistanceChecker.InitialNextVertexDistance - DistanceChecker.FinalNextVertexDistance; var previousDist = DistanceChecker.InitialPreviousVertexDistance - DistanceChecker.FinalPreviousVertexDistance; int insertIndex; if (nextDist >= previousDist) { insertIndex = vectorIndex + 1; } else { insertIndex = vectorIndex; } Undo.RecordObject(target, "Insert vertex"); // Since we work only with local coords inside the method, it's not really necessary to use world coords VectorListTarget.LocalVector3Coords.Insert(insertIndex, VectorListTarget.LocalVector3Coords[vectorIndex]); VertexOrderList = new VertexOrderList(VectorListTarget.LocalVector3Coords.Count); if (insertIndex == vectorIndex) { VertexOrderList.PushLast(vectorIndex + 1); } else { VertexOrderList.PushLast(vectorIndex); } VertexInserted(vectorIndex, finalPosition); EditorHelper.MakeDirty(VectorListTarget); }