HighlightManagerEditor.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEditor;
  4. using UnityEngine;
  5. namespace HighlightPlus {
  6. [CustomEditor(typeof(HighlightManager))]
  7. public class HighlightManagerEditor : Editor {
  8. SerializedProperty highlightOnHover, layerMask, raycastCamera, raycastSource, minDistance, maxDistance, respectUI;
  9. SerializedProperty selectOnClick, selectedProfile, selectedAndHighlightedProfile, singleSelection, toggleOnClick, keepSelection;
  10. void OnEnable() {
  11. highlightOnHover = serializedObject.FindProperty("_highlightOnHover");
  12. layerMask = serializedObject.FindProperty("layerMask");
  13. raycastCamera = serializedObject.FindProperty("raycastCamera");
  14. raycastSource = serializedObject.FindProperty("raycastSource");
  15. minDistance = serializedObject.FindProperty("minDistance");
  16. maxDistance = serializedObject.FindProperty("maxDistance");
  17. respectUI = serializedObject.FindProperty("respectUI");
  18. selectOnClick = serializedObject.FindProperty("selectOnClick");
  19. selectedProfile = serializedObject.FindProperty("selectedProfile");
  20. selectedAndHighlightedProfile = serializedObject.FindProperty("selectedAndHighlightedProfile");
  21. singleSelection = serializedObject.FindProperty("singleSelection");
  22. toggleOnClick = serializedObject.FindProperty("toggle");
  23. keepSelection = serializedObject.FindProperty("keepSelection");
  24. }
  25. public override void OnInspectorGUI() {
  26. EditorGUILayout.Separator();
  27. EditorGUILayout.HelpBox("Only objects with a collider can be highlighted automatically.", MessageType.Info);
  28. serializedObject.Update();
  29. EditorGUILayout.PropertyField(layerMask);
  30. EditorGUILayout.PropertyField(raycastCamera);
  31. EditorGUILayout.PropertyField(raycastSource);
  32. EditorGUILayout.PropertyField(minDistance);
  33. EditorGUILayout.PropertyField(maxDistance);
  34. EditorGUILayout.PropertyField(respectUI);
  35. EditorGUILayout.PropertyField(highlightOnHover);
  36. EditorGUILayout.PropertyField(selectOnClick);
  37. if (selectOnClick.boolValue) {
  38. EditorGUI.indentLevel++;
  39. EditorGUILayout.PropertyField(selectedProfile);
  40. EditorGUILayout.PropertyField(selectedAndHighlightedProfile);
  41. EditorGUILayout.PropertyField(singleSelection);
  42. EditorGUILayout.PropertyField(toggleOnClick);
  43. EditorGUILayout.PropertyField(keepSelection);
  44. EditorGUI.indentLevel--;
  45. }
  46. serializedObject.ApplyModifiedProperties();
  47. }
  48. [MenuItem("GameObject/Effects/Highlight Plus/Create Highlight Manager", false, 10)]
  49. static void CreateManager (MenuCommand menuCommand) {
  50. HighlightManager manager = FindObjectOfType<HighlightManager> ();
  51. if (manager == null) {
  52. GameObject managerGO = new GameObject ("HighlightPlusManager");
  53. manager = managerGO.AddComponent<HighlightManager> ();
  54. // Register root object for undo.
  55. Undo.RegisterCreatedObjectUndo (manager, "Create Highlight Plus Manager");
  56. }
  57. Selection.activeObject = manager;
  58. }
  59. }
  60. }