using UnityEditor;
|
using UnityEngine;
|
|
namespace Flexalon.Editor
|
{
|
[CustomEditor(typeof(Flexalon))]
|
public class FlexalonEditor : UnityEditor.Editor
|
{
|
private SerializedProperty _updateInEditMode;
|
private SerializedProperty _updateInPlayMode;
|
private SerializedProperty _skipInactiveObjects;
|
private SerializedProperty _inputProvider;
|
|
public static void Create()
|
{
|
if (Flexalon.TryGetOrCreate(out var flexalon))
|
{
|
Undo.RegisterCreatedObjectUndo(flexalon.gameObject, "Create Flexalon");
|
}
|
}
|
|
void OnEnable()
|
{
|
_updateInEditMode = serializedObject.FindProperty("_updateInEditMode");
|
_updateInPlayMode = serializedObject.FindProperty("_updateInPlayMode");
|
_skipInactiveObjects = serializedObject.FindProperty("_skipInactiveObjects");
|
_inputProvider = serializedObject.FindProperty("_inputProvider");
|
}
|
|
public override void OnInspectorGUI()
|
{
|
serializedObject.Update();
|
|
if ((Application.isPlaying && !(target as Flexalon).UpdateInPlayMode) ||
|
(!Application.isPlaying && !(target as Flexalon).UpdateInEditMode))
|
{
|
if (GUILayout.Button("Update"))
|
{
|
Undo.RecordObject(target, "Update");
|
PrefabUtility.RecordPrefabInstancePropertyModifications(target);
|
var flexalon = (target as Flexalon);
|
Flexalon.RecordFrameChanges = true;
|
flexalon.UpdateDirtyNodes();
|
}
|
}
|
|
if (GUILayout.Button("Force Update"))
|
{
|
Undo.RecordObject(target, "Force Update");
|
PrefabUtility.RecordPrefabInstancePropertyModifications(target);
|
var flexalon = (target as Flexalon);
|
Flexalon.RecordFrameChanges = true;
|
flexalon.ForceUpdate();
|
}
|
|
EditorGUILayout.PropertyField(_updateInEditMode);
|
EditorGUILayout.PropertyField(_updateInPlayMode);
|
EditorGUILayout.PropertyField(_skipInactiveObjects);
|
EditorGUILayout.PropertyField(_inputProvider);
|
|
if (serializedObject.ApplyModifiedProperties())
|
{
|
EditorApplication.QueuePlayerLoopUpdate();
|
}
|
|
EditorGUILayout.HelpBox("You should only have one Flexalon component in the scene. If you create a new one, disable and re-enable all flexalon components or restart Unity.", MessageType.Info);
|
}
|
}
|
}
|