the whole game
This commit is contained in:
83
src/client/renderer/entity/HumanoidMobRenderer.cpp
Executable file
83
src/client/renderer/entity/HumanoidMobRenderer.cpp
Executable file
@@ -0,0 +1,83 @@
|
||||
#include "HumanoidMobRenderer.h"
|
||||
#include "EntityRenderDispatcher.h"
|
||||
#include "../ItemInHandRenderer.h"
|
||||
#include "../TileRenderer.h"
|
||||
#include "../../model/HumanoidModel.h"
|
||||
#include "../../../world/level/tile/Tile.h"
|
||||
#include "../../../world/entity/player/Player.h"
|
||||
#include "../../../world/entity/player/Inventory.h"
|
||||
#include "../../../world/item/ItemInstance.h"
|
||||
#include "../../../world/item/Item.h"
|
||||
#include "../../../world/item/BowItem.h"
|
||||
|
||||
HumanoidMobRenderer::HumanoidMobRenderer(HumanoidModel* humanoidModel, float shadow)
|
||||
: super(humanoidModel, shadow),
|
||||
humanoidModel(humanoidModel)
|
||||
{
|
||||
}
|
||||
|
||||
void HumanoidMobRenderer::renderHand() {
|
||||
humanoidModel->attackTime = 0;
|
||||
humanoidModel->setupAnim(0, 0, 0, 0, 0, 1 / 16.0f);
|
||||
|
||||
//@attn @cuberender @enableClientState @vertexarray
|
||||
glEnableClientState2(GL_VERTEX_ARRAY);
|
||||
glEnableClientState2(GL_TEXTURE_COORD_ARRAY);
|
||||
//glEnableClientState2(GL_COLOR_ARRAY);
|
||||
humanoidModel->arm0.render(1 / 16.0f);
|
||||
glDisableClientState2(GL_VERTEX_ARRAY);
|
||||
glDisableClientState2(GL_TEXTURE_COORD_ARRAY);
|
||||
//glDisableClientState2(GL_COLOR_ARRAY);
|
||||
}
|
||||
|
||||
void HumanoidMobRenderer::additionalRendering(Mob* mob, float a) {
|
||||
ItemInstance* item = mob->getCarriedItem();
|
||||
if (item != NULL && item->count > 0) {
|
||||
glPushMatrix2();
|
||||
humanoidModel->arm0.translateTo(1 / 16.0f);
|
||||
glTranslatef2(-1.0f / 16.0f, 7.0f / 16.0f, 1.0f / 16.0f);
|
||||
|
||||
if (item->id < 256 && TileRenderer::canRender(Tile::tiles[item->id]->getRenderShape())) {
|
||||
float s = 8.0f / 16.0f;
|
||||
glTranslatef2(0.0f, 3.0f / 16.0f, -5 / 16.0f);
|
||||
s *= 0.75f;
|
||||
glRotatef2(20.0f, 1.0f, 0.0f, 0.0f);
|
||||
glRotatef2(45.0f, 0.0f, 1.0f, 0.0f);
|
||||
glScalef2(s, -s, s);
|
||||
} else if (item->id == Item::bow->id) {
|
||||
const float s = 10.0f / 16.0f;
|
||||
glTranslatef2(0 / 16.0f, 2 / 16.0f, 5 / 16.0f);
|
||||
glRotatef2(-20, 0, 1, 0);
|
||||
glScalef2(s, -s, s);
|
||||
glRotatef2(-100, 1, 0, 0);
|
||||
glRotatef2(45, 0, 1, 0);
|
||||
} else if (Item::items[item->id]->isHandEquipped()) {
|
||||
float s = 10.0f / 16.0f;
|
||||
glTranslatef2(0.0f, 3.0f / 16.0f, 0.0f);
|
||||
glScalef2(s, -s, s);
|
||||
glRotatef2(-100.0f, 1.0f, 0.0f, 0.0f);
|
||||
glRotatef2(45.0f, 0.0f, 1.0f, 0.0f);
|
||||
} else {
|
||||
float s = 6 / 16.0f;
|
||||
glTranslatef2(+4 / 16.0f, +3 / 16.0f, -3 / 16.0f);
|
||||
glScalef2(s, s, s);
|
||||
glRotatef2(60.0f, 0.0f, 0.0f, 1.0f);
|
||||
glRotatef2(-90.0f, 1.0f, 0.0f, 0.0f);
|
||||
glRotatef2(20.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
entityRenderDispatcher->itemInHandRenderer->renderItem(mob, item);
|
||||
glPopMatrix2();
|
||||
}
|
||||
}
|
||||
|
||||
void HumanoidMobRenderer::render( Entity* mob_, float x, float y, float z, float rot, float a ) {
|
||||
Mob* mob = (Mob*)mob_;
|
||||
ItemInstance* carriedItem = mob->getCarriedItem();
|
||||
if(carriedItem != NULL)
|
||||
humanoidModel->holdingRightHand = true;
|
||||
|
||||
humanoidModel->sneaking = mob->isSneaking();
|
||||
|
||||
super::render(mob_, x, y, z, rot, a);
|
||||
humanoidModel->holdingRightHand = false;
|
||||
}
|
||||
Reference in New Issue
Block a user