1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-06 12:20:30 +00:00

Modified RigidBody, PhysicsDirectBodyState, PhysicsServer, and their respective 2D counterparts to be more consistent and to include more useful methods.

RigidBody:
- Added add_central_force
- Added add_force
- Added add_torque
- Added apply_central_impulse

RigidBody2D:
- Added add_central_force
- Added add_torque
- Added apply_central_impulse
- Added apply_torque_impulse

PhysicsDirectBodyState:
- Added apply_central_impulse

Physics2DDirectBodyState:
- Added add_central_force
- Added add_force
- Added add_torque
- Added apply_central_impulse
- Added apply_impulse
- Added apply_torque_impulse

PhysicsServer:
- Added body_add_force
- Added body_add_torque
- Added body_add_central_force
- Added body_apply_central_impulse

Physics2DServer:
- Added body_add_torque
- Added body_add_central_force
- Added body_apply_central_impulse
- Added body_apply_torque_impulse

Also fixed some small bugs along the way
This commit is contained in:
Tiger Caldwell
2018-07-24 03:49:12 -04:00
parent 4b277c2c20
commit 40c7716586
19 changed files with 231 additions and 2 deletions

View File

@@ -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);