Added: Information in mesh_frame on if STs/Normals are present, misc changes for PR #65 code review.

This commit is contained in:
Foxar
2020-12-17 15:42:33 +01:00
parent 49713dc145
commit 607c2abc0c
3 changed files with 17 additions and 9 deletions
+8
View File
@@ -119,6 +119,9 @@ public:
const u8 &areMaterialsAllocated() const { return _areMaterialsAllocated; }; const u8 &areMaterialsAllocated() const { return _areMaterialsAllocated; };
const u8 &isBoundingBoxCalculated() const { return _isBoundingBoxCalculated; }; const u8 &isBoundingBoxCalculated() const { return _isBoundingBoxCalculated; };
const u8 &areSTsPresent() const { return _areSTsPresent; };
const u8 &areNormalsPresent() const { return _areNormalsPresent; };
/** Set STs count and allocate memory. */ /** Set STs count and allocate memory. */
void allocateSTs(const u32 &t_val); void allocateSTs(const u32 &t_val);
@@ -131,6 +134,9 @@ public:
/** Set materials count and allocate memory. */ /** Set materials count and allocate memory. */
void allocateMaterials(const u32 &t_val); void allocateMaterials(const u32 &t_val);
void setSTsPresent(const u8 &b) { _areSTsPresent = b; };
void setNormalsPresent(const u8 &b) { _areNormalsPresent = b; };
/** /**
* Calculates bounding box (AABB) for frame and for materiaals. * Calculates bounding box (AABB) for frame and for materiaals.
* Should be called by data loader, * Should be called by data loader,
@@ -144,6 +150,8 @@ private:
_areVerticesAllocated, _areVerticesAllocated,
_areNormalsAllocated, _areNormalsAllocated,
_areMaterialsAllocated, _areMaterialsAllocated,
_areSTsPresent,
_areNormalsPresent,
_isBoundingBoxCalculated; _isBoundingBoxCalculated;
u32 vertexCount, stsCount, normalsCount, materialsCount; u32 vertexCount, stsCount, normalsCount, materialsCount;
MeshMaterial *materials; MeshMaterial *materials;
+7 -9
View File
@@ -145,9 +145,7 @@ void ObjLoader::load(MeshFrame *o_result, char *t_filename, float t_scale, u8 t_
//if(fscanf //if(fscanf
}*/ }*/
switch (matches) if (matches == 9)
{
case 9:
{ {
o_result->getMaterial(materialsI).setVertexFace(faceI, vertexIndex[0] - 1); o_result->getMaterial(materialsI).setVertexFace(faceI, vertexIndex[0] - 1);
o_result->getMaterial(materialsI).setVertexFace(faceI + 1, vertexIndex[1] - 1); o_result->getMaterial(materialsI).setVertexFace(faceI + 1, vertexIndex[1] - 1);
@@ -156,14 +154,15 @@ void ObjLoader::load(MeshFrame *o_result, char *t_filename, float t_scale, u8 t_
o_result->getMaterial(materialsI).setSTFace(faceI, coordIndex[0] - 1); o_result->getMaterial(materialsI).setSTFace(faceI, coordIndex[0] - 1);
o_result->getMaterial(materialsI).setSTFace(faceI + 1, coordIndex[1] - 1); o_result->getMaterial(materialsI).setSTFace(faceI + 1, coordIndex[1] - 1);
o_result->getMaterial(materialsI).setSTFace(faceI + 2, coordIndex[2] - 1); o_result->getMaterial(materialsI).setSTFace(faceI + 2, coordIndex[2] - 1);
o_result->setSTsPresent(true);
o_result->getMaterial(materialsI).setNormalFace(faceI, normalIndex[0] - 1); o_result->getMaterial(materialsI).setNormalFace(faceI, normalIndex[0] - 1);
o_result->getMaterial(materialsI).setNormalFace(faceI + 1, normalIndex[1] - 1); o_result->getMaterial(materialsI).setNormalFace(faceI + 1, normalIndex[1] - 1);
o_result->getMaterial(materialsI).setNormalFace(faceI + 2, normalIndex[2] - 1); o_result->getMaterial(materialsI).setNormalFace(faceI + 2, normalIndex[2] - 1);
o_result->setNormalsPresent(true);
faceI += 3; faceI += 3;
break;
} }
case 2: else if (matches == 2)
{ {
o_result->getMaterial(materialsI).setVertexFace(faceI, vertexIndex[0] - 1); o_result->getMaterial(materialsI).setVertexFace(faceI, vertexIndex[0] - 1);
o_result->getMaterial(materialsI).setVertexFace(faceI + 1, vertexIndex[1] - 1); o_result->getMaterial(materialsI).setVertexFace(faceI + 1, vertexIndex[1] - 1);
@@ -172,10 +171,10 @@ void ObjLoader::load(MeshFrame *o_result, char *t_filename, float t_scale, u8 t_
o_result->getMaterial(materialsI).setSTFace(faceI, coordIndex[0] - 1); o_result->getMaterial(materialsI).setSTFace(faceI, coordIndex[0] - 1);
o_result->getMaterial(materialsI).setSTFace(faceI + 1, coordIndex[1] - 1); o_result->getMaterial(materialsI).setSTFace(faceI + 1, coordIndex[1] - 1);
o_result->getMaterial(materialsI).setSTFace(faceI + 2, coordIndex[2] - 1); o_result->getMaterial(materialsI).setSTFace(faceI + 2, coordIndex[2] - 1);
o_result->setSTsPresent(true);
faceI += 2; faceI += 2;
break;
} }
case 1: else if (matches == 1)
{ {
if (newerMatches == 3) if (newerMatches == 3)
{ {
@@ -193,10 +192,9 @@ void ObjLoader::load(MeshFrame *o_result, char *t_filename, float t_scale, u8 t_
o_result->getMaterial(materialsI).setNormalFace(faceI, normalIndex[0] - 1); o_result->getMaterial(materialsI).setNormalFace(faceI, normalIndex[0] - 1);
o_result->getMaterial(materialsI).setNormalFace(faceI + 1, normalIndex[1] - 1); o_result->getMaterial(materialsI).setNormalFace(faceI + 1, normalIndex[1] - 1);
o_result->getMaterial(materialsI).setNormalFace(faceI + 2, normalIndex[2] - 1); o_result->getMaterial(materialsI).setNormalFace(faceI + 2, normalIndex[2] - 1);
o_result->setNormalsPresent(true);
faceI += 2; faceI += 2;
} }
break;
}
} }
} }
} }
+2
View File
@@ -25,6 +25,8 @@ MeshFrame::MeshFrame()
_areVerticesAllocated = false; _areVerticesAllocated = false;
_areNormalsAllocated = false; _areNormalsAllocated = false;
_areMaterialsAllocated = false; _areMaterialsAllocated = false;
_areSTsPresent = false;
_areNormalsPresent = false;
} }
MeshFrame::~MeshFrame() MeshFrame::~MeshFrame()