示例#1
0
        internal virtual void OnGameWorldLoaded()
        {
            LoadGlobalConfig(api);

            worldheight = api.WorldManager.MapSizeY;
            chunkRand   = new FastPositionalRandom(api.WorldManager.Seed);
        }
示例#2
0
        internal override void OnGameWorldLoaded()
        {
            base.OnGameWorldLoaded();

            regionSize       = api.WorldManager.RegionSize;
            regionChunkSize  = api.WorldManager.RegionSize / chunksize;
            noiseSizeClimate = regionSize / TerraGenConfig.climateMapScale;
            noiseSizeOre     = regionSize / TerraGenConfig.oreMapScale;

            int seed = api.WorldManager.Seed;

            for (int i = 0; i < deposits.variants.Length; i++)
            {
                DepositVariant variant = deposits.variants[i];
                variant.Init(api);

                if (variant.WithOreMap)
                {
                    NoiseOre noiseOre = new NoiseOre(seed++);
                    variant.OreMap = GenMaps.GetOreMap(seed++, noiseOre);
                }

                if (variant.ChildDeposits != null)
                {
                    for (int k = 0; k < variant.ChildDeposits.Length; k++)
                    {
                        DepositVariant childVariant = variant.ChildDeposits[k];
                        if (childVariant.WithOreMap)
                        {
                            NoiseOre noiseOre = new NoiseOre(seed++);
                            childVariant.OreMap = GenMaps.GetOreMap(seed++, noiseOre);
                        }
                    }
                }
            }

            depositRand = new FastPositionalRandom(api.WorldManager.Seed + 34613);

            blockTypes = api.World.Blocks;
        }
示例#3
0
        private void CmdCaveGenTest(IServerPlayer player, int groupId, CmdArgs args)
        {
            chunkRand = new FastPositionalRandom(api.WorldManager.Seed);

            airBlockId = api.World.GetBlock(new AssetLocation("rock-granite")).BlockId;

            int baseChunkX = api.World.BlockAccessor.MapSizeX / 2 / chunksize;
            int baseChunkZ = api.World.BlockAccessor.MapSizeZ / 2 / chunksize;

            for (int dx = -5; dx <= 5; dx++)
            {
                for (int dz = -5; dz <= 5; dz++)
                {
                    int chunkX = baseChunkX + dx;
                    int chunkZ = baseChunkZ + dz;

                    IServerChunk[] chunks = GetChunkColumn(chunkX, chunkZ);
                    ClearChunkColumn(chunks);


                    for (int gdx = -chunkRange; gdx <= chunkRange; gdx++)
                    {
                        for (int gdz = -chunkRange; gdz <= chunkRange; gdz++)
                        {
                            chunkRand.InitPositionSeed(chunkX + gdx, chunkZ + gdz);
                            GeneratePartial(chunks, chunkX, chunkZ, gdx, gdz);
                        }
                    }

                    MarkDirty(chunkX, chunkZ, chunks);
                }
            }

            airBlockId = 0;

            player.SendMessage(groupId, "Generated and chunks force resend flags set", EnumChatType.Notification);
        }
示例#4
0
        public CloudRenderer(ICoreClientAPI capi, WeatherSimulation weatherSim)
        {
            this.capi = capi;
            capi.Event.RegisterRenderer(this, EnumRenderStage.OIT);
            capi.Event.RegisterGameTickListener(OnGameTick, 20);

            this.weatherSim = weatherSim;

            capi.Event.ReloadShader += LoadShader;
            LoadShader();

            rand           = new Random(capi.World.Seed);
            brightnessRand = new FastPositionalRandom(rand.Next());

            double time = capi.World.Calendar.TotalHours * 60;

            windOffsetX += 2f * time;
            windOffsetZ += 0.1f * time;

            tileOffsetX += (int)(windOffsetX / CloudTileSize);
            windOffsetX %= CloudTileSize;

            tileOffsetZ += (int)(windOffsetZ / CloudTileSize);
            windOffsetZ %= CloudTileSize;


            InitCloudTiles((9 * capi.World.Player.WorldData.DesiredViewDistance));
            LoadCloudModel();


            capi.Settings.AddWatcher <int>("viewDistance", OnViewDistanceChanged);
            capi.Settings.AddWatcher <bool>("renderClouds", (val) => renderClouds = val);

            renderClouds = capi.Settings.Bool["renderClouds"];

            InitCustomDataBuffers(updateMesh);
        }
示例#5
0
 internal override void OnGameWorldLoaded()
 {
     base.OnGameWorldLoaded();
     caveRand = new FastPositionalRandom(api.WorldManager.Seed + 123128);
 }