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(); } } } }
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(); } } } }