// delete texture;
}
+float SceneObject::getFloor() const
+{
+ return 0;
+}
+
void SceneObject::update(float deltaT)
{
if (!yStatic)
{
vec3 pos = getPosition();
- if (!floorBound() || ySpeed > 0) //Aktuelle Bodenhöhe
+ if (!floorBound() || ySpeed!=0)
{
- modelMat = translate(vec3(0.f, ySpeed*deltaT, 0.f))*modelMat;
+ if (pos.y + ySpeed*deltaT > getFloor())
+ modelMat = translate(vec3(0.f, ySpeed*deltaT, 0.f))*modelMat;
+ else
+ {
+ modelMat = translate(vec3(0.f, getFloor() - pos.y, 0.f))*modelMat;
+ ySpeed = 0;
+ }
ySpeed -= deltaT*YFALL_SPEED;
}
- else if(floorBound())
- {
- ySpeed = 0;
- }
}
bool SceneObject::floorBound() const
{
vec3 pos = getPosition();
- return (pos.y < 0);
- //TODO real Floor?
+ return (pos.y <= getFloor());
}
vec3 SceneObject::getPosition() const