TriggerZoneEditor.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using UnityEditor;
  4. using System.Collections.Generic;
  5. namespace VLB
  6. {
  7. [CustomEditor(typeof(TriggerZone))]
  8. [CanEditMultipleObjects]
  9. public class TriggerZoneEditor : EditorCommon
  10. {
  11. SerializedProperty setIsTrigger, rangeMultiplier;
  12. TargetList<VolumetricLightBeam> m_Targets;
  13. protected override void OnEnable()
  14. {
  15. base.OnEnable();
  16. setIsTrigger = FindProperty((TriggerZone x) => x.setIsTrigger);
  17. rangeMultiplier = FindProperty((TriggerZone x) => x.rangeMultiplier);
  18. m_Targets = new TargetList<VolumetricLightBeam>(targets);
  19. }
  20. public override void OnInspectorGUI()
  21. {
  22. base.OnInspectorGUI();
  23. EditorGUILayout.PropertyField(setIsTrigger, EditorStrings.TriggerZone.SetIsTrigger);
  24. EditorGUILayout.PropertyField(rangeMultiplier, EditorStrings.TriggerZone.RangeMultiplier);
  25. if (FoldableHeader.Begin(this, EditorStrings.TriggerZone.HeaderInfos))
  26. {
  27. EditorGUILayout.HelpBox(
  28. m_Targets.m_Targets[0].dimensions == Dimensions.Dim3D ? EditorStrings.TriggerZone.HelpDescription3D : EditorStrings.TriggerZone.HelpDescription2D
  29. , MessageType.Info);
  30. if(m_Targets.HasAtLeastOneTargetWith((VolumetricLightBeam beam) => { return beam.trackChangesDuringPlaytime; }))
  31. {
  32. EditorGUILayout.HelpBox(EditorStrings.TriggerZone.HelpTrackChangesDuringPlaytimeEnabled, MessageType.Warning);
  33. }
  34. }
  35. FoldableHeader.End();
  36. serializedObject.ApplyModifiedProperties();
  37. }
  38. }
  39. }
  40. #endif