You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.4 KiB
79 lines
2.4 KiB
// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus). |
|
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) |
|
|
|
using UnityEditor; |
|
using UnityEngine; |
|
using System.Collections.Generic; |
|
|
|
namespace Fungus.EditorUtils |
|
{ |
|
[CustomEditor (typeof(Label))] |
|
public class LabelEditor : CommandEditor |
|
{ |
|
protected SerializedProperty keyProp; |
|
|
|
public static void LabelField(SerializedProperty property, |
|
GUIContent labelText, |
|
Block block) |
|
{ |
|
List<string> labelKeys = new List<string>(); |
|
List<Label> labelObjects = new List<Label>(); |
|
|
|
labelKeys.Add("<None>"); |
|
labelObjects.Add(null); |
|
|
|
Label selectedLabel = property.objectReferenceValue as Label; |
|
|
|
int index = 0; |
|
int selectedIndex = 0; |
|
foreach (Command command in block.CommandList) |
|
{ |
|
Label label = command as Label; |
|
if (label == null) |
|
{ |
|
continue; |
|
} |
|
|
|
labelKeys.Add(label.Key); |
|
labelObjects.Add(label); |
|
|
|
index++; |
|
|
|
if (label == selectedLabel) |
|
{ |
|
selectedIndex = index; |
|
} |
|
} |
|
|
|
selectedIndex = EditorGUILayout.Popup(labelText.text, selectedIndex, labelKeys.ToArray()); |
|
|
|
property.objectReferenceValue = labelObjects[selectedIndex]; |
|
} |
|
|
|
protected virtual void OnEnable() |
|
{ |
|
if (NullTargetCheck()) // Check for an orphaned editor instance |
|
return; |
|
|
|
keyProp = serializedObject.FindProperty("key"); |
|
} |
|
|
|
public override void DrawCommandGUI() |
|
{ |
|
Label t = target as Label; |
|
|
|
var flowchart = (Flowchart)t.GetFlowchart(); |
|
if (flowchart == null) |
|
{ |
|
return; |
|
} |
|
|
|
serializedObject.Update(); |
|
|
|
EditorGUILayout.PropertyField(keyProp); |
|
keyProp.stringValue = flowchart.GetUniqueLabelKey(keyProp.stringValue, t); |
|
|
|
serializedObject.ApplyModifiedProperties(); |
|
} |
|
} |
|
} |