mirror of
https://github.com/celisej567/mcpe.git
synced 2025-12-31 17:49:17 +03:00
* Cleaned up Cube * Refactor/cleanup & documentation of Cube * Renamed Tesselator to Tessellator * Revert "Tesselator" Spelling Correction --------- Co-authored-by: Brent Da Mage <BrentDaMage@users.noreply.github.com>
90 lines
2.0 KiB
C++
90 lines
2.0 KiB
C++
/********************************************************************
|
|
Minecraft: Pocket Edition - Decompilation Project
|
|
Copyright (C) 2023 iProgramInCpp
|
|
|
|
The following code is licensed under the BSD 1 clause license.
|
|
SPDX-License-Identifier: BSD-1-Clause
|
|
********************************************************************/
|
|
|
|
#include "PolygonQuad.hpp"
|
|
|
|
void PolygonQuad::_init()
|
|
{
|
|
m_bFlipNormals = false;
|
|
#ifdef ENH_ENTITY_SHADING
|
|
m_color = 0xFFFFFF;
|
|
#endif
|
|
}
|
|
|
|
PolygonQuad::PolygonQuad(VertexPT* a, VertexPT* b, VertexPT* c, VertexPT* d)
|
|
{
|
|
_init();
|
|
|
|
m_verts[0] = *a;
|
|
m_verts[1] = *b;
|
|
m_verts[2] = *c;
|
|
m_verts[3] = *d;
|
|
}
|
|
|
|
PolygonQuad::PolygonQuad(VertexPT* a, VertexPT* b, VertexPT* c, VertexPT* d, float u1, float v1, float u2, float v2)
|
|
{
|
|
_init();
|
|
|
|
m_verts[0] = *a;
|
|
m_verts[1] = *b;
|
|
m_verts[2] = *c;
|
|
m_verts[3] = *d;
|
|
|
|
m_verts[0].setUV(u2, v1);
|
|
m_verts[1].setUV(u1, v1);
|
|
m_verts[2].setUV(u1, v2);
|
|
m_verts[3].setUV(u2, v2);
|
|
}
|
|
|
|
PolygonQuad::PolygonQuad(VertexPT* a, VertexPT* b, VertexPT* c, VertexPT* d, int u1i, int v1i, int u2i, int v2i)
|
|
{
|
|
_init();
|
|
|
|
constexpr float C_F1 = 0.0015625f, C_F2 = 0.003125f;
|
|
m_verts[0] = *a;
|
|
m_verts[1] = *b;
|
|
m_verts[2] = *c;
|
|
m_verts[3] = *d;
|
|
|
|
m_verts[0].setUV(float(u2i) / 64.0f - C_F1, float(v1i) / 32.0f + C_F2);
|
|
m_verts[1].setUV(float(u1i) / 64.0f + C_F1, float(v1i) / 32.0f + C_F2);
|
|
m_verts[2].setUV(float(u1i) / 64.0f + C_F1, float(v2i) / 32.0f - C_F2);
|
|
m_verts[3].setUV(float(u2i) / 64.0f - C_F1, float(v2i) / 32.0f - C_F2);
|
|
}
|
|
|
|
void PolygonQuad::flipNormal()
|
|
{
|
|
m_bFlipNormals = true;
|
|
}
|
|
|
|
void PolygonQuad::mirror()
|
|
{
|
|
std::swap(m_verts[0], m_verts[3]);
|
|
std::swap(m_verts[1], m_verts[2]);
|
|
}
|
|
|
|
void PolygonQuad::render(Tesselator& t, float scale)
|
|
{
|
|
for (int i = 0; i < 4; i++)
|
|
{
|
|
VertexPT& v = m_verts[i];
|
|
#ifdef ENH_ENTITY_SHADING
|
|
t.color(m_color);
|
|
#endif
|
|
t.vertexUV(scale * v.x, scale * v.y, scale * v.z, v.u, v.v);
|
|
}
|
|
}
|
|
|
|
#ifdef ENH_ENTITY_SHADING
|
|
void PolygonQuad::setColor(float r, float g, float b)
|
|
{
|
|
int ru = int(255 * r), gu = int(255 * g), bu = int(255 * g);
|
|
m_color = bu | (gu << 8) | (ru << 16);
|
|
}
|
|
#endif
|