diff options
author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2017-09-09 21:45:14 +0200 |
---|---|---|
committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2017-09-09 21:45:22 +0200 |
commit | fbeb27b01d2dd94c80f9ae8ecf1dfd69a1bb55a6 (patch) | |
tree | e62385d263e54e8fd0d715e565b1f32dd6a9a44d | |
parent | d8584682f03c2b78ac531f1e7537a10d6a5787d3 (diff) |
Remove joint freeing logic from physics servers
Since joint resources are created by joint nodes and also they take care of freeing them, the physics server doesn't need to free bodies' joints explicitly.
The logic for clearing the constraints map/set is still relevant as there may be collision pairs and in their case its the server itself the one creating them and therefore releasing them.
-rw-r--r-- | servers/physics/physics_server_sw.cpp | 14 | ||||
-rw-r--r-- | servers/physics_2d/physics_2d_server_sw.cpp | 14 |
2 files changed, 0 insertions, 28 deletions
diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp index 8d6f7b3fd8..432d20105b 100644 --- a/servers/physics/physics_server_sw.cpp +++ b/servers/physics/physics_server_sw.cpp @@ -233,14 +233,7 @@ void PhysicsServerSW::area_set_space(RID p_area, RID p_space) { if (area->get_space() == space) return; //pointless - for (Set<ConstraintSW *>::Element *E = area->get_constraints().front(); E; E = E->next()) { - RID self = E->get()->get_self(); - if (!self.is_valid()) - continue; - free(self); - } area->clear_constraints(); - area->set_space(space); }; @@ -494,14 +487,7 @@ void PhysicsServerSW::body_set_space(RID p_body, RID p_space) { if (body->get_space() == space) return; //pointless - for (Map<ConstraintSW *, int>::Element *E = body->get_constraint_map().front(); E; E = E->next()) { - RID self = E->key()->get_self(); - if (!self.is_valid()) - continue; - free(self); - } body->clear_constraint_map(); - body->set_space(space); }; diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp index 006c5fd7b5..773ee374c3 100644 --- a/servers/physics_2d/physics_2d_server_sw.cpp +++ b/servers/physics_2d/physics_2d_server_sw.cpp @@ -296,14 +296,7 @@ void Physics2DServerSW::area_set_space(RID p_area, RID p_space) { if (area->get_space() == space) return; //pointless - for (Set<Constraint2DSW *>::Element *E = area->get_constraints().front(); E; E = E->next()) { - RID self = E->get()->get_self(); - if (!self.is_valid()) - continue; - free(self); - } area->clear_constraints(); - area->set_space(space); }; @@ -548,14 +541,7 @@ void Physics2DServerSW::body_set_space(RID p_body, RID p_space) { if (body->get_space() == space) return; //pointless - for (Map<Constraint2DSW *, int>::Element *E = body->get_constraint_map().front(); E; E = E->next()) { - RID self = E->key()->get_self(); - if (!self.is_valid()) - continue; - free(self); - } body->clear_constraint_map(); - body->set_space(space); }; |