using std::endl;
-#define YFALL_SPEED 9.f
+#define YFALL_SPEED 9.8f
SceneObject::SceneObject(Shader* _shader, mat4& _modelMat, string _modelpath, string texturepath, unsigned int _model_index) :
model(new IMetaMesh(_modelpath)),
{
//Message::info("Error from befor?");
//Graphix::getGlError();
-// new IMetaMesh(_modelpath);
+ // new IMetaMesh(_modelpath);
//Message::info("Creating modelMat");
//Graphix::getGlError();
//modelID = _shader->getUniformLocation("modelMat");
- if (texturepath!="")
+ if (texturepath != "")
texture = new Texture(texturepath);
//Message::info("Creating SkyBox Shader");
//Graphix::getGlError();
-
+
model->bindShader(shader);
//Message::info("Binding Shader");
//Graphix::getGlError();
SceneObject::~SceneObject()
{
-// delete texture;
+ // delete texture;
}
void SceneObject::update(float deltaT)
if (!yStatic)
{
vec3 pos = getPosition();
- if (pos.y > 0 || ySpeed>0) //Aktuelle Bodenhöhe
+ if (!floorBound() || ySpeed > 0) //Aktuelle Bodenhöhe
{
modelMat = translate(vec3(0.f, ySpeed*deltaT, 0.f))*modelMat;
ySpeed -= deltaT*YFALL_SPEED;
}
+ else if(floorBound())
+ {
+ ySpeed = 0;
+ }
}
-
+
//modelMat = scale(modelMat, vec3(matter));
//modelMat = (deltaT * spin) * modelMat; //TODO drehen scheint nicht zu funktionieren
void SceneObject::draw() const
{
-// useModel(shader);
+ // useModel(shader);
-// useTexture(texture, shader);
+ // useTexture(texture, shader);
-// useMMatrix(modelMat,shader);
+ // useMMatrix(modelMat,shader);
-// glUniform1i(shader->getUniformLocation ("inv"), 1);
-
-// drawModel();
+ // glUniform1i(shader->getUniformLocation ("inv"), 1);
+
+ // drawModel();
model->drawModel(shader, texture, modelMat);
if (Events::isKToggleActive(SDLK_F6))
}
-vec3 SceneObject::getPosition() const{
+bool SceneObject::floorBound() const
+{
+ vec3 pos = getPosition();
+ return (pos.y < 0);
+ //TODO real Floor?
+}
+
+vec3 SceneObject::getPosition() const
+{
return vec3(modelMat[3]);
}
if (abs(rot_angle) / M_PI > speed)
perc = speed / abs(rot_angle) * M_PI;
-
- modelMat = rotate(rot_angle *perc , vec3(0.f, 1.f, 0.f)) * modelMat;
+
+ modelMat = rotate(rot_angle *perc, vec3(0.f, 1.f, 0.f)) * modelMat;
modelMat = translate(pos) * modelMat;
}