| 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        }    }}
 |