Exemple #1
0
    public void RenderUpdate()
    {
        if (renderUpToDate || blocks == null)
        {
            return;
        }
        ChunkRenderHandle renderHandle = new ChunkRenderHandle(this);

        for (int i = 0; i < chunkSizeX; ++i)
        {
            for (int j = 0; j < chunkSizeY; ++j)
            {
                for (int k = 0; k < chunkSizeZ; ++k)
                {
                    if (blocks[i, j, k] != null)
                    {
                        blocks[i, j, k].RenderAt(renderHandle, this.GetBlockCenterPosition(i, j, k), BlockVisibleStatus.AllVisible);
                    }
                }
            }
        }
        renderHandle.Apply();

        renderUpToDate = true;
    }
Exemple #2
0
    public override void RenderAt(ChunkRenderHandle handle, Vector3 position, BlockComponent component, BlockVisibleStatus visibleStatus)
    {
        if (!visibleStatus.Visible())
        {
            return;
        }

        // TODO
        // 未验证的问题:为什么改为 Vector(1, 0, 0)会出BUG
        Vector3 baseDirc = new Vector3(0, 0, 1);

        foreach (var side in Block.sides)
        {
            if (visibleStatus.FaceVisible(side.Key))
            {
                BuildMeshFace(
                    handle.meshList,
                    position,
                    Quaternion.FromToRotation(baseDirc, side.Value),
                    uvs[side.Key]);
            }
        }
    }
Exemple #3
0
 abstract public void RenderAt(ChunkRenderHandle handle, Vector3 position, BlockComponent component, BlockVisibleStatus visibleStatus);
Exemple #4
0
 public void RenderAt(ChunkRenderHandle handle, Vector3 position, BlockVisibleStatus visibleStatus)
 {
     protoType.RenderAt(handle, position, component, visibleStatus);
 }