From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.Client/EnchantTableRenderer.cpp | 59 +++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Minecraft.Client/EnchantTableRenderer.cpp (limited to 'Minecraft.Client/EnchantTableRenderer.cpp') diff --git a/Minecraft.Client/EnchantTableRenderer.cpp b/Minecraft.Client/EnchantTableRenderer.cpp new file mode 100644 index 00000000..43f2b040 --- /dev/null +++ b/Minecraft.Client/EnchantTableRenderer.cpp @@ -0,0 +1,59 @@ +#include "stdafx.h" +#include "BookModel.h" +#include "..\Minecraft.World\net.minecraft.world.level.tile.entity.h" +#include "..\Minecraft.World\Mth.h" +#include "EnchantTableRenderer.h" + +EnchantTableRenderer::EnchantTableRenderer() +{ + bookModel = new BookModel(); +} + +EnchantTableRenderer::~EnchantTableRenderer() +{ + delete bookModel; +} + +void EnchantTableRenderer::render(shared_ptr _table, double x, double y, double z, float a, bool setColor, float alpha, bool useCompiled) +{ + // 4J Convert as we aren't using a templated class + shared_ptr table = dynamic_pointer_cast(_table); + +#ifdef __PSVITA__ + // AP - the book pages are made with 0 depth so the front and back polys are at the same location. This can cause z-fighting if culling is disabled which can sometimes happen + // depending on what object was last seen so make sure culling is always enabled. Should this be a problem for other platforms? + glEnable(GL_CULL_FACE); +#endif + + glPushMatrix(); + glTranslatef((float) x + 0.5f, (float) y + 12 / 16.0f, (float) z + 0.5f); + + float tt = table->time + a; + + glTranslatef(0, 0.1f + sin(tt * 0.1f) * 0.01f, 0); + float orot = (table->rot - table->oRot); + while (orot >= PI) + orot -= PI * 2; + while (orot < -PI) + orot += PI * 2; + + float yRot = table->oRot + orot * a; + + glRotatef(-yRot * 180 / PI, 0, 1, 0); + glRotatef(80, 0, 0, 1); + bindTexture(TN_ITEM_BOOK); // 4J was "/item/book.png" + + float ff1 = table->oFlip + (table->flip - table->oFlip) * a + 0.25f; + float ff2 = table->oFlip + (table->flip - table->oFlip) * a + 0.75f; + ff1 = (ff1 - Mth::fastFloor(ff1)) * 1.6f - 0.3f; + ff2 = (ff2 - Mth::fastFloor(ff2)) * 1.6f - 0.3f; + + if (ff1 < 0) ff1 = 0; + if (ff2 < 0) ff2 = 0; + if (ff1 > 1) ff1 = 1; + if (ff2 > 1) ff2 = 1; + + float o = table->oOpen + (table->open - table->oOpen) * a; + bookModel->render(nullptr, tt, ff1, ff2, o, 0, 1 / 16.0f,true); + glPopMatrix(); +} -- cgit v1.2.3