EnviroSkyModuleEditor.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroSkyModule))]
  8. public class EnviroSkyModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroSkyModule myTarget;
  11. //Properties
  12. private SerializedProperty frontColorGradient0,frontColorGradient1,frontColorGradient2,frontColorGradient3,frontColorGradient4,frontColorGradient5;
  13. private SerializedProperty frontColor0,frontColor1,frontColor2,frontColor3,frontColor4,frontColor5;
  14. private SerializedProperty sunDiscColorGradient, moonColorGradient, moonGlowColorGradient;
  15. private SerializedProperty sunDiscColor, moonColor, moonGlowColor;
  16. private SerializedProperty backColorGradient0,backColorGradient1,backColorGradient2,backColorGradient3,backColorGradient4,backColorGradient5;
  17. private SerializedProperty backColor0,backColor1,backColor2,backColor3,backColor4,backColor5;
  18. private SerializedProperty distribution0,distribution1,distribution2,distribution3;
  19. private SerializedProperty starsTex, galaxyTex, sunTex, moonTex, moonGlowTex;
  20. private SerializedProperty mieScatteringIntensityCurve, moonGlowIntensityCurve, starIntensityCurve, galaxyIntensityCurve;
  21. private SerializedProperty intensity, mieScatteringIntensity,sunScale, moonScale, moonGlowScale, moonMode, moonPhase;
  22. #if ENVIRO_HDRP
  23. private SerializedProperty skyExposureHDRP;
  24. #endif
  25. //On Enable
  26. public override void OnEnable()
  27. {
  28. if(!target)
  29. return;
  30. myTarget = (EnviroSkyModule)target;
  31. serializedObj = new SerializedObject(myTarget);
  32. preset = serializedObj.FindProperty("preset");
  33. // Front Colors
  34. frontColorGradient0 = serializedObj.FindProperty("Settings.frontColorGradient0");
  35. frontColorGradient1 = serializedObj.FindProperty("Settings.frontColorGradient1");
  36. frontColorGradient2 = serializedObj.FindProperty("Settings.frontColorGradient2");
  37. frontColorGradient3 = serializedObj.FindProperty("Settings.frontColorGradient3");
  38. frontColorGradient4 = serializedObj.FindProperty("Settings.frontColorGradient4");
  39. frontColorGradient5 = serializedObj.FindProperty("Settings.frontColorGradient5");
  40. // Back Colors
  41. backColorGradient0 = serializedObj.FindProperty("Settings.backColorGradient0");
  42. backColorGradient1 = serializedObj.FindProperty("Settings.backColorGradient1");
  43. backColorGradient2 = serializedObj.FindProperty("Settings.backColorGradient2");
  44. backColorGradient3 = serializedObj.FindProperty("Settings.backColorGradient3");
  45. backColorGradient4 = serializedObj.FindProperty("Settings.backColorGradient4");
  46. backColorGradient5 = serializedObj.FindProperty("Settings.backColorGradient5");
  47. //Sund and Moon Colors
  48. sunDiscColorGradient = serializedObj.FindProperty("Settings.sunDiscColorGradient");
  49. moonColorGradient = serializedObj.FindProperty("Settings.moonColorGradient");
  50. moonGlowColorGradient = serializedObj.FindProperty("Settings.moonGlowColorGradient");
  51. //Distribution
  52. distribution0 = serializedObj.FindProperty("Settings.distribution0");
  53. distribution1 = serializedObj.FindProperty("Settings.distribution1");
  54. distribution2 = serializedObj.FindProperty("Settings.distribution2");
  55. distribution3 = serializedObj.FindProperty("Settings.distribution3");
  56. //Textures
  57. starsTex = serializedObj.FindProperty("Settings.starsTex");
  58. galaxyTex = serializedObj.FindProperty("Settings.galaxyTex");
  59. sunTex = serializedObj.FindProperty("Settings.sunTex");
  60. moonTex = serializedObj.FindProperty("Settings.moonTex");
  61. moonGlowTex = serializedObj.FindProperty("Settings.moonGlowTex");
  62. moonMode = serializedObj.FindProperty("Settings.moonMode");
  63. //Intensity
  64. mieScatteringIntensityCurve = serializedObj.FindProperty("Settings.mieScatteringIntensityCurve");
  65. moonGlowIntensityCurve = serializedObj.FindProperty("Settings.moonGlowIntensityCurve");
  66. starIntensityCurve = serializedObj.FindProperty("Settings.starIntensityCurve");
  67. galaxyIntensityCurve = serializedObj.FindProperty("Settings.galaxyIntensityCurve");
  68. intensity = serializedObj.FindProperty("Settings.intensity");
  69. sunScale = serializedObj.FindProperty("Settings.sunScale");
  70. moonScale = serializedObj.FindProperty("Settings.moonScale");
  71. moonPhase = serializedObj.FindProperty("Settings.moonPhase");
  72. // moonGlowScale = serializedObj.FindProperty("skySettings.moonGlowScale");
  73. #if ENVIRO_HDRP
  74. skyExposureHDRP = serializedObj.FindProperty("Settings.skyExposureHDRP");
  75. #endif
  76. }
  77. public override void OnInspectorGUI()
  78. {
  79. if(!target)
  80. return;
  81. base.OnInspectorGUI();
  82. GUI.backgroundColor = baseModuleColor;
  83. GUILayout.BeginVertical("",boxStyleModified);
  84. GUI.backgroundColor = Color.white;
  85. EditorGUILayout.BeginHorizontal();
  86. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Sky", headerFoldout);
  87. GUILayout.FlexibleSpace();
  88. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  89. {
  90. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Sky); //Add Remove
  91. DestroyImmediate(this);
  92. return;
  93. }
  94. EditorGUILayout.EndHorizontal();
  95. if(myTarget.showModuleInspector)
  96. {
  97. //EditorGUILayout.LabelField("This module will control your skybox.");
  98. serializedObj.UpdateIfRequiredOrScript ();
  99. EditorGUI.BeginChangeCheck();
  100. // Sky Color Controls
  101. GUI.backgroundColor = categoryModuleColor;
  102. GUILayout.BeginVertical("",boxStyleModified);
  103. GUI.backgroundColor = Color.white;
  104. myTarget.showSkyControls = GUILayout.Toggle(myTarget.showSkyControls, "Sky Controls", headerFoldout);
  105. if(myTarget.showSkyControls)
  106. {
  107. GUILayout.Space(10);
  108. EditorGUILayout.LabelField("Ground Color",headerStyle);
  109. EditorGUILayout.PropertyField(frontColorGradient0);
  110. EditorGUILayout.PropertyField(backColorGradient0);
  111. GUILayout.Space(5);
  112. EditorGUILayout.LabelField("Horizon Colors",headerStyle);
  113. EditorGUILayout.PropertyField(frontColorGradient1);
  114. EditorGUILayout.PropertyField(backColorGradient1);
  115. GUILayout.Space(5);
  116. EditorGUILayout.PropertyField(frontColorGradient2);
  117. EditorGUILayout.PropertyField(backColorGradient2);
  118. GUILayout.Space(5);
  119. EditorGUILayout.PropertyField(frontColorGradient3);
  120. EditorGUILayout.PropertyField(backColorGradient3);
  121. GUILayout.Space(5);
  122. EditorGUILayout.PropertyField(frontColorGradient4);
  123. EditorGUILayout.PropertyField(backColorGradient4);
  124. GUILayout.Space(5);
  125. EditorGUILayout.LabelField("Top Color",headerStyle);
  126. EditorGUILayout.PropertyField(frontColorGradient5);
  127. EditorGUILayout.PropertyField(backColorGradient5);
  128. GUILayout.Space(5);
  129. EditorGUILayout.LabelField("Distribution",headerStyle);
  130. EditorGUILayout.PropertyField(distribution0);
  131. EditorGUILayout.PropertyField(distribution1);
  132. EditorGUILayout.PropertyField(distribution2);
  133. EditorGUILayout.PropertyField(distribution3);
  134. GUILayout.Space(5);
  135. EditorGUILayout.LabelField("Intensity",headerStyle);
  136. EditorGUILayout.PropertyField(intensity);
  137. EditorGUILayout.PropertyField(mieScatteringIntensityCurve);
  138. #if ENVIRO_HDRP
  139. GUILayout.Space(5);
  140. EditorGUILayout.LabelField("HDRP Settings",headerStyle);
  141. EditorGUILayout.PropertyField(skyExposureHDRP);
  142. #endif
  143. }
  144. GUILayout.EndVertical();
  145. GUI.backgroundColor = categoryModuleColor;
  146. GUILayout.BeginVertical("",boxStyleModified);
  147. GUI.backgroundColor = Color.white;
  148. myTarget.showSkySunControls = GUILayout.Toggle(myTarget.showSkySunControls, "Sun Controls", headerFoldout);
  149. if(myTarget.showSkySunControls)
  150. {
  151. GUILayout.Space(10);
  152. EditorGUILayout.LabelField("Textures",headerStyle);
  153. EditorGUILayout.PropertyField(sunTex);
  154. GUILayout.Space(5);
  155. EditorGUILayout.LabelField("Color",headerStyle);
  156. EditorGUILayout.PropertyField(sunDiscColorGradient);
  157. GUILayout.Space(5);
  158. EditorGUILayout.LabelField("Scale",headerStyle);
  159. EditorGUILayout.PropertyField(sunScale);
  160. }
  161. GUILayout.EndVertical();
  162. GUI.backgroundColor = categoryModuleColor;
  163. GUILayout.BeginVertical("",boxStyleModified);
  164. GUI.backgroundColor = Color.white;
  165. myTarget.showSkyMoonControls = GUILayout.Toggle(myTarget.showSkyMoonControls, "Moon Controls", headerFoldout);
  166. if(myTarget.showSkyMoonControls)
  167. {
  168. GUILayout.Space(10);
  169. EditorGUILayout.PropertyField(moonMode);
  170. if(myTarget.Settings.moonMode != EnviroSky.MoonMode.Simple)
  171. EditorGUI.BeginDisabledGroup(true);
  172. EditorGUILayout.PropertyField(moonPhase);
  173. if(myTarget.Settings.moonMode != EnviroSky.MoonMode.Simple)
  174. EditorGUI.EndDisabledGroup();
  175. GUILayout.Space(5);
  176. EditorGUILayout.LabelField("Textures",headerStyle);
  177. EditorGUILayout.PropertyField(moonTex);
  178. //EditorGUILayout.PropertyField(moonGlowTex);
  179. GUILayout.Space(5);
  180. EditorGUILayout.LabelField("Color",headerStyle);
  181. EditorGUILayout.PropertyField(moonColorGradient);
  182. //EditorGUILayout.PropertyField(moonGlowColorGradient);
  183. GUILayout.Space(5);
  184. EditorGUILayout.LabelField("Scale",headerStyle);
  185. EditorGUILayout.PropertyField(moonScale);
  186. // EditorGUILayout.PropertyField(moonGlowScale);
  187. //GUILayout.Space(10);
  188. //EditorGUILayout.LabelField("Intensity",headerStyle);
  189. //EditorGUILayout.PropertyField(moonGlowIntensityCurve);
  190. }
  191. GUILayout.EndVertical();
  192. GUI.backgroundColor = categoryModuleColor;
  193. GUILayout.BeginVertical("",boxStyleModified);
  194. GUI.backgroundColor = Color.white;
  195. myTarget.showSkyStarsControls = GUILayout.Toggle(myTarget.showSkyStarsControls, "Stars and Galaxy Controls", headerFoldout);
  196. if(myTarget.showSkyStarsControls)
  197. {
  198. GUILayout.Space(10);
  199. EditorGUILayout.LabelField("Textures",headerStyle);
  200. EditorGUILayout.PropertyField(starsTex);
  201. EditorGUILayout.PropertyField(galaxyTex);
  202. GUILayout.Space(5);
  203. EditorGUILayout.LabelField("Intensity",headerStyle);
  204. EditorGUILayout.PropertyField(starIntensityCurve);
  205. EditorGUILayout.PropertyField(galaxyIntensityCurve);
  206. }
  207. GUILayout.EndVertical();
  208. /// Save Load
  209. GUI.backgroundColor = categoryModuleColor;
  210. GUILayout.BeginVertical("",boxStyleModified);
  211. GUI.backgroundColor = Color.white;
  212. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  213. if(myTarget.showSaveLoad)
  214. {
  215. EditorGUILayout.PropertyField(preset);
  216. GUILayout.BeginHorizontal("",wrapStyle);
  217. if(myTarget.preset != null)
  218. {
  219. if(GUILayout.Button("Load"))
  220. {
  221. myTarget.LoadModuleValues();
  222. }
  223. if(GUILayout.Button("Save"))
  224. {
  225. myTarget.SaveModuleValues(myTarget.preset);
  226. }
  227. }
  228. if(GUILayout.Button("Save As New"))
  229. {
  230. myTarget.SaveModuleValues();
  231. }
  232. GUILayout.EndHorizontal();
  233. }
  234. GUILayout.EndVertical();
  235. /// Save Load End
  236. ApplyChanges ();
  237. }
  238. GUILayout.EndVertical();
  239. if(myTarget.showModuleInspector)
  240. GUILayout.Space(20);
  241. }
  242. }
  243. }