aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/HumanoidMobRenderer.h
blob: 98d8b8dbd1b17fbfe5fc94a348a54b6b3578e9db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once
#include "MobRenderer.h"

class HumanoidModel;
class Giant;
class ArmorItem;

class HumanoidMobRenderer : public MobRenderer
{
private:
	static const wstring MATERIAL_NAMES[5];
	static std::map<wstring, ResourceLocation> 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(shared_ptr<LivingEntity> mob, int layer, float a);

protected:
	virtual void createArmorParts();
	virtual int prepareArmor(shared_ptr<LivingEntity> _mob, int layer, float a);
	virtual void render(shared_ptr<Entity> _mob, double x, double y, double z, float rot, float a);
	virtual ResourceLocation *getTextureLocation(shared_ptr<Entity> mob);
	virtual void prepareCarriedItem(shared_ptr<Entity> mob, shared_ptr<ItemInstance> item);
	virtual void additionalRendering(shared_ptr<LivingEntity> mob, float a);
	virtual void scale(shared_ptr<LivingEntity> mob, float a);	
};