Пример #1
0
        public void WeatherProfileChanged(WeatherMakerProfileScript oldProfile, WeatherMakerProfileScript newProfile, float transitionDelay, float transitionDuration)
        {
            Precipitation               = newProfile.PrecipitationProfile.PrecipitationType;
            PrecipitationChangeDelay    = transitionDelay;
            PrecipitationChangeDuration = transitionDuration;
            PrecipitationIntensity      = newProfile.PrecipitationProfile.IntensityRange.Random();
            nextIntensityChangeSeconds  = (newProfile.PrecipitationProfile.IntensityRangeDuration.Maximum <= 0.0f ? 0.0f : newProfile.PrecipitationProfile.IntensityRangeDuration.Random());
            nextIntensityChangeRange    = newProfile.PrecipitationProfile.IntensityRange;
            nextIntensityDurationRange  = newProfile.PrecipitationProfile.IntensityRangeDuration;
            Color      oldPrecipitationTintColor          = precipitationTintColor;
            Color      oldPrecipitationMistTintColor      = precipitationMistTintColor;
            Color      oldPecipitationSecondaryTintColor  = precipitationSecondaryTintColor;
            Color      newPrecipitationTintColor          = newProfile.PrecipitationProfile.PrecipitationTintColor;
            Color      newPrecipitationMistTintColor      = newProfile.PrecipitationProfile.PrecipitationMistTintColor;
            Color      newPrecipitationSecondaryTintColor = newProfile.PrecipitationProfile.PrecipitationSecondaryTintColor;
            FloatTween tween = TweenFactory.Tween("WeatherMakerPrecipitation_" + GetInstanceID(), 0.0f, 1.0f, transitionDuration, TweenScaleFunctions.Linear, (ITween <float> c) =>
            {
                float progress                  = c.CurrentValue;
                precipitationTintColor          = Color.Lerp(oldPrecipitationTintColor, newPrecipitationTintColor, progress);
                precipitationMistTintColor      = Color.Lerp(oldPrecipitationMistTintColor, newPrecipitationMistTintColor, progress);
                precipitationSecondaryTintColor = Color.Lerp(oldPecipitationSecondaryTintColor, newPrecipitationSecondaryTintColor, progress);
            });

            tween.Delay = transitionDelay;
        }
Пример #2
0
        private void CheckForPrecipitationChange()
        {
            if (Precipitation != precipitation)
            {
                precipitation = Precipitation;
                switch (precipitation)
                {
                default:
                    ChangePrecipitation(null);
                    break;

                case WeatherMakerPrecipitationType.Rain:
                    ChangePrecipitation(RainScript);
                    break;

                case WeatherMakerPrecipitationType.Snow:
                    ChangePrecipitation(SnowScript);
                    break;

                case WeatherMakerPrecipitationType.Hail:
                    ChangePrecipitation(HailScript);
                    break;

                case WeatherMakerPrecipitationType.Sleet:
                    ChangePrecipitation(SleetScript);
                    break;

                case WeatherMakerPrecipitationType.Custom:
                    ChangePrecipitation(CustomPrecipitationScript);
                    break;
                }
            }

            // pick new intensity if profile says to do so
            if (nextIntensityChangeSeconds > 0.0f && (nextIntensityChangeSeconds -= Time.deltaTime) <= 0.0f)
            {
                if (!transitionInProgress)
                {
                    PrecipitationIntensity = nextIntensityChangeRange.Random();
                }
                nextIntensityChangeSeconds = nextIntensityDurationRange.Random();
            }

            if (PrecipitationScript != null && PrecipitationIntensity != lastPrecipitationIntensity)
            {
                lastPrecipitationIntensity = PrecipitationIntensity;
                TweenPrecipitationScript(PrecipitationScript, PrecipitationIntensity);
                PrecipitationScript.PrecipitationTintColor          = precipitationTintColor;
                PrecipitationScript.PrecipitationMistTintColor      = precipitationMistTintColor;
                PrecipitationScript.PrecipitationSecondaryTintColor = precipitationSecondaryTintColor;
            }
        }
Пример #3
0
    private void InitWeatherButtons(Button button, int i)
    {
        button.onClick.AddListener(() => {
            ReSetWeatherButtonSprite();
            WeatherButtons[i].gameObject.GetComponent <Image>().sprite = Weather_Sprite_Click[i];

            WeatherType weatherType            = new WeatherType();
            WeatherMakerPrecipitationType type = (WeatherMakerPrecipitationType)Enum.ToObject(typeof(WeatherMakerPrecipitationType), i);
            weatherType.weather = type.ToString();
            weatherType.value   = 1.0f;
            UdpSclient.Instance.SendDataToSever(ParmaterCodes.WeatherType, weatherType);
        });
    }
Пример #4
0
        private void CheckVariables()
        {
#if UNITY_EDITOR
            if (Camera == null)
            {
                Debug.LogWarning("Must assign a camera for weather maker to work properly. Tag a camera as main camera, or manually assign the camera property.");
            }
            CheckParticleVariables(RainScript);
            CheckParticleVariables(HailScript);
            CheckParticleVariables(SnowScript);
            CheckParticleVariables(SleetScript);
#endif

            if (Precipitation != precipitation)
            {
                precipitation = Precipitation;
                switch (precipitation)
                {
                default:
                    ChangePrecipitation(null);
                    break;

                case WeatherMakerPrecipitationType.Rain:
                    ChangePrecipitation(RainScript);
                    break;

                case WeatherMakerPrecipitationType.Snow:
                    ChangePrecipitation(SnowScript);
                    break;

                case WeatherMakerPrecipitationType.Hail:
                    ChangePrecipitation(HailScript);
                    break;

                case WeatherMakerPrecipitationType.Sleet:
                    ChangePrecipitation(SleetScript);
                    break;

                case WeatherMakerPrecipitationType.Custom:
                    ChangePrecipitation(CustomPrecipitationScript);
                    break;
                }
            }
        }
Пример #5
0
        private void CheckForPrecipitationChange()
        {
            if (Precipitation != precipitation)
            {
                precipitation = Precipitation;
                switch (precipitation)
                {
                default:
                    ChangePrecipitation(null);
                    break;

                case WeatherMakerPrecipitationType.Rain:
                    ChangePrecipitation(RainScript);
                    break;

                case WeatherMakerPrecipitationType.Snow:
                    ChangePrecipitation(SnowScript);
                    break;

                case WeatherMakerPrecipitationType.Hail:
                    ChangePrecipitation(HailScript);
                    break;

                case WeatherMakerPrecipitationType.Sleet:
                    ChangePrecipitation(SleetScript);
                    break;

                case WeatherMakerPrecipitationType.Custom:
                    ChangePrecipitation(CustomPrecipitationScript);
                    break;
                }
            }

            if (PrecipitationScript != null && PrecipitationIntensity != lastPrecipitationIntensityChange)
            {
                lastPrecipitationIntensityChange = PrecipitationIntensity;
                TweenScript(PrecipitationScript, PrecipitationIntensity);
            }
        }
Пример #6
0
        private void UpdateWeatherProfile()
        {
            if (_WeatherProfile == null || _WeatherProfile.Disabled)
            {
                return;
            }
            float transitionDuration = _WeatherProfile.TransitionDuration.Random();

            CloudChangeDuration = transitionDuration;
            Clouds = _WeatherProfile.CloudType;
            if (CloudScript != null)
            {
                Vector2 newCloudVelocity = UnityEngine.Random.insideUnitCircle * _WeatherProfile.CloudSpeed.Random();
                TweenFactory.Tween("WeatherMakerScriptProfileChangeCloudVelocity", CloudScript.CloudNoiseVelocity, newCloudVelocity, transitionDuration, TweenScaleFunctions.Linear, (progress) =>
                {
                    CloudScript.CloudNoiseVelocity = progress.CurrentValue;
                });
            }
            Precipitation               = _WeatherProfile.Precipitation;
            PrecipitationIntensity      = _WeatherProfile.PrecipitationIntensity;
            PrecipitationChangeDuration = transitionDuration * 0.5f;
            if (Clouds == WeatherMakerCloudType.None)
            {
                PrecipitationChangeDelay = 0.0f;
            }
            else
            {
                PrecipitationChangeDelay = transitionDuration * 0.5f;
            }
            if (FogScript != null)
            {
                FogScript.FogMode = WeatherMakerFogMode.Linear;
                FogScript.TransitionFogDensity(FogScript.FogDensity, _WeatherProfile.FogDensity, CloudChangeDuration);
                FogScript.FogHeight = _WeatherProfile.FogHeight;
            }
            if (WindScript != null)
            {
                WindScript.AnimateWindIntensity(_WeatherProfile.WindIntensity, transitionDuration);
                WindScript.WindMaximumChangeRotation = _WeatherProfile.WindMaximumChangeRotation;
                WindScript.WindMainMultiplier        = _WeatherProfile.WindMainMultiplier;
            }
            if (LightningScript != null)
            {
                FloatTween t = TweenFactory.Tween("WeatherMakerScriptProfileChangeLightning", 0.0f, 0.0f, 0.01f, TweenScaleFunctions.Linear, null, (completion) =>
                {
                    LightningScript.LightningIntenseProbability          = _WeatherProfile.LightningIntenseProbability;
                    LightningScript.LightningIntervalTimeRange           = _WeatherProfile.LightningIntervalTimeRange;
                    LightningScript.LightningForcedVisibilityProbability = _WeatherProfile.LightningForcedVisibilityProbability;
                    LightningScript.GroundLightningChance = _WeatherProfile.LightningGroundChance;
                    LightningScript.CloudLightningChance  = _WeatherProfile.LightningCloudChance;
                    LightningScript.EnableLightning       = _WeatherProfile.LightningEnabled;
                });
                t.Delay = PrecipitationChangeDelay;
            }
            GameObject player = GameObject.FindGameObjectWithTag("Player");

            if (player != null)
            {
                WeatherMakerSoundZoneScript soundZone = player.GetComponent <WeatherMakerSoundZoneScript>();
                if (soundZone != null)
                {
                    soundZone.Sounds.Clear();
                    soundZone.Sounds.AddRange(_WeatherProfile.Sounds);
                }
            }
        }