diff --git a/src/graphics.cpp b/src/graphics.cpp index 4597032..939be01 100644 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -87,6 +87,8 @@ void initGraphics () { model = new Model(resolvePath(("models/"+optData.model+".fma").c_str()).c_str()); + glutSetWindowTitle((PROJECT_NAME " - " + model->getName()).c_str()); + //enable blending for alpha textures glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/model.cpp b/src/model.cpp index d8c03cf..962ff17 100644 --- a/src/model.cpp +++ b/src/model.cpp @@ -20,7 +20,6 @@ void textureFromArchive(zip_t* archive, const char* path, ModelPart* part, size_ std::cerr << path << " does not exist in archive!" << std::endl; } } - Model::Model(const char* path) { int zipError; @@ -43,6 +42,21 @@ Model::Model(const char* path) { std::cerr << "cannot parse model.toml! " << std::endl << modelDesc.errmsg << std::endl; } + // get name + auto modelInfo = modelDesc.table->getTable("model_info"); + if (!modelInfo) { + std::cerr << "Model does not have a model_info table!" << std::endl; + } else { + auto nameResult = modelInfo->getString("name"); + + if (!nameResult.first) { + std::cerr << "Model does not have a name!" << std::endl; + } else { + name = nameResult.second; + } + } + + auto partsDescArray = modelDesc.table->getArray("part"); auto partsVec = *partsDescArray->getTableVector(); @@ -111,3 +125,8 @@ void Model::updateTransforms(struct FaceData faceData) { parts[i].processFaceData(faceData); } } + +std::string Model::getName() { + return name; +} + diff --git a/src/model.hpp b/src/model.hpp index 37cad51..4bf93dd 100644 --- a/src/model.hpp +++ b/src/model.hpp @@ -8,12 +8,16 @@ class Model { std::vector parts; + std::string name; + public: Model(const char* path); void draw(); void updateTransforms(struct FaceData faceData); + + std::string getName(); }; #endif