EnviroEnvironmentModuleEditor.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroEnvironmentModule))]
  8. public class EnviroEnvironmentModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroEnvironmentModule myTarget;
  11. //Properties Seasons
  12. private SerializedProperty season, changeSeason, springStart, springEnd, summerStart, summerEnd, autumnStart, autumnEnd, winterStart, winterEnd;
  13. //Properties Temperature
  14. private SerializedProperty springBaseTemperature, summerBaseTemperature, autumnBaseTemperature, winterBaseTemperature, temperatureWeatherMod, temperature, temperatureChangingSpeed;
  15. //Properties Weather State
  16. private SerializedProperty wetness, snow, wetnessTarget, snowTarget, wetnessAccumulationSpeed, wetnessDrySpeed, snowAccumulationSpeed, snowMeltSpeed ,snowMeltingTresholdTemperature;
  17. //On Enable
  18. public override void OnEnable()
  19. {
  20. base.OnEnable();
  21. if(!target)
  22. return;
  23. myTarget = (EnviroEnvironmentModule)target;
  24. serializedObj = new SerializedObject(myTarget);
  25. preset = serializedObj.FindProperty("preset");
  26. season = serializedObj.FindProperty("Settings.season");
  27. changeSeason = serializedObj.FindProperty("Settings.changeSeason");
  28. springStart = serializedObj.FindProperty("Settings.springStart");
  29. springEnd = serializedObj.FindProperty("Settings.springEnd");
  30. summerStart = serializedObj.FindProperty("Settings.summerStart");
  31. summerEnd = serializedObj.FindProperty("Settings.summerEnd");
  32. autumnStart = serializedObj.FindProperty("Settings.autumnStart");
  33. autumnEnd = serializedObj.FindProperty("Settings.autumnEnd");
  34. winterStart = serializedObj.FindProperty("Settings.winterStart");
  35. winterEnd = serializedObj.FindProperty("Settings.winterEnd");
  36. springBaseTemperature = serializedObj.FindProperty("Settings.springBaseTemperature");
  37. summerBaseTemperature = serializedObj.FindProperty("Settings.summerBaseTemperature");
  38. autumnBaseTemperature = serializedObj.FindProperty("Settings.autumnBaseTemperature");
  39. winterBaseTemperature = serializedObj.FindProperty("Settings.winterBaseTemperature");
  40. temperatureWeatherMod = serializedObj.FindProperty("Settings.temperatureWeatherMod");
  41. temperature = serializedObj.FindProperty("Settings.temperature");
  42. temperatureChangingSpeed = serializedObj.FindProperty("Settings.temperatureChangingSpeed");
  43. wetness = serializedObj.FindProperty("Settings.wetness");
  44. snow = serializedObj.FindProperty("Settings.snow");
  45. wetnessTarget = serializedObj.FindProperty("Settings.wetnessTarget");
  46. snowTarget = serializedObj.FindProperty("Settings.snowTarget");
  47. wetnessAccumulationSpeed = serializedObj.FindProperty("Settings.wetnessAccumulationSpeed");
  48. wetnessDrySpeed = serializedObj.FindProperty("Settings.wetnessDrySpeed");
  49. snowAccumulationSpeed = serializedObj.FindProperty("Settings.snowAccumulationSpeed");
  50. snowMeltSpeed = serializedObj.FindProperty("Settings.snowMeltSpeed");
  51. snowMeltingTresholdTemperature = serializedObj.FindProperty("Settings.snowMeltingTresholdTemperature");
  52. }
  53. public override void OnInspectorGUI()
  54. {
  55. if(!target)
  56. return;
  57. base.OnInspectorGUI();
  58. GUI.backgroundColor = baseModuleColor;
  59. GUILayout.BeginVertical("",boxStyleModified);
  60. GUI.backgroundColor = Color.white;
  61. EditorGUILayout.BeginHorizontal();
  62. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Environment", headerFoldout);
  63. GUILayout.FlexibleSpace();
  64. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  65. {
  66. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Environment); //Add Remove
  67. DestroyImmediate(this);
  68. return;
  69. }
  70. EditorGUILayout.EndHorizontal();
  71. if(myTarget.showModuleInspector)
  72. {
  73. RenderDisableInputBox();
  74. serializedObj.UpdateIfRequiredOrScript ();
  75. EditorGUI.BeginChangeCheck();
  76. GUI.backgroundColor = categoryModuleColor;
  77. GUILayout.BeginVertical("",boxStyleModified);
  78. GUI.backgroundColor = Color.white;
  79. myTarget.showSeasonControls = GUILayout.Toggle(myTarget.showSeasonControls, "Season Controls", headerFoldout);
  80. if(myTarget.showSeasonControls)
  81. {
  82. GUILayout.Space(5);
  83. EditorGUILayout.PropertyField(season);
  84. EditorGUILayout.PropertyField(changeSeason);
  85. GUILayout.Space(10);
  86. EditorGUILayout.PropertyField(springStart);
  87. EditorGUILayout.PropertyField(springEnd);
  88. GUILayout.Space(5);
  89. EditorGUILayout.PropertyField(summerStart);
  90. EditorGUILayout.PropertyField(summerEnd);
  91. GUILayout.Space(5);
  92. EditorGUILayout.PropertyField(autumnStart);
  93. EditorGUILayout.PropertyField(autumnEnd);
  94. GUILayout.Space(5);
  95. EditorGUILayout.PropertyField(winterStart);
  96. EditorGUILayout.PropertyField(winterEnd);
  97. }
  98. GUILayout.EndVertical();
  99. GUI.backgroundColor = categoryModuleColor;
  100. GUILayout.BeginVertical("",boxStyleModified);
  101. GUI.backgroundColor = Color.white;
  102. myTarget.showTemperatureControls = GUILayout.Toggle(myTarget.showTemperatureControls, "Temperature Controls", headerFoldout);
  103. if(myTarget.showTemperatureControls)
  104. {
  105. GUILayout.Space(5);
  106. EditorGUILayout.PropertyField(temperature);
  107. DisableInputStart();
  108. EditorGUILayout.PropertyField(temperatureWeatherMod);
  109. DisableInputEnd();
  110. EditorGUILayout.PropertyField(temperatureChangingSpeed);
  111. GUILayout.Space(10);
  112. EditorGUILayout.PropertyField(springBaseTemperature);
  113. EditorGUILayout.PropertyField(summerBaseTemperature);
  114. EditorGUILayout.PropertyField(autumnBaseTemperature);
  115. EditorGUILayout.PropertyField(winterBaseTemperature);
  116. }
  117. GUILayout.EndVertical();
  118. GUI.backgroundColor = categoryModuleColor;
  119. GUILayout.BeginVertical("",boxStyleModified);
  120. GUI.backgroundColor = Color.white;
  121. myTarget.showWeatherStateControls = GUILayout.Toggle(myTarget.showWeatherStateControls, "Weather State Controls", headerFoldout);
  122. if(myTarget.showWeatherStateControls)
  123. {
  124. GUILayout.Space(5);
  125. EditorGUILayout.PropertyField(wetness);
  126. EditorGUILayout.PropertyField(snow);
  127. GUILayout.Space(5);
  128. DisableInputStart();
  129. EditorGUILayout.PropertyField(wetnessTarget);
  130. EditorGUILayout.PropertyField(snowTarget);
  131. DisableInputEnd();
  132. GUILayout.Space(10);
  133. EditorGUILayout.PropertyField(wetnessAccumulationSpeed);
  134. EditorGUILayout.PropertyField(wetnessDrySpeed);
  135. GUILayout.Space(5);
  136. EditorGUILayout.PropertyField(snowAccumulationSpeed);
  137. EditorGUILayout.PropertyField(snowMeltSpeed);
  138. EditorGUILayout.PropertyField(snowMeltingTresholdTemperature);
  139. }
  140. GUILayout.EndVertical();
  141. // Save Load
  142. GUI.backgroundColor = categoryModuleColor;
  143. GUILayout.BeginVertical("",boxStyleModified);
  144. GUI.backgroundColor = Color.white;
  145. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  146. if(myTarget.showSaveLoad)
  147. {
  148. EditorGUILayout.PropertyField(preset);
  149. GUILayout.BeginHorizontal("",wrapStyle);
  150. if(myTarget.preset != null)
  151. {
  152. if(GUILayout.Button("Load"))
  153. {
  154. myTarget.LoadModuleValues();
  155. }
  156. if(GUILayout.Button("Save"))
  157. {
  158. myTarget.SaveModuleValues(myTarget.preset);
  159. }
  160. }
  161. if(GUILayout.Button("Save As New"))
  162. {
  163. myTarget.SaveModuleValues();
  164. }
  165. GUILayout.EndHorizontal();
  166. }
  167. GUILayout.EndVertical();
  168. /// Save Load End
  169. ApplyChanges ();
  170. }
  171. GUILayout.EndVertical();
  172. if(myTarget.showModuleInspector)
  173. GUILayout.Space(20);
  174. }
  175. }
  176. }