#pragma once #include "MobRenderer.h" class HumanoidModel; class Giant; class ArmorItem; class HumanoidMobRenderer : public MobRenderer { private: static const std::wstring MATERIAL_NAMES[5]; static std::map ARMOR_LOCATION_CACHE; protected: HumanoidModel* humanoidModel; float _scale; HumanoidModel* armorParts1; HumanoidModel* armorParts2; void _init(HumanoidModel* humanoidModel, float scale); public: static ResourceLocation* getArmorLocation(ArmorItem* armorItem, int layer); static ResourceLocation* getArmorLocation(ArmorItem* armorItem, int layer, bool overlay); HumanoidMobRenderer(HumanoidModel* humanoidModel, float shadow); HumanoidMobRenderer(HumanoidModel* humanoidModel, float shadow, float scale); virtual void prepareSecondPassArmor(std::shared_ptr mob, int layer, float a); protected: virtual void createArmorParts(); virtual int prepareArmor(std::shared_ptr _mob, int layer, float a); virtual void render(std::shared_ptr _mob, double x, double y, double z, float rot, float a); virtual ResourceLocation* getTextureLocation(std::shared_ptr mob); virtual void prepareCarriedItem(std::shared_ptr mob, std::shared_ptr item); virtual void additionalRendering(std::shared_ptr mob, float a); virtual void scale(std::shared_ptr mob, float a); };