EnviroLightningModuleEditor.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroLightningModule))]
  8. public class EnviroLightningModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroLightningModule myTarget;
  11. //Properties
  12. private SerializedProperty prefab, lightningStorm,randomLightingDelay, randomSpawnRange, randomTargetRange;
  13. //On Enable
  14. public override void OnEnable()
  15. {
  16. base.OnEnable();
  17. if(!target)
  18. return;
  19. myTarget = (EnviroLightningModule)target;
  20. serializedObj = new SerializedObject(myTarget);
  21. preset = serializedObj.FindProperty("preset");
  22. prefab = serializedObj.FindProperty("Settings.prefab");
  23. lightningStorm = serializedObj.FindProperty("Settings.lightningStorm");
  24. randomLightingDelay = serializedObj.FindProperty("Settings.randomLightingDelay");
  25. randomSpawnRange = serializedObj.FindProperty("Settings.randomSpawnRange");
  26. randomTargetRange = serializedObj.FindProperty("Settings.randomTargetRange");
  27. }
  28. public override void OnInspectorGUI()
  29. {
  30. if(!target)
  31. return;
  32. base.OnInspectorGUI();
  33. GUI.backgroundColor = baseModuleColor;
  34. GUILayout.BeginVertical("",boxStyleModified);
  35. GUI.backgroundColor = Color.white;
  36. EditorGUILayout.BeginHorizontal();
  37. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Lightning", headerFoldout);
  38. GUILayout.FlexibleSpace();
  39. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  40. {
  41. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Lightning); //Add Remove
  42. DestroyImmediate(this);
  43. return;
  44. }
  45. EditorGUILayout.EndHorizontal();
  46. if(myTarget.showModuleInspector)
  47. {
  48. RenderDisableInputBox();
  49. serializedObj.UpdateIfRequiredOrScript ();
  50. EditorGUI.BeginChangeCheck();
  51. // Set Values
  52. GUI.backgroundColor = categoryModuleColor;
  53. GUILayout.BeginVertical("",boxStyleModified);
  54. GUI.backgroundColor = Color.white;
  55. myTarget.showLightningControls = GUILayout.Toggle(myTarget.showLightningControls, "Lightning Controls", headerFoldout);
  56. if(myTarget.showLightningControls)
  57. {
  58. GUILayout.Space(10);
  59. DisableInputStart();
  60. EditorGUILayout.PropertyField(lightningStorm);
  61. DisableInputEnd();
  62. GUILayout.Space(5);
  63. EditorGUILayout.PropertyField(prefab);
  64. GUILayout.Space(5);
  65. EditorGUILayout.LabelField("Random Lighting Storm", headerStyle);
  66. DisableInputStart();
  67. EditorGUILayout.PropertyField(randomLightingDelay);
  68. DisableInputEnd();
  69. EditorGUILayout.PropertyField(randomSpawnRange);
  70. EditorGUILayout.PropertyField(randomTargetRange);
  71. }
  72. GUILayout.EndVertical();
  73. // Save Load
  74. GUI.backgroundColor = categoryModuleColor;
  75. GUILayout.BeginVertical("",boxStyleModified);
  76. GUI.backgroundColor = Color.white;
  77. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  78. if(myTarget.showSaveLoad)
  79. {
  80. EditorGUILayout.PropertyField(preset);
  81. GUILayout.BeginHorizontal("",wrapStyle);
  82. if(myTarget.preset != null)
  83. {
  84. if(GUILayout.Button("Load"))
  85. {
  86. myTarget.LoadModuleValues();
  87. }
  88. if(GUILayout.Button("Save"))
  89. {
  90. myTarget.SaveModuleValues(myTarget.preset);
  91. }
  92. }
  93. if(GUILayout.Button("Save As New"))
  94. {
  95. myTarget.SaveModuleValues();
  96. }
  97. GUILayout.EndHorizontal();
  98. }
  99. GUILayout.EndVertical();
  100. /// Save Load End
  101. ApplyChanges ();
  102. }
  103. GUILayout.EndVertical();
  104. if(myTarget.showModuleInspector)
  105. GUILayout.Space(20);
  106. }
  107. }
  108. }