Fix a bug
This commit is contained in:
parent
fb5d9d118e
commit
1454ae446e
3 changed files with 138 additions and 8 deletions
54
renderer.h
54
renderer.h
|
@ -114,6 +114,49 @@ struct
|
|||
with color stored in this variable. */
|
||||
} LCR_renderer;
|
||||
|
||||
|
||||
void aaa(void)
|
||||
{
|
||||
printf("BAD TRIS (%d):\n",LCR_renderer.mapModel.triangleCount);
|
||||
|
||||
for (int i = 0; i < LCR_renderer.mapModel.triangleCount; ++i)
|
||||
{
|
||||
TPE_Unit sss =
|
||||
TPE_max(
|
||||
TPE_abs(LCR_renderer.mapModel.vertices[
|
||||
LCR_renderer.mapModel.triangles[i * 3] * 3] -
|
||||
LCR_renderer.mapModel.vertices[
|
||||
LCR_renderer.mapModel.triangles[i * 3 + 1] * 3]),
|
||||
TPE_abs(LCR_renderer.mapModel.vertices[
|
||||
LCR_renderer.mapModel.triangles[i * 3 + 1] * 3] -
|
||||
LCR_renderer.mapModel.vertices[
|
||||
LCR_renderer.mapModel.triangles[i * 3 + 2] * 3])
|
||||
);
|
||||
|
||||
if (sss > LCR_RENDERER_UNIT * 2)
|
||||
printf(" - %d (%d %d %d, %d %d %d, %d %d %d) %d %d %d\n",i,
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i]],
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i] + 1],
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i] + 2],
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i + 1]],
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i + 1] + 1],
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i + 1] + 2],
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i + 2]],
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i + 2] + 1],
|
||||
LCR_renderer.mapModel.vertices[LCR_renderer.mapModel.triangles[3 * i + 2] + 2],
|
||||
|
||||
LCR_renderer.mapModel.triangles[3 * i],
|
||||
LCR_renderer.mapModel.triangles[3 * i + 1],
|
||||
LCR_renderer.mapModel.triangles[3 * i + 2]
|
||||
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void _LCR_rendererSetModelTransform(S3L_Model3D *model,
|
||||
LCR_GameUnit position[3], LCR_GameUnit rotation[3])
|
||||
{
|
||||
|
@ -923,6 +966,12 @@ uint8_t _LCR_buildMapModel(void)
|
|||
LCR_mapGetBlockShape(blockType,LCR_mapBlockGetTransform(block),
|
||||
blockShapeBytes,&blockShapeByteCount);
|
||||
|
||||
// When nearing limit, cull (can't be inside the loop sadly, trust me).
|
||||
if (
|
||||
LCR_renderer.mapModel.vertexCount >= LCR_SETTING_MAX_MAP_VERTICES - 16 ||
|
||||
LCR_renderer.mapModel.triangleCount >= LCR_SETTING_MAX_MAP_TRIANGLES - 16)
|
||||
_LCR_cullHiddenMapTris();
|
||||
|
||||
for (int i = 0; i < blockShapeByteCount; ++i)
|
||||
{
|
||||
if (vi == 0)
|
||||
|
@ -950,10 +999,6 @@ uint8_t _LCR_buildMapModel(void)
|
|||
vi++;
|
||||
else // 3 indices => create and add triangle
|
||||
{
|
||||
if (LCR_renderer.mapModel.triangleCount >=
|
||||
LCR_SETTING_MAX_MAP_TRIANGLES)
|
||||
_LCR_cullHiddenMapTris();
|
||||
|
||||
// don't add triangles completely at the boundary of the map
|
||||
if (!edgeBits)
|
||||
{
|
||||
|
@ -1040,6 +1085,7 @@ uint8_t _LCR_buildMapModel(void)
|
|||
}
|
||||
|
||||
_LCR_cullHiddenMapTris();
|
||||
|
||||
LCR_LOG1("map model built, verts/tris:");
|
||||
LCR_LOG1_NUM(LCR_renderer.mapModel.vertexCount);
|
||||
LCR_LOG1_NUM(LCR_renderer.mapModel.triangleCount);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue