#pragma once #include "EntityRenderer.h" #include "../../../Minecraft.World/Entities/Entity.h" #include "../../../Minecraft.World/Util/JavaIntHash.h" class font; class EntityRenderDispatcher { public: static void staticCtor(); // 4J added private: typedef std::unordered_map classToRendererMap; classToRendererMap renderers; // 4J - was: // Map, EntityRenderer> renderers //= new HashMap, EntityRenderer>(); public: static EntityRenderDispatcher* instance; private: Font* font; public: static double xOff, yOff, zOff; Textures* textures; ItemInHandRenderer* itemInHandRenderer; Level* level; std::shared_ptr cameraEntity; std::shared_ptr crosshairPickMob; float playerRotY; float playerRotX; Options* options; bool isGuiRender; // 4J added double xPlayer, yPlayer, zPlayer; private: EntityRenderDispatcher(); public: EntityRenderer* getRenderer(eINSTANCEOF e); EntityRenderer* getRenderer(std::shared_ptr e); void prepare(Level* level, Textures* textures, Font* font, std::shared_ptr player, std::shared_ptr crosshairPickMob, Options* options, float a); void render(std::shared_ptr entity, float a); void render(std::shared_ptr entity, double x, double y, double z, float rot, float a, bool bItemFrame = false, bool bRenderPlayerShadow = true); void setLevel(Level* level); double distanceToSqr(double x, double y, double z); Font* getFont(); void registerTerrainTextures(IconRegister* iconRegister); private: void renderHitbox(std::shared_ptr entity, double x, double y, double z, float rot, float a); };