private void OnClientGameTick(float dt) { quarterSecAccum += dt; if (quarterSecAccum > 0.25f) { clientClimateCond = capi.World.BlockAccessor.GetClimateAt(plrPos, EnumGetClimateMode.NowValues); quarterSecAccum = 0; playerChunkLoaded |= capi.World.BlockAccessor.GetChunkAtBlockPos(plrPos) != null; // To avoid rain for one second right after joining } simLightning.ClientTick(dt); for (int i = 0; i < 4; i++) { WeatherSimulationRegion sim = WeatherDataAtPlayer.AdjacentSims[i]; if (sim == dummySim) { continue; } sim.TickEvery25ms(dt); } simSounds.Update(dt); rainOverlaySnap.climateCond = clientClimateCond; rainOverlaySnap.SetAmbient(rainOverlayPattern, capi == null ? 0 : capi.Ambient.Base.FogDensity.Value); }
void ProcessWeatherUpdate(WeatherState msg) { WeatherSimulationRegion weatherSim = getOrCreateWeatherSimForRegion(msg.RegionX, msg.RegionZ); if (weatherSim == null) { Console.WriteLine("weatherSim for region {0}/{1} is null. No idea what to do here", msg.RegionX, msg.RegionZ); return; } if (msg.updateInstant) { // ReloadConfigs(); weatherSim.ReloadPatterns(api.World.Seed); for (int i = 0; i < weatherSim.WeatherPatterns.Length; i++) { weatherSim.WeatherPatterns[i].Initialize(i, api.World.Seed); } } weatherSim.NewWePattern = weatherSim.WeatherPatterns[msg.NewPattern.Index]; weatherSim.NewWePattern.State = msg.NewPattern; weatherSim.OldWePattern = weatherSim.WeatherPatterns[msg.OldPattern.Index]; weatherSim.OldWePattern.State = msg.OldPattern; weatherSim.TransitionDelay = msg.TransitionDelay; weatherSim.Transitioning = msg.Transitioning; weatherSim.Weight = msg.Weight; //bool windChanged = weatherSim.CurWindPattern.State.Index != msg.WindPattern.Index; weatherSim.CurWindPattern = weatherSim.WindPatterns[msg.WindPattern.Index]; weatherSim.CurWindPattern.State = msg.WindPattern; weatherSim.CurWeatherEvent = weatherSim.WeatherEvents[msg.WeatherEvent.Index]; weatherSim.CurWeatherEvent.State = msg.WeatherEvent; if (msg.updateInstant) { weatherSim.NewWePattern.OnBeginUse(); cloudRenderer.instantTileBlend = true; } //api.World.Logger.Notification("Weather pattern update @{0}/{1}", weatherSim.regionX, weatherSim.regionZ); if (msg.Transitioning) { weatherSim.Weight = 0; } if (msg.updateInstant) { weatherSim.TickEvery25ms(0.025f); cloudRenderer.UpdateCloudTiles(short.MaxValue); } }
private void OnServerGameTick(float dt) { foreach (var val in sapi.WorldManager.AllLoadedMapRegions) { WeatherSimulationRegion weatherSim = getOrCreateWeatherSimForRegion(val.Key, val.Value); weatherSim.TickEvery25ms(dt); weatherSim.UpdateWeatherData(); } }
private void OnClientGameTick(float dt) { quarterSecAccum += dt; if (quarterSecAccum > 0.25f) { clientClimateCond = capi.World.BlockAccessor.GetClimateAt(plrPos); quarterSecAccum = 0; } simLightning.ClientTick(dt); for (int i = 0; i < 4; i++) { WeatherSimulationRegion sim = adjacentSims[i]; if (sim == dummySim) { continue; } sim.TickEvery25ms(dt); } simSounds.Update(dt); }