move the model to the center,
clean up variables, use delete[]
This commit is contained in:
parent
1c0ed61b34
commit
a47eefe92e
|
@ -71,5 +71,5 @@ private:
|
||||||
public:
|
public:
|
||||||
std::vector<Modl*>* getModels() const;
|
std::vector<Modl*>* getModels() const;
|
||||||
std::vector<std::string> getTextureList() const;
|
std::vector<std::string> getTextureList() const;
|
||||||
|
Bbox getBoundgBox() const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -72,6 +72,7 @@ private:
|
||||||
// data
|
// data
|
||||||
std::vector<Modl*>* vModels = NULL;
|
std::vector<Modl*>* vModels = NULL;
|
||||||
std::vector<textureData*> vTextures;
|
std::vector<textureData*> vTextures;
|
||||||
|
Bbox sceneBoundingBox;
|
||||||
|
|
||||||
// transformation =========================
|
// transformation =========================
|
||||||
//values
|
//values
|
||||||
|
|
|
@ -134,6 +134,9 @@ void Object::analyseMsh2Chunks(std::list<ChunkHeader*>& chunkList)
|
||||||
fsMesh.read(reinterpret_cast<char*>(&boundingBox.extents[i]), sizeof(float));
|
fsMesh.read(reinterpret_cast<char*>(&boundingBox.extents[i]), sizeof(float));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (ChunkHeader* it : tempSinfChunks)
|
||||||
|
delete it;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (!strcmp("MATL", it->name))
|
else if (!strcmp("MATL", it->name))
|
||||||
|
@ -217,7 +220,7 @@ void Object::analyseMatdChunks(std::list<ChunkHeader*>& chunkList)
|
||||||
*buffer = { 0 };
|
*buffer = { 0 };
|
||||||
fsMesh.read(buffer, it->size);
|
fsMesh.read(buffer, it->size);
|
||||||
vTextures.back() = buffer;
|
vTextures.back() = buffer;
|
||||||
delete buffer;
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -241,7 +244,7 @@ void Object::analyseModlChunks(Modl* dataDestination, std::list<ChunkHeader*>& c
|
||||||
*buffer = { 0 };
|
*buffer = { 0 };
|
||||||
fsMesh.read(buffer, it->size);
|
fsMesh.read(buffer, it->size);
|
||||||
dataDestination->parent = buffer;
|
dataDestination->parent = buffer;
|
||||||
delete buffer;
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (!strcmp("NAME", it->name))
|
else if (!strcmp("NAME", it->name))
|
||||||
|
@ -251,7 +254,7 @@ void Object::analyseModlChunks(Modl* dataDestination, std::list<ChunkHeader*>& c
|
||||||
*buffer = { 0 };
|
*buffer = { 0 };
|
||||||
fsMesh.read(buffer, it->size);
|
fsMesh.read(buffer, it->size);
|
||||||
dataDestination->name = buffer;
|
dataDestination->name = buffer;
|
||||||
delete buffer;
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (!strcmp("FLGS", it->name))
|
else if (!strcmp("FLGS", it->name))
|
||||||
|
@ -515,7 +518,7 @@ void Object::analyseClthChunks(Modl * dataDestination, std::list<ChunkHeader*>&
|
||||||
tempData->textureIndex = vTextures.size() - 1;
|
tempData->textureIndex = vTextures.size() - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete buffer;
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (!strcmp("CPOS", it->name))
|
else if (!strcmp("CPOS", it->name))
|
||||||
|
@ -594,6 +597,11 @@ std::vector<std::string> Object::getTextureList() const
|
||||||
return vTextures;
|
return vTextures;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bbox Object::getBoundgBox() const
|
||||||
|
{
|
||||||
|
return boundingBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// public functions
|
// public functions
|
||||||
|
|
|
@ -122,8 +122,8 @@ void OpenGLController::deleteVectors()
|
||||||
Segment* segmCuror = cursor->segmLst.back();
|
Segment* segmCuror = cursor->segmLst.back();
|
||||||
cursor->segmLst.pop_back();
|
cursor->segmLst.pop_back();
|
||||||
|
|
||||||
delete segmCuror->uv;
|
delete[] segmCuror->uv;
|
||||||
delete segmCuror->vertex;
|
delete[] segmCuror->vertex;
|
||||||
|
|
||||||
while (!segmCuror->meshIndices.empty())
|
while (!segmCuror->meshIndices.empty())
|
||||||
{
|
{
|
||||||
|
@ -243,8 +243,13 @@ glm::mat4 OpenGLController::getMVPMatrix(unsigned int index)
|
||||||
m4x4ModelRot = glm::rotate(m4x4ModelRot, fRotationY, glm::vec3(0, 1, 0));
|
m4x4ModelRot = glm::rotate(m4x4ModelRot, fRotationY, glm::vec3(0, 1, 0));
|
||||||
m4x4ModelRot = glm::rotate(m4x4ModelRot, fRotationZ, glm::vec3(0, 0, 1));
|
m4x4ModelRot = glm::rotate(m4x4ModelRot, fRotationZ, glm::vec3(0, 0, 1));
|
||||||
|
|
||||||
|
glm::mat4 m4x4ModelCenter = glm::translate(
|
||||||
|
glm::mat4(1.0f),
|
||||||
|
glm::vec3(-sceneBoundingBox.center[0], -sceneBoundingBox.center[1], -sceneBoundingBox.center[2])
|
||||||
|
);
|
||||||
|
|
||||||
// Return MVP
|
// Return MVP
|
||||||
return m4x4Projection * m4x4View * m4x4ModelRot * getModelMatrix(index);
|
return m4x4Projection * m4x4View * m4x4ModelRot * m4x4ModelCenter * getModelMatrix(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -378,11 +383,12 @@ void OpenGLController::loadMsh(const char * path)
|
||||||
Object obj(path);
|
Object obj(path);
|
||||||
vModels = obj.getModels();
|
vModels = obj.getModels();
|
||||||
tempTexList = obj.getTextureList();
|
tempTexList = obj.getTextureList();
|
||||||
|
sceneBoundingBox = obj.getBoundgBox();
|
||||||
}
|
}
|
||||||
catch (std::invalid_argument e)
|
catch (std::invalid_argument e)
|
||||||
{
|
{
|
||||||
MessageBox(NULL, e.what(), "MeshViewer 2.0 Error", MB_OK | MB_ICONERROR);
|
MessageBox(NULL, e.what(), "MeshViewer 2.0 Error", MB_OK | MB_ICONERROR);
|
||||||
return; exit(1);
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// collect vertex data of all models
|
// collect vertex data of all models
|
||||||
|
|
Loading…
Reference in New Issue