protected virtual void RenderBlock(Block block, short meta, float x, float y, float scale) { var model = block.GetState(meta).Model; if (model == null) { return; } Vector2 unit = new Vector2(1f / SharpCraft.Instance.ClientSize.Width, 1f / SharpCraft.Instance.ClientSize.Height); float width = 16; float height = 16; float scaledWidth = 16 * scale; float scaledHeight = 16 * scale; float posX = x + scaledWidth / 2; float posY = -y - scaledHeight / 2; Vector2 pos = new Vector2(posX, posY).Ceiling() * unit; Matrix4 mat = MatrixHelper.CreateTransformationMatrix(pos * 2 - Vector2.UnitX + Vector2.UnitY, scale * new Vector2(width, height) * unit); _item.Bind(); Shader.Bind(); Shader.SetMatrix4("transformationMatrix", mat); Shader.SetVector2("UVmin", model.SlotTexture.UVMin); Shader.SetVector2("UVmax", model.SlotTexture.UVMax); GL.BindTexture(TextureTarget.Texture2D, JsonModelLoader.TextureBlocks); _item.RawModel.Render(); _item.Unbind(); }
protected virtual void RenderBlock(Block block, float x, float y, float scale) { var model = JsonModelLoader.GetModelForBlock(block.UnlocalizedName); if (model == null) { return; } ModelBlockRaw mbr = (ModelBlockRaw)model.RawModel; List <float> uvs = new List <float>(8); mbr.AppendUvsForSide(FaceSides.South, uvs); Vector2 UVmin = new Vector2(uvs[0], uvs[1]); Vector2 UVmax = new Vector2(uvs[4], uvs[5]); Vector2 unit = new Vector2(1f / SharpCraft.Instance.ClientSize.Width, 1f / SharpCraft.Instance.ClientSize.Height); float width = 16; float height = 16; float scaledWidth = 16 * scale; float scaledHeight = 16 * scale; float posX = x + scaledWidth / 2; float posY = -y - scaledHeight / 2; Vector2 pos = new Vector2(posX, posY).Ceiling() * unit; Matrix4 mat = MatrixHelper.CreateTransformationMatrix(pos * 2 - Vector2.UnitX + Vector2.UnitY, scale * new Vector2(width, height) * unit); _item.Bind(); Shader.Bind(); Shader.UpdateGlobalUniforms(); Shader.UpdateModelUniforms(); Shader.UpdateInstanceUniforms(mat, UVmin, UVmax); GL.BindTexture(TextureTarget.Texture2D, JsonModelLoader.TEXTURE_BLOCKS); _item.RawModel.Render(PrimitiveType.Quads); _item.Unbind(); }