Пример #1
0
    public void RefreshChunk(string chunkName, Vector3 chunkPosition)
    {
        this.chunkObject = new GameObject(chunkName);
        this.chunkObject.transform.position = chunkPosition;

        foreach (Block block in chunkBlocks)
        {
            if (block.GetBlockType() == World.blockTypes[0])
            {
                this.status = chunkStatus.TO_DRAW;

                string name = (int)this.chunkObject.transform.position.x + "_" +
                              ((int)this.chunkObject.transform.position.y - 16) + "_" +
                              (int)this.chunkObject.transform.position.z;
                Chunk chunkBelow;

                if (World.chunks.TryGetValue(chunkName, out chunkBelow))
                {
                    chunkBelow.status = chunkStatus.TO_DRAW;
                }

                break;
            }
        }
    }
Пример #2
0
 public Chunk(string name, Vector3 position, Material material)
 {
     this.chunkObject = new GameObject(name);
     this.chunkObject.transform.position = position;
     this.blockMaterial = material;
     this.status        = chunkStatus.GENERATED;
     GenerateChunk(16);
 }
Пример #3
0
 public Chunk(string name, Vector3 position, Material[] material, BlockType.Type[,,] blockTypes)
 {
     this.chunkObject = new GameObject(name);
     this.chunkObject.transform.position = position;
     this.blockMaterial = material;
     this.status        = chunkStatus.GENERATED;
     GenerateLoadedChunk(16, blockTypes);
 }
Пример #4
0
 public Chunk(string name, Vector3 position, Material[] material, BlockType.Type[,,] blockTypes)
 {
     this.chunkObject = new GameObject(name);
     this.chunkObject.transform.position = position;
     this.blockMaterial = material;
     this.status        = chunkStatus.GENERATED;
     _sounds            = GameObject.Find("SoundManager").GetComponent <Sounds>();
     GenerateLoadedChunk(16, blockTypes);
 }
Пример #5
0
    public void DrawChunk(int chunkSize)
    {
        vertexIndex = 0;
        for (int z = 0; z < chunkSize; z++)
        {
            for (int y = 0; y < chunkSize; y++)
            {
                for (int x = 0; x < chunkSize; x++)
                {
                    chunkBlocks[x, y, z].RenderBlock();
                }
            }
        }

        CombineSides();

        this.status = chunkStatus.DRAWN;
    }
Пример #6
0
    private void GenerateChunk(int chunkSize)
    {
        chunkBlocks = new Block[chunkSize, chunkSize, chunkSize];
        Biome biome = BiomeUtils.SelectBiome(this.chunkObject.transform.position);

        for (int z = 0; z < chunkSize; z++)
        {
            for (int y = 0; y < chunkSize; y++)
            {
                for (int x = 0; x < chunkSize; x++)
                {
                    float     worldX     = x + chunkObject.transform.position.x;
                    float     worldY     = y + chunkObject.transform.position.y;
                    float     worldZ     = z + chunkObject.transform.position.z;
                    BlockType biomeBlock = biome.GenerateTerrain(worldX, worldY, worldZ);
                    chunkBlocks[x, y, z] = new Block(biomeBlock, this,
                                                     new Vector3(x, y, z));

                    if (biomeBlock == World.blockTypes[BlockType.Type.AIR])
                    {
                        this.status = chunkStatus.TO_DRAW;
                    }
                }
            }
        }

        if (status == chunkStatus.TO_DRAW)
        {
            string chunkName = (int)this.chunkObject.transform.position.x + "_" +
                               ((int)this.chunkObject.transform.position.y - 16) + "_" +
                               (int)this.chunkObject.transform.position.z;
            Chunk chunkBelow;

            if (World.chunks.TryGetValue(chunkName, out chunkBelow))
            {
                chunkBelow.status = chunkStatus.TO_DRAW;
            }
        }
    }