Ejemplo n.º 1
0
    public static ChunkRenderCache?GenerateCache(ClientWorld world, Vector3Int from, Vector3Int to, int padding)
    {
        int startX = from.x - padding >> 4;
        int startZ = from.z - padding >> 4;
        int lastX  = to.x + padding >> 4;
        int lastZ  = to.z + padding >> 4;

        var chunks = new Chunk[lastX - startX + 1, lastZ - startZ + 1];

        for (int x = startX; x <= lastX; ++x)
        {
            for (int z = startZ; z <= lastZ; ++z)
            {
                chunks[x - startX, z - startZ] = world.GetChunk(x, z);
            }
        }

        var startPos = from - Vector3Int.one;
        var endPos   = to + Vector3Int.one;

        if (ContainsGaps(startPos, endPos, startX, startZ, chunks))
        {
            return(null);
        }

        return(new ChunkRenderCache(world, startX, startZ, startPos, endPos, chunks));
    }