EnviroFogModuleEditor.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroFogModule))]
  8. public class EnviroFogModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroFogModule myTarget;
  11. //Properties
  12. private SerializedProperty fog, volumetrics, ditheringTex, quality, steps, scattering, extinction, anistropy, maxRange, noiseIntensity, noiseScale, windDirection, noise;
  13. private SerializedProperty fogDensity, fogHeightFalloff, fogHeight, fogDensity2, fogHeightFalloff2, fogHeight2, fogMaxOpacity, startDistance, fogColorBlend,ambientColorGradient;
  14. #if ENVIRO_HDRP
  15. private SerializedProperty controlHDRPFog, fogAttenuationDistance, baseHeight, maxHeight, fogColorTint;
  16. private SerializedProperty controlHDRPVolumetrics, volumetricsColorTint, ambientDimmer, directLightMultiplier, directLightShadowdimmer;
  17. #endif
  18. public override void OnEnable()
  19. {
  20. if(!target)
  21. return;
  22. myTarget = (EnviroFogModule)target;
  23. serializedObj = new SerializedObject(myTarget);
  24. preset = serializedObj.FindProperty("preset");
  25. //Volumetrics
  26. volumetrics = serializedObj.FindProperty("Settings.volumetrics");
  27. quality = serializedObj.FindProperty("Settings.quality");
  28. steps = serializedObj.FindProperty("Settings.steps");
  29. scattering = serializedObj.FindProperty("Settings.scattering");
  30. extinction = serializedObj.FindProperty("Settings.extinction");
  31. anistropy = serializedObj.FindProperty("Settings.anistropy");
  32. maxRange = serializedObj.FindProperty("Settings.maxRange");
  33. noiseIntensity = serializedObj.FindProperty("Settings.noiseIntensity");
  34. noiseScale = serializedObj.FindProperty("Settings.noiseScale");
  35. windDirection= serializedObj.FindProperty("Settings.windDirection");
  36. noise = serializedObj.FindProperty("Settings.noise");
  37. ditheringTex = serializedObj.FindProperty("Settings.ditheringTex");
  38. //Height Fog
  39. fog = serializedObj.FindProperty("Settings.fog");
  40. fogDensity = serializedObj.FindProperty("Settings.fogDensity");
  41. fogHeightFalloff = serializedObj.FindProperty("Settings.fogHeightFalloff");
  42. fogHeight = serializedObj.FindProperty("Settings.fogHeight");
  43. fogDensity2 = serializedObj.FindProperty("Settings.fogDensity2");
  44. fogHeightFalloff2 = serializedObj.FindProperty("Settings.fogHeightFalloff2");
  45. fogHeight2 = serializedObj.FindProperty("Settings.fogHeight2");
  46. fogMaxOpacity = serializedObj.FindProperty("Settings.fogMaxOpacity");
  47. startDistance = serializedObj.FindProperty("Settings.startDistance");
  48. fogColorBlend = serializedObj.FindProperty("Settings.fogColorBlend");
  49. ambientColorGradient = serializedObj.FindProperty("Settings.ambientColorGradient");
  50. //HDRP
  51. #if ENVIRO_HDRP
  52. controlHDRPFog = serializedObj.FindProperty("Settings.controlHDRPFog");
  53. fogAttenuationDistance = serializedObj.FindProperty("Settings.fogAttenuationDistance");
  54. baseHeight = serializedObj.FindProperty("Settings.baseHeight");
  55. maxHeight = serializedObj.FindProperty("Settings.maxHeight");
  56. fogColorTint= serializedObj.FindProperty("Settings.fogColorTint");
  57. controlHDRPVolumetrics= serializedObj.FindProperty("Settings.controlHDRPVolumetrics");
  58. volumetricsColorTint = serializedObj.FindProperty("Settings.volumetricsColorTint");
  59. ambientDimmer = serializedObj.FindProperty("Settings.ambientDimmer");
  60. directLightMultiplier = serializedObj.FindProperty("Settings.directLightMultiplier");
  61. directLightShadowdimmer = serializedObj.FindProperty("Settings.directLightShadowdimmer");
  62. #endif
  63. }
  64. public override void OnInspectorGUI()
  65. {
  66. if(!target)
  67. return;
  68. base.OnInspectorGUI();
  69. GUI.backgroundColor = baseModuleColor;
  70. GUILayout.BeginVertical("",boxStyleModified);
  71. GUI.backgroundColor = Color.white;
  72. EditorGUILayout.BeginHorizontal();
  73. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Fog", headerFoldout);
  74. GUILayout.FlexibleSpace();
  75. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  76. {
  77. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Fog); //Add Remove
  78. DestroyImmediate(this);
  79. return;
  80. }
  81. EditorGUILayout.EndHorizontal();
  82. if(myTarget.showModuleInspector)
  83. {
  84. RenderDisableInputBox();
  85. serializedObj.UpdateIfRequiredOrScript ();
  86. EditorGUI.BeginChangeCheck();
  87. // Enviro Fog
  88. GUI.backgroundColor = categoryModuleColor;
  89. GUILayout.BeginVertical("",boxStyleModified);
  90. GUI.backgroundColor = Color.white;
  91. myTarget.showFogControls = GUILayout.Toggle(myTarget.showFogControls, "Fog Controls", headerFoldout);
  92. if(myTarget.showFogControls)
  93. {
  94. GUILayout.Space(5);
  95. DisableInputStartQuality();
  96. EditorGUILayout.PropertyField(fog);
  97. DisableInputEndQuality();
  98. GUILayout.Space(5);
  99. if(myTarget.Settings.fog)
  100. {
  101. DisableInputStart();
  102. EditorGUILayout.LabelField("Fog Layer 1",headerStyle);
  103. GUILayout.Space(5);
  104. EditorGUILayout.PropertyField(fogDensity);
  105. EditorGUILayout.PropertyField(fogHeightFalloff);
  106. EditorGUILayout.PropertyField(fogHeight);
  107. GUILayout.Space(10);
  108. EditorGUILayout.LabelField("Fog Layer 2",headerStyle);
  109. GUILayout.Space(5);
  110. EditorGUILayout.PropertyField(fogDensity2);
  111. EditorGUILayout.PropertyField(fogHeightFalloff2);
  112. EditorGUILayout.PropertyField(fogHeight2);
  113. GUILayout.Space(10);
  114. DisableInputEnd();
  115. EditorGUILayout.LabelField("Opacity and Distance",headerStyle);
  116. GUILayout.Space(5);
  117. EditorGUILayout.PropertyField(fogMaxOpacity);
  118. //EditorGUILayout.PropertyField(startDistance);
  119. GUILayout.Space(10);
  120. DisableInputStart();
  121. EditorGUILayout.LabelField("Color",headerStyle);
  122. GUILayout.Space(5);
  123. EditorGUILayout.PropertyField(fogColorBlend);
  124. DisableInputEnd();
  125. EditorGUILayout.PropertyField(ambientColorGradient);
  126. GUILayout.Space(10);
  127. }
  128. }
  129. GUILayout.EndVertical();
  130. //HDRP Fog
  131. #if ENVIRO_HDRP
  132. GUI.backgroundColor = categoryModuleColor;
  133. GUILayout.BeginVertical("",boxStyleModified);
  134. GUI.backgroundColor = Color.white;
  135. myTarget.showHDRPFogControls = GUILayout.Toggle(myTarget.showHDRPFogControls, "HDRP Fog Controls", headerFoldout);
  136. if(myTarget.showHDRPFogControls)
  137. {
  138. GUILayout.Space(5);
  139. EditorGUILayout.PropertyField(controlHDRPFog);
  140. GUILayout.Space(5);
  141. if(myTarget.Settings.controlHDRPFog)
  142. {
  143. EditorGUILayout.LabelField("Density",headerStyle);
  144. DisableInputStart();
  145. EditorGUILayout.PropertyField(fogAttenuationDistance);
  146. EditorGUILayout.PropertyField(baseHeight);
  147. EditorGUILayout.PropertyField(maxHeight);
  148. DisableInputEnd();
  149. GUILayout.Space(5);
  150. EditorGUILayout.LabelField("Color",headerStyle);
  151. EditorGUILayout.PropertyField(fogColorTint);
  152. }
  153. }
  154. GUILayout.EndVertical();
  155. #endif
  156. GUI.backgroundColor = categoryModuleColor;
  157. GUILayout.BeginVertical("",boxStyleModified);
  158. GUI.backgroundColor = Color.white;
  159. myTarget.showVolumetricsControls = GUILayout.Toggle(myTarget.showVolumetricsControls, "Volumetrics Controls", headerFoldout);
  160. if(myTarget.showVolumetricsControls)
  161. {
  162. GUILayout.Space(5);
  163. #if !ENVIRO_HDRP
  164. DisableInputStartQuality();
  165. EditorGUILayout.PropertyField(volumetrics);
  166. DisableInputEndQuality();
  167. GUILayout.Space(5);
  168. if(myTarget.Settings.volumetrics && myTarget.Settings.fog)
  169. {
  170. DisableInputStartQuality();
  171. EditorGUILayout.PropertyField(quality);
  172. EditorGUILayout.PropertyField(steps);
  173. DisableInputEndQuality();
  174. DisableInputStart();
  175. EditorGUILayout.PropertyField(scattering);
  176. EditorGUILayout.PropertyField(extinction);
  177. EditorGUILayout.PropertyField(anistropy);
  178. DisableInputEnd();
  179. EditorGUILayout.PropertyField(maxRange);
  180. //EditorGUILayout.PropertyField(noiseIntensity);
  181. //EditorGUILayout.PropertyField(noiseScale);
  182. //EditorGUILayout.PropertyField(windDirection);
  183. //EditorGUILayout.PropertyField(noise);
  184. EditorGUILayout.PropertyField(ditheringTex);
  185. }
  186. #else
  187. EditorGUILayout.PropertyField(controlHDRPVolumetrics);
  188. GUILayout.Space(5);
  189. if(myTarget.Settings.controlHDRPVolumetrics && myTarget.Settings.controlHDRPFog)
  190. {
  191. EditorGUILayout.LabelField("Global",headerStyle);
  192. EditorGUILayout.PropertyField(volumetricsColorTint);
  193. DisableInputStart();
  194. EditorGUILayout.PropertyField(ambientDimmer);
  195. DisableInputEnd();
  196. GUILayout.Space(5);
  197. EditorGUILayout.LabelField("Directional Lights",headerStyle);
  198. DisableInputStart();
  199. EditorGUILayout.PropertyField(directLightMultiplier);
  200. EditorGUILayout.PropertyField(directLightShadowdimmer);
  201. DisableInputEnd();
  202. }
  203. #endif
  204. }
  205. GUILayout.EndVertical();
  206. /// Save Load
  207. GUI.backgroundColor = categoryModuleColor;
  208. GUILayout.BeginVertical("",boxStyleModified);
  209. GUI.backgroundColor = Color.white;
  210. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  211. if(myTarget.showSaveLoad)
  212. {
  213. EditorGUILayout.PropertyField(preset);
  214. GUILayout.BeginHorizontal("",wrapStyle);
  215. if(myTarget.preset != null)
  216. {
  217. if(GUILayout.Button("Load"))
  218. {
  219. myTarget.LoadModuleValues();
  220. }
  221. if(GUILayout.Button("Save"))
  222. {
  223. myTarget.SaveModuleValues(myTarget.preset);
  224. }
  225. }
  226. if(GUILayout.Button("Save As New"))
  227. {
  228. myTarget.SaveModuleValues();
  229. }
  230. GUILayout.EndHorizontal();
  231. }
  232. GUILayout.EndVertical();
  233. /// Save Load End
  234. ApplyChanges ();
  235. }
  236. GUILayout.EndVertical();
  237. if(myTarget.showModuleInspector)
  238. GUILayout.Space(20);
  239. }
  240. }
  241. }