+
+ // remember normal of this tile
+ if (hit.normal.y > -0.9) {
+ floor_normal.x = hit.normal.x;
+ floor_normal.y = hit.normal.y;
+ } else {
+ // slowly adjust to unisolid tiles.
+ // Necessary because our bounding box sometimes reaches through slopes and thus hits unisolid tiles
+ floor_normal.x = (floor_normal.x * 0.9) + (hit.normal.x * 0.1);
+ floor_normal.y = (floor_normal.y * 0.9) + (hit.normal.y * 0.1);
+ }
+
+ // hack platforms so that we stand normally on them when going down...
+ Platform* platform = dynamic_cast<Platform*> (&other);
+ if(platform != NULL) {
+ if(platform->get_speed().y > 0)
+ physic.set_velocity_y(-platform->get_speed().y);
+ //physic.set_velocity_x(platform->get_speed().x);
+ }