From 0dd072b460d1e5ee6973bccca5fb5863f3a1097d Mon Sep 17 00:00:00 2001 From: opsocket Date: Wed, 18 Dec 2024 16:07:04 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20enforce=20bodies=20damping=20rec?= =?UTF-8?q?omputation=20on=20mode=20switch=20at=20runtime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/jolt_physics/objects/jolt_body_3d.cpp | 20 +++++++++++++++++++ modules/jolt_physics/objects/jolt_body_3d.h | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/modules/jolt_physics/objects/jolt_body_3d.cpp b/modules/jolt_physics/objects/jolt_body_3d.cpp index 408a935973d8..59ba42c6ca91 100644 --- a/modules/jolt_physics/objects/jolt_body_3d.cpp +++ b/modules/jolt_physics/objects/jolt_body_3d.cpp @@ -1404,6 +1404,26 @@ void JoltBody3D::set_angular_damp(float p_damp) { _update_damp(); } +void JoltBody3D::set_linear_damp_mode(DampMode p_mode) { + if (p_mode == linear_damp_mode) { + return; + } + + linear_damp_mode = p_mode; + + _update_damp(); +} + +void JoltBody3D::set_angular_damp_mode(DampMode p_mode) { + if (p_mode == angular_damp_mode) { + return; + } + + angular_damp_mode = p_mode; + + _update_damp(); +} + bool JoltBody3D::is_axis_locked(PhysicsServer3D::BodyAxis p_axis) const { return (locked_axes & (uint32_t)p_axis) != 0; } diff --git a/modules/jolt_physics/objects/jolt_body_3d.h b/modules/jolt_physics/objects/jolt_body_3d.h index 50a5c2a293fd..dc1e258bec86 100644 --- a/modules/jolt_physics/objects/jolt_body_3d.h +++ b/modules/jolt_physics/objects/jolt_body_3d.h @@ -287,10 +287,10 @@ class JoltBody3D final : public JoltShapedObject3D { void set_collision_priority(float p_priority) { collision_priority = p_priority; } DampMode get_linear_damp_mode() const { return linear_damp_mode; } - void set_linear_damp_mode(DampMode p_mode) { linear_damp_mode = p_mode; } + void set_linear_damp_mode(DampMode p_mode); DampMode get_angular_damp_mode() const { return angular_damp_mode; } - void set_angular_damp_mode(DampMode p_mode) { angular_damp_mode = p_mode; } + void set_angular_damp_mode(DampMode p_mode); bool is_axis_locked(PhysicsServer3D::BodyAxis p_axis) const; void set_axis_lock(PhysicsServer3D::BodyAxis p_axis, bool p_enabled);