|
|
|
@ -34,6 +34,8 @@ namespace Fungus.EditorUtils
|
|
|
|
|
|
|
|
|
|
protected Texture2D addTexture; |
|
|
|
|
|
|
|
|
|
protected bool cursorZoom = true; |
|
|
|
|
|
|
|
|
|
[MenuItem("Tools/Fungus/Flowchart Window")] |
|
|
|
|
static void Init() |
|
|
|
|
{ |
|
|
|
@ -166,7 +168,13 @@ namespace Fungus.EditorUtils
|
|
|
|
|
|
|
|
|
|
GUILayout.Space(8); |
|
|
|
|
|
|
|
|
|
flowchart.Zoom = GUILayout.HorizontalSlider(flowchart.Zoom, minZoomValue, maxZoomValue, GUILayout.Width(100)); |
|
|
|
|
var newZoom = GUILayout.HorizontalSlider(flowchart.Zoom, minZoomValue, maxZoomValue, GUILayout.Width(100)); |
|
|
|
|
DoZoom(flowchart, newZoom - flowchart.Zoom, Vector2.one * 0.5f); |
|
|
|
|
|
|
|
|
|
GUILayout.Space(8); |
|
|
|
|
var toggleStyle = new GUIStyle(GUI.skin.button); |
|
|
|
|
toggleStyle.fontSize = 8; |
|
|
|
|
cursorZoom = GUILayout.Toggle(cursorZoom, " Cursor\nZoom", toggleStyle, GUILayout.Width(45), GUILayout.Height(22)); |
|
|
|
|
|
|
|
|
|
GUILayout.FlexibleSpace(); |
|
|
|
|
|
|
|
|
@ -484,12 +492,33 @@ namespace Fungus.EditorUtils
|
|
|
|
|
|
|
|
|
|
if (zoom) |
|
|
|
|
{ |
|
|
|
|
flowchart.Zoom -= Event.current.delta.y * 0.01f; |
|
|
|
|
flowchart.Zoom = Mathf.Clamp(flowchart.Zoom, minZoomValue, maxZoomValue); |
|
|
|
|
forceRepaintCount = 6; |
|
|
|
|
Vector2 zoomCenter; |
|
|
|
|
if (cursorZoom) |
|
|
|
|
{ |
|
|
|
|
zoomCenter.x = Event.current.mousePosition.x / position.width; |
|
|
|
|
zoomCenter.y = Event.current.mousePosition.y / position.height; |
|
|
|
|
zoomCenter *= flowchart.Zoom; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
zoomCenter = Vector2.one * 0.5f; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
DoZoom(flowchart, -Event.current.delta.y * 0.01f, zoomCenter); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected virtual void DoZoom(Flowchart flowchart, float delta, Vector2 center) |
|
|
|
|
{ |
|
|
|
|
var prevZoom = flowchart.Zoom; |
|
|
|
|
flowchart.Zoom += delta; |
|
|
|
|
flowchart.Zoom = Mathf.Clamp(flowchart.Zoom, minZoomValue, maxZoomValue); |
|
|
|
|
var deltaSize = position.size / prevZoom - position.size / flowchart.Zoom; |
|
|
|
|
var offset = -Vector2.Scale(deltaSize, center); |
|
|
|
|
flowchart.ScrollPos += offset; |
|
|
|
|
forceRepaintCount = 6; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected virtual void DrawGrid(Flowchart flowchart) |
|
|
|
|
{ |
|
|
|
|
float width = this.position.width / flowchart.Zoom; |
|
|
|
|