using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace HighlightPlus { [CustomEditor(typeof(HighlightManager))] public class HighlightManagerEditor : Editor { SerializedProperty highlightOnHover, layerMask, raycastCamera, raycastSource, maxDistance, volumeLayerMask; SerializedProperty selectOnClick, selectedProfile, selectedAndHighlightedProfile, singleSelection, toggleOnClick; void OnEnable() { highlightOnHover = serializedObject.FindProperty("highlightOnHover"); layerMask = serializedObject.FindProperty("layerMask"); raycastCamera = serializedObject.FindProperty("raycastCamera"); raycastSource = serializedObject.FindProperty("raycastSource"); maxDistance = serializedObject.FindProperty("maxDistance"); selectOnClick = serializedObject.FindProperty("selectOnClick"); selectedProfile = serializedObject.FindProperty("selectedProfile"); selectedAndHighlightedProfile = serializedObject.FindProperty("selectedAndHighlightedProfile"); singleSelection = serializedObject.FindProperty("singleSelection"); toggleOnClick = serializedObject.FindProperty("toggle"); } public override void OnInspectorGUI() { EditorGUILayout.Separator(); EditorGUILayout.HelpBox("Only objects with a collider can be highlighted automatically.", MessageType.Info); serializedObject.Update(); EditorGUILayout.PropertyField(layerMask); EditorGUILayout.PropertyField(raycastCamera); EditorGUILayout.PropertyField(raycastSource); EditorGUILayout.PropertyField(maxDistance, new GUIContent("Max Distance", "Max distance for target. 0 = infinity")); ; EditorGUILayout.PropertyField(highlightOnHover); EditorGUILayout.PropertyField(selectOnClick); if (selectOnClick.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(selectedProfile); EditorGUILayout.PropertyField(selectedAndHighlightedProfile); EditorGUILayout.PropertyField(singleSelection); EditorGUILayout.PropertyField(toggleOnClick); EditorGUI.indentLevel--; } serializedObject.ApplyModifiedProperties(); } [MenuItem("GameObject/Effects/Highlight Plus/Create Manager", false, 10)] static void CreateManager(MenuCommand menuCommand) { HighlightManager manager = FindObjectOfType(); if (manager == null) { GameObject managerGO = new GameObject("HighlightPlusManager"); manager = managerGO.AddComponent(); // Register root object for undo. Undo.RegisterCreatedObjectUndo(manager, "Create Highlight Plus Manager"); } Selection.activeObject = manager; } } }