void OnSceneGUI()
        {
            Triangle2D tri = (Triangle2D)target;

            Undo.RecordObject(tri, "Move Triangle Point");

            // Handle manual vertex movement by user.
            for (int i = 0; i < 3; ++i)
            {
                Vector3 oldPoint = tri.transform.TransformPoint(tri.GetVertex(i));
                Vector3 newPoint = Handles.FreeMoveHandle(oldPoint, Quaternion.identity, VertexSnapper.VERTEX_HANDLE_SIZE, Vector3.one * 0.1f, Handles.DotCap);

                if (tri.snapVertexPositions)
                {
                    VertexSnapper.SnapTo(tri.snapValue, ref newPoint);
                }

                if (oldPoint != newPoint)
                {
                    tri.UpdateVertex(i, tri.transform.InverseTransformPoint(newPoint));
                    tri.UpdateMesh();
                }
            }
        }
Пример #2
0
        void OnSceneGUI()
        {
            Quad2D quad = (Quad2D)target;

            Undo.RecordObject(quad, "Move Quad Point");

            // Handle manual vertex movement by user.
            for (int i = 0; i < 4; ++i)
            {
                Vector3 oldPoint = quad.transform.TransformPoint(quad.GetVertex(i));
                Vector3 newPoint = Handles.FreeMoveHandle(oldPoint, Quaternion.identity, VertexSnapper.VERTEX_HANDLE_SIZE, Vector3.one * 0.1f, Handles.DotCap);

                if (quad.snapVertexPositions)
                {
                    VertexSnapper.SnapTo(quad.snapValue, ref newPoint);
                }

                if (oldPoint != newPoint)
                {
                    quad.UpdateVertex(i, quad.transform.InverseTransformPoint(newPoint));
                    quad.UpdateMesh();
                }
            }
        }