using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnviroSkyMgr : MonoBehaviour { #region Enviro Manager private static EnviroSkyMgr _instance; // Creat a static instance for easy access! public static EnviroSkyMgr instance { get { //If _instance hasn't been set yet, we grab it from the scene! //This will only happen the first time this reference is used. if (_instance == null) _instance = GameObject.FindObjectOfType(); return _instance; } } //Inspector [Header("General")] [Tooltip("Enable to make sure thast enviro objects don't get destroyed on scene load.")] public bool dontDestroy = false; public bool showSetup = true; public bool showInstances = true; public bool showThirdParty = false; public bool showUtilities = false; public bool showThirdPartyShaders = false; public bool showThirdPartyMisc = false; public bool showThirdPartyNetwork = false; public bool showUtiliies = false; public RenderTexture cube; // AURA 2 Support #if AURA_IN_PROJECT public bool aura2Support = false; public AnimationCurve aura2DirectionalLightIntensity = new AnimationCurve(new Keyframe(0f, 0.1f), new Keyframe(1f, 0.25f)); public AnimationCurve aura2DirectionalLightIntensityMoon = new AnimationCurve(new Keyframe(0f, 0.1f), new Keyframe(1f, 0.25f)); public float aura2TransitionSpeed = 1f; #endif // Cubemap Baking Support [System.Serializable] public class EnviroBaking { public int resolution = 2048; } public EnviroBaking skyBaking; public enum EnviroSkyVersion { None, #if ENVIRO_HD && ENVIRO_LW LW, HD #elif ENVIRO_HD HD #elif ENVIRO_LW LW #endif } #if ENVIRO_HD public EnviroSkyVersion currentEnviroSkyVersion = EnviroSkyVersion.HD; #elif ENVIRO_LW public EnviroSkyVersion currentEnviroSkyVersion = EnviroSkyVersion.LW; #else public EnviroSkyVersion currentEnviroSkyVersion = EnviroSkyVersion.None; #endif #if ENVIRO_HD public EnviroSky enviroHDInstance; #endif #if ENVIRO_LW public EnviroSkyLite enviroLWInstance; #endif #if UNITY_EDITOR [UnityEditor.MenuItem("Assets/Create/Enviro/Enviro Sky Manager")] public static void CreateManagerInstance() { if (EnviroSkyMgr.instance == null) { GameObject mgrObj = new GameObject(); mgrObj.name = "Enviro Sky Manager"; EnviroSkyMgr mgr = mgrObj.AddComponent(); mgrObj.AddComponent(); UnityEditor.EditorUtility.FocusProjectWindow(); UnityEditor.Selection.activeObject = mgr; UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene()); } } #endif private void Start() { if (Application.isPlaying && dontDestroy) DontDestroyOnLoad(gameObject); } private void Awake() { if (instance != this) DestroyImmediate(this.gameObject); } #if ENVIRO_HD public void ActivateHDInstance() { if (enviroHDInstance != null) { #if ENVIRO_LW if (enviroLWInstance != null) { enviroLWInstance.Deactivate(); enviroLWInstance.gameObject.SetActive(false); } #endif enviroHDInstance.gameObject.SetActive(true); enviroHDInstance.Activate(); currentEnviroSkyVersion = EnviroSkyVersion.HD; } } #endif #if ENVIRO_HD public void DeactivateHDInstance() { if (enviroHDInstance != null) { enviroHDInstance.Deactivate(); enviroHDInstance.gameObject.SetActive(false); #if ENVIRO_LW if (enviroLWInstance != null && !enviroLWInstance.gameObject.activeSelf) currentEnviroSkyVersion = EnviroSkyVersion.None; else currentEnviroSkyVersion = EnviroSkyVersion.LW; #else currentEnviroSkyVersion = EnviroSkyVersion.None; #endif } } #endif #if ENVIRO_LW public void ActivateLWInstance() { if(enviroLWInstance != null) { #if ENVIRO_HD if (enviroHDInstance != null) { enviroHDInstance.Deactivate(); enviroHDInstance.gameObject.SetActive(false); } #endif enviroLWInstance.gameObject.SetActive(true); enviroLWInstance.Activate(); currentEnviroSkyVersion = EnviroSkyVersion.LW; } } #endif #if ENVIRO_LW public void DeactivateLWInstance() { if (enviroLWInstance != null) { enviroLWInstance.Deactivate(); enviroLWInstance.gameObject.SetActive(false); #if ENVIRO_HD if(enviroHDInstance != null && !enviroHDInstance.gameObject.activeSelf) currentEnviroSkyVersion = EnviroSkyVersion.None; else currentEnviroSkyVersion = EnviroSkyVersion.HD; #else currentEnviroSkyVersion = EnviroSkyVersion.None; #endif } } #endif public void DeleteHDInstance() { #if ENVIRO_HD if (enviroHDInstance != null) { DestroyImmediate(enviroHDInstance.EffectsHolder); DestroyImmediate(enviroHDInstance.gameObject); if(enviroHDInstance.EnviroSkyRender != null) DestroyImmediate(enviroHDInstance.EnviroSkyRender); if (enviroHDInstance.EnviroPostProcessing != null) DestroyImmediate(enviroHDInstance.EnviroPostProcessing); currentEnviroSkyVersion = EnviroSkyVersion.None; } #endif } public void DeleteLWInstance() { #if ENVIRO_LW if (enviroLWInstance != null) { DestroyImmediate(enviroLWInstance.EffectsHolder); DestroyImmediate(enviroLWInstance.gameObject); if (enviroLWInstance.EnviroSkyRender != null) DestroyImmediate(enviroLWInstance.EnviroSkyRender); if (enviroLWInstance.EnviroPostProcessing != null) DestroyImmediate(enviroLWInstance.EnviroPostProcessing); currentEnviroSkyVersion = EnviroSkyVersion.None; } #endif } public void SearchForEnviroInstances() { #if ENVIRO_HD enviroHDInstance = GetComponentInChildren(); #endif #if ENVIRO_LW enviroLWInstance = GetComponentInChildren(); #endif } #if ENVIRO_HD public void CreateEnviroHDInstance() { GameObject prefab = GetAssetPrefab("Internal_Enviro_HD"); if (prefab != null && EnviroSky.instance == null) { DeactivateAllInstances(); GameObject inst = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity); inst.name = "EnviroSky Standard"; inst.transform.SetParent(transform); enviroHDInstance = inst.GetComponent(); inst.SetActive(false); currentEnviroSkyVersion = EnviroSkyVersion.None; #if UNITY_EDITOR UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene()); #endif } } #endif #if ENVIRO_HD public void CreateEnviroHDVRInstance() { GameObject prefab = GetAssetPrefab("Internal_Enviro_HD_VR"); if (prefab != null && EnviroSky.instance == null) { DeactivateAllInstances(); GameObject inst = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity); inst.name = "EnviroSky Standard for VR"; inst.transform.SetParent(transform); enviroHDInstance = inst.GetComponent(); inst.SetActive(false); currentEnviroSkyVersion = EnviroSkyVersion.None; #if UNITY_EDITOR if (!Application.isPlaying) UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene()); #endif } } #endif #if ENVIRO_LW public void CreateEnviroLWInstance() { GameObject prefab = GetAssetPrefab("Internal_Enviro_LW"); if (prefab != null && EnviroSkyLite.instance == null) { DeactivateAllInstances(); GameObject inst = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity); inst.name = "EnviroSky Lite"; inst.transform.SetParent(transform); enviroLWInstance = inst.GetComponent(); inst.SetActive(false); currentEnviroSkyVersion = EnviroSkyVersion.None; #if UNITY_EDITOR if (!Application.isPlaying) UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene()); #endif } } #endif #if ENVIRO_LW public void CreateEnviroLWMobileInstance() { GameObject prefab = GetAssetPrefab("Internal_Enviro_LW_MOBILE"); if (prefab != null && EnviroSkyLite.instance == null) { DeactivateAllInstances(); GameObject inst = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity); inst.name = "EnviroSky Lite for Mobiles"; inst.transform.SetParent(transform); enviroLWInstance = inst.GetComponent(); inst.SetActive(false); currentEnviroSkyVersion = EnviroSkyVersion.None; #if UNITY_EDITOR if (!Application.isPlaying) UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene()); #endif } } #endif private void DeactivateAllInstances() { #if ENVIRO_HD if(enviroHDInstance != null) DeactivateHDInstance(); #endif #if ENVIRO_LW if (enviroLWInstance != null) DeactivateLWInstance(); #endif } public GameObject GetAssetPrefab(string name) { #if UNITY_EDITOR string[] assets = UnityEditor.AssetDatabase.FindAssets(name, null); for (int idx = 0; idx < assets.Length; idx++) { string path = UnityEditor.AssetDatabase.GUIDToAssetPath(assets[idx]); if (path.Contains(".prefab")) { return UnityEditor.AssetDatabase.LoadAssetAtPath(path); } } #endif return null; } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region General /// /// Enviro Components References /// public EnviroComponents Components { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Components; else return EnviroSkyLite.instance.Components; #elif ENVIRO_HD return EnviroSky.instance.Components; #elif ENVIRO_LW return EnviroSkyLite.instance.Components; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Components = value; else EnviroSkyLite.instance.Components = value; #elif ENVIRO_HD EnviroSky.instance.Components = value; #elif ENVIRO_LW EnviroSkyLite.instance.Components = value; #endif } } /// /// Enviro Quality Settings /// public EnviroQualitySettings QualitySettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.qualitySettings; else return EnviroSkyLite.instance.qualitySettings; #elif ENVIRO_HD return EnviroSky.instance.qualitySettings; #elif ENVIRO_LW return EnviroSkyLite.instance.qualitySettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.qualitySettings = value; else EnviroSkyLite.instance.qualitySettings = value; #elif ENVIRO_HD EnviroSky.instance.qualitySettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.qualitySettings = value; #endif } } /// /// Enviro Time Settings /// public EnviroTime Time { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.GameTime; else return EnviroSkyLite.instance.GameTime; #elif ENVIRO_HD return EnviroSky.instance.GameTime; #elif ENVIRO_LW return EnviroSkyLite.instance.GameTime; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.GameTime = value; else EnviroSkyLite.instance.GameTime = value; #elif ENVIRO_HD EnviroSky.instance.GameTime = value; #elif ENVIRO_LW EnviroSkyLite.instance.GameTime = value; #endif } } /// /// Enviro Seasons Settings /// public EnviroSeasons Seasons { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Seasons; else return EnviroSkyLite.instance.Seasons; #elif ENVIRO_HD return EnviroSky.instance.Seasons; #elif ENVIRO_LW return EnviroSkyLite.instance.Seasons; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Seasons = value; else EnviroSkyLite.instance.Seasons = value; #elif ENVIRO_HD EnviroSky.instance.Seasons = value; #elif ENVIRO_LW EnviroSkyLite.instance.Seasons = value; #endif } } /// /// Enviro Seasons Settings /// public EnviroSeasonSettings SeasonSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.seasonsSettings; else return EnviroSkyLite.instance.seasonsSettings; #elif ENVIRO_HD return EnviroSky.instance.seasonsSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.seasonsSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.seasonsSettings = value; else EnviroSkyLite.instance.seasonsSettings = value; #elif ENVIRO_HD EnviroSky.instance.seasonsSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.seasonsSettings = value; #endif } } #if ENVIRO_HD /// /// Enviro Aurora Settings /// public EnviroAuroraSettings AuroraSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.auroraSettings; else return null; #elif ENVIRO_HD return EnviroSky.instance.auroraSettings; #elif ENVIRO_LW return null; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.auroraSettings = value; else return; #elif ENVIRO_HD EnviroSky.instance.auroraSettings = value; #elif ENVIRO_LW return; #endif } } #endif /// /// Enviro Reflection Settings /// public EnviroReflectionSettings ReflectionSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.reflectionSettings; else return EnviroSkyLite.instance.reflectionSettings; #elif ENVIRO_HD return EnviroSky.instance.reflectionSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.reflectionSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.reflectionSettings = value; else EnviroSkyLite.instance.reflectionSettings = value; #elif ENVIRO_HD EnviroSky.instance.reflectionSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.reflectionSettings = value; #endif } } /// /// Enviro Cloud Settings /// public EnviroCloudSettings CloudSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.cloudsSettings; else return EnviroSkyLite.instance.cloudsSettings; #elif ENVIRO_HD return EnviroSky.instance.cloudsSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.cloudsSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.cloudsSettings = value; else EnviroSkyLite.instance.cloudsSettings = value; #elif ENVIRO_HD EnviroSky.instance.cloudsSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.cloudsSettings = value; #endif } } /// /// Enviro Cloud Settings /// public EnviroInteriorZoneSettings InteriorZoneSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.interiorZoneSettings; else return EnviroSkyLite.instance.interiorZoneSettings; #elif ENVIRO_HD return EnviroSky.instance.interiorZoneSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.interiorZoneSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.interiorZoneSettings = value; else EnviroSkyLite.instance.interiorZoneSettings = value; #elif ENVIRO_HD EnviroSky.instance.interiorZoneSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.interiorZoneSettings = value; #endif } } /// /// Enviro Audio Settings /// public EnviroAudio AudioSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Audio; else return EnviroSkyLite.instance.Audio; #elif ENVIRO_HD return EnviroSky.instance.Audio; #elif ENVIRO_LW return EnviroSkyLite.instance.Audio; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Audio = value; else EnviroSkyLite.instance.Audio = value; #elif ENVIRO_HD EnviroSky.instance.Audio = value; #elif ENVIRO_LW EnviroSkyLite.instance.Audio = value; #endif } } /// /// Enviro Cloud Config /// public EnviroWeatherCloudsConfig Clouds { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.cloudsConfig; else return EnviroSkyLite.instance.cloudsConfig; #elif ENVIRO_HD return EnviroSky.instance.cloudsConfig; #elif ENVIRO_LW return EnviroSkyLite.instance.cloudsConfig; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.cloudsConfig = value; else EnviroSkyLite.instance.cloudsConfig = value; #elif ENVIRO_HD EnviroSky.instance.cloudsConfig = value; #elif ENVIRO_LW EnviroSkyLite.instance.cloudsConfig = value; #endif } } /// /// Enviro Cloud Config /// public EnviroWeatherSettings WeatherSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.weatherSettings; else return EnviroSkyLite.instance.weatherSettings; #elif ENVIRO_HD return EnviroSky.instance.weatherSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.weatherSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.weatherSettings = value; else EnviroSkyLite.instance.weatherSettings = value; #elif ENVIRO_HD EnviroSky.instance.weatherSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.weatherSettings = value; #endif } } /// /// Enviro Lighting Settings /// public EnviroLightSettings LightSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.lightSettings; else return EnviroSkyLite.instance.lightSettings; #elif ENVIRO_HD return EnviroSky.instance.lightSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.lightSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.lightSettings = value; else EnviroSkyLite.instance.lightSettings = value; #elif ENVIRO_HD EnviroSky.instance.lightSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.lightSettings = value; #endif } } /// /// Enviro Volume Lighting Settings /// public EnviroVolumeLightingSettings VolumeLightSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.volumeLightSettings; else return EnviroSkyLite.instance.volumeLightSettings; #elif ENVIRO_HD return EnviroSky.instance.volumeLightSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.volumeLightSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.volumeLightSettings = value; else EnviroSkyLite.instance.volumeLightSettings = value; #elif ENVIRO_HD EnviroSky.instance.volumeLightSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.volumeLightSettings = value; #endif } } /// /// Enviro Volume Lighting Settings /// public EnviroLightShaftsSettings LightShaftsSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.lightshaftsSettings; else return EnviroSkyLite.instance.lightshaftsSettings; #elif ENVIRO_HD return EnviroSky.instance.lightshaftsSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.lightshaftsSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.lightshaftsSettings = value; else EnviroSkyLite.instance.lightshaftsSettings = value; #elif ENVIRO_HD EnviroSky.instance.lightshaftsSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.lightshaftsSettings = value; #endif } } /// /// Enviro Lighting Settings /// public EnviroSkySettings SkySettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.skySettings; else return EnviroSkyLite.instance.skySettings; #elif ENVIRO_HD return EnviroSky.instance.skySettings; #elif ENVIRO_LW return EnviroSkyLite.instance.skySettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.skySettings = value; else EnviroSkyLite.instance.skySettings = value; #elif ENVIRO_HD EnviroSky.instance.skySettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.skySettings = value; #endif } } /// /// Enviro Fog Settings /// public EnviroFogSettings FogSettings { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.fogSettings; else return EnviroSkyLite.instance.fogSettings; #elif ENVIRO_HD return EnviroSky.instance.fogSettings; #elif ENVIRO_LW return EnviroSkyLite.instance.fogSettings; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.fogSettings = value; else EnviroSkyLite.instance.fogSettings = value; #elif ENVIRO_HD EnviroSky.instance.fogSettings = value; #elif ENVIRO_LW EnviroSkyLite.instance.fogSettings = value; #endif } } /// /// Enviro Player Reference /// public GameObject Player { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Player; else return EnviroSkyLite.instance.Player; #elif ENVIRO_HD return EnviroSky.instance.Player; #elif ENVIRO_LW return EnviroSkyLite.instance.Player; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Player = value; else EnviroSkyLite.instance.Player = value; #elif ENVIRO_HD EnviroSky.instance.Player = value; #elif ENVIRO_LW EnviroSkyLite.instance.Player = value; #endif } } /// /// Enviro Camera Reference /// public Camera Camera { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.PlayerCamera; else return EnviroSkyLite.instance.PlayerCamera; #elif ENVIRO_HD return EnviroSky.instance.PlayerCamera; #elif ENVIRO_LW return EnviroSkyLite.instance.PlayerCamera; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.PlayerCamera = value; else EnviroSkyLite.instance.PlayerCamera = value; #elif ENVIRO_HD EnviroSky.instance.PlayerCamera = value; #elif ENVIRO_LW EnviroSkyLite.instance.PlayerCamera = value; #endif } } /// /// Set or Get Enviro tonemapping setting. /// public bool Tonemapping { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.tonemapping; else return EnviroSkyLite.instance.tonemapping; #elif ENVIRO_HD return EnviroSky.instance.tonemapping; #elif ENVIRO_LW return EnviroSkyLite.instance.tonemapping; #else return false; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.tonemapping = value; else EnviroSkyLite.instance.tonemapping = value; #elif ENVIRO_HD EnviroSky.instance.tonemapping = value; #elif ENVIRO_LW EnviroSkyLite.instance.tonemapping = value; #endif } } /// /// Assigns Player and Camera and starts current enviro instance. /// /// public void AssignAndStart(GameObject Player, Camera cam) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.AssignAndStart(Player, cam); else EnviroSkyLite.instance.AssignAndStart(Player, cam); #elif ENVIRO_HD EnviroSky.instance.AssignAndStart(Player, cam); #elif ENVIRO_LW EnviroSkyLite.instance.AssignAndStart(Player, cam); #endif } /// /// Changes Player and Camera. /// public void ChangeFocus(GameObject Player, Camera cam) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.ChangeFocus(Player, cam); else EnviroSkyLite.instance.ChangeFocus(Player, cam); #elif ENVIRO_HD EnviroSky.instance.ChangeFocus(Player, cam); #elif ENVIRO_LW EnviroSkyLite.instance.ChangeFocus(Player, cam); #endif } /// /// Starts current enviro instance as server. /// public void StartAsServer() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.StartAsServer(); else EnviroSkyLite.instance.StartAsServer(); #elif ENVIRO_HD EnviroSky.instance.StartAsServer(); #elif ENVIRO_LW EnviroSkyLite.instance.StartAsServer(); #endif } /// /// Re Initilize Enviro Instance /// public void ReInit() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.ReInit(); else EnviroSkyLite.instance.ReInit(); #elif ENVIRO_HD EnviroSky.instance.ReInit(); #elif ENVIRO_LW EnviroSkyLite.instance.ReInit(); #endif } /// /// Setup Skybox /// public void SetupSkybox() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.SetupSkybox(); else EnviroSkyLite.instance.SetupSkybox(); #elif ENVIRO_HD EnviroSky.instance.SetupSkybox(); #elif ENVIRO_LW EnviroSkyLite.instance.SetupSkybox(); #endif } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region checks public bool IsNight() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.isNight; else return EnviroSkyLite.instance.isNight; #elif ENVIRO_HD return EnviroSky.instance.isNight; #elif ENVIRO_LW return EnviroSkyLite.instance.isNight; #else return false; #endif } public bool IsStarted() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.started; else return EnviroSkyLite.instance.started; #elif ENVIRO_HD return EnviroSky.instance.started; #elif ENVIRO_LW return EnviroSkyLite.instance.started; #else return false; #endif } public bool HasInstance() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD && EnviroSky.instance != null || currentEnviroSkyVersion == EnviroSkyVersion.LW && EnviroSkyLite.instance != null) return true; else return false; #elif ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD && EnviroSky.instance != null) return true; else return false; #elif ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.LW && EnviroSkyLite.instance != null) return true; else return false; #else return false; #endif } public bool IsInterior() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.interiorMode; else return EnviroSkyLite.instance.interiorMode; #elif ENVIRO_HD return EnviroSky.instance.interiorMode; #elif ENVIRO_LW return EnviroSkyLite.instance.interiorMode; #else return false; #endif } public bool IsEnviroSkyAttached(GameObject obj) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return obj.GetComponent(); else return obj.GetComponent(); #elif ENVIRO_HD return obj.GetComponent(); #elif ENVIRO_LW return obj.GetComponent(); #else return false; #endif } public bool IsDefaultZone(GameObject zone) { #if ENVIRO_HD && ENVIRO_LW if (zone.GetComponent() || zone.GetComponent()) return true; else return false; #elif ENVIRO_HD if (zone.GetComponent()) return true; else return false; #elif ENVIRO_LW if (zone.GetComponent()) return true; else return false; #else return false; #endif } public bool IsAutoWeatherUpdateActive() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.updateWeather; else return EnviroSkyLite.instance.Weather.updateWeather; #elif ENVIRO_HD return EnviroSky.instance.Weather.updateWeather; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.updateWeather; #else return false; #endif } public bool IsAvailable() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) if (EnviroSky.instance == null) { return false; } else { return true; } else { if (EnviroSkyLite.instance == null) { return false; } else { return true; } } #elif ENVIRO_HD if (EnviroSky.instance == null) { return false; } else { return true; } #elif ENVIRO_LW if (EnviroSkyLite.instance == null) { return false; } else { return true; } #else return false; #endif } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Weather /// /// Enviro weather runtime values /// public EnviroWeather Weather { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather; else return EnviroSkyLite.instance.Weather; #elif ENVIRO_HD return EnviroSky.instance.Weather; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Weather = value; else EnviroSkyLite.instance.Weather = value; #elif ENVIRO_HD EnviroSky.instance.Weather = value; #elif ENVIRO_LW EnviroSkyLite.instance.Weather = value; #endif } } public bool GetUseWeatherTag() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.weatherSettings.useTag; else return EnviroSkyLite.instance.weatherSettings.useTag; #elif ENVIRO_HD return EnviroSky.instance.weatherSettings.useTag; #elif ENVIRO_LW return EnviroSkyLite.instance.weatherSettings.useTag; #else return false; #endif } public string GetEnviroSkyTag() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.tag; else return EnviroSkyLite.instance.tag; #elif ENVIRO_HD return EnviroSky.instance.tag; #elif ENVIRO_LW return EnviroSkyLite.instance.tag; #else return ""; #endif } public float GetSnowIntensity() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.curSnowStrength; else return EnviroSkyLite.instance.Weather.curSnowStrength; #elif ENVIRO_HD return EnviroSky.instance.Weather.curSnowStrength; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.curSnowStrength; #else return 0f; #endif } public float GetWetnessIntensity() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.curWetness; else return EnviroSkyLite.instance.Weather.curWetness; #elif ENVIRO_HD return EnviroSky.instance.Weather.curWetness; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.curWetness; #else return 0f; #endif } /// /// Get current temperature. /// public string GetCurrentTemperatureString() { int tInt = 0; #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) tInt = (int)EnviroSky.instance.Weather.currentTemperature; else tInt = (int)EnviroSkyLite.instance.Weather.currentTemperature; string t = tInt.ToString() + "°C"; return t; #elif ENVIRO_HD tInt = (int)EnviroSky.instance.Weather.currentTemperature; string t = tInt.ToString() + "°C"; return t; #elif ENVIRO_LW tInt = (int)EnviroSkyLite.instance.Weather.currentTemperature; string t = tInt.ToString() + "°C"; return t; #else return ""; #endif } /// /// Set and Get custom fog intensity /// public float CustomFogIntensity { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.customFogIntensity; else return EnviroSkyLite.instance.customFogIntensity; #elif ENVIRO_HD return EnviroSky.instance.customFogIntensity; #elif ENVIRO_LW return EnviroSkyLite.instance.customFogIntensity; #else return 0f; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.customFogIntensity = value; else EnviroSkyLite.instance.customFogIntensity = value; #elif ENVIRO_HD EnviroSky.instance.customFogIntensity = value; #elif ENVIRO_LW EnviroSkyLite.instance.customFogIntensity = value; #endif } } /// /// Set and get custom fog color /// public Color CustomFogColor { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.customFogColor; else return EnviroSkyLite.instance.customFogColor; #elif ENVIRO_HD return EnviroSky.instance.customFogColor; #elif ENVIRO_LW return EnviroSkyLite.instance.customFogColor; #else return new Color(0, 0, 0, 0); #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.customFogColor = value; else EnviroSkyLite.instance.customFogColor = value; #elif ENVIRO_HD EnviroSky.instance.customFogColor = value; #elif ENVIRO_LW EnviroSkyLite.instance.customFogColor = value; #endif } } /// /// Activate or deactivate setting of unity Fog Density. /// public bool UpdateFogIntensity { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.updateFogDensity; else return EnviroSkyLite.instance.updateFogDensity; #elif ENVIRO_HD return EnviroSky.instance.updateFogDensity; #elif ENVIRO_LW return EnviroSkyLite.instance.updateFogDensity; #else return false; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.updateFogDensity = value; else EnviroSkyLite.instance.updateFogDensity = value; #elif ENVIRO_HD EnviroSky.instance.updateFogDensity = value; #elif ENVIRO_LW EnviroSkyLite.instance.updateFogDensity = value; #endif } } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Zones public EnviroZone GetZoneByID(int id) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.zones[id]; else return EnviroSkyLite.instance.Weather.zones[id]; #elif ENVIRO_HD return EnviroSky.instance.Weather.zones[id]; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.zones[id]; #else return null; #endif } public void RegisterZone(EnviroZone z) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.RegisterZone(z); else EnviroSkyLite.instance.RegisterZone(z); #elif ENVIRO_HD EnviroSky.instance.RegisterZone(z); #elif ENVIRO_LW EnviroSkyLite.instance.RegisterZone(z); #endif } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Time /// /// Get current time in hours. UTC0 (12.5 = 12:30) /// /// The the current time of day in hours. public float GetUniversalTimeOfDay() { #if ENVIRO_HD && ENVIRO_LW if(currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.internalHour - EnviroSky.instance.GameTime.utcOffset; else return EnviroSkyLite.instance.internalHour - EnviroSkyLite.instance.GameTime.utcOffset; #elif ENVIRO_HD return EnviroSky.instance.internalHour - EnviroSky.instance.GameTime.utcOffset; #elif ENVIRO_LW return EnviroSkyLite.instance.internalHour - EnviroSkyLite.instance.GameTime.utcOffset; #else return 0f; #endif } /// /// Get current time in hours with UTC offset. (12.5 = 12:30) /// /// The the current time of day in hours. public float GetTimeOfDay() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.internalHour; else return EnviroSkyLite.instance.internalHour; #elif ENVIRO_HD return EnviroSky.instance.internalHour; #elif ENVIRO_LW return EnviroSkyLite.instance.internalHour; #else return 0f; #endif } public double GetCurrentTimeInHours() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.currentTimeInHours; else return EnviroSkyLite.instance.currentTimeInHours; #elif ENVIRO_HD return EnviroSky.instance.currentTimeInHours; #elif ENVIRO_LW return EnviroSkyLite.instance.currentTimeInHours; #else return 0f; #endif } public EnviroSeasons.Seasons GetCurrentSeason() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Seasons.currentSeasons; else return EnviroSkyLite.instance.Seasons.currentSeasons; #elif ENVIRO_HD return EnviroSky.instance.Seasons.currentSeasons; #elif ENVIRO_LW return EnviroSkyLite.instance.Seasons.currentSeasons; #else return EnviroSeasons.Seasons.Spring; #endif } /// /// Sets the year. /// public void SetYears(int year) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.GameTime.Years = year; else EnviroSkyLite.instance.GameTime.Years = year; #elif ENVIRO_HD EnviroSky.instance.GameTime.Years = year; #elif ENVIRO_LW EnviroSkyLite.instance.GameTime.Years = year; #endif } /// /// Sets the days. /// public void SetDays(int days) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.GameTime.Days = days; else EnviroSkyLite.instance.GameTime.Days = days; #elif ENVIRO_HD EnviroSky.instance.GameTime.Days = days; #elif ENVIRO_LW EnviroSkyLite.instance.GameTime.Days = days; #endif } /// /// Set the exact date. by DateTime /// public void SetTime(System.DateTime date) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.SetTime(date); else EnviroSkyLite.instance.SetTime(date); #elif ENVIRO_HD EnviroSky.instance.SetTime(date); #elif ENVIRO_LW EnviroSkyLite.instance.SetTime(date); #endif } /// /// Set the exact date. /// public void SetTime(int year, int dayOfYear, int hour, int minute, int seconds) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.SetTime(year, dayOfYear, hour, minute, seconds); else EnviroSkyLite.instance.SetTime(year, dayOfYear, hour, minute, seconds); #elif ENVIRO_HD EnviroSky.instance.SetTime(year, dayOfYear, hour, minute, seconds); #elif ENVIRO_LW EnviroSkyLite.instance.SetTime(year, dayOfYear, hour, minute, seconds); #endif } /// /// Set the hourly event time to current hour. Use this if you change date and want to reset hourly events to be executed in next hour after you changed date. /// public void ResetHourEventTimer() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.ResetHourEventTimer(); else EnviroSkyLite.instance.ResetHourEventTimer(); #elif ENVIRO_HD EnviroSky.instance.ResetHourEventTimer(); #elif ENVIRO_LW EnviroSkyLite.instance.ResetHourEventTimer(); #endif } /// /// Set the time of day in hours. (12.5 = 12:30) /// public void SetTimeOfDay(float timeOfDay) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.SetInternalTimeOfDay(timeOfDay); else EnviroSkyLite.instance.SetInternalTimeOfDay(timeOfDay); #elif ENVIRO_HD EnviroSky.instance.SetInternalTimeOfDay(timeOfDay); #elif ENVIRO_LW EnviroSkyLite.instance.SetInternalTimeOfDay(timeOfDay); #endif } /// /// Set the time of day in hours. (12.5 = 12:30) /// public void ChangeSeason(EnviroSeasons.Seasons s) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.ChangeSeason(s); else EnviroSkyLite.instance.ChangeSeason(s); #elif ENVIRO_HD EnviroSky.instance.ChangeSeason(s); #elif ENVIRO_LW EnviroSkyLite.instance.ChangeSeason(s); #endif } /// /// Set time progession modes. For example to stop time progression. /// /// The the current time of day in hours. public void SetTimeProgress(EnviroTime.TimeProgressMode tpm) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.GameTime.ProgressTime = tpm; else EnviroSkyLite.instance.GameTime.ProgressTime = tpm; #elif ENVIRO_HD EnviroSky.instance.GameTime.ProgressTime = tpm; #elif ENVIRO_LW EnviroSkyLite.instance.GameTime.ProgressTime = tpm; #endif } /// /// Get current time in a nicely formatted string with seconds! /// /// The time string. public string GetTimeStringWithSeconds() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return string.Format("{0:00}:{1:00}:{2:00}", EnviroSky.instance.GameTime.Hours, EnviroSky.instance.GameTime.Minutes, EnviroSky.instance.GameTime.Seconds); else return string.Format("{0:00}:{1:00}:{2:00}", EnviroSkyLite.instance.GameTime.Hours, EnviroSkyLite.instance.GameTime.Minutes, EnviroSkyLite.instance.GameTime.Seconds); #elif ENVIRO_HD return string.Format("{0:00}:{1:00}:{2:00}", EnviroSky.instance.GameTime.Hours, EnviroSky.instance.GameTime.Minutes, EnviroSky.instance.GameTime.Seconds); #elif ENVIRO_LW return string.Format("{0:00}:{1:00}:{2:00}", EnviroSkyLite.instance.GameTime.Hours, EnviroSkyLite.instance.GameTime.Minutes, EnviroSkyLite.instance.GameTime.Seconds); #else return ""; #endif } /// /// Get current time in a nicely formatted string! /// /// The time string. public string GetTimeString() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return string.Format("{0:00}:{1:00}", EnviroSky.instance.GameTime.Hours, EnviroSky.instance.GameTime.Minutes); else return string.Format("{0:00}:{1:00}", EnviroSkyLite.instance.GameTime.Hours, EnviroSkyLite.instance.GameTime.Minutes); #elif ENVIRO_HD return string.Format("{0:00}:{1:00}", EnviroSky.instance.GameTime.Hours, EnviroSky.instance.GameTime.Minutes); #elif ENVIRO_LW return string.Format("{0:00}:{1:00}", EnviroSkyLite.instance.GameTime.Hours, EnviroSkyLite.instance.GameTime.Minutes); #else return ""; #endif } /// /// Get current year. /// public int GetCurrentYear() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.GameTime.Years; else return EnviroSkyLite.instance.GameTime.Years; #elif ENVIRO_HD return EnviroSky.instance.GameTime.Years; #elif ENVIRO_LW return EnviroSkyLite.instance.GameTime.Years; #else return 0; #endif } /// /// Get current Month. /// public int GetCurrentMonth() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) { System.DateTime date = new System.DateTime(); System.DateTime result = date.AddYears(EnviroSky.instance.GameTime.Years); result = date.AddDays(EnviroSky.instance.GameTime.Days); return result.Month; } else { System.DateTime date = new System.DateTime(); System.DateTime result = date.AddYears(EnviroSkyLite.instance.GameTime.Years); result = date.AddDays(EnviroSkyLite.instance.GameTime.Days); return result.Month; } #elif ENVIRO_HD System.DateTime date = new System.DateTime(); System.DateTime result = date.AddYears(EnviroSky.instance.GameTime.Years); result = date.AddDays(EnviroSky.instance.GameTime.Days); return result.Month; #elif ENVIRO_LW System.DateTime date = new System.DateTime(); System.DateTime result = date.AddYears(EnviroSkyLite.instance.GameTime.Years); result = date.AddDays(EnviroSkyLite.instance.GameTime.Days); return result.Month; #else return 0; #endif } /// /// Get a DateTime. /// public System.DateTime GetDateAsDateTime() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) { System.DateTime date = new System.DateTime(); System.DateTime result = date.AddYears(EnviroSky.instance.GameTime.Years-1); result = result.AddDays(EnviroSky.instance.GameTime.Days-1); result = result.AddHours(EnviroSky.instance.GameTime.Hours); result = result.AddMinutes(EnviroSky.instance.GameTime.Minutes); result = result.AddSeconds(EnviroSky.instance.GameTime.Seconds); return result; } else { System.DateTime date = new System.DateTime(); System.DateTime result = date.AddYears(EnviroSkyLite.instance.GameTime.Years - 1); result = result.AddDays(EnviroSkyLite.instance.GameTime.Days - 1); result = result.AddHours(EnviroSkyLite.instance.GameTime.Hours); result = result.AddMinutes(EnviroSkyLite.instance.GameTime.Minutes); result = result.AddSeconds(EnviroSkyLite.instance.GameTime.Seconds); return result; } #elif ENVIRO_HD System.DateTime date = new System.DateTime(); System.DateTime result = date.AddYears(EnviroSky.instance.GameTime.Years-1); result = result.AddDays(EnviroSky.instance.GameTime.Days-1); result = result.AddHours(EnviroSky.instance.GameTime.Hours); result = result.AddMinutes(EnviroSky.instance.GameTime.Minutes); result = result.AddSeconds(EnviroSky.instance.GameTime.Seconds); return result; #elif ENVIRO_LW System.DateTime date = new System.DateTime(); System.DateTime result = date.AddYears(EnviroSkyLite.instance.GameTime.Years - 1); result = result.AddDays(EnviroSkyLite.instance.GameTime.Days - 1); result = result.AddHours(EnviroSkyLite.instance.GameTime.Hours); result = result.AddMinutes(EnviroSkyLite.instance.GameTime.Minutes); result = result.AddSeconds(EnviroSkyLite.instance.GameTime.Seconds); return result; #else System.DateTime date = new System.DateTime(); return date; #endif } /// /// Get current Day. /// public int GetCurrentDay() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.GameTime.Days; else return EnviroSkyLite.instance.GameTime.Days; #elif ENVIRO_HD return EnviroSky.instance.GameTime.Days; #elif ENVIRO_LW return EnviroSkyLite.instance.GameTime.Days; #else return 0; #endif } /// /// Get current hour. /// public int GetCurrentHour() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.GameTime.Hours; else return EnviroSkyLite.instance.GameTime.Hours; #elif ENVIRO_HD return EnviroSky.instance.GameTime.Hours; #elif ENVIRO_LW return EnviroSkyLite.instance.GameTime.Hours; #else return 0; #endif } /// /// Get current minutes. /// public int GetCurrentMinute() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.GameTime.Minutes; else return EnviroSkyLite.instance.GameTime.Minutes; #elif ENVIRO_HD return EnviroSky.instance.GameTime.Minutes; #elif ENVIRO_LW return EnviroSkyLite.instance.GameTime.Minutes; #else return 0; #endif } /// /// Get current minutes. /// public int GetCurrentSecond() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.GameTime.Seconds; else return EnviroSkyLite.instance.GameTime.Seconds; #elif ENVIRO_HD return EnviroSky.instance.GameTime.Seconds; #elif ENVIRO_LW return EnviroSkyLite.instance.GameTime.Seconds; #else return 0; #endif } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Weather /// /// Set weather directly with list id of Weather.WeatherTemplates. No transtions! /// public void ChangeWeatherInstant(int weatherId) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.SetWeatherOverwrite(weatherId); else EnviroSkyLite.instance.SetWeatherOverwrite(weatherId); #elif ENVIRO_HD EnviroSky.instance.SetWeatherOverwrite(weatherId); #elif ENVIRO_LW EnviroSkyLite.instance.SetWeatherOverwrite(weatherId); #endif } /// /// Set weather directly with preset of Weather.WeatherTemplates. No transtions! /// public void ChangeWeatherInstant(EnviroWeatherPreset preset) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.SetWeatherOverwrite(preset); else EnviroSkyLite.instance.SetWeatherOverwrite(preset); #elif ENVIRO_HD EnviroSky.instance.SetWeatherOverwrite(preset); #elif ENVIRO_LW EnviroSkyLite.instance.SetWeatherOverwrite(preset); #endif } /// /// Set weather over id with smooth transtion. /// public void ChangeWeather(int weatherId) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.ChangeWeather(weatherId); else EnviroSkyLite.instance.ChangeWeather(weatherId); #elif ENVIRO_HD EnviroSky.instance.ChangeWeather(weatherId); #elif ENVIRO_LW EnviroSkyLite.instance.ChangeWeather(weatherId); #endif } /// /// Set weather over Preset with smooth transtion. /// public void ChangeWeather(EnviroWeatherPreset preset) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.ChangeWeather(preset); else EnviroSkyLite.instance.ChangeWeather(preset); #elif ENVIRO_HD EnviroSky.instance.ChangeWeather(preset); #elif ENVIRO_LW EnviroSkyLite.instance.ChangeWeather(preset); #endif } /// /// Set weather over Name with smooth transtion. /// public void ChangeWeather(string Name) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.ChangeWeather(Name); else EnviroSkyLite.instance.ChangeWeather(Name); #elif ENVIRO_HD EnviroSky.instance.ChangeWeather(Name); #elif ENVIRO_LW EnviroSkyLite.instance.ChangeWeather(Name); #endif } public EnviroZone GetCurrentActiveZone() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.currentActiveZone; else return EnviroSkyLite.instance.Weather.currentActiveZone; #elif ENVIRO_HD return EnviroSky.instance.Weather.currentActiveZone; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.currentActiveZone; #else return null; #endif } public void SetCurrentActiveZone(EnviroZone z) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Weather.currentActiveZone = z; else EnviroSkyLite.instance.Weather.currentActiveZone = z; #elif ENVIRO_HD EnviroSky.instance.Weather.currentActiveZone = z; #elif ENVIRO_LW EnviroSkyLite.instance.Weather.currentActiveZone = z; #endif } public void InstantWeatherChange(EnviroWeatherPreset preset, EnviroWeatherPrefab prefab) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.InstantWeatherChange(preset, prefab); else EnviroSkyLite.instance.InstantWeatherChange(preset, prefab); #elif ENVIRO_HD EnviroSky.instance.InstantWeatherChange(preset, prefab); #elif ENVIRO_LW EnviroSkyLite.instance.InstantWeatherChange(preset, prefab); #endif } public void SetToZone(int z) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Weather.currentActiveZone = EnviroSky.instance.Weather.zones[z]; else EnviroSkyLite.instance.Weather.currentActiveZone = EnviroSkyLite.instance.Weather.zones[z]; #elif ENVIRO_HD EnviroSky.instance.Weather.currentActiveZone = EnviroSky.instance.Weather.zones[z]; #elif ENVIRO_LW EnviroSkyLite.instance.Weather.currentActiveZone = EnviroSkyLite.instance.Weather.zones[z]; #endif } public EnviroWeatherPreset GetCurrentWeatherPreset () { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.currentActiveWeatherPreset; else return EnviroSkyLite.instance.Weather.currentActiveWeatherPreset; #elif ENVIRO_HD return EnviroSky.instance.Weather.currentActiveWeatherPreset; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.currentActiveWeatherPreset; #else return null; #endif } public EnviroWeatherPreset GetStartWeatherPreset() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.startWeatherPreset; else return EnviroSkyLite.instance.Weather.startWeatherPreset; #elif ENVIRO_HD return EnviroSky.instance.Weather.startWeatherPreset; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.startWeatherPreset; #else return null; #endif } public List GetCurrentWeatherPresetList() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.weatherPresets; else return EnviroSkyLite.instance.Weather.weatherPresets; #elif ENVIRO_HD return EnviroSky.instance.Weather.weatherPresets; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.weatherPresets; #else return null; #endif } public List GetCurrentWeatherPrefabList() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.WeatherPrefabs; else return EnviroSkyLite.instance.Weather.WeatherPrefabs; #elif ENVIRO_HD return EnviroSky.instance.Weather.WeatherPrefabs; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.WeatherPrefabs; #else return null; #endif } public List GetZoneList() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.zones; else return EnviroSkyLite.instance.Weather.zones; #elif ENVIRO_HD return EnviroSky.instance.Weather.zones; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.zones; #else return null; #endif } public void ChangeZoneWeather(int zoneId, int weatherId) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) { EnviroSky.instance.Weather.zones[zoneId].currentActiveZoneWeatherPrefab = EnviroSky.instance.Weather.WeatherPrefabs[weatherId]; EnviroSky.instance.Weather.zones[zoneId].currentActiveZoneWeatherPreset = EnviroSky.instance.Weather.WeatherPrefabs[weatherId].weatherPreset; } else { EnviroSkyLite.instance.Weather.zones[zoneId].currentActiveZoneWeatherPrefab = EnviroSkyLite.instance.Weather.WeatherPrefabs[weatherId]; EnviroSkyLite.instance.Weather.zones[zoneId].currentActiveZoneWeatherPreset = EnviroSkyLite.instance.Weather.WeatherPrefabs[weatherId].weatherPreset; } #elif ENVIRO_HD EnviroSky.instance.Weather.zones[zoneId].currentActiveZoneWeatherPrefab = EnviroSky.instance.Weather.WeatherPrefabs[weatherId]; EnviroSky.instance.Weather.zones[zoneId].currentActiveZoneWeatherPreset = EnviroSky.instance.Weather.WeatherPrefabs[weatherId].weatherPreset; #elif ENVIRO_LW EnviroSkyLite.instance.Weather.zones[zoneId].currentActiveZoneWeatherPrefab = EnviroSkyLite.instance.Weather.WeatherPrefabs[weatherId]; EnviroSkyLite.instance.Weather.zones[zoneId].currentActiveZoneWeatherPreset = EnviroSkyLite.instance.Weather.WeatherPrefabs[weatherId].weatherPreset; #endif } public void SetAutoWeatherUpdates(bool b) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Weather.updateWeather = b; else EnviroSkyLite.instance.Weather.updateWeather = b; #elif ENVIRO_HD EnviroSky.instance.Weather.updateWeather = b; #elif ENVIRO_LW EnviroSkyLite.instance.Weather.updateWeather = b; #endif } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Audio /// /// Get and Set ambient audio volume /// public float ambientAudioVolume { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Audio.ambientSFXVolume; else return EnviroSkyLite.instance.Audio.ambientSFXVolume; #elif ENVIRO_HD return EnviroSky.instance.Audio.ambientSFXVolume; #elif ENVIRO_LW return EnviroSkyLite.instance.Audio.ambientSFXVolume; #else return 0f; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Audio.ambientSFXVolume = value; else EnviroSkyLite.instance.Audio.ambientSFXVolume = value; #elif ENVIRO_HD EnviroSky.instance.Audio.ambientSFXVolume = value; #elif ENVIRO_LW EnviroSkyLite.instance.Audio.ambientSFXVolume = value; #else return; #endif } } /// /// Get and Set weather audio volume /// public float weatherAudioVolume { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Audio.weatherSFXVolume; else return EnviroSkyLite.instance.Audio.weatherSFXVolume; #elif ENVIRO_HD return EnviroSky.instance.Audio.weatherSFXVolume; #elif ENVIRO_LW return EnviroSkyLite.instance.Audio.weatherSFXVolume; #else return 0f; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Audio.weatherSFXVolume = value; else EnviroSkyLite.instance.Audio.weatherSFXVolume = value; #elif ENVIRO_HD EnviroSky.instance.Audio.weatherSFXVolume = value; #elif ENVIRO_LW EnviroSkyLite.instance.Audio.weatherSFXVolume = value; #else return; #endif } } /// /// Get and Set ambient audio volume modifier /// public float ambientAudioVolumeModifier { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Audio.ambientSFXVolumeMod; else return EnviroSkyLite.instance.Audio.ambientSFXVolumeMod; #elif ENVIRO_HD return EnviroSky.instance.Audio.ambientSFXVolumeMod; #elif ENVIRO_LW return EnviroSkyLite.instance.Audio.ambientSFXVolumeMod; #else return 0f; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Audio.ambientSFXVolumeMod = value; else EnviroSkyLite.instance.Audio.ambientSFXVolumeMod = value; #elif ENVIRO_HD EnviroSky.instance.Audio.ambientSFXVolumeMod = value; #elif ENVIRO_LW EnviroSkyLite.instance.Audio.ambientSFXVolumeMod = value; #endif } } /// /// Get and Set weather audio volume modifier /// public float weatherAudioVolumeModifier { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Audio.weatherSFXVolumeMod; else return EnviroSkyLite.instance.Audio.weatherSFXVolumeMod; #elif ENVIRO_HD return EnviroSky.instance.Audio.weatherSFXVolumeMod; #elif ENVIRO_LW return EnviroSkyLite.instance.Audio.weatherSFXVolumeMod; #else return 0f; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.Audio.weatherSFXVolumeMod = value; else EnviroSkyLite.instance.Audio.weatherSFXVolumeMod = value; #elif ENVIRO_HD EnviroSky.instance.Audio.weatherSFXVolumeMod = value; #elif ENVIRO_LW EnviroSkyLite.instance.Audio.weatherSFXVolumeMod = value; #endif } } /// /// Get and set audio transition speed /// public float audioTransitionSpeed { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.weatherSettings.audioTransitionSpeed; else return EnviroSkyLite.instance.weatherSettings.audioTransitionSpeed; #elif ENVIRO_HD return EnviroSky.instance.weatherSettings.audioTransitionSpeed; #elif ENVIRO_LW return EnviroSkyLite.instance.weatherSettings.audioTransitionSpeed; #else return 0f; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.weatherSettings.audioTransitionSpeed = value; else EnviroSkyLite.instance.weatherSettings.audioTransitionSpeed = value; #elif ENVIRO_HD EnviroSky.instance.weatherSettings.audioTransitionSpeed = value; #elif ENVIRO_LW EnviroSkyLite.instance.weatherSettings.audioTransitionSpeed = value; #else return; #endif } } /// /// Get and set interior zone audio volume /// public float interiorZoneAudioVolume { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.interiorZoneSettings.currentInteriorZoneAudioVolume; else return EnviroSkyLite.instance.interiorZoneSettings.currentInteriorZoneAudioVolume; #elif ENVIRO_HD return EnviroSky.instance.interiorZoneSettings.currentInteriorZoneAudioVolume; #elif ENVIRO_LW return EnviroSkyLite.instance.interiorZoneSettings.currentInteriorZoneAudioVolume; #else return 0f; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.interiorZoneSettings.currentInteriorZoneAudioVolume = value; else EnviroSkyLite.instance.interiorZoneSettings.currentInteriorZoneAudioVolume = value; #elif ENVIRO_HD EnviroSky.instance.interiorZoneSettings.currentInteriorZoneAudioVolume = value; #elif ENVIRO_LW EnviroSkyLite.instance.interiorZoneSettings.currentInteriorZoneAudioVolume = value; #else return; #endif } } /// /// Get and set interior zone audio fading speed /// public float interiorZoneAudioFadingSpeed { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.interiorZoneSettings.currentInteriorZoneAudioFadingSpeed; else return EnviroSkyLite.instance.interiorZoneSettings.currentInteriorZoneAudioFadingSpeed; #elif ENVIRO_HD return EnviroSky.instance.interiorZoneSettings.currentInteriorZoneAudioFadingSpeed; #elif ENVIRO_LW return EnviroSkyLite.instance.interiorZoneSettings.currentInteriorZoneAudioFadingSpeed; #else return 0f; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.interiorZoneSettings.currentInteriorZoneAudioFadingSpeed = value; else EnviroSkyLite.instance.interiorZoneSettings.currentInteriorZoneAudioFadingSpeed = value; #elif ENVIRO_HD EnviroSky.instance.interiorZoneSettings.currentInteriorZoneAudioFadingSpeed = value; #elif ENVIRO_LW EnviroSkyLite.instance.interiorZoneSettings.currentInteriorZoneAudioFadingSpeed = value; #else return; #endif } } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Utilites #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Helper public GameObject GetVFXHolder() { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.Weather.VFXHolder; else return EnviroSkyLite.instance.Weather.VFXHolder; #elif ENVIRO_HD return EnviroSky.instance.Weather.VFXHolder; #elif ENVIRO_LW return EnviroSkyLite.instance.Weather.VFXHolder; #else return null; #endif } /// /// Triggers a ligtning flash when setting higher than zero. /// /// public void SetLightningFlashTrigger(float trigger) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.thunder = trigger; else EnviroSkyLite.instance.thunder = trigger; #elif ENVIRO_HD EnviroSky.instance.thunder = trigger; #elif ENVIRO_LW EnviroSkyLite.instance.thunder = trigger; #endif } public float GetEmissionRate(ParticleSystem system) { return system.emission.rateOverTime.constantMax; } public void SetEmissionRate(ParticleSystem sys, float emissionRate) { var emission = sys.emission; var rate = emission.rateOverTime; rate.constantMax = emissionRate; emission.rateOverTime = rate; } public void RegisterVegetationInstance(EnviroVegetationInstance v) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.RegisterMe(v); else EnviroSkyLite.instance.RegisterMe(v); #elif ENVIRO_HD EnviroSky.instance.RegisterMe(v); #elif ENVIRO_LW EnviroSkyLite.instance.RegisterMe(v); #endif } public double GetInHours(float hours, float days, float years) { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.GetInHours(hours, days, years, EnviroSky.instance.GameTime.DaysInYear); else return EnviroSkyLite.instance.GetInHours(hours, days, years, EnviroSkyLite.instance.GameTime.DaysInYear); #elif ENVIRO_HD return EnviroSky.instance.GetInHours(hours, days, years, EnviroSky.instance.GameTime.DaysInYear); #elif ENVIRO_LW return EnviroSkyLite.instance.GetInHours(hours, days, years, EnviroSkyLite.instance.GameTime.DaysInYear); #else return 0; #endif } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Features /// /// Enable/Disable Volumn Clouds /// public bool useVolumeClouds { get { #if ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.useVolumeClouds; else return false; #else return false; #endif } set { #if ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.useVolumeClouds = value; #endif } } /// /// Enable/Disable Aurora Effect /// public bool useAurora { get { #if ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.useAurora; else return false; #else return false; #endif } set { #if ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.useAurora = value; #endif } } /// /// Enable/Disable Volumn Lighting /// public bool useVolumeLighting { get { #if ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.useVolumeLighting; else return false; #else return false; #endif } set { #if ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.useVolumeLighting = value; #endif } } /// /// Enable/Disable flat clouds /// public bool useFlatClouds { get { #if ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.useFlatClouds; else return false; #else return false; #endif } set { #if ENVIRO_HD if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.useFlatClouds = value; #endif } } /// /// Enable/Disable flat clouds /// public bool useParticleClouds { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.useParticleClouds; else return EnviroSkyLite.instance.useParticleClouds; #elif ENVIRO_HD return EnviroSky.instance.useParticleClouds; #elif ENVIRO_LW return EnviroSkyLite.instance.useParticleClouds; #else return false; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.useParticleClouds = value; else EnviroSkyLite.instance.useParticleClouds = value; #elif ENVIRO_HD EnviroSky.instance.useParticleClouds = value; #elif ENVIRO_LW EnviroSkyLite.instance.useParticleClouds = value; #endif } } /// /// Enable/Disable sun light shafts clouds /// public bool useSunShafts { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.LightShafts.sunLightShafts; else return EnviroSkyLite.instance.LightShafts.sunLightShafts; #elif ENVIRO_HD return EnviroSky.instance.LightShafts.sunLightShafts; #elif ENVIRO_LW return EnviroSkyLite.instance.LightShafts.sunLightShafts; #else return false; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.LightShafts.sunLightShafts = value; else EnviroSkyLite.instance.LightShafts.sunLightShafts = value; #elif ENVIRO_HD EnviroSky.instance.LightShafts.sunLightShafts = value; #elif ENVIRO_LW EnviroSkyLite.instance.LightShafts.sunLightShafts = value; #endif } } /// /// Enable/Disable moon light shafts clouds /// public bool useMoonShafts { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.LightShafts.moonLightShafts; else return EnviroSkyLite.instance.LightShafts.moonLightShafts; #elif ENVIRO_HD return EnviroSky.instance.LightShafts.moonLightShafts; #elif ENVIRO_LW return EnviroSkyLite.instance.LightShafts.moonLightShafts; #else return false; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.LightShafts.moonLightShafts = value; else EnviroSkyLite.instance.LightShafts.moonLightShafts = value; #elif ENVIRO_HD EnviroSky.instance.LightShafts.moonLightShafts = value; #elif ENVIRO_LW EnviroSkyLite.instance.LightShafts.moonLightShafts = value; #endif } } /// /// Enable/Disable distance blurring /// public bool useDistanceBlur { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.useDistanceBlur; else return false; #elif ENVIRO_HD return EnviroSky.instance.useDistanceBlur; #elif ENVIRO_LW return false; #else return false; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.useDistanceBlur = value; #elif ENVIRO_HD EnviroSky.instance.useDistanceBlur = value; #elif ENVIRO_LW #endif } } /// /// Enable/Disable fog rendering /// public bool useFog { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.useFog; else return EnviroSkyLite.instance.usePostEffectFog; #elif ENVIRO_HD return EnviroSky.instance.useFog; #elif ENVIRO_LW return EnviroSkyLite.instance.usePostEffectFog; #else return false; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.useFog = value; else EnviroSkyLite.instance.usePostEffectFog = value; #elif ENVIRO_HD EnviroSky.instance.useFog = value; #elif ENVIRO_LW EnviroSkyLite.instance.usePostEffectFog = value; #endif } } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Events // Events public delegate void HourPassed(); public delegate void DayPassed(); public delegate void YearPassed(); public delegate void WeatherChanged(EnviroWeatherPreset weatherType); public delegate void ZoneWeatherChanged(EnviroWeatherPreset weatherType, EnviroZone zone); public delegate void SeasonChanged(EnviroSeasons.Seasons season); public delegate void isNightE(); public delegate void isDay(); public delegate void ZoneChanged(EnviroZone zone); public event HourPassed OnHourPassed; public event DayPassed OnDayPassed; public event YearPassed OnYearPassed; public event WeatherChanged OnWeatherChanged; public event ZoneWeatherChanged OnZoneWeatherChanged; public event SeasonChanged OnSeasonChanged; public event isNightE OnNightTime; public event isDay OnDayTime; public event ZoneChanged OnZoneChanged; // Events: public virtual void NotifyHourPassed() { if (OnHourPassed != null) OnHourPassed(); } public virtual void NotifyDayPassed() { if (OnDayPassed != null) OnDayPassed(); } public virtual void NotifyYearPassed() { if (OnYearPassed != null) OnYearPassed(); } public virtual void NotifyWeatherChanged(EnviroWeatherPreset type) { if (OnWeatherChanged != null) OnWeatherChanged(type); } public virtual void NotifyZoneWeatherChanged(EnviroWeatherPreset type, EnviroZone zone) { if (OnZoneWeatherChanged != null) OnZoneWeatherChanged(type, zone); } public virtual void NotifySeasonChanged(EnviroSeasons.Seasons season) { if (OnSeasonChanged != null) OnSeasonChanged(season); } public virtual void NotifyIsNight() { if (OnNightTime != null) OnNightTime(); } public virtual void NotifyIsDay() { if (OnDayTime != null) OnDayTime(); } public virtual void NotifyZoneChanged(EnviroZone zone) { if (OnZoneChanged != null) OnZoneChanged(zone); } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region InteriorZones /// /// Get and Set interior mode used by InteriorZones /// public bool interiorMode { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.interiorMode; else return EnviroSkyLite.instance.interiorMode; #elif ENVIRO_HD return EnviroSky.instance.interiorMode; #elif ENVIRO_LW return EnviroSkyLite.instance.interiorMode; #else return false; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.interiorMode = value; else EnviroSkyLite.instance.interiorMode = value; #elif ENVIRO_HD EnviroSky.instance.interiorMode = value; #elif ENVIRO_LW EnviroSkyLite.instance.interiorMode = value; #else return; #endif } } /// /// Get and Set last Interior zone /// public EnviroInterior lastInteriorZone { get { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) return EnviroSky.instance.lastInteriorZone; else return EnviroSkyLite.instance.lastInteriorZone; #elif ENVIRO_HD return EnviroSky.instance.lastInteriorZone; #elif ENVIRO_LW return EnviroSkyLite.instance.lastInteriorZone; #else return null; #endif } set { #if ENVIRO_HD && ENVIRO_LW if (currentEnviroSkyVersion == EnviroSkyVersion.HD) EnviroSky.instance.lastInteriorZone = value; else EnviroSkyLite.instance.lastInteriorZone = value; #elif ENVIRO_HD EnviroSky.instance.lastInteriorZone = value; #elif ENVIRO_LW EnviroSkyLite.instance.lastInteriorZone = value; #else return; #endif } } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// }