Exemplo n.º 1
0
        void updateTools()
        {
            Undo.RecordObject(spriteDeformer, "Topology");
            switch (uvTools)
            {
            case UVtools.POINTS: pointTool(); break;

            case UVtools.EDGE: edgeTool(); break;

            case UVtools.DELETE: deleteTool(); break;

            case UVtools.INTERACTIVE_EDGE: interactiveEdge(); break;

            default: break;
            }

            if (Event.current.type == EventType.KeyUp)
            {
                if (Event.current.keyCode == KeyCode.Delete || Event.current.keyCode == KeyCode.Backspace)
                {
                    if (closestPoint != null)
                    {
                        spriteDeformer.RemovePoint(closestPoint);
                        updateSpriteDeformer();
                        resetParam();
                        Repaint();
                    }
                    else if (clossesDiveder != null)
                    {
                        spriteDeformer.RemoveEdge(clossesDiveder.edge);
                        updateSpriteDeformer();
                        resetParam();
                        Repaint();
                    }
                }
            }
        }
Exemplo n.º 2
0
        public virtual void inspectorWhenSelectPoints()
        {
            EditorGUILayout.LabelField("Drag mouse to select;");
            EditorGUILayout.LabelField("Ctrl + Drag to subtract seletion;");
            EditorGUILayout.LabelField("Shift + Drag to invers section;");
            EditorGUILayout.LabelField("Ctrl + Shift + Drag to append selection;");
            spriteDeformer.editorProps.savePivot = EditorGUILayout.Toggle("Save pivot", spriteDeformer.editorProps.savePivot);
            if (selectedPoints.Count > 0)
            {
                if (GUILayout.Button("Reset offset"))
                {
                    foreach (SpritePoint p in selectedPoints)
                    {
                        p.offset = Vector2.zero;
                    }
                    doItAfterMovePoints(selectedPoints.ToArray());
                    upDateMeshDate();
                }
                if (GUILayout.Button("Remove points"))
                {
                    spriteDeformer.RemovePoints(selectedPoints.ToArray());
                    selectedPoints.Clear();
                    upDateMeshDate(true);
                }
            }
            if (selectedPoints.Count == 2 && !spriteDeformer.ContainsEdge(selectedPoints[0], selectedPoints[1]))
            {
                if (GUILayout.Button("Connect as edge"))
                {
                    spriteDeformer.CreateEdge(selectedPoints[0], selectedPoints[1]);
                    upDateMeshDate(true);
                }
            }

            if (selectedPoints.Count == 2 && spriteDeformer.GetEdgeWithTwoPoints(selectedPoints[0], selectedPoints[1]) != null)
            {
                if (GUILayout.Button("Remove edge"))
                {
                    spriteDeformer.RemoveEdge(spriteDeformer.GetEdgeWithTwoPoints(selectedPoints[0], selectedPoints[1]));
                    upDateMeshDate(true);
                }
            }
            if (selectedPoints.Count > 0)
            {
                selectedPointName = selectedPoints[0].name;
                foreach (var item in selectedPoints)
                {
                    if (item.name != selectedPointName)
                    {
                        selectedPointName = "";
                        break;
                    }
                }
                string newName = EditorGUILayout.TextField("Points\' names:", selectedPointName);
                if (newName != selectedPointName && newName != "")
                {
                    foreach (var item in selectedPoints)
                    {
                        item.name = newName;
                    }
                }
            }
            if (selectedPoints.Count > 0)
            {
                float selectedZ = selectedPoints[0].offset.z;
                foreach (var item in selectedPoints)
                {
                    if (item.offset.z != selectedZ)
                    {
                        selectedZ = 0;
                    }
                }
                float newZ = EditorGUILayout.FloatField("Z:", selectedZ);
                if (newZ != selectedZ)
                {
                    foreach (var item in selectedPoints)
                    {
                        Vector3 v3 = item.offset;
                        v3.z        = newZ;
                        item.offset = v3;
                    }
                    doItAfterMovePoints(selectedPoints.ToArray());
                    upDateMeshDate();
                }
            }
            if (selectedPoints.Count > 0)
            {
                Vector2 selColOff = selectedPoints[0].colliderOffset;
                foreach (var item in selectedPoints)
                {
                    if (item.colliderOffset != selColOff)
                    {
                        selColOff = Vector2.zero;
                    }
                }
                Vector2 newSelColOff = EditorGUILayout.Vector2Field("Collider offset:", selColOff);

                if (newSelColOff != selColOff)
                {
                    foreach (var item in selectedPoints)
                    {
                        item.colliderOffset = newSelColOff;
                    }
                    if (spriteDeformer.editorProps.generateColliderInEditor)
                    {
                        spriteDeformer.GenerateCollider();
                    }
                }
            }
        }