Files

54 lines
2.7 KiB
C#

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ObjectShaker))]
public class ObjectShakerEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _removeFromManagerOnDisable;
private SerializedProperty _limitMagnitude;
private SerializedProperty _positionalMagnitudeLimit;
private SerializedProperty _rotationalMagnitudeLimit;
private SerializedProperty _shakeOnEnable;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((ObjectShaker)target);
_removeFromManagerOnDisable = serializedObject.FindProperty("_removeFromManagerOnDisable");
_limitMagnitude = serializedObject.FindProperty("_limitMagnitude");
_positionalMagnitudeLimit = serializedObject.FindProperty("_positionalMagnitudeLimit");
_rotationalMagnitudeLimit = serializedObject.FindProperty("_rotationalMagnitudeLimit");
_shakeOnEnable = serializedObject.FindProperty("_shakeOnEnable");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
EditorGUILayout.PropertyField(_removeFromManagerOnDisable, new GUIContent("Remove From Manager On Disable", "True to remove this shakers reference from it's handler when disabled. Useful if you have a lot of these shakers in your scene, but objects are not always enabled."));
//Limit magnitude.
EditorGUILayout.PropertyField(_limitMagnitude, new GUIContent("Limit Magnitude", "True to limit how much magnitude can be applied to this CameraShaker."));
if (_limitMagnitude.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_positionalMagnitudeLimit, new GUIContent("Positional Magnitude Limit", "How much positional magnitude to limit this CameraShaker to."));
EditorGUILayout.PropertyField(_rotationalMagnitudeLimit, new GUIContent("Rotational Magnitude Limit", "How much rotational magnitude to limit this CameraShaker to."));
EditorGUI.indentLevel--;
}
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_shakeOnEnable, new GUIContent("Shake On Enable", "ShakeData to run when enabled. Leave empty to not use this feature."));
serializedObject.ApplyModifiedProperties();
}
}
}
#endif