コード例 #1
0
        //static LibNoise.Primitive.SimplexPerlin mountains = new LibNoise.Primitive.SimplexPerlin("lol".GetHashCode(), NoiseQuality.Standard);
        //static LibNoise.Primitive.ImprovedPerlin caves = new LibNoise.Primitive.SimplexPerlin("lol".GetHashCode(), NoiseQuality.Standard);

        public static void Populate(ushort[] blocks, int chunkx, int chunky, bool save = false, bool erase = false)
        {
            string id;
            ushort cacheindex;
            Dictionary <ushort, string> idscache = new Dictionary <ushort, string>();

            const double TreeSpawnChance = 0.01D;

            for (int z = 0; z < Chunk.Depth; z++)
            {
                for (int y = 0; y < Chunk.Height; y++)
                {
                    for (int x = 0; x < Chunk.Width; x++)
                    {
                        cacheindex = blocks[x + Chunk.Width * y + Chunk.Width * Chunk.Height * z];

                        if (!idscache.TryGetValue(cacheindex, out id))
                        {
                            id = ItemCache.GetIdentifier(cacheindex);
                            idscache.Add(cacheindex, id);
                        }

                        if (id == "winecrash:grass" && GeneratorRandom.NextDouble() < TreeSpawnChance)
                        {
                        }
                    }
                }
            }
        }
コード例 #2
0
        private static string ToJSON(ushort[] blocks)
        {
            Dictionary <string, int> distinctIDs = new Dictionary <string, int>(64);

            int[] blocksRef = new int[Chunk.TotalBlocks];

            int chunkIndex   = 0;
            int paletteIndex = 0;

            for (int z = 0; z < Chunk.Depth; z++)
            {
                for (int y = 0; y < Chunk.Height; y++)
                {
                    for (int x = 0; x < Chunk.Width; x++)
                    {
                        string id = ItemCache.GetIdentifier(blocks[x + Chunk.Width * y + Chunk.Width * Chunk.Height * z]);

                        if (!distinctIDs.ContainsKey(id))
                        {
                            distinctIDs.Add(id, paletteIndex++);
                        }

                        blocksRef[chunkIndex++] = distinctIDs[id];
                    }
                }
            }

            return(JsonConvert.SerializeObject(new JSONChunk()
            {
                Palette = distinctIDs.Keys.ToArray(),
                Data = blocksRef
            }, Formatting.None));
        }