/// <summary>
        /// Updates UniStorm's Cloud Quality to be Low, Medium, High, or Ultra
        /// </summary>
        public void UpdateCloudQuality(UniStormSystem.CloudQualityEnum CloudQuality)
        {
            if (UniStormSystem.Instance.UniStormInitialized)
            {
                UniStormSystem.Instance.CloudQuality = CloudQuality;
                UniStormClouds m_UniStormClouds = FindObjectOfType <UniStormClouds>();

                if (UniStormSystem.Instance.CloudShadows == UniStormSystem.EnableFeature.Enabled)
                {
                    m_UniStormClouds.SetCloudDetails((UniStormClouds.CloudPerformance)CloudQuality, (UniStormClouds.CloudType)UniStormSystem.Instance.CloudType, UniStormClouds.CloudShadowsType.Simulated);
                }
                else if (UniStormSystem.Instance.CloudShadows == UniStormSystem.EnableFeature.Disabled)
                {
                    m_UniStormClouds.SetCloudDetails((UniStormClouds.CloudPerformance)CloudQuality, (UniStormClouds.CloudType)UniStormSystem.Instance.CloudType, UniStormClouds.CloudShadowsType.Off);
                }
            }
        }
        /// <summary>
        /// Updates UniStorm's Cloud Type to be either Volumetric or 2D
        /// </summary>
        public void UpdateCloudType(UniStormSystem.CloudTypeEnum CloudType)
        {
            if (UniStormSystem.Instance.UniStormInitialized)
            {
                UniStormSystem.Instance.CloudType = CloudType;
                UniStormClouds m_UniStormClouds = FindObjectOfType <UniStormClouds>();
                Material       m_CloudsMaterial = FindObjectOfType <UniStormClouds>().skyMaterial;

                if (UniStormSystem.Instance.CloudType == UniStormSystem.CloudTypeEnum._2D)
                {
                    m_CloudsMaterial.SetFloat("_uCloudsBaseEdgeSoftness", 0.2f);
                    m_CloudsMaterial.SetFloat("_uCloudsBottomSoftness", 0.3f);
                    m_CloudsMaterial.SetFloat("_uCloudsDetailStrength", 0.1f);
                    m_CloudsMaterial.SetFloat("_uCloudsDensity", 0.3f);
                }
                else if (UniStormSystem.Instance.CloudType == UniStormSystem.CloudTypeEnum.Volumetric)
                {
                    CloudProfile m_CP = UniStormSystem.Instance.CurrentWeatherType.CloudProfileComponent;
                    m_CloudsMaterial.SetFloat("_uCloudsBaseEdgeSoftness", m_CP.EdgeSoftness);
                    m_CloudsMaterial.SetFloat("_uCloudsBottomSoftness", m_CP.BaseSoftness);
                    m_CloudsMaterial.SetFloat("_uCloudsDensity", m_CP.Density);
                    m_CloudsMaterial.SetFloat("_uCloudsBaseScale", 1.72f);

#if UNITY_COLORSPACE_GAMMA
                    m_CloudsMaterial.SetFloat("_uCloudsCoverageBias", m_CP.CoverageBias);
                    m_CloudsMaterial.SetFloat("_uCloudsDetailStrength", m_CP.DetailStrength);
#else
                    m_CloudsMaterial.SetFloat("_uCloudsCoverageBias", 0.082f);
                    m_CloudsMaterial.SetFloat("_uCloudsDetailStrength", 0.082f);
#endif
                }

                if (UniStormSystem.Instance.CloudShadows == UniStormSystem.EnableFeature.Enabled)
                {
                    m_UniStormClouds.SetCloudDetails((UniStormClouds.CloudPerformance)UniStormSystem.Instance.CloudQuality,
                                                     (UniStormClouds.CloudType)UniStormSystem.Instance.CloudType, UniStormClouds.CloudShadowsType.Simulated);
                }
                else if (UniStormSystem.Instance.CloudShadows == UniStormSystem.EnableFeature.Disabled)
                {
                    m_UniStormClouds.SetCloudDetails((UniStormClouds.CloudPerformance)UniStormSystem.Instance.CloudQuality,
                                                     (UniStormClouds.CloudType)UniStormSystem.Instance.CloudType, UniStormClouds.CloudShadowsType.Off);
                }
            }
        }