262 lines
13 KiB
C#
262 lines
13 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
namespace Enviro
|
|
{
|
|
[CustomEditor(typeof(EnviroLightingModule))]
|
|
public class EnviroLightingModuleEditor : EnviroModuleEditor
|
|
{
|
|
private EnviroLightingModule myTarget;
|
|
|
|
//Properties
|
|
//Direct Lighting
|
|
private SerializedProperty updateIntervallFrames,directLightIntensityModifier,sunIntensityCurve, moonIntensityCurve, sunColorGradient, moonColorGradient, lightingMode;
|
|
//Ambient Lighting
|
|
private SerializedProperty shadowIntensity, ambientIntensityModifier,ambientMode, ambientUpdateIntervall,ambientUpdateEveryFrame, ambientSkyColorGradient, ambientEquatorColorGradient, ambientGroundColorGradient, ambientIntensityCurve;
|
|
|
|
#if ENVIRO_HDRP
|
|
private SerializedProperty lightIntensityHDRP ,lightColorTemperatureHDRP,ambientColorTintHDRP, controlExposure, sceneExposure, controlIndirectLighting, diffuseIndirectIntensity, reflectionIndirectIntensity;
|
|
#endif
|
|
//On Enable
|
|
public override void OnEnable()
|
|
{
|
|
|
|
if(!target)
|
|
return;
|
|
|
|
base.OnEnable();
|
|
|
|
myTarget = (EnviroLightingModule)target;
|
|
serializedObj = new SerializedObject(myTarget);
|
|
preset = serializedObj.FindProperty("preset");
|
|
//Direct Lighting
|
|
updateIntervallFrames = serializedObj.FindProperty("Settings.updateIntervallFrames");
|
|
lightingMode = serializedObj.FindProperty("Settings.lightingMode");
|
|
sunIntensityCurve = serializedObj.FindProperty("Settings.sunIntensityCurve");
|
|
moonIntensityCurve = serializedObj.FindProperty("Settings.moonIntensityCurve");
|
|
sunColorGradient = serializedObj.FindProperty("Settings.sunColorGradient");
|
|
moonColorGradient = serializedObj.FindProperty("Settings.moonColorGradient");
|
|
directLightIntensityModifier = serializedObj.FindProperty("Settings.directLightIntensityModifier");
|
|
shadowIntensity = serializedObj.FindProperty("Settings.shadowIntensity");
|
|
//Ambient Lighting
|
|
ambientMode = serializedObj.FindProperty("Settings.ambientMode");
|
|
ambientSkyColorGradient = serializedObj.FindProperty("Settings.ambientSkyColorGradient");
|
|
ambientEquatorColorGradient = serializedObj.FindProperty("Settings.ambientEquatorColorGradient");
|
|
ambientGroundColorGradient = serializedObj.FindProperty("Settings.ambientGroundColorGradient");
|
|
ambientIntensityCurve = serializedObj.FindProperty("Settings.ambientIntensityCurve");
|
|
ambientIntensityModifier = serializedObj.FindProperty("Settings.ambientIntensityModifier");
|
|
ambientUpdateIntervall = serializedObj.FindProperty("Settings.ambientUpdateIntervall");
|
|
ambientUpdateEveryFrame = serializedObj.FindProperty("Settings.ambientUpdateEveryFrame");
|
|
#if ENVIRO_HDRP
|
|
lightIntensityHDRP = serializedObj.FindProperty("Settings.lightIntensityHDRP");
|
|
lightColorTemperatureHDRP = serializedObj.FindProperty("Settings.lightColorTemperatureHDRP");
|
|
ambientColorTintHDRP = serializedObj.FindProperty("Settings.ambientColorTintHDRP");
|
|
controlExposure = serializedObj.FindProperty("Settings.controlExposure");
|
|
sceneExposure = serializedObj.FindProperty("Settings.sceneExposure");
|
|
controlIndirectLighting = serializedObj.FindProperty("Settings.controlIndirectLighting");
|
|
diffuseIndirectIntensity = serializedObj.FindProperty("Settings.diffuseIndirectIntensity");
|
|
reflectionIndirectIntensity = serializedObj.FindProperty("Settings.reflectionIndirectIntensity");
|
|
#endif
|
|
}
|
|
/*
|
|
|
|
*/
|
|
public override void OnInspectorGUI()
|
|
{
|
|
if(!target)
|
|
return;
|
|
|
|
base.OnInspectorGUI();
|
|
|
|
GUI.backgroundColor = new Color(0.0f,0.0f,0.5f,1f);
|
|
GUILayout.BeginVertical("",boxStyleModified);
|
|
GUI.backgroundColor = Color.white;
|
|
EditorGUILayout.BeginHorizontal();
|
|
myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Lighting", headerFoldout);
|
|
|
|
GUILayout.FlexibleSpace();
|
|
if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
|
|
{
|
|
EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Lighting);
|
|
DestroyImmediate(this);
|
|
return;
|
|
}
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
if(myTarget.showModuleInspector)
|
|
{
|
|
RenderDisableInputBox();
|
|
serializedObj.UpdateIfRequiredOrScript ();
|
|
EditorGUI.BeginChangeCheck();
|
|
|
|
GUI.backgroundColor = categoryModuleColor;
|
|
GUILayout.BeginVertical("",boxStyleModified);
|
|
GUI.backgroundColor = Color.white;
|
|
myTarget.showDirectLightingControls = GUILayout.Toggle(myTarget.showDirectLightingControls, "Direct Lighting Controls", headerFoldout);
|
|
if(myTarget.showDirectLightingControls)
|
|
{
|
|
GUILayout.Space(10);
|
|
myTarget.Settings.setDirectLighting = EditorGUILayout.BeginToggleGroup("Set Direct Lighting",myTarget.Settings.setDirectLighting);
|
|
EditorGUILayout.PropertyField(lightingMode);
|
|
if (GUILayout.Button("Apply Lighting Mode Changes"))
|
|
{
|
|
myTarget.ApplyLightingChanges();
|
|
}
|
|
GUILayout.Space(10);
|
|
|
|
EditorGUILayout.LabelField("Lighting Updates",headerStyle);
|
|
EditorGUILayout.PropertyField(updateIntervallFrames);
|
|
GUILayout.Space(5);
|
|
EditorGUILayout.LabelField("Light Intensity",headerStyle);
|
|
|
|
EditorGUILayout.PropertyField(sunIntensityCurve);
|
|
EditorGUILayout.PropertyField(moonIntensityCurve);
|
|
#if ENVIRO_HDRP
|
|
EditorGUILayout.PropertyField(lightIntensityHDRP);
|
|
#endif
|
|
DisableInputStart();
|
|
EditorGUILayout.PropertyField(directLightIntensityModifier);
|
|
EditorGUILayout.PropertyField(shadowIntensity);
|
|
DisableInputEnd();
|
|
GUILayout.Space(10);
|
|
EditorGUILayout.LabelField("Light Color",headerStyle);
|
|
|
|
EditorGUILayout.PropertyField(sunColorGradient);
|
|
EditorGUILayout.PropertyField(moonColorGradient);
|
|
|
|
#if ENVIRO_HDRP
|
|
EditorGUILayout.PropertyField(lightColorTemperatureHDRP);
|
|
#endif
|
|
#if ENVIRO_HDRP
|
|
GUILayout.Space(10);
|
|
EditorGUILayout.LabelField("Exposure",headerStyle);
|
|
EditorGUILayout.PropertyField(controlExposure);
|
|
EditorGUILayout.PropertyField(sceneExposure);
|
|
#endif
|
|
EditorGUILayout.EndToggleGroup();
|
|
}
|
|
GUILayout.EndVertical();
|
|
|
|
GUI.backgroundColor = categoryModuleColor;
|
|
GUILayout.BeginVertical("",boxStyleModified);
|
|
GUI.backgroundColor = Color.white;
|
|
myTarget.showAmbientLightingControls = GUILayout.Toggle(myTarget.showAmbientLightingControls, "Ambient Lighting Controls", headerFoldout);
|
|
if(myTarget.showAmbientLightingControls)
|
|
{
|
|
GUILayout.Space(10);
|
|
|
|
myTarget.Settings.setAmbientLighting = EditorGUILayout.BeginToggleGroup("Set Ambient Lighting",myTarget.Settings.setAmbientLighting);
|
|
#if !ENVIRO_HDRP
|
|
EditorGUILayout.PropertyField(ambientMode);
|
|
GUILayout.Space(10);
|
|
if(myTarget.Settings.ambientMode == UnityEngine.Rendering.AmbientMode.Flat)
|
|
{
|
|
EditorGUILayout.LabelField("Ambient Color",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientSkyColorGradient);
|
|
GUILayout.Space(5);
|
|
EditorGUILayout.LabelField("Ambient Updates",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientUpdateEveryFrame);
|
|
if (!myTarget.Settings.ambientUpdateEveryFrame)
|
|
EditorGUILayout.PropertyField(ambientUpdateIntervall);
|
|
GUILayout.Space(5);
|
|
EditorGUILayout.LabelField("Ambient Intensity",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientIntensityCurve);
|
|
DisableInputStart();
|
|
EditorGUILayout.PropertyField(ambientIntensityModifier);
|
|
DisableInputEnd();
|
|
|
|
}
|
|
else if(myTarget.Settings.ambientMode == UnityEngine.Rendering.AmbientMode.Trilight)
|
|
{
|
|
EditorGUILayout.LabelField("Ambient Color",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientSkyColorGradient);
|
|
EditorGUILayout.PropertyField(ambientEquatorColorGradient);
|
|
EditorGUILayout.PropertyField(ambientGroundColorGradient);
|
|
GUILayout.Space(5);
|
|
EditorGUILayout.LabelField("Ambient Updates",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientUpdateEveryFrame);
|
|
if (!myTarget.Settings.ambientUpdateEveryFrame)
|
|
EditorGUILayout.PropertyField(ambientUpdateIntervall);
|
|
GUILayout.Space(5);
|
|
EditorGUILayout.LabelField("Ambient Intensity",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientIntensityCurve);
|
|
DisableInputStart();
|
|
EditorGUILayout.PropertyField(ambientIntensityModifier);
|
|
DisableInputEnd();
|
|
|
|
}
|
|
else
|
|
{
|
|
EditorGUILayout.LabelField("Ambient Updates",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientUpdateEveryFrame);
|
|
if (!myTarget.Settings.ambientUpdateEveryFrame)
|
|
EditorGUILayout.PropertyField(ambientUpdateIntervall);
|
|
GUILayout.Space(5);
|
|
EditorGUILayout.LabelField("Ambient Intensity",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientIntensityCurve);
|
|
DisableInputStart();
|
|
EditorGUILayout.PropertyField(ambientIntensityModifier);
|
|
DisableInputEnd();
|
|
}
|
|
#else
|
|
GUILayout.Space(5);
|
|
EditorGUILayout.PropertyField(controlIndirectLighting);
|
|
if(myTarget.Settings.controlIndirectLighting)
|
|
{
|
|
EditorGUILayout.PropertyField(diffuseIndirectIntensity);
|
|
EditorGUILayout.PropertyField(reflectionIndirectIntensity);
|
|
}
|
|
GUILayout.Space(5);
|
|
|
|
EditorGUILayout.LabelField("Indirect Color",headerStyle);
|
|
EditorGUILayout.PropertyField(ambientColorTintHDRP);
|
|
|
|
#endif
|
|
|
|
EditorGUILayout.EndToggleGroup();
|
|
}
|
|
GUILayout.EndVertical();
|
|
|
|
/// 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
|
|
|
|
ApplyChanges ();
|
|
}
|
|
GUILayout.EndVertical();
|
|
|
|
if(myTarget.showModuleInspector)
|
|
GUILayout.Space(20);
|
|
}
|
|
}
|
|
}
|