Browse Source

BlockInspector and BlockEditor changes to display correctly in 2019.1.0a13

- GUILayout.*Area no longer used was resulting in 0 pixels drawn
- Inspector height calc no longer driven by layout option that was filling 0 pixels
- Resize bar changes to correctly position and minimise incorrect values
master
desktop-maesty/steve 6 years ago
parent
commit
24ba9b3468
  1. 5
      Assets/Fungus/Scripts/Editor/BlockEditor.cs
  2. 28
      Assets/Fungus/Scripts/Editor/BlockInspector.cs

5
Assets/Fungus/Scripts/Editor/BlockEditor.cs

@ -62,9 +62,10 @@ namespace Fungus.EditorUtils
serializedObject.Update(); serializedObject.Update();
SerializedProperty blockNameProperty = serializedObject.FindProperty("blockName"); SerializedProperty blockNameProperty = serializedObject.FindProperty("blockName");
Rect blockLabelRect = new Rect(45, 5, 120, 16); //calc position as size of what we want to draw pushed up into the top bar of the inspector
Rect blockLabelRect = new Rect(45, -GUI.skin.window.padding.bottom - EditorGUIUtility.singleLineHeight * 2, 120, 16);
EditorGUI.LabelField(blockLabelRect, new GUIContent("Block Name")); EditorGUI.LabelField(blockLabelRect, new GUIContent("Block Name"));
Rect blockNameRect = new Rect(45, 21, 180, 16); Rect blockNameRect = new Rect(45, blockLabelRect.y + EditorGUIUtility.singleLineHeight, 180, 16);
EditorGUI.PropertyField(blockNameRect, blockNameProperty, new GUIContent("")); EditorGUI.PropertyField(blockNameRect, blockNameProperty, new GUIContent(""));
// Ensure block name is unique for this Flowchart // Ensure block name is unique for this Flowchart

28
Assets/Fungus/Scripts/Editor/BlockInspector.cs

@ -103,10 +103,6 @@ namespace Fungus.EditorUtils
float width = EditorGUIUtility.currentViewWidth; float width = EditorGUIUtility.currentViewWidth;
float height = windowHeight; float height = windowHeight;
// Using a custom rect area to get the correct 5px indent for the scroll views
Rect blockRect = new Rect(5, topPanelHeight, width - 5, height + 10);
GUILayout.BeginArea(blockRect);
blockScrollPos = GUILayout.BeginScrollView(blockScrollPos, GUILayout.Height(flowchart.BlockViewHeight)); blockScrollPos = GUILayout.BeginScrollView(blockScrollPos, GUILayout.Height(flowchart.BlockViewHeight));
activeBlockEditor.DrawBlockGUI(flowchart); activeBlockEditor.DrawBlockGUI(flowchart);
GUILayout.EndScrollView(); GUILayout.EndScrollView();
@ -121,7 +117,6 @@ namespace Fungus.EditorUtils
inspectCommand != null && inspectCommand != null &&
!inspectCommand.ParentBlock.Equals(block)) !inspectCommand.ParentBlock.Equals(block))
{ {
GUILayout.EndArea();
Repaint(); Repaint();
return; return;
} }
@ -143,6 +138,9 @@ namespace Fungus.EditorUtils
/// </summary> /// </summary>
protected void UpdateWindowHeight() protected void UpdateWindowHeight()
{ {
#if UNITY_2019_1_OR_NEWER
windowHeight = Screen.height * EditorGUIUtility.pixelsPerPoint;
#else
EditorGUILayout.BeginVertical(); EditorGUILayout.BeginVertical();
GUILayout.FlexibleSpace(); GUILayout.FlexibleSpace();
EditorGUILayout.EndVertical(); EditorGUILayout.EndVertical();
@ -151,13 +149,14 @@ namespace Fungus.EditorUtils
{ {
windowHeight = tempRect.height; windowHeight = tempRect.height;
} }
#endif
} }
public void DrawCommandUI(Flowchart flowchart, Command inspectCommand) public void DrawCommandUI(Flowchart flowchart, Command inspectCommand)
{ {
ResizeScrollView(flowchart); ResizeScrollView(flowchart);
GUILayout.Space(7); EditorGUILayout.Space();
activeBlockEditor.DrawButtonToolbar(); activeBlockEditor.DrawButtonToolbar();
@ -191,11 +190,9 @@ namespace Fungus.EditorUtils
GUILayout.EndScrollView(); GUILayout.EndScrollView();
GUILayout.EndArea();
// Draw the resize bar after everything else has finished drawing // Draw the resize bar after everything else has finished drawing
// This is mainly to avoid incorrect indenting. // This is mainly to avoid incorrect indenting.
Rect resizeRect = new Rect(0, topPanelHeight + flowchart.BlockViewHeight + 1, Screen.width, 4f); Rect resizeRect = new Rect(0, flowchart.BlockViewHeight, EditorGUIUtility.currentViewWidth, 4f);
GUI.color = new Color(0.64f, 0.64f, 0.64f); GUI.color = new Color(0.64f, 0.64f, 0.64f);
GUI.DrawTexture(resizeRect, EditorGUIUtility.whiteTexture); GUI.DrawTexture(resizeRect, EditorGUIUtility.whiteTexture);
resizeRect.height = 1; resizeRect.height = 1;
@ -210,16 +207,19 @@ namespace Fungus.EditorUtils
private void ResizeScrollView(Flowchart flowchart) private void ResizeScrollView(Flowchart flowchart)
{ {
Rect cursorChangeRect = new Rect(0, flowchart.BlockViewHeight + 1, Screen.width, 4f); Rect cursorChangeRect = new Rect(0, flowchart.BlockViewHeight + 1, EditorGUIUtility.currentViewWidth, 4f);
EditorGUIUtility.AddCursorRect(cursorChangeRect, MouseCursor.ResizeVertical); EditorGUIUtility.AddCursorRect(cursorChangeRect, MouseCursor.ResizeVertical);
if (Event.current.type == EventType.MouseDown && cursorChangeRect.Contains(Event.current.mousePosition)) if (cursorChangeRect.Contains(Event.current.mousePosition))
{
if (Event.current.type == EventType.MouseDown)
{ {
resize = true; resize = true;
} }
}
if (resize) if (resize && Event.current.type == EventType.Repaint)
{ {
Undo.RecordObject(flowchart, "Resize view"); Undo.RecordObject(flowchart, "Resize view");
flowchart.BlockViewHeight = Event.current.mousePosition.y; flowchart.BlockViewHeight = Event.current.mousePosition.y;
@ -231,7 +231,7 @@ namespace Fungus.EditorUtils
// This isn't standard Unity UI behavior but it is robust and safe. // This isn't standard Unity UI behavior but it is robust and safe.
if (resize && Event.current.type == EventType.MouseDrag) if (resize && Event.current.type == EventType.MouseDrag)
{ {
Rect windowRect = new Rect(0, 0, Screen.width, Screen.height); Rect windowRect = new Rect(0, 0, EditorGUIUtility.currentViewWidth, windowHeight);
if (!windowRect.Contains(Event.current.mousePosition)) if (!windowRect.Contains(Event.current.mousePosition))
{ {
resize = false; resize = false;
@ -259,7 +259,7 @@ namespace Fungus.EditorUtils
// Make sure block view is always clamped to visible area // Make sure block view is always clamped to visible area
float height = flowchart.BlockViewHeight; float height = flowchart.BlockViewHeight;
height = Mathf.Max(200, height); height = Mathf.Max(200, height);
height = Mathf.Min(Screen.height - 200,height); height = Mathf.Min(windowHeight - 200,height);
flowchart.BlockViewHeight = height; flowchart.BlockViewHeight = height;
} }

Loading…
Cancel
Save