mirror of
https://github.com/rwengine/openrw.git
synced 2024-09-15 06:52:34 +02:00
Fixed crash due to flag determination
This commit is contained in:
parent
754dede0ee
commit
6ff93c6687
@ -1,4 +1,4 @@
|
||||
add_executable(datadump main.cpp ../framework/gtadata.cpp ../framework/LoaderIMG.cpp ../framework/LoaderIPL.cpp)
|
||||
add_executable(datadump main.cpp ../framework/gtadata.cpp ../framework/LoaderIMG.cpp ../framework/LoaderIPL.cpp ../framework/LoaderCOL.cpp)
|
||||
|
||||
target_link_libraries( datadump sfml-graphics sfml-window sfml-system GL GLEW )
|
||||
|
||||
|
@ -33,8 +33,8 @@ std::unique_ptr<Model> LoaderDFF::loadFromMemory(char *data)
|
||||
|
||||
if (item.header.versionid < 0x1003FFFF)
|
||||
auto colors = readStructure<RW::BSGeometryColor>(data, dataI);
|
||||
|
||||
if (geometry.flags & RW::BSGeometry::VertexColors) {
|
||||
|
||||
if ((geometry.flags & RW::BSGeometry::VertexColors) == RW::BSGeometry::VertexColors) {
|
||||
for (size_t v = 0; v < geometry.numverts; ++v) {
|
||||
readStructure<RW::BSColor>(data, dataI);
|
||||
}
|
||||
@ -61,7 +61,7 @@ std::unique_ptr<Model> LoaderDFF::loadFromMemory(char *data)
|
||||
}
|
||||
|
||||
/** NORMALS **/
|
||||
if (geometry.flags & RW::BSGeometry::StoreNormals) {
|
||||
if ((geometry.flags & RW::BSGeometry::StoreNormals) == RW::BSGeometry::StoreNormals) {
|
||||
for (int n = 0; n < geometry.numverts; ++n) {
|
||||
geometryStruct.normals.push_back(readStructure<RW::BSTVector3>(data, dataI));
|
||||
}
|
||||
|
@ -118,18 +118,30 @@ void init(std::string gtapath)
|
||||
auto &asset = imgLoader.getAssetInfoByIndex(i);
|
||||
|
||||
std::string filename = asset.name;
|
||||
|
||||
if(asset.size == 0)
|
||||
{
|
||||
std::cerr << "Asset: " << filename << " has no size" << std::endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
auto filetype = filename.substr(filename.size() - 3);
|
||||
std::transform(filetype.begin(), filetype.end(), filetype.begin(), ::tolower);
|
||||
|
||||
if (filetype == "dff") {
|
||||
std::string modelname = filename.substr(0, filename.size() - 4);
|
||||
|
||||
char *file = imgLoader.loadToMemory(filename);
|
||||
models[modelname] = std::move(dffLoader.loadFromMemory(file));
|
||||
if(file)
|
||||
{
|
||||
models[modelname] = std::move(dffLoader.loadFromMemory(file));
|
||||
delete[] file;
|
||||
}
|
||||
} else if (filetype == "txd") {
|
||||
char *file = imgLoader.loadToMemory(filename);
|
||||
textureLoader.loadFromMemory(file);
|
||||
if(file)
|
||||
{
|
||||
textureLoader.loadFromMemory(file);
|
||||
delete[] file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -151,7 +163,7 @@ void init(std::string gtapath)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
textureLoader.loadFromFile("MISC.TXD");
|
||||
//textureLoader.loadFromFile("MISC.TXD");
|
||||
|
||||
selectedModel = models["Jetty"].get();
|
||||
}
|
||||
@ -195,10 +207,10 @@ void render()
|
||||
}
|
||||
|
||||
glm::mat4 matrixModel;
|
||||
glm::quat rot{obj.rotX, obj.rotY, obj.rotZ, obj.rotW};
|
||||
matrixModel = glm::translate(matrixModel, glm::vec3(obj.posX, obj.posY, obj.posZ));
|
||||
matrixModel = glm::rotate(matrixModel, glm::angle(rot), glm::axis(rot));
|
||||
glm::quat rot{obj.rotW, obj.rotX, obj.rotY, obj.rotZ};
|
||||
matrixModel = glm::translate(matrixModel, glm::vec3(obj.posX, obj.posY, obj.posZ)); //glm::rotate(matrixModel, rot);//glm::angle(rot), glm::axis(rot));
|
||||
matrixModel = glm::scale(matrixModel, glm::vec3(obj.scaleX, obj.scaleY, obj.scaleZ));
|
||||
matrixModel = matrixModel * glm::mat4_cast(rot);
|
||||
glUniformMatrix4fv(uniModel, 1, GL_FALSE, glm::value_ptr(matrixModel));
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, model->geometries[g].VBO);
|
||||
|
Loading…
Reference in New Issue
Block a user