Browse Source

Merge pull request #732 from stevehalliwell/2019_1a13_support

2019 1a13 support
master
Chris Gregan 6 years ago committed by GitHub
parent
commit
caf44c6b59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 32
      Assets/Fungus/Scripts/Editor/BlockEditor.cs
  2. 47
      Assets/Fungus/Scripts/Editor/BlockInspector.cs

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

@ -62,18 +62,27 @@ namespace Fungus.EditorUtils
serializedObject.Update();
SerializedProperty blockNameProperty = serializedObject.FindProperty("blockName");
Rect blockLabelRect = new Rect(45, 5, 120, 16);
EditorGUI.LabelField(blockLabelRect, new GUIContent("Block Name"));
Rect blockNameRect = new Rect(45, 21, 180, 16);
EditorGUI.PropertyField(blockNameRect, blockNameProperty, new GUIContent(""));
// Ensure block name is unique for this Flowchart
var block = target as Block;
string uniqueName = flowchart.GetUniqueBlockKey(blockNameProperty.stringValue, block);
if (uniqueName != block.BlockName)
{
blockNameProperty.stringValue = uniqueName;
//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"));
//Rect blockNameRect = new Rect(45, blockLabelRect.y + EditorGUIUtility.singleLineHeight, 180, 16);
//EditorGUI.PropertyField(blockNameRect, blockNameProperty, new GUIContent(""));
EditorGUILayout.BeginHorizontal();
EditorGUILayout.PrefixLabel(new GUIContent("Block Name"), EditorStyles.largeLabel);
EditorGUI.BeginChangeCheck();
blockNameProperty.stringValue = EditorGUILayout.TextField(blockNameProperty.stringValue);
if(EditorGUI.EndChangeCheck())
{
// Ensure block name is unique for this Flowchart
var block = target as Block;
string uniqueName = flowchart.GetUniqueBlockKey(blockNameProperty.stringValue, block);
if (uniqueName != block.BlockName)
{
blockNameProperty.stringValue = uniqueName;
}
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.Space();
serializedObject.ApplyModifiedProperties();
}
@ -119,6 +128,7 @@ namespace Fungus.EditorUtils
SerializedProperty descriptionProp = serializedObject.FindProperty("description");
EditorGUILayout.PropertyField(descriptionProp);
EditorGUILayout.Space();
DrawEventHandlerGUI(flowchart);

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

@ -28,7 +28,11 @@ namespace Fungus.EditorUtils
protected Vector2 commandScrollPos;
protected bool resize = false;
protected bool clamp = false;
protected float topPanelHeight = 50;
#if UNITY_2019_1_OR_NEWER
protected float topPanelHeight = 0;
#else
protected float topPanelHeight = 48;
#endif
protected float windowHeight = 0f;
// Cache the block and command editors so we only create and destroy them
@ -96,18 +100,12 @@ namespace Fungus.EditorUtils
activeBlockEditor = Editor.CreateEditor(block) as BlockEditor;
}
activeBlockEditor.DrawBlockName(flowchart);
UpdateWindowHeight();
float width = EditorGUIUtility.currentViewWidth;
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));
activeBlockEditor.DrawBlockName(flowchart);
activeBlockEditor.DrawBlockGUI(flowchart);
GUILayout.EndScrollView();
@ -121,7 +119,6 @@ namespace Fungus.EditorUtils
inspectCommand != null &&
!inspectCommand.ParentBlock.Equals(block))
{
GUILayout.EndArea();
Repaint();
return;
}
@ -143,21 +140,14 @@ namespace Fungus.EditorUtils
/// </summary>
protected void UpdateWindowHeight()
{
EditorGUILayout.BeginVertical();
GUILayout.FlexibleSpace();
EditorGUILayout.EndVertical();
Rect tempRect = GUILayoutUtility.GetLastRect();
if (Event.current.type == EventType.Repaint)
{
windowHeight = tempRect.height;
}
windowHeight = Screen.height * EditorGUIUtility.pixelsPerPoint;
}
public void DrawCommandUI(Flowchart flowchart, Command inspectCommand)
{
ResizeScrollView(flowchart);
GUILayout.Space(7);
EditorGUILayout.Space();
activeBlockEditor.DrawButtonToolbar();
@ -191,11 +181,9 @@ namespace Fungus.EditorUtils
GUILayout.EndScrollView();
GUILayout.EndArea();
// Draw the resize bar after everything else has finished drawing
// 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 + topPanelHeight, EditorGUIUtility.currentViewWidth, 4f);
GUI.color = new Color(0.64f, 0.64f, 0.64f);
GUI.DrawTexture(resizeRect, EditorGUIUtility.whiteTexture);
resizeRect.height = 1;
@ -210,19 +198,22 @@ namespace Fungus.EditorUtils
private void ResizeScrollView(Flowchart flowchart)
{
Rect cursorChangeRect = new Rect(0, flowchart.BlockViewHeight + 1, Screen.width, 4f);
Rect cursorChangeRect = new Rect(0, flowchart.BlockViewHeight + 1 + topPanelHeight, EditorGUIUtility.currentViewWidth, 4f);
EditorGUIUtility.AddCursorRect(cursorChangeRect, MouseCursor.ResizeVertical);
if (Event.current.type == EventType.MouseDown && cursorChangeRect.Contains(Event.current.mousePosition))
if (cursorChangeRect.Contains(Event.current.mousePosition))
{
resize = true;
if (Event.current.type == EventType.MouseDown)
{
resize = true;
}
}
if (resize)
if (resize && Event.current.type == EventType.Repaint)
{
Undo.RecordObject(flowchart, "Resize view");
flowchart.BlockViewHeight = Event.current.mousePosition.y;
flowchart.BlockViewHeight = Event.current.mousePosition.y - topPanelHeight;
}
ClampBlockViewHeight(flowchart);
@ -231,7 +222,7 @@ namespace Fungus.EditorUtils
// This isn't standard Unity UI behavior but it is robust and safe.
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))
{
resize = false;
@ -259,7 +250,7 @@ namespace Fungus.EditorUtils
// Make sure block view is always clamped to visible area
float height = flowchart.BlockViewHeight;
height = Mathf.Max(200, height);
height = Mathf.Min(Screen.height - 200,height);
height = Mathf.Min(windowHeight - 200,height);
flowchart.BlockViewHeight = height;
}

Loading…
Cancel
Save