Browse Source

Using ReordorableList in variables window

master
chrisgregan 11 years ago
parent
commit
0cdd661ab5
  1. 15
      Assets/Fungus/Editor/FungusScript/FungusScriptEditor.cs
  2. 36
      Assets/Fungus/Editor/FungusScript/VariableList.cs
  3. 6
      Assets/Fungus/Editor/FungusScript/VariablesWindow.cs
  4. BIN
      Assets/Shuttle/ShuttleGame.unity

15
Assets/Fungus/Editor/FungusScript/FungusScriptEditor.cs

@ -67,15 +67,24 @@ namespace Fungus.Script
EditorGUILayout.LabelField(new GUIContent("Error: Please select a Start Sequence"), style);
}
ReorderableListGUI.Title("Variables");
serializedObject.ApplyModifiedProperties();
}
public void DrawVariablesGUI()
{
serializedObject.Update();
FungusScript t = target as FungusScript;
ReorderableListGUI.Title("Variables");
VariableListAdaptor adaptor = new VariableListAdaptor(variablesProperty, 0);
ReorderableListControl.DrawControlFromState(adaptor, null, ReorderableListFlags.DisableContextMenu | ReorderableListFlags.HideAddButton);
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
if (GUILayout.Button("Add Variable"))
if (!Application.isPlaying && GUILayout.Button("Add Variable"))
{
GenericMenu menu = new GenericMenu ();

36
Assets/Fungus/Editor/FungusScript/VariableList.cs

@ -134,11 +134,41 @@ namespace Fungus.Script
GUI.Label(typeRect, type);
EditorGUI.BeginChangeCheck();
string key = EditorGUI.TextField(keyRect, variable.key);
string key = variable.key;
if (Application.isPlaying)
{
const float w = 100;
Rect valueRect = keyRect;
keyRect.width = w;
valueRect.x += w;
valueRect.width -= w;
key = EditorGUI.TextField(keyRect, variable.key);
if (variable.GetType() == typeof(BooleanVariable))
{
EditorGUI.Toggle(valueRect, (variable as BooleanVariable).Value);
}
else if (variable.GetType() == typeof(IntegerVariable))
{
EditorGUI.IntField(valueRect, (variable as IntegerVariable).Value);
}
else if (variable.GetType() == typeof(FloatVariable))
{
EditorGUI.FloatField(valueRect, (variable as FloatVariable).Value);
}
else if (variable.GetType() == typeof(StringVariable))
{
EditorGUI.TextField(valueRect, (variable as StringVariable).Value);
}
}
else
{
key = EditorGUI.TextField(keyRect, variable.key);
}
VariableScope scope = (VariableScope)EditorGUI.EnumPopup(scopeRect, variable.scope);
if (EditorGUI.EndChangeCheck ())
{
Undo.RecordObject(variable, "Set Variable");

6
Assets/Fungus/Editor/FungusScript/VariablesWindow.cs

@ -50,6 +50,11 @@ namespace Fungus.Script
}
}
FungusScriptEditor fungusScriptEditor = Editor.CreateEditor(fungusScript) as FungusScriptEditor;
fungusScriptEditor.DrawVariablesGUI();
/*
bool showValues = Application.isPlaying;
float columnWidth = (position.width - 40) / (showValues ? 4 : 3);
@ -131,6 +136,7 @@ namespace Fungus.Script
GUILayout.EndHorizontal();
}
GUILayout.EndScrollView();
*/
}
}

BIN
Assets/Shuttle/ShuttleGame.unity

Binary file not shown.
Loading…
Cancel
Save