Merge pull request #5383 from Ovnuniarchos/OptimizeOneWay

Optimized one-way collision loops.
This commit is contained in:
Rémi Verschelde 2016-07-18 16:37:50 +02:00 committed by GitHub
commit 3725114a16
1 changed files with 18 additions and 23 deletions

View File

@ -298,19 +298,17 @@ bool BodyPair2DSW::setup(float p_step) {
if (A->is_using_one_way_collision()) {
Vector2 direction = A->get_one_way_collision_direction();
bool valid=false;
if (B->get_linear_velocity().dot(direction)>=0){
for(int i=0;i<contact_count;i++) {
Contact& c = contacts[i];
if (!c.reused)
continue;
if (c.normal.dot(direction)<0)
continue;
if (B->get_linear_velocity().dot(direction)<0)
continue;
if (!c.reused) {
continue;
}
valid=true;
break;
}
}
if (!valid) {
@ -323,20 +321,17 @@ bool BodyPair2DSW::setup(float p_step) {
if (B->is_using_one_way_collision()) {
Vector2 direction = B->get_one_way_collision_direction();
bool valid=false;
if (A->get_linear_velocity().dot(direction)>=0){
for(int i=0;i<contact_count;i++) {
Contact& c = contacts[i];
if (!c.reused)
continue;
if (c.normal.dot(direction)<0)
continue;
if (A->get_linear_velocity().dot(direction)<0)
continue;
if (!c.reused) {
continue;
}
valid=true;
break;
}
}
if (!valid) {
collided=false;