110 lines
4.8 KiB
C#
110 lines
4.8 KiB
C#
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEditor;
|
|||
|
|
|||
|
namespace MoreMountains.Tools
|
|||
|
{
|
|||
|
[CustomEditor(typeof(MMTriggerAndCollision), true)]
|
|||
|
[CanEditMultipleObjects]
|
|||
|
public class MMTriggerAndCollisionEditor : Editor
|
|||
|
{
|
|||
|
protected SerializedProperty _CollisionLayerMask;
|
|||
|
protected SerializedProperty _OnCollisionEnterEvent;
|
|||
|
protected SerializedProperty _OnCollisionExitEvent;
|
|||
|
protected SerializedProperty _OnCollisionStayEvent;
|
|||
|
|
|||
|
protected SerializedProperty _TriggerLayerMask;
|
|||
|
protected SerializedProperty _OnTriggerEnterEvent;
|
|||
|
protected SerializedProperty _OnTriggerExitEvent;
|
|||
|
protected SerializedProperty _OnTriggerStayEvent;
|
|||
|
|
|||
|
protected SerializedProperty _Collision2DLayerMask;
|
|||
|
protected SerializedProperty _OnCollision2DEnterEvent;
|
|||
|
protected SerializedProperty _OnCollision2DExitEvent;
|
|||
|
protected SerializedProperty _OnCollision2DStayEvent;
|
|||
|
|
|||
|
protected SerializedProperty _Trigger2DLayerMask;
|
|||
|
protected SerializedProperty _OnTrigger2DEnterEvent;
|
|||
|
protected SerializedProperty _OnTrigger2DExitEvent;
|
|||
|
protected SerializedProperty _OnTrigger2DStayEvent;
|
|||
|
|
|||
|
protected bool OnCollision;
|
|||
|
protected bool OnTrigger;
|
|||
|
protected bool OnCollision2D;
|
|||
|
protected bool OnTrigger2D;
|
|||
|
|
|||
|
protected virtual void OnEnable()
|
|||
|
{
|
|||
|
|
|||
|
_CollisionLayerMask = serializedObject.FindProperty("CollisionLayerMask");
|
|||
|
_OnCollisionEnterEvent = serializedObject.FindProperty("OnCollisionEnterEvent");
|
|||
|
_OnCollisionExitEvent = serializedObject.FindProperty("OnCollisionExitEvent");
|
|||
|
_OnCollisionStayEvent = serializedObject.FindProperty("OnCollisionStayEvent");
|
|||
|
|
|||
|
_TriggerLayerMask = serializedObject.FindProperty("TriggerLayerMask");
|
|||
|
_OnTriggerEnterEvent = serializedObject.FindProperty("OnTriggerEnterEvent");
|
|||
|
_OnTriggerExitEvent = serializedObject.FindProperty("OnTriggerExitEvent");
|
|||
|
_OnTriggerStayEvent = serializedObject.FindProperty("OnTriggerStayEvent");
|
|||
|
|
|||
|
_Collision2DLayerMask = serializedObject.FindProperty("Collision2DLayerMask");
|
|||
|
_OnCollision2DEnterEvent = serializedObject.FindProperty("OnCollision2DEnterEvent");
|
|||
|
_OnCollision2DExitEvent = serializedObject.FindProperty("OnCollision2DExitEvent");
|
|||
|
_OnCollision2DStayEvent = serializedObject.FindProperty("OnCollision2DStayEvent");
|
|||
|
|
|||
|
_Trigger2DLayerMask = serializedObject.FindProperty("Trigger2DLayerMask");
|
|||
|
_OnTrigger2DEnterEvent = serializedObject.FindProperty("OnTrigger2DEnterEvent");
|
|||
|
_OnTrigger2DExitEvent = serializedObject.FindProperty("OnTrigger2DExitEvent");
|
|||
|
_OnTrigger2DStayEvent = serializedObject.FindProperty("OnTrigger2DStayEvent");
|
|||
|
}
|
|||
|
|
|||
|
public override void OnInspectorGUI()
|
|||
|
{
|
|||
|
serializedObject.Update();
|
|||
|
Undo.RecordObject(target, "Modified MMTriggerAndCollision");
|
|||
|
|
|||
|
OnCollision = EditorGUILayout.Foldout(OnCollision, "OnCollision");
|
|||
|
|
|||
|
if (OnCollision)
|
|||
|
{
|
|||
|
EditorGUILayout.PropertyField(_CollisionLayerMask);
|
|||
|
EditorGUILayout.PropertyField(_OnCollisionEnterEvent);
|
|||
|
EditorGUILayout.PropertyField(_OnCollisionExitEvent);
|
|||
|
EditorGUILayout.PropertyField(_OnCollisionStayEvent);
|
|||
|
}
|
|||
|
|
|||
|
OnTrigger = EditorGUILayout.Foldout(OnTrigger, "OnTrigger");
|
|||
|
|
|||
|
if (OnTrigger)
|
|||
|
{
|
|||
|
EditorGUILayout.PropertyField(_TriggerLayerMask);
|
|||
|
EditorGUILayout.PropertyField(_OnTriggerEnterEvent);
|
|||
|
EditorGUILayout.PropertyField(_OnTriggerExitEvent);
|
|||
|
EditorGUILayout.PropertyField(_OnTriggerStayEvent);
|
|||
|
}
|
|||
|
|
|||
|
OnCollision2D = EditorGUILayout.Foldout(OnCollision2D, "OnCollision2D");
|
|||
|
|
|||
|
if (OnCollision2D)
|
|||
|
{
|
|||
|
EditorGUILayout.PropertyField(_Collision2DLayerMask);
|
|||
|
EditorGUILayout.PropertyField(_OnCollision2DEnterEvent);
|
|||
|
EditorGUILayout.PropertyField(_OnCollision2DExitEvent);
|
|||
|
EditorGUILayout.PropertyField(_OnCollision2DStayEvent);
|
|||
|
}
|
|||
|
|
|||
|
OnTrigger2D = EditorGUILayout.Foldout(OnTrigger2D, "OnTrigger2D");
|
|||
|
|
|||
|
if (OnTrigger2D)
|
|||
|
{
|
|||
|
EditorGUILayout.PropertyField(_Trigger2DLayerMask);
|
|||
|
EditorGUILayout.PropertyField(_OnTrigger2DEnterEvent);
|
|||
|
EditorGUILayout.PropertyField(_OnTrigger2DExitEvent);
|
|||
|
EditorGUILayout.PropertyField(_OnTrigger2DStayEvent);
|
|||
|
}
|
|||
|
|
|||
|
serializedObject.ApplyModifiedProperties();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|