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; }
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; } }
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); }); }
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; } } }
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); } }
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); } } }