Files
2026-03-01 12:16:08 +08:00

43 lines
1.1 KiB
C++

#include "stdafx.h"
#include "ChestModel.h"
#include "ModelPart.h"
ChestModel::ChestModel()
{
lid = ((new ModelPart(this, 0, 0)))->setTexSize(64, 64);
lid->addBox(0.0f, -5.0f, -14.0f, 14, 5, 14, 0.0f);
lid->x = 1;
lid->y = 7;
lid->z = 15;
lock = ((new ModelPart(this, 0, 0)))->setTexSize(64, 64);
lock->addBox(-1.0f, -2.0f, -15.0f, 2, 4, 1, 0.0f);
lock->x = 8;
lock->y = 7;
lock->z = 15;
bottom = ((new ModelPart(this, 0, 19)))->setTexSize(64, 64);
bottom->addBox(0.0f, 0.0f, 0.0f, 14, 10, 14, 0.0f);
bottom->x = 1;
bottom->y = 6;
bottom->z = 1;
// 4J added - compile now to avoid random performance hit first time cubes are rendered
lid->compile(1.0f/16.0f);
lock->compile(1.0f/16.0f);
bottom->compile(1.0f/16.0f);
}
void ChestModel::render(bool usecompiled)
{
lock->xRot = lid->xRot;
lock->render(1 / 16.0f, usecompiled);
bottom->render(1 / 16.0f, usecompiled);
// 4J - moved lid to last and added z-bias to avoid glitching caused by z-fighting between the area of overlap between the lid & bottom of the chest
glPolygonOffset(-0.3f, -0.3f);
lid->render(1 / 16.0f, usecompiled);
glPolygonOffset(0.0f, 0.0f);
}