Exemple #1
0
        public static SunlightParameters DeepCopy(SunlightParameters c)
        {
            SunlightParameters temp = new SunlightParameters();

            temp.orientationParameters = SunlightOrientationParameters.DeepCopy(c.orientationParameters);
            temp.lightParameters       = LightParameters.DeepCopy(c.lightParameters);
            temp.colorGradient         = c.colorGradient;
            temp.intensityCurve        = c.intensityCurve;
            return(temp);
        }
        private void GatherOverrides()
        {
            modifiedOrientationParameters = SunlightOrientationParameters.DeepCopy(sunlightParameters.orientationParameters);

            if (stack == null)
            {
                return;
            }

            var sunProps = stack.GetComponent <SunlightProperties>();

            if (sunlightParameters.lightParameters == null || modifiedOrientationParameters == null)
            {
                return;
            }

            if (sunProps.lattitude.overrideState)
            {
                modifiedOrientationParameters.lattitude = sunProps.lattitude.value;
            }
            if (sunProps.YAxis.overrideState)
            {
                modifiedOrientationParameters.yAxis = sunProps.YAxis.value;
            }

            if (Application.isPlaying)
            {
                //modifiedOrientationParameters.timeOfDay = Manager.Get<TimeOfDayManager>().timeOfDay;
                modifiedOrientationParameters.timeOfDay = Globals.GetFloat("TimeOfDay", Globals.Scope.Global);
            }

            //If overridden in volumes intensity is constant, otherwise driven by curve * intensity
            modifiedLightParameters = LightParameters.DeepCopy(sunlightParameters.lightParameters);

            if (sunProps.intensity.overrideState)
            {
                modifiedLightParameters.intensity = sunProps.intensity.value;
            }
            else if (sunlightParameters.intensityCurve != null)
            {
                modifiedLightParameters.intensity = sunlightParameters.intensityCurve.Evaluate(sunlightParameters.orientationParameters.timeOfDay) * sunlightParameters.lightParameters.intensity;
            }
            else if (sunlightParameters.intensityCurve == null)
            {
                modifiedLightParameters.intensity = sunlightParameters.lightParameters.intensity;
            }

            //If overridden intensity is constant, otherwise driven by gradient
            if (sunProps.color.overrideState)
            {
                modifiedLightParameters.colorFilter = sunProps.color.value;
            }
            else if (sunlightParameters.colorGradient != null)
            {
                modifiedLightParameters.colorFilter = sunlightParameters.colorGradient.Evaluate(sunlightParameters.orientationParameters.timeOfDay / 24);
            }

            if (sunProps.indirectMultiplier.overrideState)
            {
                modifiedLightParameters.indirectIntensity = sunProps.indirectMultiplier.value;
            }
            if (sunProps.cookieTexture.overrideState)
            {
                modifiedLightParameters.lightCookie = sunProps.cookieTexture.value;
            }
            if (sunProps.cookieSize.overrideState)
            {
                modifiedLightParameters.cookieSize = sunProps.cookieSize.value;
            }
            if (sunProps.shadowResolution.overrideState)
            {
                modifiedLightParameters.shadowResolution = sunProps.shadowResolution.value;
            }
            if (sunProps.shadowTint.overrideState)
            {
                modifiedLightParameters.shadowTint = sunProps.shadowTint.value;
            }
            if (sunProps.penumbraTint.overrideState)
            {
                modifiedLightParameters.penumbraTint = sunProps.penumbraTint.value;
            }
        }
        private void GatherOverrides()
        {
            modifiedOrientationParameters = SunlightOrientationParameters.DeepCopy(sunlightParameters.orientationParameters);

            if (stack == null)
            {
                return;
            }

            var sunProps = stack.GetComponent <SunlightProperties>();

            if (sunlightParameters.lightParameters == null || modifiedOrientationParameters == null)
            {
                return;
            }

            if (sunProps.lattitude.overrideState)
            {
                modifiedOrientationParameters.lattitude = sunProps.lattitude.value;
            }
            if (sunProps.YAxis.overrideState)
            {
                modifiedOrientationParameters.yAxis = sunProps.YAxis.value;
            }
            if (sunProps.timeOfDay.overrideState)
            {
                modifiedOrientationParameters.timeOfDay = sunProps.timeOfDay.value;
            }

            //If overridden intensity is constant, otherwise drive by curve
            if (sunProps.intensity.overrideState)
            {
                sunlightParameters.lightParameters.intensity = sunProps.intensity;
            }
            else if (sunlightParameters.intensityCurve != null)
            {
                sunlightParameters.lightParameters.intensity = sunlightParameters.intensityCurve.Evaluate(sunlightParameters.orientationParameters.timeOfDay);
            }
            if (sunlightParameters.intensityCurve == null)
            {
                Debug.LogWarning("Sun intensity curve is null");
            }

            //If overridden intensity is constant, otherwise driven by gradient
            if (sunProps.color.overrideState)
            {
                sunlightParameters.lightParameters.colorFilter = sunProps.color;
            }
            else if (sunlightParameters.colorGradient != null)
            {
                sunlightParameters.lightParameters.colorFilter = sunlightParameters.colorGradient.Evaluate(sunlightParameters.orientationParameters.timeOfDay / 24);
            }

            if (sunProps.indirectMultiplier.overrideState)
            {
                sunlightParameters.lightParameters.indirectIntensity = sunProps.indirectMultiplier;
            }
            if (sunProps.cookieTexture.overrideState)
            {
                sunlightParameters.lightParameters.lightCookie = sunProps.cookieTexture;
            }
            if (sunProps.cookieSize.overrideState)
            {
                sunlightParameters.lightParameters.cookieSize = sunProps.cookieSize;
            }
            if (sunProps.shadowResolution.overrideState)
            {
                sunlightParameters.lightParameters.shadowResolution = sunProps.shadowResolution;
            }
        }