mirror of
https://github.com/GabsPuNs/Project-Zenith-Main.git
synced 2026-06-01 07:34:36 +00:00
TU24: Maps placed in item frames now cover the whole block face.
And a temp way for do TU24: Third person sword blocking position slightly tweaked. Also disabled LLVM since it have some lightning issues.
This commit is contained in:
@@ -42,12 +42,75 @@ void ItemFrameRenderer::render(shared_ptr<Entity> _itemframe, double x, double
|
||||
|
||||
glTranslatef(static_cast<float>(xt) - xOffs, static_cast<float>(yt) - yOffs, static_cast<float>(zt) - zOffs);
|
||||
|
||||
drawFrame(itemFrame);
|
||||
drawItem(itemFrame);
|
||||
bool containsMap = false;
|
||||
|
||||
if (shared_ptr<ItemInstance> item = itemFrame->getItem())
|
||||
{
|
||||
if (item->id == Item::map_Id)
|
||||
containsMap = true;
|
||||
}
|
||||
|
||||
if (containsMap)
|
||||
drawBlockFrame(itemFrame);
|
||||
else
|
||||
drawFrame(itemFrame);
|
||||
|
||||
drawItem(itemFrame);
|
||||
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
void ItemFrameRenderer::drawBlockFrame(shared_ptr<ItemFrame> itemFrame)
|
||||
{
|
||||
Minecraft *pMinecraft=Minecraft::GetInstance();
|
||||
|
||||
glPushMatrix();
|
||||
entityRenderDispatcher->textures->bindTexture(&TextureAtlas::LOCATION_BLOCKS);
|
||||
glRotatef(itemFrame->yRot, 0, 1, 0);
|
||||
|
||||
Tile *wood = Tile::wood;
|
||||
|
||||
// Back
|
||||
glPushMatrix();
|
||||
|
||||
tileRenderer->setFixedShape(0, 0.0625F, 0.0625F, 0.0625F, 0.9375F, 0.9375F);
|
||||
tileRenderer->setFixedTexture(backTexture);
|
||||
tileRenderer->renderTile(wood, 0, 1);
|
||||
tileRenderer->clearFixedTexture();
|
||||
tileRenderer->clearFixedShape();
|
||||
glPopMatrix();
|
||||
|
||||
tileRenderer->setFixedTexture(Tile::wood->getTexture(Facing::UP, TreeTile::BIRCH_TRUNK));
|
||||
|
||||
// Bottom
|
||||
glPushMatrix();
|
||||
tileRenderer->setFixedShape(0, 0, 0, 0.062600002F, 0.0625F, 1);
|
||||
tileRenderer->renderTile(wood, 0, 1);
|
||||
glPopMatrix();
|
||||
|
||||
// Top
|
||||
glPushMatrix();
|
||||
tileRenderer->setFixedShape(0, 0.9375F, 0, 0.062600002F, 1, 1);
|
||||
tileRenderer->renderTile(wood, 0, 1);
|
||||
glPopMatrix();
|
||||
|
||||
// Right
|
||||
glPushMatrix();
|
||||
tileRenderer->setFixedShape(0, 0, 0, 0.0625F, 1, 0.0625F);
|
||||
tileRenderer->renderTile(wood, 0, 1);
|
||||
glPopMatrix();
|
||||
|
||||
// Left
|
||||
glPushMatrix();
|
||||
tileRenderer->setFixedShape(0, 0, 0.9375F, 0.0625F, 1, 1);
|
||||
tileRenderer->renderTile(wood, 0, 1);
|
||||
glPopMatrix();
|
||||
|
||||
tileRenderer->clearFixedShape();
|
||||
tileRenderer->clearFixedTexture();
|
||||
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
void ItemFrameRenderer::drawFrame(shared_ptr<ItemFrame> itemFrame)
|
||||
{
|
||||
@@ -58,14 +121,14 @@ void ItemFrameRenderer::drawFrame(shared_ptr<ItemFrame> itemFrame)
|
||||
glRotatef(itemFrame->yRot, 0, 1, 0);
|
||||
|
||||
Tile *wood = Tile::wood;
|
||||
float depth = 1.0f / 16.0f;
|
||||
float width = 12.0f / 16.0f;
|
||||
float widthHalf = width / 2.0f;
|
||||
constexpr float depth = 1.0f / 16.0f;
|
||||
constexpr float width = 12.0f / 16.0f;
|
||||
constexpr float widthHalf = width / 2.0f;
|
||||
|
||||
// Back
|
||||
glPushMatrix();
|
||||
|
||||
tileRenderer->setFixedShape(0, 0.5f - widthHalf + 1.0f / 16.0f, 0.5f - widthHalf + 1.0f / 16.0f, depth * .5f, 0.5f + widthHalf - 1.0f / 16.0f, 0.5f + widthHalf - 1.0f / 16.0f);
|
||||
tileRenderer->setFixedShape(0, 0.5f - widthHalf + depth, 0.5f - widthHalf + depth, depth * .5f, 0.5f + widthHalf - depth, 0.5f + widthHalf - depth);
|
||||
tileRenderer->setFixedTexture(backTexture);
|
||||
tileRenderer->renderTile(wood, 0, 1);
|
||||
tileRenderer->clearFixedTexture();
|
||||
@@ -136,27 +199,35 @@ void ItemFrameRenderer::drawItem(shared_ptr<ItemFrame> entity)
|
||||
|
||||
if (itemEntity->getItem()->getItem() == Item::map)
|
||||
{
|
||||
entityRenderDispatcher->textures->bindTexture(&MAP_BACKGROUND_LOCATION);
|
||||
Tesselator *t = Tesselator::getInstance();
|
||||
|
||||
glRotatef(180, 0, 1, 0);
|
||||
glRotatef(180, 0, 0, 1);
|
||||
glScalef(1.0f / 256.0f, 1.0f / 256.0f, 1.0f / 256.0f);
|
||||
glTranslatef(-65, -107, -3);
|
||||
glNormal3f(0, 0, -1);
|
||||
t->begin();
|
||||
int vo = 7;
|
||||
t->vertexUV(0 - vo, 128 + vo, 0, 0, 1);
|
||||
t->vertexUV(128 + vo, 128 + vo, 0, 1, 1);
|
||||
t->vertexUV(128 + vo, 0 - vo, 0, 1, 0);
|
||||
t->vertexUV(0 - vo, 0 - vo, 0, 0, 0);
|
||||
t->end();
|
||||
glScalef(0.0078125f, 0.0078125f, 0.0078125f);
|
||||
|
||||
shared_ptr<MapItemSavedData> data = Item::map->getSavedData(itemEntity->getItem(), entity->level);
|
||||
if (data != nullptr)
|
||||
{
|
||||
switch (entity->getRotation())
|
||||
{
|
||||
case 0:
|
||||
glTranslatef(-64.0f, -87.0f, -3.0f);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
glTranslatef(-66.5f, -84.5f, -3.0f);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
glTranslatef(-64.0f, -82.0f, -3.0f);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
glTranslatef(-61.5f, -84.5f, -3.0f);
|
||||
break;
|
||||
}
|
||||
|
||||
glNormal3f(0, 0, -1);
|
||||
glTranslatef(0.0f, -0.25f, 0.0f);
|
||||
|
||||
auto data = Item::map->getSavedData(itemEntity->getItem(), entity->level);
|
||||
if (data != nullptr)
|
||||
entityRenderDispatcher->itemInHandRenderer->minimap->render(nullptr, entityRenderDispatcher->textures, data, entity->entityId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user