コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /// <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);
        }