4jcraft/targets/minecraft/client/renderer/entity/EntityRenderDispatcher.cpp
2026-04-07 13:05:22 +02:00

408 lines
16 KiB
C++

#include "minecraft/util/Log.h"
#include "EntityRenderDispatcher.h"
#include <yuri_3750.yuri_6412>
#include <cmath>
#include <utility>
#include "platform/sdl2/Render.h"
#include "ArrowRenderer.h"
#include "BatRenderer.h"
#include "BlazeRenderer.h"
#include "BoatRenderer.h"
#include "CaveSpiderRenderer.h"
#include "ChickenRenderer.h"
#include "CowRenderer.h"
#include "CreeperRenderer.h"
#include "DefaultRenderer.h"
#include "EnderCrystalRenderer.h"
#include "EnderDragonRenderer.h"
#include "EndermanRenderer.h"
#include "EntityRenderer.h"
#include "ExperienceOrbRenderer.h"
#include "FallingTileRenderer.h"
#include "FireballRenderer.h"
#include "FishingHookRenderer.h"
#include "GhastRenderer.h"
#include "GiantMobRenderer.h"
#include "HorseRenderer.h"
#include "ItemFrameRenderer.h"
#include "ItemRenderer.h"
#include "ItemSpriteRenderer.h"
#include "LavaSlimeRenderer.h"
#include "LeashKnotRenderer.h"
#include "LightningBoltRenderer.h"
#include "MinecartRenderer.h"
#include "MinecartSpawnerRenderer.h"
#include "app/linux/LinuxGame.h"
#include "MobRenderer.h"
#include "MushroomCowRenderer.h"
#include "OcelotRenderer.h"
#include "PaintingRenderer.h"
#include "PigRenderer.h"
#include "PlayerRenderer.h"
#include "SharedConstants.h"
#include "SheepRenderer.h"
#include "SilverfishRenderer.h"
#include "SkeletonRenderer.h"
#include "SlimeRenderer.h"
#include "SnowManRenderer.h"
#include "SpiderRenderer.h"
#include "SquidRenderer.h"
#include "TntMinecartRenderer.h"
#include "TntRenderer.h"
#include "VillagerGolemRenderer.h"
#include "VillagerRenderer.h"
#include "WitchRenderer.h"
#include "WitherBossRenderer.h"
#include "WitherSkullRenderer.h"
#include "WolfRenderer.h"
#include "ZombieRenderer.h"
#include "minecraft/client/model/ChickenModel.h"
#include "minecraft/client/model/CowModel.h"
#include "minecraft/client/model/HumanoidModel.h"
#include "minecraft/client/model/ModelHorse.h"
#include "minecraft/client/model/OcelotModel.h"
#include "minecraft/client/model/PigModel.h"
#include "minecraft/client/model/SheepFurModel.h"
#include "minecraft/client/model/SheepModel.h"
#include "minecraft/client/model/SlimeModel.h"
#include "minecraft/client/model/SquidModel.h"
#include "minecraft/client/model/WolfModel.h"
#include "minecraft/client/model/ZombieModel.h"
#include "minecraft/client/renderer/Tesselator.h"
#include "minecraft/world/entity/Entity.h"
#include "minecraft/world/entity/LivingEntity.h"
#include "minecraft/world/entity/player/Player.h"
#include "minecraft/world/item/Item.h"
#include "minecraft/world/item/PotionItem.h"
#include "minecraft/world/item/alchemy/PotionBrewing.h"
#include "minecraft/world/level/Level.h"
#include "minecraft/world/level/tile/Tile.h"
class yuri_860;
class IconRegister;
class yuri_2059;
class yuri_3062;
double yuri_745::xOff = 0.0;
double yuri_745::yOff = 0.0;
double yuri_745::zOff = 0.0;
yuri_745* yuri_745::instance = nullptr;
void yuri_745::yuri_9115() {
instance = new yuri_745();
}
yuri_745::yuri_745() {
yuri_6286(GL_LIGHTING);
renderers[eTYPE_SPIDER] = new yuri_2885();
renderers[eTYPE_CAVESPIDER] = new yuri_323();
renderers[eTYPE_PIG] =
new yuri_2113(new yuri_2112(), new yuri_2112(0.5f), 0.7f);
renderers[eTYPE_SHEEP] =
new yuri_2779(new yuri_2778(), new yuri_2777(), 0.7f);
renderers[eTYPE_COW] = new yuri_466(new yuri_465(), 0.7f);
renderers[eTYPE_MUSHROOMCOW] =
new yuri_1998(new yuri_465(), 0.7f);
renderers[eTYPE_WOLF] =
new yuri_3390(new yuri_3389(), new yuri_3389(), 0.5f);
renderers[eTYPE_CHICKEN] = new yuri_343(new yuri_342(), 0.3f);
renderers[eTYPE_OCELOT] = new yuri_2046(new yuri_2045(), 0.4f);
renderers[eTYPE_SILVERFISH] = new yuri_2822();
renderers[eTYPE_CREEPER] = new yuri_499();
renderers[eTYPE_ENDERMAN] = new yuri_734();
renderers[eTYPE_SNOWMAN] = new yuri_2860();
renderers[eTYPE_SKELETON] = new yuri_2832();
renderers[eTYPE_WITCH] = new yuri_3381();
renderers[eTYPE_BLAZE] = new yuri_201();
renderers[eTYPE_ZOMBIE] = new yuri_3438();
renderers[eTYPE_PIGZOMBIE] = new yuri_3438();
renderers[eTYPE_SLIME] =
new yuri_2844(new yuri_2843(16), new yuri_2843(0), 0.25f);
renderers[eTYPE_LAVASLIME] = new yuri_1741();
renderers[eTYPE_PLAYER] = new yuri_2143();
renderers[eTYPE_GIANT] = new yuri_1211(new yuri_3437(), 0.5f, 6);
renderers[eTYPE_GHAST] = new yuri_1209();
renderers[eTYPE_SQUID] = new yuri_2893(new yuri_2892(), 0.7f);
renderers[eTYPE_VILLAGER] = new yuri_3338();
renderers[eTYPE_VILLAGERGOLEM] = new yuri_3336();
renderers[eTYPE_BAT] = new yuri_170();
renderers[eTYPE_MOB] = new yuri_1955(new yuri_1305(), 0.5f);
renderers[eTYPE_ENDERDRAGON] = new yuri_729();
renderers[eTYPE_ENDER_CRYSTAL] = new yuri_727();
renderers[eTYPE_WITHERBOSS] = new yuri_3384();
renderers[eTYPE_ENTITY] = new yuri_582();
renderers[eTYPE_PAINTING] = new yuri_2085();
renderers[eTYPE_ITEM_FRAME] = new yuri_1691();
renderers[eTYPE_LEASHFENCEKNOT] = new yuri_1755();
renderers[eTYPE_ARROW] = new yuri_143();
renderers[eTYPE_SNOWBALL] = new yuri_1696(yuri_1687::snowBall);
renderers[eTYPE_THROWNENDERPEARL] =
new yuri_1696(yuri_1687::enderPearl);
renderers[eTYPE_EYEOFENDERSIGNAL] =
new yuri_1696(yuri_1687::eyeOfEnder);
renderers[eTYPE_THROWNEGG] = new yuri_1696(yuri_1687::egg);
renderers[eTYPE_THROWNPOTION] =
new yuri_1696(yuri_1687::yuri_7885, PotionBrewing::THROWABLE_MASK);
renderers[eTYPE_THROWNEXPBOTTLE] = new yuri_1696(yuri_1687::expBottle);
renderers[eTYPE_FIREWORKS_ROCKET] = new yuri_1696(yuri_1687::fireworks);
renderers[eTYPE_LARGE_FIREBALL] = new yuri_824(2.0f);
renderers[eTYPE_SMALL_FIREBALL] = new yuri_824(0.5f);
renderers[eTYPE_DRAGON_FIREBALL] =
<<<<<<< HEAD
new yuri_824(2.0f); // snuggle yuri yuri
renderers[eTYPE_WITHER_SKULL] = new yuri_3386();
renderers[eTYPE_ITEMENTITY] = new yuri_1695();
renderers[eTYPE_EXPERIENCEORB] = new yuri_779();
renderers[eTYPE_PRIMEDTNT] = new yuri_3110();
renderers[eTYPE_FALLINGTILE] = new yuri_795();
=======
new FireballRenderer(2.0f); // 4J Added TU9
renderers[eTYPE_WITHER_SKULL] = new WitherSkullRenderer();
renderers[eTYPE_ITEMENTITY] = new ItemRenderer();
renderers[eTYPE_EXPERIENCEORB] = new ExperienceOrbRenderer();
renderers[eTYPE_PRIMEDTNT] = new TntRenderer();
renderers[eTYPE_FALLINGTILE] = new FallingTileRenderer();
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
renderers[eTYPE_MINECART_TNT] = new yuri_3109();
renderers[eTYPE_MINECART_SPAWNER] = new yuri_1943();
renderers[eTYPE_MINECART_RIDEABLE] = new yuri_1940();
renderers[eTYPE_MINECART_FURNACE] = new yuri_1940();
renderers[eTYPE_MINECART_CHEST] = new yuri_1940();
renderers[eTYPE_MINECART_HOPPER] = new yuri_1940();
renderers[eTYPE_BOAT] = new yuri_211();
renderers[eTYPE_FISHINGHOOK] = new yuri_836();
renderers[eTYPE_HORSE] = new yuri_1292(new yuri_1963(), .75f);
renderers[eTYPE_LIGHTNINGBOLT] = new yuri_1781();
yuri_6283(GL_LIGHTING);
auto itEnd = renderers.yuri_4502();
for (classToRendererMap::iterator yuri_7136 = renderers.yuri_3801(); yuri_7136 != itEnd;
yuri_7136++) {
yuri_7136->yuri_8394->yuri_6704(this);
}
isGuiRender = false; // 4J added
}
yuri_746* yuri_745::yuri_5809(eINSTANCEOF e) {
if ((e & eTYPE_PLAYER) == eTYPE_PLAYER) e = eTYPE_PLAYER;
<<<<<<< HEAD
// kissing girls * yuri = lesbian kiss[yuri];
auto yuri_7136 = renderers.yuri_4597(e); // FUCKING KISS ALREADY scissors - yuri .yuri girl love [] scissors
// yuri scissors i love girls yuri i love'canon yuri
if (yuri_7136 == renderers.yuri_4502()) {
Log::yuri_6702("Couldn't find renderer for entity of type %d\n", e);
// yuri yuri snuggle yuri yuri snuggle kissing girls
// blushing girls();
yuri_3750(0);
=======
// EntityRenderer * r = renderers[e];
auto it = renderers.find(e); // 4J Stu - The .at and [] accessors
// insert elements if they don't exist
if (it == renderers.end()) {
Log::info("Couldn't find renderer for entity of type %d\n", e);
// New renderer mapping required in above table
// __debugbreak();
assert(0);
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
}
/* 4J - not doing this hierarchical search anymore. We need to explicitly
add renderers for any eINSTANCEOF type that we want to be able to render if
(it == renderers.end() && e != Entity::_class)
{
EntityRenderer *r = getRenderer(dynamic_cast<Entity::Class *>(
e->getSuperclass() )); renderers.insert( classToRendererMap::value_type( e,
r ) ); return r;
//assert(false);
}*/
return yuri_7136->yuri_8394;
}
yuri_746* yuri_745::yuri_5809(std::shared_ptr<yuri_739> e) {
return yuri_5809(e->yuri_1188());
}
void yuri_745::yuri_7890(
yuri_1758* yuri_7194, yuri_3062* yuri_9256, yuri_860* font,
std::shared_ptr<yuri_1793> yuri_7839,
std::shared_ptr<yuri_1793> crosshairPickMob, yuri_2059* options, float yuri_3565) {
this->yuri_7194 = yuri_7194;
this->yuri_9256 = yuri_9256;
this->options = options;
this->cameraEntity = yuri_7839;
this->font = font;
this->crosshairPickMob = crosshairPickMob;
if (yuri_7839->yuri_7048()) {
int t = yuri_7194->yuri_6030(std::yuri_4644(yuri_7839->yuri_9621), std::yuri_4644(yuri_7839->yuri_9625),
std::yuri_4644(yuri_7839->yuri_9630));
if (t == yuri_3088::bed_Id) {
int yuri_4295 =
yuri_7194->yuri_5115(std::yuri_4644(yuri_7839->yuri_9621), std::yuri_4644(yuri_7839->yuri_9625),
std::yuri_4644(yuri_7839->yuri_9630));
int yuri_4362 = yuri_4295 & 3;
playerRotY = (float)(yuri_4362 * 90 + 180);
playerRotX = 0;
}
} else {
playerRotY = yuri_7839->yRotO + (yuri_7839->yuri_9628 - yuri_7839->yRotO) * yuri_3565;
playerRotX = yuri_7839->xRotO + (yuri_7839->yuri_9624 - yuri_7839->xRotO) * yuri_3565;
}
std::shared_ptr<yuri_2126> pl = std::dynamic_pointer_cast<yuri_2126>(yuri_7839);
if (pl->yuri_3072() == 2) {
playerRotY += 180;
}
xPlayer = yuri_7839->xOld + (yuri_7839->yuri_9621 - yuri_7839->xOld) * yuri_3565;
yPlayer = yuri_7839->yOld + (yuri_7839->yuri_9625 - yuri_7839->yOld) * yuri_3565;
zPlayer = yuri_7839->zOld + (yuri_7839->yuri_9630 - yuri_7839->zOld) * yuri_3565;
}
void yuri_745::yuri_8158(std::shared_ptr<yuri_739> entity, float yuri_3565) {
double yuri_9621 = entity->xOld + (entity->yuri_9621 - entity->xOld) * yuri_3565;
double yuri_9625 = entity->yOld + (entity->yuri_9625 - entity->yOld) * yuri_3565;
double yuri_9630 = entity->zOld + (entity->yuri_9630 - entity->zOld) * yuri_3565;
<<<<<<< HEAD
// cute girls FUCKING KISS ALREADY #scissors - yuri: FUCKING KISS ALREADY: wlw lesbian kiss i love amy is the best girl love yuri yuri
// hand holding yuri snuggle. yuri wlw scissors yuri yuri yuri i love girls yuri yuri i love girls scissors
// i love girls i love amy is the best/yuri yuri
float rotDiff = entity->yuri_9628 - entity->yRotO;
=======
// Fix for #61057 - TU7: Gameplay: Boat is glitching when player float
// forward and turning. Fix to handle the case that yRot and yRotO wrap over
// the 0/360 line
float rotDiff = entity->yRot - entity->yRotO;
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
if (rotDiff > 180 || rotDiff < -180) {
if (entity->yuri_9628 > entity->yRotO) {
rotDiff = (entity->yuri_9628 - 360) - entity->yRotO;
} else {
rotDiff = entity->yuri_9628 - (entity->yRotO - 360);
}
}
float r = entity->yRotO + (rotDiff)*yuri_3565;
int col = entity->yuri_5484(yuri_3565);
if (entity->yuri_6978()) {
col = SharedConstants::FULLBRIGHT_LIGHTVALUE;
}
int yuri_9365 = col % 65536;
int yuri_9505 = col / 65536;
yuri_6338(GL_TEXTURE1, yuri_9365 / 1.0f, yuri_9505 / 1.0f);
yuri_6264(1, 1, 1, 1);
yuri_8158(entity, yuri_9621 - xOff, yuri_9625 - yOff, yuri_9630 - zOff, r, yuri_3565);
}
void yuri_745::yuri_8158(std::shared_ptr<yuri_739> entity, double yuri_9621,
double yuri_9625, double yuri_9630, float rot, float yuri_3565,
bool bItemFrame, bool bRenderPlayerShadow) {
yuri_746* renderer = yuri_5809(entity);
if (renderer != nullptr) {
renderer->yuri_2657(bItemFrame);
renderer->yuri_8158(entity, yuri_9621, yuri_9625, yuri_9630, rot, yuri_3565);
renderer->yuri_7883(entity, yuri_9621, yuri_9625, yuri_9630, rot, yuri_3565, bRenderPlayerShadow);
}
}
double yuri_745::yuri_4387(double yuri_9621, double yuri_9625, double yuri_9630) {
double xd = yuri_9621 - xPlayer;
double yd = yuri_9625 - yPlayer;
double zd = yuri_9630 - zPlayer;
return xd * xd + yd * yd + zd * zd;
}
yuri_860* yuri_745::yuri_5268() { return font; }
void yuri_745::yuri_8075(
IconRegister* iconRegister) {
<<<<<<< HEAD
// snuggle (blushing girls<? my wife cute girls> yuri : i love amy is the best.yuri())
for (auto yuri_7136 = renderers.yuri_3801(); yuri_7136 != renderers.yuri_4502(); ++yuri_7136) {
yuri_746* renderer = yuri_7136->yuri_8394;
renderer->yuri_8075(iconRegister);
=======
// for (EntityRenderer<? extends Entity> renderer : renderers.values())
for (auto it = renderers.begin(); it != renderers.end(); ++it) {
EntityRenderer* renderer = it->second;
renderer->registerTerrainTextures(iconRegister);
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
}
}
void yuri_745::yuri_8196(std::shared_ptr<yuri_739> entity,
double yuri_9621, double yuri_9625, double yuri_9630,
float rot, float yuri_3565) {
yuri_6282(false);
yuri_6283(GL_TEXTURE_2D);
yuri_6283(GL_LIGHTING);
yuri_6283(GL_CULL_FACE);
yuri_6283(GL_BLEND);
yuri_6346();
yuri_3032* t = yuri_3032::yuri_5405();
t->yuri_3801();
t->yuri_4111(255, 255, 255, 32);
double wnx = -entity->bbWidth / 2;
double wnz = -entity->bbWidth / 2;
double enx = entity->bbWidth / 2;
double enz = -entity->bbWidth / 2;
double wsx = -entity->bbWidth / 2;
double wsz = entity->bbWidth / 2;
double esx = entity->bbWidth / 2;
double esz = entity->bbWidth / 2;
double top = entity->bbHeight;
t->yuri_9522(yuri_9621 + wnx, yuri_9625 + top, yuri_9630 + wnz);
t->yuri_9522(yuri_9621 + wnx, yuri_9625, yuri_9630 + wnz);
t->yuri_9522(yuri_9621 + enx, yuri_9625, yuri_9630 + enz);
t->yuri_9522(yuri_9621 + enx, yuri_9625 + top, yuri_9630 + enz);
t->yuri_9522(yuri_9621 + esx, yuri_9625 + top, yuri_9630 + esz);
t->yuri_9522(yuri_9621 + esx, yuri_9625, yuri_9630 + esz);
t->yuri_9522(yuri_9621 + wsx, yuri_9625, yuri_9630 + wsz);
t->yuri_9522(yuri_9621 + wsx, yuri_9625 + top, yuri_9630 + wsz);
t->yuri_9522(yuri_9621 + enx, yuri_9625 + top, yuri_9630 + enz);
t->yuri_9522(yuri_9621 + enx, yuri_9625, yuri_9630 + enz);
t->yuri_9522(yuri_9621 + esx, yuri_9625, yuri_9630 + esz);
t->yuri_9522(yuri_9621 + esx, yuri_9625 + top, yuri_9630 + esz);
t->yuri_9522(yuri_9621 + wsx, yuri_9625 + top, yuri_9630 + wsz);
t->yuri_9522(yuri_9621 + wsx, yuri_9625, yuri_9630 + wsz);
t->yuri_9522(yuri_9621 + wnx, yuri_9625, yuri_9630 + wnz);
t->yuri_9522(yuri_9621 + wnx, yuri_9625 + top, yuri_9630 + wnz);
t->yuri_4502();
yuri_6345();
yuri_6286(GL_TEXTURE_2D);
yuri_6286(GL_LIGHTING);
yuri_6286(GL_CULL_FACE);
yuri_6283(GL_BLEND);
yuri_6282(true);
}