mirror of
https://github.com/godotengine/godot.git
synced 2024-12-27 11:24:59 +08:00
Fix contact count sometimes being incorrect in _process
This commit is contained in:
parent
d3352813ea
commit
f2d615cdc7
@ -446,6 +446,8 @@ void RigidBody2D::_sync_body_state(PhysicsDirectBodyState2D *p_state) {
|
||||
linear_velocity = p_state->get_linear_velocity();
|
||||
angular_velocity = p_state->get_angular_velocity();
|
||||
|
||||
contact_count = p_state->get_contact_count();
|
||||
|
||||
if (sleeping != p_state->is_sleeping()) {
|
||||
sleeping = p_state->is_sleeping();
|
||||
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
|
||||
@ -797,9 +799,7 @@ int RigidBody2D::get_max_contacts_reported() const {
|
||||
}
|
||||
|
||||
int RigidBody2D::get_contact_count() const {
|
||||
PhysicsDirectBodyState2D *bs = PhysicsServer2D::get_singleton()->body_get_direct_state(get_rid());
|
||||
ERR_FAIL_NULL_V(bs, 0);
|
||||
return bs->get_contact_count();
|
||||
return contact_count;
|
||||
}
|
||||
|
||||
void RigidBody2D::apply_central_impulse(const Vector2 &p_impulse) {
|
||||
|
@ -164,6 +164,7 @@ private:
|
||||
bool sleeping = false;
|
||||
|
||||
int max_contacts_reported = 0;
|
||||
int contact_count = 0;
|
||||
|
||||
bool custom_integrator = false;
|
||||
|
||||
|
@ -502,6 +502,8 @@ void RigidBody3D::_sync_body_state(PhysicsDirectBodyState3D *p_state) {
|
||||
|
||||
inverse_inertia_tensor = p_state->get_inverse_inertia_tensor();
|
||||
|
||||
contact_count = p_state->get_contact_count();
|
||||
|
||||
if (sleeping != p_state->is_sleeping()) {
|
||||
sleeping = p_state->is_sleeping();
|
||||
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
|
||||
@ -877,9 +879,7 @@ int RigidBody3D::get_max_contacts_reported() const {
|
||||
}
|
||||
|
||||
int RigidBody3D::get_contact_count() const {
|
||||
PhysicsDirectBodyState3D *bs = PhysicsServer3D::get_singleton()->body_get_direct_state(get_rid());
|
||||
ERR_FAIL_NULL_V(bs, 0);
|
||||
return bs->get_contact_count();
|
||||
return contact_count;
|
||||
}
|
||||
|
||||
void RigidBody3D::apply_central_impulse(const Vector3 &p_impulse) {
|
||||
|
@ -177,6 +177,7 @@ private:
|
||||
bool ccd = false;
|
||||
|
||||
int max_contacts_reported = 0;
|
||||
int contact_count = 0;
|
||||
|
||||
bool custom_integrator = false;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user