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/SlimeRenderer.cpp | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Minecraft.Client/SlimeRenderer.cpp (limited to 'Minecraft.Client/SlimeRenderer.cpp') diff --git a/Minecraft.Client/SlimeRenderer.cpp b/Minecraft.Client/SlimeRenderer.cpp new file mode 100644 index 00000000..23c9c16e --- /dev/null +++ b/Minecraft.Client/SlimeRenderer.cpp @@ -0,0 +1,44 @@ +#include "stdafx.h" +#include "SlimeRenderer.h" +#include "..\Minecraft.World\net.minecraft.world.entity.monster.h" + +SlimeRenderer::SlimeRenderer(Model *model, Model *armor, float shadow) : MobRenderer(model, shadow) +{ + this->armor = armor; +} + +int SlimeRenderer::prepareArmor(shared_ptr _slime, int layer, float a) +{ + // 4J - dynamic cast required because we aren't using templates/generics in our version + shared_ptr slime = dynamic_pointer_cast(_slime); + + if (slime->isInvisible()) return 0; + + if (layer == 0) + { + setArmor(armor); + + glEnable(GL_NORMALIZE); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + return 1; + } + if (layer == 1) + { + glDisable(GL_BLEND); + glColor4f(1, 1, 1, 1); + } + return -1; +} + +void SlimeRenderer::scale(shared_ptr _slime, float a) +{ + // 4J - dynamic cast required because we aren't using templates/generics in our version + shared_ptr slime = dynamic_pointer_cast(_slime); + + float size = (float) slime->getSize(); + float ss = (slime->oSquish + (slime->squish - slime->oSquish) * a) / (size * 0.5f + 1); + float w = 1 / (ss + 1); + glScalef(w * size, 1 / w * size, w * size); +} \ No newline at end of file -- cgit v1.2.3