EnviroLightingModuleEditor.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroLightingModule))]
  8. public class EnviroLightingModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroLightingModule myTarget;
  11. //Properties
  12. //Direct Lighting
  13. private SerializedProperty directLightIntensityModifier,sunIntensityCurve, moonIntensityCurve, sunColorGradient, moonColorGradient, lightingMode;
  14. //Ambient Lighting
  15. private SerializedProperty ambientIntensityModifier,ambientMode, ambientSkyColorGradient, ambientEquatorColorGradient, ambientGroundColorGradient, ambientIntensityCurve;
  16. //Reflection Probe
  17. private SerializedProperty updateReflectionProbe,updateDefaultEnvironmentReflections,globalReflectionCustomRendering, globalReflectionUseFog, globalReflectionTimeSlicing, globalReflectionsUpdateOnGameTime, globalReflectionsUpdateOnPosition, globalReflectionsIntensity, globalReflectionsTimeTreshold, globalReflectionsPositionTreshold, globalReflectionsScale, globalReflectionResolution, globalReflectionLayers;
  18. #if ENVIRO_HDRP
  19. private SerializedProperty sunIntensityCurveHDRP, moonIntensityCurveHDRP, lightColorTemperatureHDRP, lightColorTintHDRP,ambientColorTintHDRP, controlExposure, sceneExposure, controlIndirectLighting, diffuseIndirectIntensity, reflectionIndirectIntensity;
  20. #endif
  21. //On Enable
  22. public override void OnEnable()
  23. {
  24. if(!target)
  25. return;
  26. base.OnEnable();
  27. myTarget = (EnviroLightingModule)target;
  28. serializedObj = new SerializedObject(myTarget);
  29. preset = serializedObj.FindProperty("preset");
  30. //Direct Lighting
  31. lightingMode = serializedObj.FindProperty("Settings.lightingMode");
  32. sunIntensityCurve = serializedObj.FindProperty("Settings.sunIntensityCurve");
  33. moonIntensityCurve = serializedObj.FindProperty("Settings.moonIntensityCurve");
  34. sunColorGradient = serializedObj.FindProperty("Settings.sunColorGradient");
  35. moonColorGradient = serializedObj.FindProperty("Settings.moonColorGradient");
  36. directLightIntensityModifier = serializedObj.FindProperty("Settings.directLightIntensityModifier");
  37. //Ambient Lighting
  38. ambientMode = serializedObj.FindProperty("Settings.ambientMode");
  39. ambientSkyColorGradient = serializedObj.FindProperty("Settings.ambientSkyColorGradient");
  40. ambientEquatorColorGradient = serializedObj.FindProperty("Settings.ambientEquatorColorGradient");
  41. ambientGroundColorGradient = serializedObj.FindProperty("Settings.ambientGroundColorGradient");
  42. ambientIntensityCurve = serializedObj.FindProperty("Settings.ambientIntensityCurve");
  43. ambientIntensityModifier = serializedObj.FindProperty("Settings.ambientIntensityModifier");
  44. //Reflection Probe
  45. updateReflectionProbe = serializedObj.FindProperty("Settings.updateReflectionProbe");
  46. updateDefaultEnvironmentReflections = serializedObj.FindProperty("Settings.updateDefaultEnvironmentReflections");
  47. globalReflectionCustomRendering = serializedObj.FindProperty("Settings.globalReflectionCustomRendering");
  48. globalReflectionUseFog = serializedObj.FindProperty("Settings.globalReflectionUseFog");
  49. globalReflectionTimeSlicing = serializedObj.FindProperty("Settings.globalReflectionTimeSlicing");
  50. globalReflectionsUpdateOnGameTime = serializedObj.FindProperty("Settings.globalReflectionsUpdateOnGameTime");
  51. globalReflectionsUpdateOnPosition = serializedObj.FindProperty("Settings.globalReflectionsUpdateOnPosition");
  52. globalReflectionsIntensity = serializedObj.FindProperty("Settings.globalReflectionsIntensity");
  53. globalReflectionsTimeTreshold = serializedObj.FindProperty("Settings.globalReflectionsTimeTreshold");
  54. globalReflectionsPositionTreshold = serializedObj.FindProperty("Settings.globalReflectionsPositionTreshold");
  55. globalReflectionsScale = serializedObj.FindProperty("Settings.globalReflectionsScale");
  56. globalReflectionResolution = serializedObj.FindProperty("Settings.globalReflectionResolution");
  57. globalReflectionLayers = serializedObj.FindProperty("Settings.globalReflectionLayers");
  58. #if ENVIRO_HDRP
  59. sunIntensityCurveHDRP = serializedObj.FindProperty("Settings.sunIntensityCurveHDRP");
  60. moonIntensityCurveHDRP = serializedObj.FindProperty("Settings.moonIntensityCurveHDRP");
  61. lightColorTemperatureHDRP = serializedObj.FindProperty("Settings.lightColorTemperatureHDRP");
  62. lightColorTintHDRP = serializedObj.FindProperty("Settings.lightColorTintHDRP");
  63. ambientColorTintHDRP = serializedObj.FindProperty("Settings.ambientColorTintHDRP");
  64. controlExposure = serializedObj.FindProperty("Settings.controlExposure");
  65. sceneExposure = serializedObj.FindProperty("Settings.sceneExposure");
  66. controlIndirectLighting = serializedObj.FindProperty("Settings.controlIndirectLighting");
  67. diffuseIndirectIntensity = serializedObj.FindProperty("Settings.diffuseIndirectIntensity");
  68. reflectionIndirectIntensity = serializedObj.FindProperty("Settings.reflectionIndirectIntensity");
  69. #endif
  70. }
  71. /*
  72. */
  73. public override void OnInspectorGUI()
  74. {
  75. if(!target)
  76. return;
  77. base.OnInspectorGUI();
  78. GUI.backgroundColor = new Color(0.0f,0.0f,0.5f,1f);
  79. GUILayout.BeginVertical("",boxStyleModified);
  80. GUI.backgroundColor = Color.white;
  81. EditorGUILayout.BeginHorizontal();
  82. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Lighting", headerFoldout);
  83. GUILayout.FlexibleSpace();
  84. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  85. {
  86. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Lighting);
  87. DestroyImmediate(this);
  88. return;
  89. }
  90. EditorGUILayout.EndHorizontal();
  91. if(myTarget.showModuleInspector)
  92. {
  93. RenderDisableInputBox();
  94. serializedObj.UpdateIfRequiredOrScript ();
  95. EditorGUI.BeginChangeCheck();
  96. GUI.backgroundColor = categoryModuleColor;
  97. GUILayout.BeginVertical("",boxStyleModified);
  98. GUI.backgroundColor = Color.white;
  99. myTarget.showDirectLightingControls = GUILayout.Toggle(myTarget.showDirectLightingControls, "Direct Lighting Controls", headerFoldout);
  100. if(myTarget.showDirectLightingControls)
  101. {
  102. GUILayout.Space(10);
  103. myTarget.Settings.setDirectLighting = EditorGUILayout.BeginToggleGroup("Set Direct Lighting",myTarget.Settings.setDirectLighting);
  104. EditorGUILayout.PropertyField(lightingMode);
  105. if (GUILayout.Button("Apply Lighting Mode Changes"))
  106. {
  107. myTarget.ApplyLightingChanges();
  108. }
  109. GUILayout.Space(10);
  110. EditorGUILayout.LabelField("Light Intensity",headerStyle);
  111. #if !ENVIRO_HDRP
  112. EditorGUILayout.PropertyField(sunIntensityCurve);
  113. EditorGUILayout.PropertyField(moonIntensityCurve);
  114. #else
  115. EditorGUILayout.PropertyField(sunIntensityCurveHDRP);
  116. EditorGUILayout.PropertyField(moonIntensityCurveHDRP);
  117. #endif
  118. DisableInputStart();
  119. EditorGUILayout.PropertyField(directLightIntensityModifier);
  120. DisableInputEnd();
  121. GUILayout.Space(10);
  122. EditorGUILayout.LabelField("Light Color",headerStyle);
  123. #if !ENVIRO_HDRP
  124. EditorGUILayout.PropertyField(sunColorGradient);
  125. EditorGUILayout.PropertyField(moonColorGradient);
  126. #else
  127. EditorGUILayout.PropertyField(lightColorTintHDRP);
  128. EditorGUILayout.PropertyField(lightColorTemperatureHDRP);
  129. #endif
  130. #if ENVIRO_HDRP
  131. GUILayout.Space(10);
  132. EditorGUILayout.LabelField("Exposure",headerStyle);
  133. EditorGUILayout.PropertyField(controlExposure);
  134. EditorGUILayout.PropertyField(sceneExposure);
  135. #endif
  136. EditorGUILayout.EndToggleGroup();
  137. }
  138. GUILayout.EndVertical();
  139. GUI.backgroundColor = categoryModuleColor;
  140. GUILayout.BeginVertical("",boxStyleModified);
  141. GUI.backgroundColor = Color.white;
  142. myTarget.showAmbientLightingControls = GUILayout.Toggle(myTarget.showAmbientLightingControls, "Ambient Lighting Controls", headerFoldout);
  143. if(myTarget.showAmbientLightingControls)
  144. {
  145. GUILayout.Space(10);
  146. myTarget.Settings.setAmbientLighting = EditorGUILayout.BeginToggleGroup("Set Ambient Lighting",myTarget.Settings.setAmbientLighting);
  147. #if !ENVIRO_HDRP
  148. EditorGUILayout.PropertyField(ambientMode);
  149. GUILayout.Space(10);
  150. if(myTarget.Settings.ambientMode == UnityEngine.Rendering.AmbientMode.Flat)
  151. {
  152. EditorGUILayout.LabelField("Ambient Color",headerStyle);
  153. EditorGUILayout.PropertyField(ambientSkyColorGradient);
  154. EditorGUILayout.LabelField("Ambient Intensity",headerStyle);
  155. EditorGUILayout.PropertyField(ambientIntensityCurve);
  156. DisableInputStart();
  157. EditorGUILayout.PropertyField(ambientIntensityModifier);
  158. DisableInputEnd();
  159. }
  160. else if(myTarget.Settings.ambientMode == UnityEngine.Rendering.AmbientMode.Trilight)
  161. {
  162. EditorGUILayout.LabelField("Ambient Color",headerStyle);
  163. EditorGUILayout.PropertyField(ambientSkyColorGradient);
  164. EditorGUILayout.PropertyField(ambientEquatorColorGradient);
  165. EditorGUILayout.PropertyField(ambientGroundColorGradient);
  166. EditorGUILayout.LabelField("Ambient Intensity",headerStyle);
  167. EditorGUILayout.PropertyField(ambientIntensityCurve);
  168. DisableInputStart();
  169. EditorGUILayout.PropertyField(ambientIntensityModifier);
  170. DisableInputEnd();
  171. }
  172. else
  173. {
  174. EditorGUILayout.LabelField("Ambient Intensity",headerStyle);
  175. EditorGUILayout.PropertyField(ambientIntensityCurve);
  176. DisableInputStart();
  177. EditorGUILayout.PropertyField(ambientIntensityModifier);
  178. DisableInputEnd();
  179. }
  180. #else
  181. GUILayout.Space(5);
  182. EditorGUILayout.PropertyField(controlIndirectLighting);
  183. if(myTarget.Settings.controlIndirectLighting)
  184. {
  185. EditorGUILayout.PropertyField(diffuseIndirectIntensity);
  186. EditorGUILayout.PropertyField(reflectionIndirectIntensity);
  187. }
  188. GUILayout.Space(5);
  189. if(EnviroManager.instance.Sky != null)
  190. {
  191. EditorGUILayout.LabelField("Indirect Color",headerStyle);
  192. EditorGUILayout.PropertyField(ambientColorTintHDRP);
  193. }
  194. #endif
  195. EditorGUILayout.EndToggleGroup();
  196. }
  197. GUILayout.EndVertical();
  198. GUI.backgroundColor = categoryModuleColor;
  199. GUILayout.BeginVertical("",boxStyleModified);
  200. GUI.backgroundColor = Color.white;
  201. myTarget.showReflectionControls = GUILayout.Toggle(myTarget.showReflectionControls, "Reflection Controls", headerFoldout);
  202. if(myTarget.showReflectionControls)
  203. {
  204. EditorGUILayout.PropertyField(updateReflectionProbe);
  205. if(myTarget.Settings.updateReflectionProbe)
  206. {
  207. EditorGUILayout.PropertyField(globalReflectionsIntensity);
  208. #if !ENVIRO_HDRP
  209. EditorGUILayout.PropertyField(updateDefaultEnvironmentReflections);
  210. GUILayout.Space(5);
  211. EditorGUILayout.PropertyField(globalReflectionResolution);
  212. #endif
  213. EditorGUILayout.PropertyField(globalReflectionLayers);
  214. EditorGUILayout.PropertyField(globalReflectionsScale);
  215. #if !ENVIRO_HDRP
  216. GUILayout.Space(10);
  217. EditorGUILayout.PropertyField(globalReflectionCustomRendering);
  218. if(myTarget.Settings.globalReflectionCustomRendering)
  219. {
  220. //EditorGUILayout.PropertyField(globalReflectionUseFog);
  221. EditorGUILayout.PropertyField(globalReflectionTimeSlicing);
  222. }
  223. #endif
  224. GUILayout.Space(10);
  225. EditorGUILayout.PropertyField(globalReflectionsUpdateOnGameTime);
  226. if(myTarget.Settings.globalReflectionsUpdateOnGameTime)
  227. EditorGUILayout.PropertyField(globalReflectionsTimeTreshold);
  228. GUILayout.Space(5);
  229. EditorGUILayout.PropertyField(globalReflectionsUpdateOnPosition);
  230. if(myTarget.Settings.globalReflectionsUpdateOnPosition)
  231. EditorGUILayout.PropertyField(globalReflectionsPositionTreshold);
  232. }
  233. }
  234. GUILayout.EndVertical();
  235. /// Save Load
  236. GUI.backgroundColor = categoryModuleColor;
  237. GUILayout.BeginVertical("",boxStyleModified);
  238. GUI.backgroundColor = Color.white;
  239. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  240. if(myTarget.showSaveLoad)
  241. {
  242. EditorGUILayout.PropertyField(preset);
  243. GUILayout.BeginHorizontal("",wrapStyle);
  244. if(myTarget.preset != null)
  245. {
  246. if(GUILayout.Button("Load"))
  247. {
  248. myTarget.LoadModuleValues();
  249. }
  250. if(GUILayout.Button("Save"))
  251. {
  252. myTarget.SaveModuleValues(myTarget.preset);
  253. }
  254. }
  255. if(GUILayout.Button("Save As New"))
  256. {
  257. myTarget.SaveModuleValues();
  258. }
  259. GUILayout.EndHorizontal();
  260. }
  261. GUILayout.EndVertical();
  262. /// Save Load End
  263. ApplyChanges ();
  264. }
  265. GUILayout.EndVertical();
  266. if(myTarget.showModuleInspector)
  267. GUILayout.Space(20);
  268. }
  269. }
  270. }