X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?p=physics.git;a=blobdiff_plain;f=src%2FEffects%2FScreen.cpp;h=9d81238105f40db5e1114827fe93fc829e805550;hp=bbae5bb43cb8e4474f072c0f31ec98d66b1d4cf7;hb=094a13b85bb8ab6011907cdea75216cc1040b1c4;hpb=b8adb435d85694b9b62e8be2fd63fe41b361a132 diff --git a/src/Effects/Screen.cpp b/src/Effects/Screen.cpp index bbae5bb..9d81238 100644 --- a/src/Effects/Screen.cpp +++ b/src/Effects/Screen.cpp @@ -2,6 +2,7 @@ #include "../debug.h" #include "../Entities/PhysicsEntity.h" +#include "../Entities/Ball.h" Screen::Screen() { @@ -12,11 +13,6 @@ Screen::~Screen() } -Vector2 Screen::positionDelta(const PhysicsEntity*, float) const -{ - return Vector2(0,0); -} - Vector2 Screen::velocityDelta(const PhysicsEntity* e, float time_step) const { const Vector2& pos = e->positionRaw(); @@ -24,30 +20,23 @@ Vector2 Screen::velocityDelta(const PhysicsEntity* e, float time_step) const Vector2 acc(0,0); - if(pos.y > 600 && velo.y > 0) - { + float radius = 0; + const Ball* b = dynamic_cast(e); + if( b != NULL ) + radius = b->getRadius(); + + + if(pos.y > 600-radius && velo.y > 0) acc.y += velo.y * -2; - } - if(pos.y < 0 && velo.y < 0) - { + if(pos.y < 0+radius && velo.y < 0) acc.y += velo.y * -2; - } - if(pos.x > 800 && velo.x > 0) - { + if(pos.x > 800-radius && velo.x > 0) acc.x += velo.x * -2; - } - if(pos.x < 0 && velo.x < 0) - { + if(pos.x < 0+radius && velo.x < 0) acc.x += velo.x * -2; - } return acc; } - -Vector2 Screen::forceDelta(const PhysicsEntity*, float) const -{ - return Vector2(0,0); -}