From 31179619825c9dcc1f181d318fb6386077cd30f7 Mon Sep 17 00:00:00 2001 From: chrisgregan Date: Fri, 25 Jul 2014 16:40:24 +0100 Subject: [PATCH] Improved command highlighting. --- Assets/Fungus/Editor/FungusEditorWindow.cs | 34 +++++++++++++++--- .../Fungus/Editor/SequenceControllerEditor.cs | 22 ++++++++++++ .../Editor/SequenceControllerEditor.cs.meta | 8 +++++ .../Fungus/Tests/Sequence/SequenceTest.unity | Bin 68284 -> 67932 bytes .../Fungus/Tests/Sequence/SequenceTestRoom.cs | 2 +- Assets/Fungus/VisualScripting/Sequence.cs | 1 + .../VisualScripting/SequenceController.cs | 16 ++++++++- 7 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 Assets/Fungus/Editor/SequenceControllerEditor.cs create mode 100644 Assets/Fungus/Editor/SequenceControllerEditor.cs.meta diff --git a/Assets/Fungus/Editor/FungusEditorWindow.cs b/Assets/Fungus/Editor/FungusEditorWindow.cs index f0178c0b..10064963 100755 --- a/Assets/Fungus/Editor/FungusEditorWindow.cs +++ b/Assets/Fungus/Editor/FungusEditorWindow.cs @@ -59,6 +59,25 @@ public class FungusEditorWindow : EditorWindow return; } + string labelText = sequenceController.name; + if (Application.isPlaying) + { + if (sequenceController.activeSequence == null) + { + labelText += ": Idle"; + } + else + { + labelText += ": Active"; + } + } + + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + GUILayout.Label(labelText); + GUILayout.Space(30); + GUILayout.EndHorizontal(); + // BeginScrollView lets you specify a region that 'looks into' a much larger area. In this case, we create a canvas // 1000px X 1000px in size that's constrained to the same region as the EditorWindow. If the scrollbars are modified, // the new values are stored in the Vector2 that's returned. @@ -145,7 +164,7 @@ public class FungusEditorWindow : EditorWindow { GUI.backgroundColor = Color.red; } - else if (command.IsExecuting()) + else if (ShouldHighlight(command)) { GUI.backgroundColor = Color.yellow; } @@ -172,10 +191,10 @@ public class FungusEditorWindow : EditorWindow FungusCommand[] commands = sequence.GetComponentsInChildren(); foreach (FungusCommand command in commands) { - bool isExecuting = command.IsExecuting(); + bool highlight = ShouldHighlight(command); - if (highlightedOnly && !isExecuting || - !highlightedOnly && isExecuting) + if (highlightedOnly && !highlight || + !highlightedOnly && highlight) { continue; } @@ -202,7 +221,7 @@ public class FungusEditorWindow : EditorWindow pointB = p2; Color color = Color.grey; - if (command.IsExecuting()) + if (highlight) { color = Color.yellow; } @@ -211,4 +230,9 @@ public class FungusEditorWindow : EditorWindow } } } + + bool ShouldHighlight(FungusCommand command) + { + return (command.IsExecuting() || (FungusCommandEditor.selectedCommand == command)); + } } diff --git a/Assets/Fungus/Editor/SequenceControllerEditor.cs b/Assets/Fungus/Editor/SequenceControllerEditor.cs new file mode 100644 index 00000000..a14f9efe --- /dev/null +++ b/Assets/Fungus/Editor/SequenceControllerEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Fungus; + +[CustomEditor (typeof(SequenceController))] +public class SequenceControllerEditor : Editor +{ + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Open Fungus Editor")) + { + EditorWindow.GetWindow(typeof(FungusEditorWindow), false, "Fungus Editor"); + } + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + } +} \ No newline at end of file diff --git a/Assets/Fungus/Editor/SequenceControllerEditor.cs.meta b/Assets/Fungus/Editor/SequenceControllerEditor.cs.meta new file mode 100644 index 00000000..660bd65a --- /dev/null +++ b/Assets/Fungus/Editor/SequenceControllerEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0444d16cc20de47878a9b392aea6a4a2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Fungus/Tests/Sequence/SequenceTest.unity b/Assets/Fungus/Tests/Sequence/SequenceTest.unity index 846c522676f0c8ce3246e553b46f8cb364b740d8..cedfc0e91497b7fa3989fd369950bacff278d8f2 100644 GIT binary patch delta 933 zcmY+?PfU_=7zgm@2QN#K5eb;mpV8(a>>mayY?;h1)M&Bg5~~9&-Dqo!49lh)co$J3g*dMu^8cX*{XN@_Fl+!P&Qx9z0q(3cgCY^RZ z%)|pIE0xRT0ers=O?Db~5QVY+&F%c{X73Pe6vlY;zzBW)`2CCL1z>(yAM7W$Uf5HZ zvd0COVJA^H@&ux|{6QCiVW7N+AH3M~X6)1}SO`{WY=+tEh(@-GH*4!*8JGw5o!3sp z^u9INEk*4lENUb=4*SOQ?#1GIUk2y`e&u){i7T)nSe8c`7Bp=QC=V>h(s-kP9@dL> zWx&@ktNH)#HuJKuAy^Q3>%51p#}i(LU5P7-4*|XPL|$0sNDjl2F#ftWA9xhD0+R=< zyy_FrrXs;zM1zXwb;6cm%471t4m1#5<+XA7+`E7iKxN~TumVikc)@(;hO3b%kL`X? zZ^cx8^=89vqL&KGSS-VZJ=McZ!vcG&?}ucuG!M@M0~n&R<0nXL*jL?n1{Rgl@9Tw> zwWyIEuf9;#_}gsH6JH*6NF$%JwW2}8O!!Ziik1Qho%F7>#F#_;tY!OCi48$2ZiJam z-V|C<4i{Yt{w=Z^N-xYM3cik+Znn-;LYKIvWmeIuV#4f*iuqLHyqXDOUSQ6Yzhn}d uH0+@En4`_%aJRO(#iWKc8Rbh>i#TF$wcA@>Ujo6-4WHmi`BpW&+~? delta 997 zcmY+@Ur19?90%~NY3iP(V_`zP-=$3k{a+Ic&xkgLigo{iya-_PG2p>moOelhU|v|FuodRcCb||+-ptK~&BGMfcOy5{ zWp1?O5M52m9f1X5HL!0+-0iM_xp5v?1^jB@9R!LJQ7Z9tHHw=R|2nKKkd(Y1=+7ncz!FDN3Jb%UV2Q#9VR<{^ z4JQ8T+Q$=}L0EUvdUY@{FZGxdm zijRq<)hnI?qS+*ywAuRXyHcB(f`wo{qp)6Av)M}es4(?{JVc-$mb~Lfu&_4pK3CB0 ztvpW?mEy4{U*xBX*8VxNMGc#n#DgnYyfy0K?&wZ!HoCx=Q@tzVO>u8X+RTQZWi8@z zqbBJa)5`vQV*gih#MW5aWW72rGW+l{lcsAJYfMwiu&#R3#GG7-N@~Q!_GP#Zxhkrv mDx6ML5tt)Kzh9Xcl?P;}v(i;AyJ)&jVEqExv8Z8@js69K-4`qX diff --git a/Assets/Fungus/Tests/Sequence/SequenceTestRoom.cs b/Assets/Fungus/Tests/Sequence/SequenceTestRoom.cs index 2ecd5b47..53ccb729 100644 --- a/Assets/Fungus/Tests/Sequence/SequenceTestRoom.cs +++ b/Assets/Fungus/Tests/Sequence/SequenceTestRoom.cs @@ -8,7 +8,7 @@ public class SequenceTestRoom : Room void OnEnter() { - sequenceController.ExecuteSequence(sequenceController.activeSequence); + sequenceController.Execute(); /* Sequence s = GetComponent(); diff --git a/Assets/Fungus/VisualScripting/Sequence.cs b/Assets/Fungus/VisualScripting/Sequence.cs index 8b41c058..8e9e7660 100644 --- a/Assets/Fungus/VisualScripting/Sequence.cs +++ b/Assets/Fungus/VisualScripting/Sequence.cs @@ -110,6 +110,7 @@ namespace Fungus public void Finish() { activeCommand = null; + sequenceController.activeSequence = null; // No more commands to run in current sequence #if UNITY_EDITOR diff --git a/Assets/Fungus/VisualScripting/SequenceController.cs b/Assets/Fungus/VisualScripting/SequenceController.cs index 25656064..9cb06253 100644 --- a/Assets/Fungus/VisualScripting/SequenceController.cs +++ b/Assets/Fungus/VisualScripting/SequenceController.cs @@ -2,6 +2,7 @@ using UnityEditor; #endif using UnityEngine; +using System; using System.Collections; using Fungus; @@ -9,11 +10,24 @@ public class SequenceController : MonoBehaviour { public float stepTime; + public Sequence startSequence; + + [System.NonSerialized] public Sequence activeSequence; + public void Execute() + { + if (startSequence == null) + { + return; + } + + ExecuteSequence(startSequence); + } + public void ExecuteSequence(Sequence sequence) { - if (activeSequence == null) + if (sequence == null) { return; }