diff --git a/Assets/Fungus/Editor/FungusScript/FungusVariableListAdaptor.cs b/Assets/Fungus/Editor/FungusScript/FungusVariableListAdaptor.cs index 14145cc2..89a14607 100644 --- a/Assets/Fungus/Editor/FungusScript/FungusVariableListAdaptor.cs +++ b/Assets/Fungus/Editor/FungusScript/FungusVariableListAdaptor.cs @@ -11,90 +11,15 @@ using Rotorz.ReorderableList; namespace Fungus.Script { - public class FungusVariableListAdaptor : IReorderableListAdaptor + public class FungusVariableListAdaptor : SerializedPropertyAdaptor { - private SerializedProperty _arrayProperty; - - public float fixedItemHeight; - - public SerializedProperty this[int index] - { - get { return _arrayProperty.GetArrayElementAtIndex(index); } - } - - public SerializedProperty arrayProperty - { - get { return _arrayProperty; } - } - - public FungusVariableListAdaptor(SerializedProperty arrayProperty, float fixedItemHeight) - { - if (arrayProperty == null) - throw new ArgumentNullException("Array property was null."); - if (!arrayProperty.isArray) - throw new InvalidOperationException("Specified serialized propery is not an array."); - - this._arrayProperty = arrayProperty; - this.fixedItemHeight = fixedItemHeight; - } + public FungusVariableListAdaptor(SerializedProperty arrayProperty, float fixedItemHeight) : base(arrayProperty, fixedItemHeight) + {} public FungusVariableListAdaptor(SerializedProperty arrayProperty) : this(arrayProperty, 0f) {} - public int Count - { - get { return _arrayProperty.arraySize; } - } - - public virtual bool CanDrag(int index) - { - return true; - } - - public virtual bool CanRemove(int index) - { - return true; - } - - public void Add() - { - int newIndex = _arrayProperty.arraySize; - ++_arrayProperty.arraySize; - ResetValue(_arrayProperty.GetArrayElementAtIndex(newIndex)); - } - - public void Insert(int index) - { - _arrayProperty.InsertArrayElementAtIndex(index); - ResetValue(_arrayProperty.GetArrayElementAtIndex(index)); - } - - public void Duplicate(int index) - { - _arrayProperty.InsertArrayElementAtIndex(index); - } - - public void Remove(int index) - { - FungusVariable variable = _arrayProperty.GetArrayElementAtIndex(index).objectReferenceValue as FungusVariable; - Undo.DestroyObjectImmediate(variable); - - _arrayProperty.GetArrayElementAtIndex(index).objectReferenceValue = null; - _arrayProperty.DeleteArrayElementAtIndex(index); - } - - public void Move(int sourceIndex, int destIndex) - { - if (destIndex > sourceIndex) - --destIndex; - _arrayProperty.MoveArrayElement(sourceIndex, destIndex); - } - - public void Clear() { - _arrayProperty.ClearArray(); - } - - public virtual void DrawItem(Rect position, int index) + public override void DrawItem(Rect position, int index) { FungusVariable variable = this[index].objectReferenceValue as FungusVariable; @@ -186,51 +111,6 @@ namespace Fungus.Script } } - public virtual float GetItemHeight(int index) - { - return fixedItemHeight != 0f - ? fixedItemHeight - : EditorGUI.GetPropertyHeight(this[index], GUIContent.none, false) - ; - } - - private void ResetValue(SerializedProperty element) - { - switch (element.type) { - case "string": - element.stringValue = ""; - break; - case "Vector2f": - element.vector2Value = Vector2.zero; - break; - case "Vector3f": - element.vector3Value = Vector3.zero; - break; - case "Rectf": - element.rectValue = new Rect(); - break; - case "Quaternionf": - element.quaternionValue = Quaternion.identity; - break; - case "int": - element.intValue = 0; - break; - case "float": - element.floatValue = 0f; - break; - case "UInt8": - element.boolValue = false; - break; - case "ColorRGBA": - element.colorValue = Color.black; - break; - - default: - if (element.type.StartsWith("PPtr")) - element.objectReferenceValue = null; - break; - } - } } }