123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEditor;
- namespace Enviro
- {
- [CustomEditor(typeof(EnviroVolumetricCloudsModule))]
- public class EnviroCloudsModuleEditor : EnviroModuleEditor
- {
- private EnviroVolumetricCloudsModule myTarget;
- private SerializedProperty dualLayer,depthBlending,sunLightColorGradient,moonLightColorGradient, ambientColorGradient,ambientLighIntensity, windIntensity,cloudsWindDirectionX,cloudsWindDirectionY,cloudShadows, cloudShadowsIntensity,
-
- noise, detailNoise, curlTex, blueNoise, cloudsWorldScale, atmosphereColorSaturateDistance;
- //Properties Layer 1
- private SerializedProperty bottomCloudsHeightLayer1,topCloudsHeightLayer1,densityLayer1, coverageLayer1,worleyFreq1Layer1, worleyFreq2Layer1, dilateCoverageLayer1, dilateTypeLayer1,cloudsTypeModifierLayer1, locationOffsetLayer1,
- scatteringIntensityLayer1, silverLiningSpreadLayer1, powderIntensityLayer1,
- curlIntensityLayer1, lightStepModifierLayer1, lightAbsorbtionLayer1,baseNoiseUVLayer1, detailNoiseUVLayer1,
- baseErosionIntensityLayer1, detailErosionIntensityLayer1, multiScatteringALayer1, multiScatteringBLayer1,multiScatteringCLayer1,anvilBiasLayer1;
-
- //Properties Layer 2
- private SerializedProperty bottomCloudsHeightLayer2,topCloudsHeightLayer2,densityLayer2,coverageLayer2,worleyFreq1Layer2, worleyFreq2Layer2, dilateCoverageLayer2, dilateTypeLayer2,cloudsTypeModifierLayer2, locationOffsetLayer2,
- scatteringIntensityLayer2, silverLiningSpreadLayer2, powderIntensityLayer2,
- curlIntensityLayer2, lightStepModifierLayer2, lightAbsorbtionLayer2, baseNoiseUVLayer2, detailNoiseUVLayer2,
- baseErosionIntensityLayer2, detailErosionIntensityLayer2, multiScatteringALayer2, multiScatteringBLayer2,multiScatteringCLayer2, anvilBiasLayer2;
- //Properties Quality
- private SerializedProperty volumetricClouds, downsampling, stepsLayer1, stepsLayer2, blueNoiseIntensity, reprojectionBlendTime, lodDistance;
- //On Enable
- public override void OnEnable()
- {
- if(!target)
- return;
- myTarget = (EnviroVolumetricCloudsModule)target;
- serializedObj = new SerializedObject(myTarget);
- preset = serializedObj.FindProperty("preset");
-
- windIntensity = serializedObj.FindProperty("settingsLayer1.windIntensity");
- cloudsWindDirectionX = serializedObj.FindProperty("settingsLayer1.cloudsWindDirectionX");
- cloudsWindDirectionY = serializedObj.FindProperty("settingsLayer1.cloudsWindDirectionY");
- ambientColorGradient = serializedObj.FindProperty("settingsGlobal.ambientColorGradient");
- ambientLighIntensity = serializedObj.FindProperty("settingsGlobal.ambientLighIntensity");
- sunLightColorGradient = serializedObj.FindProperty("settingsGlobal.sunLightColorGradient");
- moonLightColorGradient = serializedObj.FindProperty("settingsGlobal.moonLightColorGradient");
- depthBlending = serializedObj.FindProperty("settingsGlobal.depthBlending");
- dualLayer = serializedObj.FindProperty("settingsGlobal.dualLayer");
- cloudShadows = serializedObj.FindProperty("settingsGlobal.cloudShadows");
- cloudShadowsIntensity = serializedObj.FindProperty("settingsGlobal.cloudShadowsIntensity");
- noise = serializedObj.FindProperty("settingsGlobal.noise");
- detailNoise = serializedObj.FindProperty("settingsGlobal.detailNoise");
- curlTex = serializedObj.FindProperty("settingsGlobal.curlTex");
- blueNoise = serializedObj.FindProperty("settingsGlobal.blueNoise");
- cloudsWorldScale = serializedObj.FindProperty("settingsGlobal.cloudsWorldScale");
- atmosphereColorSaturateDistance = serializedObj.FindProperty("settingsGlobal.atmosphereColorSaturateDistance");
-
- //Quality
- volumetricClouds = serializedObj.FindProperty("settingsQuality.volumetricClouds");
- downsampling = serializedObj.FindProperty("settingsQuality.downsampling");
- stepsLayer1 = serializedObj.FindProperty("settingsQuality.stepsLayer1");
- stepsLayer2 = serializedObj.FindProperty("settingsQuality.stepsLayer2");
- blueNoiseIntensity = serializedObj.FindProperty("settingsQuality.blueNoiseIntensity");
- reprojectionBlendTime = serializedObj.FindProperty("settingsQuality.reprojectionBlendTime");
- lodDistance = serializedObj.FindProperty("settingsQuality.lodDistance");
- //Layer 1
- bottomCloudsHeightLayer1 = serializedObj.FindProperty("settingsLayer1.bottomCloudsHeight");
- topCloudsHeightLayer1 = serializedObj.FindProperty("settingsLayer1.topCloudsHeight");
- coverageLayer1 = serializedObj.FindProperty("settingsLayer1.coverage");
- worleyFreq1Layer1 = serializedObj.FindProperty("settingsLayer1.worleyFreq1");
- worleyFreq2Layer1 = serializedObj.FindProperty("settingsLayer1.worleyFreq2");
- dilateCoverageLayer1 = serializedObj.FindProperty("settingsLayer1.dilateCoverage");
- dilateTypeLayer1 = serializedObj.FindProperty("settingsLayer1.dilateType");
- cloudsTypeModifierLayer1 = serializedObj.FindProperty("settingsLayer1.cloudsTypeModifier");
- locationOffsetLayer1 = serializedObj.FindProperty("settingsLayer1.locationOffset");
- densityLayer1 = serializedObj.FindProperty("settingsLayer1.density");
- scatteringIntensityLayer1 = serializedObj.FindProperty("settingsLayer1.scatteringIntensity");
- silverLiningSpreadLayer1 = serializedObj.FindProperty("settingsLayer1.silverLiningSpread");
- powderIntensityLayer1 = serializedObj.FindProperty("settingsLayer1.powderIntensity");
- curlIntensityLayer1 = serializedObj.FindProperty("settingsLayer1.curlIntensity");
- lightStepModifierLayer1 = serializedObj.FindProperty("settingsLayer1.lightStepModifier");
- lightAbsorbtionLayer1 = serializedObj.FindProperty("settingsLayer1.lightAbsorbtion");
- baseNoiseUVLayer1 = serializedObj.FindProperty("settingsLayer1.baseNoiseUV");
- detailNoiseUVLayer1 = serializedObj.FindProperty("settingsLayer1.detailNoiseUV");
- baseErosionIntensityLayer1 = serializedObj.FindProperty("settingsLayer1.baseErosionIntensity");
- detailErosionIntensityLayer1 = serializedObj.FindProperty("settingsLayer1.detailErosionIntensity");
- multiScatteringALayer1 = serializedObj.FindProperty("settingsLayer1.multiScatteringA");
- multiScatteringBLayer1 = serializedObj.FindProperty("settingsLayer1.multiScatteringB");
- multiScatteringCLayer1 = serializedObj.FindProperty("settingsLayer1.multiScatteringC");
- anvilBiasLayer1 = serializedObj.FindProperty("settingsLayer1.anvilBias");
- //Layer 2
- bottomCloudsHeightLayer2= serializedObj.FindProperty("settingsLayer2.bottomCloudsHeight");
- topCloudsHeightLayer2= serializedObj.FindProperty("settingsLayer2.topCloudsHeight");
- coverageLayer2 = serializedObj.FindProperty("settingsLayer2.coverage");
- worleyFreq1Layer2 = serializedObj.FindProperty("settingsLayer2.worleyFreq1");
- worleyFreq2Layer2 = serializedObj.FindProperty("settingsLayer2.worleyFreq2");
- dilateCoverageLayer2 = serializedObj.FindProperty("settingsLayer2.dilateCoverage");
- dilateTypeLayer2 = serializedObj.FindProperty("settingsLayer2.dilateType");
- cloudsTypeModifierLayer2 = serializedObj.FindProperty("settingsLayer2.cloudsTypeModifier");
- locationOffsetLayer2 = serializedObj.FindProperty("settingsLayer2.locationOffset");
- densityLayer2 = serializedObj.FindProperty("settingsLayer2.density");
- scatteringIntensityLayer2 = serializedObj.FindProperty("settingsLayer2.scatteringIntensity");
- silverLiningSpreadLayer2 = serializedObj.FindProperty("settingsLayer2.silverLiningSpread");
- powderIntensityLayer2 = serializedObj.FindProperty("settingsLayer2.powderIntensity");
- curlIntensityLayer2 = serializedObj.FindProperty("settingsLayer2.curlIntensity");
- lightStepModifierLayer2 = serializedObj.FindProperty("settingsLayer2.lightStepModifier");
- lightAbsorbtionLayer2 = serializedObj.FindProperty("settingsLayer2.lightAbsorbtion");
- baseNoiseUVLayer2 = serializedObj.FindProperty("settingsLayer2.baseNoiseUV");
- detailNoiseUVLayer2 = serializedObj.FindProperty("settingsLayer2.detailNoiseUV");
- baseErosionIntensityLayer2 = serializedObj.FindProperty("settingsLayer2.baseErosionIntensity");
- detailErosionIntensityLayer2 = serializedObj.FindProperty("settingsLayer2.detailErosionIntensity");
- multiScatteringALayer2 = serializedObj.FindProperty("settingsLayer2.multiScatteringA");
- multiScatteringBLayer2 = serializedObj.FindProperty("settingsLayer2.multiScatteringB");
- multiScatteringCLayer2 = serializedObj.FindProperty("settingsLayer2.multiScatteringC");
- anvilBiasLayer2 = serializedObj.FindProperty("settingsLayer2.anvilBias");
- }
- public override void OnInspectorGUI()
- {
- if(!target)
- return;
- base.OnInspectorGUI();
- GUI.backgroundColor = baseModuleColor;
- GUILayout.BeginVertical("",boxStyleModified);
- GUI.backgroundColor = Color.white;
- EditorGUILayout.BeginHorizontal();
- myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Volumetric Clouds", headerFoldout);
-
-
- GUILayout.FlexibleSpace();
- if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
- {
- EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.VolumetricClouds);
- DestroyImmediate(this);
- return;
- }
- EditorGUILayout.EndHorizontal();
-
- if(myTarget.showModuleInspector)
- {
- RenderDisableInputBox();
- serializedObj.UpdateIfRequiredOrScript ();
- EditorGUI.BeginChangeCheck();
- GUILayout.Space(10);
- GUI.backgroundColor = categoryModuleColor;
- GUILayout.BeginVertical("",boxStyleModified);
- GUI.backgroundColor = Color.white;
- myTarget.showGlobalControls = GUILayout.Toggle(myTarget.showGlobalControls, "Global Settings", headerFoldout);
- if(myTarget.showGlobalControls)
- {
- GUILayout.Space(5);
- GUILayout.Label("Quality", headerStyle);
- DisableInputStartQuality();
- EditorGUILayout.PropertyField(volumetricClouds);
- DisableInputEndQuality();
- EditorGUILayout.PropertyField(depthBlending);
- DisableInputStartQuality();
- GUILayout.Space(5);
- EditorGUILayout.PropertyField(downsampling);
- EditorGUILayout.PropertyField(dualLayer);
- GUILayout.Space(5);
- EditorGUILayout.PropertyField(stepsLayer1);
- EditorGUILayout.PropertyField(stepsLayer2);
- GUILayout.Space(5);
- EditorGUILayout.PropertyField(blueNoiseIntensity);
- EditorGUILayout.PropertyField(reprojectionBlendTime);
- GUILayout.Space(5);
- EditorGUILayout.PropertyField(lodDistance);
- DisableInputEndQuality();
- EditorGUILayout.PropertyField(cloudsWorldScale);
- GUILayout.Space(10);
- GUILayout.Label("Textures", headerStyle);
- EditorGUILayout.PropertyField(noise);
- EditorGUILayout.PropertyField(detailNoise);
- EditorGUILayout.PropertyField(curlTex);
- EditorGUILayout.PropertyField(blueNoise);
- GUILayout.Space(10);
- GUILayout.Label("Lighting", headerStyle);
- EditorGUILayout.PropertyField(sunLightColorGradient);
- EditorGUILayout.PropertyField(moonLightColorGradient);
- EditorGUILayout.PropertyField(ambientColorGradient);
- EditorGUILayout.PropertyField(ambientLighIntensity);
- EditorGUILayout.PropertyField(atmosphereColorSaturateDistance);
- GUILayout.Space(10);
- GUILayout.Label("Shadows", headerStyle);
- EditorGUILayout.PropertyField(cloudShadows);
- EditorGUILayout.PropertyField(cloudShadowsIntensity);
-
- }
- GUILayout.EndVertical();
-
- //Layer 1
- GUI.backgroundColor = categoryModuleColor;
- GUILayout.BeginVertical("",boxStyleModified);
- GUI.backgroundColor = Color.white;
- myTarget.showLayer1Controls = GUILayout.Toggle(myTarget.showLayer1Controls, "Settings: Layer 1", headerFoldout);
- if(myTarget.showLayer1Controls)
- {
- //Coverage
- GUILayout.BeginVertical("",boxStyleModified);
- myTarget.showCoverageControls = GUILayout.Toggle(myTarget.showCoverageControls, "Coverage", headerFoldout);
-
- if(myTarget.showCoverageControls)
- {
- EditorGUILayout.PropertyField(bottomCloudsHeightLayer1);
- EditorGUILayout.PropertyField(topCloudsHeightLayer1);
- GUILayout.Space(10);
- DisableInputStart();
- EditorGUILayout.PropertyField(coverageLayer1);
- DisableInputEnd();
- EditorGUILayout.PropertyField(worleyFreq1Layer1);
- EditorGUILayout.PropertyField(worleyFreq2Layer1);
- DisableInputStart();
- EditorGUILayout.PropertyField(dilateCoverageLayer1);
- EditorGUILayout.PropertyField(dilateTypeLayer1);
- EditorGUILayout.PropertyField(cloudsTypeModifierLayer1);
- EditorGUILayout.PropertyField(anvilBiasLayer1);
- DisableInputEnd();
- EditorGUILayout.PropertyField(locationOffsetLayer1);
- }
- GUILayout.EndVertical();
- //Lighting
- GUILayout.BeginVertical("",boxStyleModified);
- myTarget.showLightingControls = GUILayout.Toggle(myTarget.showLightingControls, "Lighting", headerFoldout);
-
- if(myTarget.showLightingControls)
- {
- DisableInputStart();
- EditorGUILayout.PropertyField(scatteringIntensityLayer1);
-
- EditorGUILayout.PropertyField(multiScatteringALayer1);
- EditorGUILayout.PropertyField(multiScatteringBLayer1);
- EditorGUILayout.PropertyField(multiScatteringCLayer1);
- GUILayout.Space(10);
- EditorGUILayout.PropertyField(silverLiningSpreadLayer1);
- EditorGUILayout.PropertyField(powderIntensityLayer1);
- GUILayout.Space(10);
- EditorGUILayout.PropertyField(lightAbsorbtionLayer1);
- DisableInputEnd();
- EditorGUILayout.PropertyField(lightStepModifierLayer1);
- }
- GUILayout.EndVertical();
- //Density
- GUILayout.BeginVertical("",boxStyleModified);
- myTarget.showDensityControls = GUILayout.Toggle(myTarget.showDensityControls, "Density", headerFoldout);
-
- if(myTarget.showDensityControls)
- {
- DisableInputStart();
- EditorGUILayout.PropertyField(densityLayer1);
- DisableInputEnd();
- EditorGUILayout.PropertyField(baseNoiseUVLayer1);
- EditorGUILayout.PropertyField(detailNoiseUVLayer1);
- DisableInputStart();
- EditorGUILayout.PropertyField(baseErosionIntensityLayer1);
- EditorGUILayout.PropertyField(detailErosionIntensityLayer1);
- EditorGUILayout.PropertyField(curlIntensityLayer1);
- DisableInputEnd();
- }
- GUILayout.EndVertical();
- //Wind
- GUILayout.BeginVertical("",boxStyleModified);
- myTarget.showWindControls = GUILayout.Toggle(myTarget.showWindControls, "Wind", headerFoldout);
-
- if(myTarget.showWindControls)
- {
- EditorGUILayout.PropertyField(windIntensity);
- EditorGUILayout.PropertyField(cloudsWindDirectionX);
- EditorGUILayout.PropertyField(cloudsWindDirectionY);
- }
- GUILayout.EndVertical();
- }
- GUILayout.EndVertical();
- //Layer 1 End
- if(myTarget.settingsGlobal.dualLayer) {
- //Layer 2
- GUI.backgroundColor = categoryModuleColor;
- GUILayout.BeginVertical("",boxStyleModified);
- GUI.backgroundColor = Color.white;
- myTarget.showLayer2Controls = GUILayout.Toggle(myTarget.showLayer2Controls, "Settings: Layer 2", headerFoldout);
- if(myTarget.showLayer2Controls)
- {
- //Coverage
- GUILayout.BeginVertical("",boxStyleModified);
- myTarget.showCoverageControls = GUILayout.Toggle(myTarget.showCoverageControls, "Coverage", headerFoldout);
-
- if(myTarget.showCoverageControls)
- {
- EditorGUILayout.PropertyField(bottomCloudsHeightLayer2);
- EditorGUILayout.PropertyField(topCloudsHeightLayer2);
- GUILayout.Space(10);
- DisableInputStart();
- EditorGUILayout.PropertyField(coverageLayer2);
- DisableInputEnd();
- EditorGUILayout.PropertyField(worleyFreq1Layer2);
- EditorGUILayout.PropertyField(worleyFreq2Layer2);
- DisableInputStart();
- EditorGUILayout.PropertyField(dilateCoverageLayer2);
- EditorGUILayout.PropertyField(dilateTypeLayer2);
- EditorGUILayout.PropertyField(cloudsTypeModifierLayer2);
- EditorGUILayout.PropertyField(anvilBiasLayer2);
- DisableInputEnd();
- EditorGUILayout.PropertyField(locationOffsetLayer2);
- }
- GUILayout.EndVertical();
- //Lighting
- GUILayout.BeginVertical("",boxStyleModified);
- myTarget.showLightingControls = GUILayout.Toggle(myTarget.showLightingControls, "Lighting", headerFoldout);
-
- if(myTarget.showLightingControls)
- {
- DisableInputStart();
- EditorGUILayout.PropertyField(scatteringIntensityLayer2);
- EditorGUILayout.PropertyField(multiScatteringALayer2);
- EditorGUILayout.PropertyField(multiScatteringBLayer2);
- EditorGUILayout.PropertyField(multiScatteringCLayer2);
- GUILayout.Space(10);
- EditorGUILayout.PropertyField(silverLiningSpreadLayer2);
- EditorGUILayout.PropertyField(powderIntensityLayer2);
- GUILayout.Space(10);
- EditorGUILayout.PropertyField(lightAbsorbtionLayer2);
- DisableInputEnd();
- EditorGUILayout.PropertyField(lightStepModifierLayer2);
- }
- GUILayout.EndVertical();
- //Density
- GUILayout.BeginVertical("",boxStyleModified);
- myTarget.showDensityControls = GUILayout.Toggle(myTarget.showDensityControls, "Density", headerFoldout);
-
- if(myTarget.showDensityControls)
- {
- DisableInputStart();
- EditorGUILayout.PropertyField(densityLayer2);
- DisableInputEnd();
- EditorGUILayout.PropertyField(baseNoiseUVLayer2);
- EditorGUILayout.PropertyField(detailNoiseUVLayer2);
- DisableInputStart();
- EditorGUILayout.PropertyField(baseErosionIntensityLayer2);
- EditorGUILayout.PropertyField(detailErosionIntensityLayer2);
- EditorGUILayout.PropertyField(curlIntensityLayer2);
- DisableInputEnd();
- }
- GUILayout.EndVertical();
- //Wind
- GUILayout.BeginVertical("",boxStyleModified);
- myTarget.showWindControls = GUILayout.Toggle(myTarget.showWindControls, "Wind", headerFoldout);
-
- if(myTarget.showWindControls)
- {
- EditorGUILayout.PropertyField(windIntensity);
- EditorGUILayout.PropertyField(cloudsWindDirectionX);
- EditorGUILayout.PropertyField(cloudsWindDirectionY);
- }
- GUILayout.EndVertical();
- }
- GUILayout.EndVertical();
- //Layer 2 End
- }
-
-
- /// Save Load
- GUI.backgroundColor = categoryModuleColor;
- GUILayout.BeginVertical("",boxStyleModified);
- GUI.backgroundColor = Color.white;
- myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
-
- if(myTarget.showSaveLoad)
- {
- EditorGUILayout.PropertyField(preset);
- GUILayout.BeginHorizontal("",wrapStyle);
- if(myTarget.preset != null)
- {
- if(GUILayout.Button("Load"))
- {
- myTarget.LoadModuleValues();
- }
- if(GUILayout.Button("Save"))
- {
- myTarget.SaveModuleValues(myTarget.preset);
- }
- }
- if(GUILayout.Button("Save As New"))
- {
- myTarget.SaveModuleValues();
- }
- GUILayout.EndHorizontal();
- }
- GUILayout.EndVertical();
- /// Save Load End
- //Apply
- ApplyChanges ();
- }
- GUILayout.EndVertical();
- if(myTarget.showModuleInspector)
- GUILayout.Space(20);
- }
- }
- }
|