forked from Kolyah35/minecraft-pe-0.6.1
the whole game
This commit is contained in:
76
src/client/renderer/tileentity/ChestRenderer.cpp
Executable file
76
src/client/renderer/tileentity/ChestRenderer.cpp
Executable file
@@ -0,0 +1,76 @@
|
||||
#include "ChestRenderer.h"
|
||||
#include "TileEntityRenderer.h"
|
||||
#include "../gles.h"
|
||||
#include "../../model/ChestModel.h"
|
||||
#include "../../../world/level/tile/entity/ChestTileEntity.h"
|
||||
#include "../../../world/level/tile/ChestTile.h"
|
||||
#include "../../../util/Mth.h"
|
||||
|
||||
|
||||
void ChestRenderer::render( TileEntity* entity, float x, float y, float z, float a )
|
||||
{
|
||||
ChestTileEntity* chest = (ChestTileEntity*) entity;
|
||||
int data = 0;
|
||||
|
||||
if (chest->level) {
|
||||
Tile* tile = chest->getTile();
|
||||
data = chest->getData();
|
||||
|
||||
if (tile != NULL && data == 0) {
|
||||
((ChestTile*)tile)->recalcLockDir(chest->level, chest->x, chest->y, chest->z);
|
||||
data = chest->getData();
|
||||
}
|
||||
|
||||
chest->checkNeighbors();
|
||||
}
|
||||
if (chest->n != NULL || chest->w != NULL) return;
|
||||
|
||||
ChestModel* model;
|
||||
//if (chest->e != NULL || chest->s != NULL) {
|
||||
// //model = &largeChestModel;
|
||||
// bindTexture("item/largechest.png");
|
||||
//} else
|
||||
{
|
||||
model = &chestModel;
|
||||
bindTexture("item/chest.png");
|
||||
}
|
||||
|
||||
glPushMatrix2();
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
glTranslatef2(x, y + 1, z + 1);
|
||||
glScalef2(1, -1, -1);
|
||||
|
||||
glTranslatef2(0.5f, 0.5f, 0.5f);
|
||||
GLfloat rot = 0;
|
||||
if (data == 2) rot = 180;
|
||||
if (data == 3) rot = 0;
|
||||
if (data == 4) rot = 90;
|
||||
if (data == 5) rot = -90;
|
||||
|
||||
if (data == 2 && chest->e != NULL) {
|
||||
glTranslatef2(1, 0, 0);
|
||||
}
|
||||
if (data == 5 && chest->s != NULL) {
|
||||
glTranslatef2(0, 0, -1);
|
||||
}
|
||||
glRotatef2(rot, 0, 1, 0);
|
||||
glTranslatef2(-0.5f, -0.5f, -0.5f);
|
||||
|
||||
float open = chest->oOpenness + (chest->openness - chest->oOpenness) * a;
|
||||
if (chest->n != NULL) {
|
||||
float open2 = chest->n->oOpenness + (chest->n->openness - chest->n->oOpenness) * a;
|
||||
if (open2 > open) open = open2;
|
||||
}
|
||||
if (chest->w != NULL) {
|
||||
float open2 = chest->w->oOpenness + (chest->w->openness - chest->w->oOpenness) * a;
|
||||
if (open2 > open) open = open2;
|
||||
}
|
||||
|
||||
open = 1 - open;
|
||||
open = 1 - open * open * open;
|
||||
|
||||
model->lid.xRot = -(open * Mth::PI / 2);
|
||||
model->render();
|
||||
glPopMatrix2();
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
}
|
||||
Reference in New Issue
Block a user