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);
//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))));
}
// 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
return;
-}
-
-void IMesh::getBBsp(vec3& _size, vec3& _position) const
-{
- Model::getBBsp(_size, _position);
-
- scaleVec3(_position, modelScale);
}
\ No newline at end of file
/* 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;
}
}
}
-
-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
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<IMesh*> models;
};
vertexBuffer(-1),
normalBuffer(-1),
uvBuffer(-1),
-indexBuffer(-1),
-modelScale(1.f)
+indexBuffer(-1)
{
}
{
_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);
}
{
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
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));
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)
/* 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:
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;
#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(),"")
{
}
public SceneObject
{
public:
- EventBox(const mat4& modelMat, const vec3& size);
+ EventBox(const mat4& modelMat);
~EventBox();
virtual void update(float);
#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),
texture(nullptr),
ySpeed(0),
yStatic(true),
-ignore(false),
-modelScale(_scale)
+ignore(false)
{
//Message::info("Error from befor?");
//Graphix::getGlError();
if (_modelpath != "")
{
model = new IMetaMesh(_modelpath);
- model->scale(_scale);
}
if (texturepath != "")
}
-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),
texture(nullptr),
ySpeed(0),
yStatic(true),
-ignore(false),
-modelScale(_scale)
+ignore(false)
{
//Message::info("Error from befor?");
//Graphix::getGlError();
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();
protected:
mat4 modelMat;
- vec3 modelScale;
Shader* shader;
Texture* texture;