Selaa lähdekoodia

🐛 enforce bodies damping recomputation on mode switch at runtime

opsocket 8 kuukautta sitten
vanhempi
commit
0dd072b460

+ 20 - 0
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;
 }

+ 2 - 2
modules/jolt_physics/objects/jolt_body_3d.h

@@ -287,10 +287,10 @@ public:
 	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);