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();
|
linear_velocity = p_state->get_linear_velocity();
|
||||||
angular_velocity = p_state->get_angular_velocity();
|
angular_velocity = p_state->get_angular_velocity();
|
||||||
|
|
||||||
|
contact_count = p_state->get_contact_count();
|
||||||
|
|
||||||
if (sleeping != p_state->is_sleeping()) {
|
if (sleeping != p_state->is_sleeping()) {
|
||||||
sleeping = p_state->is_sleeping();
|
sleeping = p_state->is_sleeping();
|
||||||
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
|
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 {
|
int RigidBody2D::get_contact_count() const {
|
||||||
PhysicsDirectBodyState2D *bs = PhysicsServer2D::get_singleton()->body_get_direct_state(get_rid());
|
return contact_count;
|
||||||
ERR_FAIL_NULL_V(bs, 0);
|
|
||||||
return bs->get_contact_count();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RigidBody2D::apply_central_impulse(const Vector2 &p_impulse) {
|
void RigidBody2D::apply_central_impulse(const Vector2 &p_impulse) {
|
||||||
|
|
|
@ -164,6 +164,7 @@ private:
|
||||||
bool sleeping = false;
|
bool sleeping = false;
|
||||||
|
|
||||||
int max_contacts_reported = 0;
|
int max_contacts_reported = 0;
|
||||||
|
int contact_count = 0;
|
||||||
|
|
||||||
bool custom_integrator = false;
|
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();
|
inverse_inertia_tensor = p_state->get_inverse_inertia_tensor();
|
||||||
|
|
||||||
|
contact_count = p_state->get_contact_count();
|
||||||
|
|
||||||
if (sleeping != p_state->is_sleeping()) {
|
if (sleeping != p_state->is_sleeping()) {
|
||||||
sleeping = p_state->is_sleeping();
|
sleeping = p_state->is_sleeping();
|
||||||
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
|
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 {
|
int RigidBody3D::get_contact_count() const {
|
||||||
PhysicsDirectBodyState3D *bs = PhysicsServer3D::get_singleton()->body_get_direct_state(get_rid());
|
return contact_count;
|
||||||
ERR_FAIL_NULL_V(bs, 0);
|
|
||||||
return bs->get_contact_count();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RigidBody3D::apply_central_impulse(const Vector3 &p_impulse) {
|
void RigidBody3D::apply_central_impulse(const Vector3 &p_impulse) {
|
||||||
|
|
|
@ -177,6 +177,7 @@ private:
|
||||||
bool ccd = false;
|
bool ccd = false;
|
||||||
|
|
||||||
int max_contacts_reported = 0;
|
int max_contacts_reported = 0;
|
||||||
|
int contact_count = 0;
|
||||||
|
|
||||||
bool custom_integrator = false;
|
bool custom_integrator = false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue