Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }