Merge pull request #87976 from AThousandShips/black_hole

Fix crash with `PhysicsBody2D/3D::get_gravity` with invalid state
This commit is contained in:
Rémi Verschelde 2024-02-05 17:22:54 +01:00 committed by GitHub
commit f427d2f0d3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
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) {