diff --git a/src/Model.cpp b/src/Model.cpp index c821790..ebc54c9 100644 --- a/src/Model.cpp +++ b/src/Model.cpp @@ -198,4 +198,13 @@ void Model::unloadTextures() { } } +void Model::setPositionToOrigin() { + this->translate(this->position * -1.0f); + this->position = glm::vec4(0.0f, 0.0f, 0.0f, 1.0f); +} + +void Model::setPosition(glm::vec3 position) { + this->setPositionToOrigin(); + this->translate(position); +} Model::~Model() { this->unloadTextures(); } diff --git a/src/Model.h b/src/Model.h index ab29bac..65d846f 100644 --- a/src/Model.h +++ b/src/Model.h @@ -37,6 +37,9 @@ private: aiTextureType type, std::string typeName); + // Reset the models position to 0,0,0, + void setPositionToOrigin(); + void unloadTextures(); std::string directory; @@ -60,6 +63,8 @@ public: void resize(glm::vec3 scale); // Scale the model void rotate(float angle, glm::vec3 axis); + // Set the postion of the model to a set of coordinates + void setPosition(glm::vec3 position); ~Model(); }; diff --git a/src/main.cpp b/src/main.cpp index 6871fce..8fa956e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -80,7 +80,8 @@ int main(int argc, char **argv) { // Model gun(ROOT_DIR "data/models/gun/Cerberus_LP.FBX"); Model boxbarrel(ROOT_DIR "data/models/wooden_boxbarrel/wooden_box_and_barrel.obj"); - boxbarrel.translate(glm::vec3(0.0f, -1.0f, 0.0f)); + // boxbarrel.translate(glm::vec3(0.0f, -1.0f, 0.0f)); + boxbarrel.setPosition(glm::vec3(0.0f, -1.0f, 0.0f)); // cube.translate(glm::vec3(3.0f, 0.0f, -1.0f)); // backpack.translate(glm::vec3(-3.0f, 0.0f, 0.0f)); // gun.translate(glm::vec3(0.0f, 1.0f, 0.0f));