| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | using System.Collections;using System.Collections.Generic;using UnityEngine;using System;namespace Enviro{    [Serializable]    public class EnviroAurora    {         [Header("Aurora Intensity")]               [Range(0f,1f)]        public float auroraIntensityModifier = 1f;        public AnimationCurve auroraIntensity = new AnimationCurve(new Keyframe(0f, 1f), new Keyframe(0.5f, 0.1f), new Keyframe(1f, 0f));         //         [Header("Aurora Color and Brightness")]        public Color auroraColor = new Color(0.1f, 0.5f, 0.7f);        public float auroraBrightness = 75f;        public float auroraContrast = 10f;        //         [Header("Aurora Height and Scale")]        public float auroraHeight = 20000f;        [Range(0f, 0.025f)]        public float auroraScale = 0.01f;        //        [Header("Aurora Performance")]        [Range(8, 32)]        public int auroraSteps = 20;        //        [Header("Aurora Modelling and Animation")]        public Vector4 auroraLayer1Settings = new Vector4(0.1f, 0.1f, 0f, 0.5f);        public Vector4 auroraLayer2Settings = new Vector4(5f, 5f, 0f, 0.5f);        public Vector4 auroraColorshiftSettings = new Vector4(0.05f, 0.05f, 0f, 5f);        [Range(0f, 0.1f)]        public float auroraSpeed = 0.005f;        [Header("Aurora Textures")]        public Texture2D aurora_layer_1;        public Texture2D aurora_layer_2;        public Texture2D aurora_colorshift;    }     [Serializable]    public class EnviroAuroraModule : EnviroModule    {          public Enviro.EnviroAurora Settings;        public EnviroAuroraModule preset;        public bool showAuroraControls;                // Update Method        public override void UpdateModule ()        {             if(EnviroManager.instance.Sky != null && EnviroManager.instance.Sky.mySkyboxMat != null)            {                UpdateAuroraShader(EnviroManager.instance.Sky.mySkyboxMat);            }        }        public void UpdateAuroraShader(Material mat)        {            mat.SetFloat("_Aurora", 1f);            if (Settings.aurora_layer_1 != null)                mat.SetTexture("_Aurora_Layer_1", Settings.aurora_layer_1);            if (Settings.aurora_layer_2 != null)                mat.SetTexture("_Aurora_Layer_2", Settings.aurora_layer_2);            if (Settings.aurora_colorshift != null)                mat.SetTexture("_Aurora_Colorshift", Settings.aurora_colorshift);            mat.SetFloat("_AuroraIntensity", Mathf.Clamp01(Settings.auroraIntensityModifier * Settings.auroraIntensity.Evaluate(EnviroManager.instance.solarTime)));            mat.SetFloat("_AuroraBrightness", Settings.auroraBrightness);            mat.SetFloat("_AuroraContrast", Settings.auroraContrast);            mat.SetColor("_AuroraColor", Settings.auroraColor);            mat.SetFloat("_AuroraHeight", Settings.auroraHeight);            mat.SetFloat("_AuroraScale", Settings.auroraScale);            mat.SetFloat("_AuroraSpeed", Settings.auroraSpeed);            mat.SetFloat("_AuroraSteps", Settings.auroraSteps);            mat.SetFloat("_AuroraSteps", Settings.auroraSteps);            mat.SetVector("_Aurora_Tiling_Layer1", Settings.auroraLayer1Settings);            mat.SetVector("_Aurora_Tiling_Layer2", Settings.auroraLayer2Settings);            mat.SetVector("_Aurora_Tiling_ColorShift", Settings.auroraColorshiftSettings);        }        //Save and Load        public void LoadModuleValues ()        {            if(preset != null)            {                Settings = JsonUtility.FromJson<Enviro.EnviroAurora>(JsonUtility.ToJson(preset.Settings));            }            else            {                Debug.Log("Please assign a saved module to load from!");            }        }        public void SaveModuleValues ()        {#if UNITY_EDITOR        EnviroAuroraModule t =  ScriptableObject.CreateInstance<EnviroAuroraModule>();        t.name = "Aurora Preset";        t.Settings = JsonUtility.FromJson<Enviro.EnviroAurora>(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 (EnviroAuroraModule module)        {            module.Settings = JsonUtility.FromJson<Enviro.EnviroAurora>(JsonUtility.ToJson(Settings));            #if UNITY_EDITOR            UnityEditor.EditorUtility.SetDirty(module);            UnityEditor.AssetDatabase.SaveAssets();            #endif        }    }}
 |