diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2018-07-25 08:25:34 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-25 08:25:34 +0200 |
| commit | f778bd8e694cb9c93cc0e021418f2be362dcdd3c (patch) | |
| tree | 69872fb24079f1afd230026238e4763cef9bd30f /servers/physics/physics_server_sw.cpp | |
| parent | f8e8ac2c664a12f3af2b9bb545da193d86c75503 (diff) | |
| parent | 40c7716586db9182208b51d22e117d099bb4c97d (diff) | |
| download | redot-engine-f778bd8e694cb9c93cc0e021418f2be362dcdd3c.tar.gz | |
Merge pull request #20404 from TigerCaldwell/master
Ensured consistency between RigidBody, PhysicsDirectBodyState, PhysicsServers and their 2D counterparts
Diffstat (limited to 'servers/physics/physics_server_sw.cpp')
| -rw-r--r-- | servers/physics/physics_server_sw.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp index f1e0cbef29..a06942cb2a 100644 --- a/servers/physics/physics_server_sw.cpp +++ b/servers/physics/physics_server_sw.cpp @@ -777,6 +777,40 @@ Vector3 PhysicsServerSW::body_get_applied_torque(RID p_body) const { return body->get_applied_torque(); }; +void PhysicsServerSW::body_add_central_force(RID p_body, const Vector3 &p_force) { + BodySW *body = body_owner.get(p_body); + ERR_FAIL_COND(!body); + + body->add_central_force(p_force); + body->wakeup(); +} + +void PhysicsServerSW::body_add_force(RID p_body, const Vector3 &p_force, const Vector3 &p_pos) { + BodySW *body = body_owner.get(p_body); + ERR_FAIL_COND(!body); + + body->add_force(p_force, p_pos); + body->wakeup(); +}; + +void PhysicsServerSW::body_add_torque(RID p_body, const Vector3 &p_torque) { + BodySW *body = body_owner.get(p_body); + ERR_FAIL_COND(!body); + + body->add_torque(p_torque); + body->wakeup(); +}; + +void PhysicsServerSW::body_apply_central_impulse(RID p_body, const Vector3 &p_impulse) { + BodySW *body = body_owner.get(p_body); + ERR_FAIL_COND(!body); + + _update_shapes(); + + body->apply_central_impulse(p_impulse); + body->wakeup(); +} + void PhysicsServerSW::body_apply_impulse(RID p_body, const Vector3 &p_pos, const Vector3 &p_impulse) { BodySW *body = body_owner.get(p_body); |
