123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using System;
- namespace Enviro
- {
- [Serializable]
- public class EnviroFlatClouds
- {
- // Cirrus
- public bool useCirrusClouds = true;
- public Texture2D cirrusCloudsTex;
- [Range(0f,1f)]
- public float cirrusCloudsAlpha;
- [Range(0f,2f)]
- public float cirrusCloudsColorPower;
- [Range(0f,1f)]
- public float cirrusCloudsCoverage;
- [GradientUsage(true)]
- public Gradient cirrusCloudsColor;
- // Flat Clouds
- public bool useFlatClouds = true;
- public Texture2D flatCloudsBaseTex;
- public Texture2D flatCloudsDetailTex;
-
- [GradientUsage(true)]
- public Gradient flatCloudsLightColor;
- [GradientUsage(true)]
- public Gradient flatCloudsAmbientColor;
- [Range(0f,2f)]
- public float flatCloudsLightIntensity = 1.0f;
- [Range(0f,2f)]
- public float flatCloudsAmbientIntensity = 1.0f;
- [Range(0f,2f)]
- public float flatCloudsAbsorbtion = 0.6f;
- [Range(0f,1f)]
- public float flatCloudsHGPhase = 0.6f;
- [Range(0f,2f)]
- public float flatCloudsCoverage = 1f;
- [Range(0f,2f)]
- public float flatCloudsDensity = 1f;
- public float flatCloudsAltitude = 10f;
- public bool flatCloudsTonemapping;
- public float flatCloudsBaseTiling = 4f;
- public float flatCloudsDetailTiling = 10f;
- }
- [Serializable]
- public class EnviroFlatCloudsModule : EnviroModule
- {
- public Enviro.EnviroFlatClouds settings;
- public EnviroFlatCloudsModule preset;
- public bool showCirrusCloudsControls;
- public bool show2DCloudsControls;
-
- // Update Method
- public override void UpdateModule ()
- {
- if(settings.useCirrusClouds)
- {
- Shader.SetGlobalFloat("_CirrusClouds",1f);
- if(settings.cirrusCloudsTex != null)
- Shader.SetGlobalTexture("_CirrusCloudMap",settings.cirrusCloudsTex);
-
- Shader.SetGlobalFloat("_CirrusCloudAlpha",settings.cirrusCloudsAlpha);
- Shader.SetGlobalFloat("_CirrusCloudCoverage",settings.cirrusCloudsCoverage);
- Shader.SetGlobalFloat("_CirrusCloudColorPower",settings.cirrusCloudsColorPower);
- Shader.SetGlobalColor("_CirrusCloudColor",settings.cirrusCloudsColor.Evaluate(EnviroManager.instance.solarTime));
- }
- else
- {
- Shader.SetGlobalFloat("_CirrusClouds",0f);
- }
- if(settings.useFlatClouds)
- {
- Shader.SetGlobalFloat("_FlatClouds",1f);
- if(settings.flatCloudsBaseTex != null)
- Shader.SetGlobalTexture("_FlatCloudsBaseTexture",settings.flatCloudsBaseTex);
- if(settings.flatCloudsDetailTex != null)
- Shader.SetGlobalTexture("_FlatCloudsDetailTexture",settings.flatCloudsDetailTex);
- //_FlatCloudsAnimation;
- Shader.SetGlobalColor("_FlatCloudsLightColor", settings.flatCloudsLightColor.Evaluate(EnviroManager.instance.solarTime));
- Shader.SetGlobalColor("_FlatCloudsAmbientColor", settings.flatCloudsAmbientColor.Evaluate(EnviroManager.instance.solarTime));
- Vector3 lightDirection = Vector3.forward;
- if(EnviroManager.instance.Objects.directionalLight != null)
- lightDirection = EnviroManager.instance.Objects.directionalLight.transform.forward;
- Shader.SetGlobalVector("_FlatCloudsLightDirection",lightDirection);
- Shader.SetGlobalVector("_FlatCloudsLightingParams",new Vector4(settings.flatCloudsLightIntensity * 10f, settings.flatCloudsAmbientIntensity, settings.flatCloudsAbsorbtion,settings.flatCloudsHGPhase));
- Shader.SetGlobalVector("_FlatCloudsParams",new Vector4(settings.flatCloudsCoverage, settings.flatCloudsDensity * 5f, settings.flatCloudsAltitude,0f));
- Shader.SetGlobalVector("_FlatCloudsTiling",new Vector4(settings.flatCloudsBaseTiling, settings.flatCloudsDetailTiling, 0f,0f));
- }
- else
- {
- Shader.SetGlobalFloat("_FlatClouds",0f);
- }
- }
- //Save and Load
- public void LoadModuleValues ()
- {
- if(preset != null)
- {
- settings = JsonUtility.FromJson<Enviro.EnviroFlatClouds>(JsonUtility.ToJson(preset.settings));
- }
- else
- {
- Debug.Log("Please assign a saved module to load from!");
- }
- }
- public void SaveModuleValues ()
- {
- #if UNITY_EDITOR
- EnviroFlatCloudsModule t = ScriptableObject.CreateInstance<EnviroFlatCloudsModule>();
- t.name = "Flat Clouds Preset";
- t.settings = JsonUtility.FromJson<Enviro.EnviroFlatClouds>(JsonUtility.ToJson(settings));
-
- string assetPathAndName = UnityEditor.AssetDatabase.GenerateUniqueAssetPath("Assets/Enviro 3" + "/New " + t.name + ".asset");
- UnityEditor.AssetDatabase.CreateAsset(t, assetPathAndName);
- UnityEditor.AssetDatabase.SaveAssets();
- UnityEditor.AssetDatabase.Refresh();
- #endif
- }
- public void SaveModuleValues (EnviroFlatCloudsModule module)
- {
- module.settings = JsonUtility.FromJson<Enviro.EnviroFlatClouds>(JsonUtility.ToJson(settings));
- #if UNITY_EDITOR
- UnityEditor.EditorUtility.SetDirty(module);
- UnityEditor.AssetDatabase.SaveAssets();
- #endif
- }
- }
- }
|