Fix crash with `PhysicsBody2D/3D::get_gravity` with invalid state

This commit is contained in:
A Thousand Ships 2024-02-05 16:40:49 +01:00
parent 63d6bda8e9
commit fb1662b939
No known key found for this signature in database
GPG Key ID: 2033189A662F8BD7
2 changed files with 6 additions and 2 deletions

View File

@ -147,7 +147,9 @@ bool PhysicsBody2D::test_move(const Transform2D &p_from, const Vector2 &p_motion
}
Vector2 PhysicsBody2D::get_gravity() const {
return PhysicsServer2D::get_singleton()->body_get_direct_state(get_rid())->get_total_gravity();
PhysicsDirectBodyState2D *state = PhysicsServer2D::get_singleton()->body_get_direct_state(get_rid());
ERR_FAIL_NULL_V(state, Vector2());
return state->get_total_gravity();
}
TypedArray<PhysicsBody2D> PhysicsBody2D::get_collision_exceptions() {

View File

@ -189,7 +189,9 @@ bool PhysicsBody3D::test_move(const Transform3D &p_from, const Vector3 &p_motion
}
Vector3 PhysicsBody3D::get_gravity() const {
return PhysicsServer3D::get_singleton()->body_get_direct_state(get_rid())->get_total_gravity();
PhysicsDirectBodyState3D *state = PhysicsServer3D::get_singleton()->body_get_direct_state(get_rid());
ERR_FAIL_NULL_V(state, Vector3());
return state->get_total_gravity();
}
void PhysicsBody3D::set_axis_lock(PhysicsServer3D::BodyAxis p_axis, bool p_lock) {