From: Peter Schaefer Date: Sun, 3 May 2015 20:02:53 +0000 (+0200) Subject: removed scale from Model (scale with mat4) X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=03ada4c9fabaab70de3fde486d332496c2163b6f;p=cgue_weave.git removed scale from Model (scale with mat4) --- diff --git a/Weave/Game.cpp b/Weave/Game.cpp index b899a6a..a801935 100644 --- a/Weave/Game.cpp +++ b/Weave/Game.cpp @@ -49,7 +49,7 @@ Game::Game() : playing(true) Shader* shader1 = new Shader("basicTexture_VS.hlsl", "lightingTexture_FS.hlsl"); // load LVL - SceneObject* tmp_world = new SceneObject(shader1, mat4(1.f), vec4(4.0f, 1.0f, 1.0f, 2.0f), "level_test.dae", "model_levelTest_2D.png", 3.f * vec3(1.f, .3f, 1.f)); + SceneObject* tmp_world = new SceneObject(shader1, scale(3.f * vec3(1.f, .3f, 1.f)), vec4(4.0f, 1.0f, 1.0f, 2.0f), "level_test.dae", "model_levelTest_2D.png"); tmp_world->ignore = true; current_world->addObject(tmp_world); @@ -65,9 +65,9 @@ Game::Game() : playing(true) //current_world->addObject(new SceneObject(shader1, glm::mat4(1.0f), "Player.dae", "model_player.png")); //current_world->addObject(new SceneObject(shader1, translate(vec3(-3.f, .4f, 0.f))*scale(vec3(3.f)), "cow/cow.dae", "model_cow_2D.jpg")); - current_world->addObject(new SceneObject(shader1, translate(vec3(-3.f, .4f, 0.f)), vec4(3.0f, 0.5f, 0.4f, 1.5f), "duck.dae", "model_duck_2D.png", vec3(.3f))); + current_world->addObject(new SceneObject(shader1, translate(vec3(-3.f, .4f, 0.f))*scale(vec3(.3f)), vec4(3.0f, 0.5f, 0.4f, 1.5f), "duck.dae", "model_duck_2D.png")); - current_world->addObject(new EventBox(translate(vec3(3.f, .4f, 0.f)), vec3(1.f))); + current_world->addObject(new EventBox(translate(vec3(3.f, .4f, 0.f)))); } diff --git a/Weave/Graphix/Model/IMesh.cpp b/Weave/Graphix/Model/IMesh.cpp index 8ef5ca1..51c14e1 100644 --- a/Weave/Graphix/Model/IMesh.cpp +++ b/Weave/Graphix/Model/IMesh.cpp @@ -67,7 +67,7 @@ void IMesh::useModelMat(const mat4& _model, Shader* _shader) const // Model::useModelMat(_model * modelMat, _shader); int tmp = _shader->getUniformLocation("uModel"); if (tmp >= 0) - glUniformMatrix4fv(tmp, 1, GL_FALSE, value_ptr(_model*glm::scale(modelScale)* modelMat)); + glUniformMatrix4fv(tmp, 1, GL_FALSE, value_ptr(_model* modelMat)); } //void IMesh::drawModel(Shader* _shader, Texture* _texture, const mat4& _modelMat) const @@ -155,11 +155,4 @@ void IMesh::isColliding(float& _overlap, float& _inside, const Model* _model, co return; -} - -void IMesh::getBBsp(vec3& _size, vec3& _position) const -{ - Model::getBBsp(_size, _position); - - scaleVec3(_position, modelScale); } \ No newline at end of file diff --git a/Weave/Graphix/Model/IMesh.h b/Weave/Graphix/Model/IMesh.h index 16626ca..781eac9 100644 --- a/Weave/Graphix/Model/IMesh.h +++ b/Weave/Graphix/Model/IMesh.h @@ -28,9 +28,6 @@ public: /* calls Colliding to check if self collides with model*/ virtual void isColliding(float& overlap, float& inside, const Model* model, const mat4& modelMatThis, const mat4& modelMatOther) const; - void getBBsp(vec3& size, vec3& pos) const; - - protected: mat4 modelMat; diff --git a/Weave/Graphix/Model/IMetaMesh.cpp b/Weave/Graphix/Model/IMetaMesh.cpp index 13da142..4cbe1a8 100644 --- a/Weave/Graphix/Model/IMetaMesh.cpp +++ b/Weave/Graphix/Model/IMetaMesh.cpp @@ -117,32 +117,3 @@ void IMetaMesh::isColliding(float& _overlap, float& _inside, const Model* _model } } } - -void IMetaMesh::scale(const vec3& _scale) -{ - Model::scale(_scale); - for (auto i = models.begin(); i != models.end(); ++i) - { - - (*i)->scale(_scale); - } - -} - -void IMetaMesh::unScale() -{ - Model::unScale(); - for (auto i = models.begin(); i != models.end(); ++i) - { - - (*i)->unScale(); - } - -} - -void IMetaMesh::getBBsp(vec3& _size, vec3& _position) const -{ - Model::getBBsp(_size, _position); - - scaleVec3(_position, modelScale); -} \ No newline at end of file diff --git a/Weave/Graphix/Model/IMetaMesh.h b/Weave/Graphix/Model/IMetaMesh.h index 988877c..9561fd5 100644 --- a/Weave/Graphix/Model/IMetaMesh.h +++ b/Weave/Graphix/Model/IMetaMesh.h @@ -24,14 +24,9 @@ public: void drawBBox(Shader* shader, const mat4& modelMat) const; - void getBBsp(vec3& size, vec3& pos) const; - /* calls Colliding to check if self collides with model*/ void isColliding(float& overlap, float& inside, const Model* model, const mat4& modelMatThis, const mat4& modelMatOther) const; - void scale(const vec3& scale); - void unScale(); - protected: std::list models; }; diff --git a/Weave/Graphix/Model/Model.cpp b/Weave/Graphix/Model/Model.cpp index 8e9fd77..af12050 100644 --- a/Weave/Graphix/Model/Model.cpp +++ b/Weave/Graphix/Model/Model.cpp @@ -18,8 +18,7 @@ numvertices(0), vertexBuffer(-1), normalBuffer(-1), uvBuffer(-1), -indexBuffer(-1), -modelScale(1.f) +indexBuffer(-1) { } @@ -169,17 +168,12 @@ void Model::getBBmm(vec3& _min, vec3& _max) const { _min = BBmin; _max = BBmax; - - scaleVec3(_min, modelScale); - scaleVec3(_max, modelScale); } void Model::getBBsp(vec3& _size, vec3& _position) const { _size = BBsize; _position = BBposition; - - scaleVec3(_size, modelScale); } @@ -243,7 +237,7 @@ void Model::useModelMat(const mat4& _model, Shader* _shader) const { int tmp = _shader->getUniformLocation("uModel"); if (tmp >= 0) - glUniformMatrix4fv(tmp, 1, GL_FALSE, value_ptr(_model*glm::scale(modelScale))); + glUniformMatrix4fv(tmp, 1, GL_FALSE, value_ptr(_model)); } void Model::isColliding(float& _overlap, float& _inside, const Model* _model, const mat4& _modelMatThis, const mat4& _modelMatOther) const @@ -254,8 +248,8 @@ void Model::isColliding(float& _overlap, float& _inside, const Model* _model, co getBBsp(sizeA, posA); _model->getBBsp(sizeB, posB); - mat4 modelAR = glm::inverse(_modelMatOther)*_modelMatThis; - mat4 modelBR = glm::inverse(_modelMatThis)*_modelMatOther; + mat4 modelAR = glm::inverse(removeScale(_modelMatOther))*_modelMatThis; + mat4 modelBR = glm::inverse(removeScale(_modelMatThis))*_modelMatOther; vec3 posAR = (vec3)(modelAR*vec4(posA, 1.f)); vec3 posBR = (vec3)(modelBR*vec4(posB, 1.f)); @@ -309,16 +303,6 @@ vec3 Model::rotateSize(const vec3& _size, const mat4& _modelMat) return Size; } -void Model::scale(const vec3& _scale) -{ - scaleVec3(modelScale, _scale); -} - -void Model::unScale() -{ - modelScale = vec3(1.f); -} - void Model::scaleVec3(vec3& _vec, const vec3& _scale) { for (uint i = 0; i < 3; ++i) diff --git a/Weave/Graphix/Model/Model.h b/Weave/Graphix/Model/Model.h index be8a302..672c936 100644 --- a/Weave/Graphix/Model/Model.h +++ b/Weave/Graphix/Model/Model.h @@ -31,9 +31,6 @@ public: /* calls Colliding to check if self collides with model*/ virtual void isColliding(float& overlap, float& inside, const Model* model, const mat4& modelMatThis, const mat4& modelMatOther) const; - virtual void scale(const vec3& scale); - virtual void unScale(); - static Model* getBBoxModel(); protected: @@ -62,8 +59,6 @@ protected: static void checkCollideByAxis(float& overlap, float& inside, uint dim, const float* posA, const float* posB, const float* sizeA, const float* sizeB); static void scaleVec3(vec3& vec, const vec3& scale); - vec3 modelScale; - private: vec3 BBmin, BBmax; vec3 BBsize, BBposition; diff --git a/Weave/Scene/EventBox.cpp b/Weave/Scene/EventBox.cpp index 71ed690..516f009 100644 --- a/Weave/Scene/EventBox.cpp +++ b/Weave/Scene/EventBox.cpp @@ -6,7 +6,7 @@ #include "../Events.h" -EventBox::EventBox(const mat4& _modelMat, const vec3& _size) : SceneObject(Graphix::shader_BBox,_modelMat,vec4(0.f),Model::getBBoxModel(),"",_size) +EventBox::EventBox(const mat4& _modelMat) : SceneObject(Graphix::shader_BBox,_modelMat,vec4(0.f),Model::getBBoxModel(),"") { } diff --git a/Weave/Scene/EventBox.h b/Weave/Scene/EventBox.h index ced8388..005706a 100644 --- a/Weave/Scene/EventBox.h +++ b/Weave/Scene/EventBox.h @@ -9,7 +9,7 @@ class EventBox : public SceneObject { public: - EventBox(const mat4& modelMat, const vec3& size); + EventBox(const mat4& modelMat); ~EventBox(); virtual void update(float); diff --git a/Weave/Scene/SceneObject.cpp b/Weave/Scene/SceneObject.cpp index 4e84a88..1a65e9d 100644 --- a/Weave/Scene/SceneObject.cpp +++ b/Weave/Scene/SceneObject.cpp @@ -20,7 +20,7 @@ using std::string; #define YFALL_SPEED 9.8f -SceneObject::SceneObject(Shader* _shader, const mat4& _modelMat, const vec4& _material, string _modelpath, string texturepath, const vec3& _scale) : +SceneObject::SceneObject(Shader* _shader, const mat4& _modelMat, const vec4& _material, string _modelpath, string texturepath) : model(nullptr), modelMat(_modelMat), shader(_shader), @@ -29,8 +29,7 @@ collision_ignore(false), texture(nullptr), ySpeed(0), yStatic(true), -ignore(false), -modelScale(_scale) +ignore(false) { //Message::info("Error from befor?"); //Graphix::getGlError(); @@ -41,7 +40,6 @@ modelScale(_scale) if (_modelpath != "") { model = new IMetaMesh(_modelpath); - model->scale(_scale); } if (texturepath != "") @@ -56,7 +54,7 @@ modelScale(_scale) } -SceneObject::SceneObject(Shader* _shader, const mat4& _modelMat, const vec4& _material, Model* _model, string texturepath, const vec3& _scale) : +SceneObject::SceneObject(Shader* _shader, const mat4& _modelMat, const vec4& _material, Model* _model, string texturepath) : model(_model), modelMat(_modelMat), shader(_shader), @@ -65,8 +63,7 @@ collision_ignore(false), texture(nullptr), ySpeed(0), yStatic(true), -ignore(false), -modelScale(_scale) +ignore(false) { //Message::info("Error from befor?"); //Graphix::getGlError(); diff --git a/Weave/Scene/SceneObject.h b/Weave/Scene/SceneObject.h index f3dde27..7e8712b 100644 --- a/Weave/Scene/SceneObject.h +++ b/Weave/Scene/SceneObject.h @@ -18,8 +18,8 @@ class SceneObject public: //SceneObject(Shader* _shader, mat4& model); - SceneObject(Shader* _shader, const mat4& modelMat, const vec4& material, string modelpath, string texturepath, const vec3& scale=vec3(1.f)); - SceneObject(Shader* _shader, const mat4& modelMat, const vec4& material, Model* model, string texturepath, const vec3& scale = vec3(1.f)); + SceneObject(Shader* _shader, const mat4& modelMat, const vec4& material, string modelpath, string texturepath); + SceneObject(Shader* _shader, const mat4& modelMat, const vec4& material, Model* model, string texturepath); virtual ~SceneObject(); @@ -64,7 +64,6 @@ public: protected: mat4 modelMat; - vec3 modelScale; Shader* shader; Texture* texture;