Files
DeviantMobile-Rohan/Assets/FirstGearGames/SmoothCameraShaker/Scripts/Editor/ShakableRigidbody2DEditor.cs

73 lines
4.2 KiB
C#

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace FirstGearGames.SmoothCameraShaker.EditorDesign
{
[CustomEditor(typeof(ShakableRigidbody2D))]
public class ShakableRigidbody2DEditor : UnityEditor.Editor
{
private MonoScript _script;
private SerializedProperty _shakerType;
private SerializedProperty _positionalMultiplier;
private SerializedProperty _rotationalMultiplier;
private SerializedProperty _requireInView;
private SerializedProperty _includeChildren;
private SerializedProperty _ignoreSelf;
private SerializedProperty _includeInactive;
private SerializedProperty _localizeShake;
private SerializedProperty _randomizeDirections;
private void OnEnable()
{
_script = MonoScript.FromMonoBehaviour((ShakableRigidbody2D)target);
//ShakableBase.
_shakerType = serializedObject.FindProperty("_shakerType");
//ShakableRigidbody2D
_positionalMultiplier = serializedObject.FindProperty("_positionalMultiplier");
_rotationalMultiplier = serializedObject.FindProperty("_rotationalMultiplier");
_requireInView = serializedObject.FindProperty("_requireInView");
_includeChildren = serializedObject.FindProperty("_includeChildren");
_ignoreSelf = serializedObject.FindProperty("_ignoreSelf");
_includeInactive = serializedObject.FindProperty("_includeInactive");
_localizeShake = serializedObject.FindProperty("_localizeShake");
_randomizeDirections = serializedObject.FindProperty("_randomizeDirections");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUI.BeginDisabledGroup(true);
_script = EditorGUILayout.ObjectField("Script:", _script, typeof(MonoScript), false) as MonoScript;
EditorGUI.EndDisabledGroup();
//Only allow changing when not in play mode. This will be done for all scripts once their editors are made.
EditorGUI.BeginDisabledGroup(Application.isPlaying);
EditorGUILayout.PropertyField(_shakerType, new GUIContent("Shaker Type", "Shaker type to use. CameraShaker will subscribe to your current or otherwise configured CameraShaker. ObjectShaker will subscribe to the first ObjectShaker found on or in parented objects."));
EditorGUI.EndDisabledGroup();
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_positionalMultiplier, new GUIContent("Positional Multiplier", "Positional shakes are multiplied by this value. Lower values will result in a lower positional magnitude."));
EditorGUILayout.PropertyField(_rotationalMultiplier, new GUIContent("Rotational Multiplier", "Rotational shakes are multiplied by this value. Lower values will result in a lower rotational magnitude."));
EditorGUILayout.Space();
EditorGUILayout.PropertyField(_requireInView, new GUIContent("Require In View", "Only shake when in view of a camera."));
EditorGUILayout.PropertyField(_includeChildren, new GUIContent("Include Children", "True to find transforms in children too. This allows you to use one ShakableTransform on the parent if all children transforms should shake as well."));
if (_includeChildren.boolValue == true)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_ignoreSelf, new GUIContent("Ignore Self", "True to ignore the transform this component resides, and only shake children."));
EditorGUILayout.PropertyField(_includeInactive, new GUIContent("Include Inactive", "True to also find inactive children."));
EditorGUI.indentLevel--;
}
//EditorGUILayout.Space();
EditorGUILayout.PropertyField(_localizeShake, new GUIContent("Localize Shake", "True to convert forces to local space before applying."));
EditorGUILayout.PropertyField(_randomizeDirections, new GUIContent("Randomize Directions", "True to randomly change influence direction when shaking starts."));
serializedObject.ApplyModifiedProperties();
}
}
}
#endif