コード例 #1
0
    public override TileChunk GetChunk(TileMap tile_map, int pos_x, int pos_y)
    {
        IPair index = new IPair(pos_x, pos_y);

        if (!chunks.ContainsKey(index))
        {
            TileChunk chunk = ScriptableObject.CreateInstance <TileChunk>();

            chunk.index_x = pos_x;
            chunk.index_y = pos_y;
            chunk.pos_x   = pos_x * tile_map.chunk_size_x;
            chunk.pos_y   = pos_y * tile_map.chunk_size_y;
            chunk.size_x  = tile_map.chunk_size_x;
            chunk.size_y  = tile_map.chunk_size_y;

            TileChunkDataLayer data_layer = new TileChunkDataLayer(chunk.size_x, chunk.size_y);

            for (int i = 0; i < chunk.size_x * chunk.size_y; ++i)
            {
                data_layer.ids[i] = (Random.value >= 0.5f ? 1 : 0);
            }

            chunk.data_layers = new List <TileChunkDataLayer>();
            chunk.user_data   = new List <ScriptableObject>();

            chunk.data_layers.Add(data_layer);

            chunks.Add(index, chunk);
        }

        return(chunks[index]);
    }
コード例 #2
0
ファイル: ChunkData.cs プロジェクト: chrisapril/dwarfcorp
        public VoxelChunk GetVoxelChunkAtWorldLocation(Vector3 worldLocation)
        {
            Point3 id = GetChunkID(worldLocation);

            if (ChunkMap.ContainsKey(id))
            {
                return(ChunkMap[id]);
            }


            return(null);
        }
コード例 #3
0
ファイル: ChunkData.cs プロジェクト: chrisapril/dwarfcorp
        public bool AddChunk(VoxelChunk chunk)
        {
            if (ChunkMap.Count < MaxChunks && !ChunkMap.ContainsKey(chunk.ID))
            {
                ChunkMap[chunk.ID] = chunk;
                return(true);
            }
            else if (ChunkMap.ContainsKey(chunk.ID))
            {
                return(false);
            }

            return(false);
        }
コード例 #4
0
ファイル: ChunkData.cs プロジェクト: chrisapril/dwarfcorp
        public List <VoxelChunk> GetAdjacentChunks(VoxelChunk chunk)
        {
            List <VoxelChunk> toReturn = new List <VoxelChunk>();

            for (int dx = -1; dx < 2; dx++)
            {
                for (int dz = -1; dz < 2; dz++)
                {
                    if (dx != 0 || dz != 0)
                    {
                        Point3 key = new Point3(chunk.ID.X + dx, 0, chunk.ID.Z + dz);

                        if (ChunkMap.ContainsKey(key))
                        {
                            toReturn.Add(ChunkMap[key]);
                        }
                    }
                }
            }

            return(toReturn);
        }