完成编队 增加多个细节和小功能
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace SmoothShakeFree
|
||||
{
|
||||
[CustomEditor(typeof(ShakeBase), true)]
|
||||
internal class ShakeBaseEditor : Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
|
||||
ShakeBase shakeBase = (ShakeBase)target;
|
||||
|
||||
EditorUtility.DrawTitle("Smooth Shake Free");
|
||||
EditorUtility.DrawUILine(EditorUtility.SmoothShakeFreeColor, 1, 10);
|
||||
|
||||
if(shakeBase is SmoothShake ssf)
|
||||
{
|
||||
DrawPresetInspector(ssf.preset, ssf);
|
||||
}
|
||||
|
||||
EditorUtility.DrawUILine(Color.gray, 1, 10);
|
||||
|
||||
//Draw test buttons
|
||||
DrawTestButtons(shakeBase);
|
||||
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
private void DrawPresetInspector(SmoothShakeFreePreset preset, ShakeBase shakeBase)
|
||||
{
|
||||
//Draw preset property
|
||||
EditorGUILayout.PropertyField(serializedObject.FindProperty("preset"), true);
|
||||
|
||||
if (preset)
|
||||
{
|
||||
if (!Application.isPlaying) shakeBase.ApplyPresetSettings(preset);
|
||||
|
||||
//Helpbox
|
||||
EditorGUILayout.HelpBox("This shake being overriden by " + preset.name, MessageType.Info);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
{
|
||||
if (GUILayout.Button("Go To Preset"))
|
||||
{
|
||||
Selection.activeObject = preset;
|
||||
}
|
||||
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawPropertiesExcluding(serializedObject, "m_Script", "preset");
|
||||
}
|
||||
}
|
||||
|
||||
void DrawTestButtons(ShakeBase shakeBase)
|
||||
{
|
||||
//Test start and stop buttons in horizontal
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
{
|
||||
//Disable buttons in edit mode
|
||||
GUI.enabled = Application.isPlaying;
|
||||
if (GUILayout.Button("Test Shake"))
|
||||
shakeBase.StartShake();
|
||||
if (GUILayout.Button("Stop Test Shake"))
|
||||
shakeBase.StopShake();
|
||||
if (GUILayout.Button("Force Stop Test Shake"))
|
||||
shakeBase.ForceStop();
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (!GUI.enabled)
|
||||
EditorGUILayout.HelpBox("You can only test shakes play mode", MessageType.Info);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user