Files

54 lines
2.6 KiB
C#

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(CameraShaker))]
public class CameraShakerEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _shakeTechnique;
private SerializedProperty _makeDefaultOnEnable;
private SerializedProperty _limitMagnitude;
private SerializedProperty _positionalMagnitudeLimit;
private SerializedProperty _rotationalMagnitudeLimit;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((CameraShaker)target);
_shakeTechnique = serializedObject.FindProperty("_shakeTechnique");
_makeDefaultOnEnable = serializedObject.FindProperty("_makeDefaultOnEnable");
_limitMagnitude = serializedObject.FindProperty("_limitMagnitude");
_positionalMagnitudeLimit = serializedObject.FindProperty("_positionalMagnitudeLimit");
_rotationalMagnitudeLimit = serializedObject.FindProperty("_rotationalMagnitudeLimit");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
EditorGUILayout.PropertyField(_shakeTechnique, new GUIContent("Shake Technique", "Sets the shake technique to use. Changing this value while shakes are occurring may create unwanted results."));
EditorGUILayout.PropertyField(_makeDefaultOnEnable, new GUIContent("Make Default On Enable", "True for this CameraShaker to be set as the default shaker when 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();
serializedObject.ApplyModifiedProperties();
}
}
}
#endif