Files
ZHGD_Web/Assets/3rds/HighlightPlus/Editor/HighlightTriggerEditor.cs
2025-07-13 23:16:20 +08:00

55 lines
2.0 KiB
C#

using UnityEditor;
using UnityEngine;
namespace HighlightPlus {
[CustomEditor(typeof(HighlightTrigger))]
public class HighlightTriggerEditor : Editor {
SerializedProperty triggerMode, raycastCamera, raycastSource, maxDistance, volumeLayerMask;
HighlightTrigger trigger;
void OnEnable() {
triggerMode = serializedObject.FindProperty ("triggerMode");
raycastCamera = serializedObject.FindProperty ("raycastCamera");
raycastSource = serializedObject.FindProperty ("raycastSource");
maxDistance = serializedObject.FindProperty("maxDistance");
volumeLayerMask = serializedObject.FindProperty("volumeLayerMask");
trigger = (HighlightTrigger)target;
trigger.Init ();
}
public override void OnInspectorGUI() {
serializedObject.Update ();
if (trigger.triggerMode == TriggerMode.RaycastOnThisObjectAndChildren) {
if (trigger.colliders == null || trigger.colliders.Length == 0) {
EditorGUILayout.HelpBox ("No collider found on this object or any of its children. Add colliders to allow automatic highlighting.", MessageType.Warning);
}
} else {
if (trigger.GetComponent<Collider> () == null) {
EditorGUILayout.HelpBox ("No collider found on this object. Add a collider to allow automatic highlighting.", MessageType.Error);
}
}
EditorGUILayout.PropertyField(triggerMode);
switch (trigger.triggerMode) {
case TriggerMode.RaycastOnThisObjectAndChildren:
EditorGUILayout.PropertyField(raycastCamera);
EditorGUILayout.PropertyField(raycastSource);
EditorGUILayout.PropertyField(maxDistance, new GUIContent("Max Distance", "Max distance for target. 0 = infinity")); ;
break;
case TriggerMode.Volume:
EditorGUILayout.PropertyField(volumeLayerMask);
break;
}
if (serializedObject.ApplyModifiedProperties()) {
trigger.Init();
}
}
}
}