Example #1
0
    public void OnRender(List <Vector3> verts, List <int> tris, List <Vector2> uvs, int i, Chunk chunk, VoxelInstance voxel)
    {
        Vector3 corner = voxel.GetPosInChunk().GetVector();

        Rect    textPos = TextureHandler.Instance.GetTexture(texture);
        Vector2 padd    = new Vector2(textPos.width / 100000.0f, textPos.height / 100000.0f);
        Vector2 uvMin   = textPos.min + padd;
        Vector2 uvMax   = textPos.max - padd;

        if (chunk.ShouldRender(voxel.GetPosInChunk(), Facing.SOUTH))
        {
            RenderHelper.AddQuad(verts, tris, uvs, corner, Vector3.up, Vector3.right, uvMin, uvMax, i + verts.Count);
        }
        if (chunk.ShouldRender(voxel.GetPosInChunk(), Facing.NORTH))
        {
            RenderHelper.AddQuad(verts, tris, uvs, corner + Vector3.forward + Vector3.right, Vector3.up, Vector3.left, uvMin, uvMax, i + verts.Count);
        }
        if (chunk.ShouldRender(voxel.GetPosInChunk(), Facing.EAST))
        {
            RenderHelper.AddQuad(verts, tris, uvs, corner + Vector3.right, Vector3.up, Vector3.forward, uvMin, uvMax, i + verts.Count);
        }
        if (chunk.ShouldRender(voxel.GetPosInChunk(), Facing.WEST))
        {
            RenderHelper.AddQuad(verts, tris, uvs, corner + Vector3.forward, Vector3.up, Vector3.back, uvMin, uvMax, i + verts.Count);
        }
        if (chunk.ShouldRender(voxel.GetPosInChunk(), Facing.DOWN))
        {
            RenderHelper.AddQuad(verts, tris, uvs, corner + Vector3.forward, Vector3.back, Vector3.right, uvMin, uvMax, i + verts.Count);
        }
        if (chunk.ShouldRender(voxel.GetPosInChunk(), Facing.UP))
        {
            RenderHelper.AddQuad(verts, tris, uvs, corner + Vector3.up, Vector3.forward, Vector3.right, uvMin, uvMax, i + verts.Count);
        }
    }