Skip to content

Commit 6c907c2

Browse files
miherburing
andcommitted
Fix move_and_slide forcing synchronization with physics thread
Co-authored-by: Ricardo Buring <[email protected]>
1 parent de463e0 commit 6c907c2

22 files changed

+226
-2
lines changed

doc/classes/PhysicsDirectBodyState2D.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@
232232
<member name="center_of_mass_local" type="Vector2" setter="" getter="get_center_of_mass_local">
233233
The body's center of mass position in the body's local coordinate system.
234234
</member>
235+
<member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer">
236+
The body's collision layer.
237+
</member>
238+
<member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask">
239+
The body's collision mask.
240+
</member>
235241
<member name="inverse_inertia" type="float" setter="" getter="get_inverse_inertia">
236242
The inverse of the inertia of the body.
237243
</member>

doc/classes/PhysicsDirectBodyState2DExtension.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,16 @@
9494
Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass_local] and its respective getter.
9595
</description>
9696
</method>
97+
<method name="_get_collision_layer" qualifiers="virtual required const">
98+
<return type="int" />
99+
<description>
100+
</description>
101+
</method>
102+
<method name="_get_collision_mask" qualifiers="virtual required const">
103+
<return type="int" />
104+
<description>
105+
</description>
106+
</method>
97107
<method name="_get_constant_force" qualifiers="virtual required const">
98108
<return type="Vector2" />
99109
<description>
@@ -269,6 +279,18 @@
269279
Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective setter.
270280
</description>
271281
</method>
282+
<method name="_set_collision_layer" qualifiers="virtual required">
283+
<return type="void" />
284+
<param index="0" name="layer" type="int" />
285+
<description>
286+
</description>
287+
</method>
288+
<method name="_set_collision_mask" qualifiers="virtual required">
289+
<return type="void" />
290+
<param index="0" name="mask" type="int" />
291+
<description>
292+
</description>
293+
</method>
272294
<method name="_set_constant_force" qualifiers="virtual required">
273295
<return type="void" />
274296
<param index="0" name="force" type="Vector2" />

doc/classes/PhysicsDirectBodyState3D.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@
232232
<member name="center_of_mass_local" type="Vector3" setter="" getter="get_center_of_mass_local">
233233
The body's center of mass position in the body's local coordinate system.
234234
</member>
235+
<member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer">
236+
The body's collision layer.
237+
</member>
238+
<member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask">
239+
The body's collision mask.
240+
</member>
235241
<member name="inverse_inertia" type="Vector3" setter="" getter="get_inverse_inertia">
236242
The inverse of the inertia of the body.
237243
</member>

doc/classes/PhysicsDirectBodyState3DExtension.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,16 @@
8282
<description>
8383
</description>
8484
</method>
85+
<method name="_get_collision_layer" qualifiers="virtual required const">
86+
<return type="int" />
87+
<description>
88+
</description>
89+
</method>
90+
<method name="_get_collision_mask" qualifiers="virtual required const">
91+
<return type="int" />
92+
<description>
93+
</description>
94+
</method>
8595
<method name="_get_constant_force" qualifiers="virtual required const">
8696
<return type="Vector3" />
8797
<description>
@@ -240,6 +250,18 @@
240250
<description>
241251
</description>
242252
</method>
253+
<method name="_set_collision_layer" qualifiers="virtual required">
254+
<return type="void" />
255+
<param index="0" name="layer" type="int" />
256+
<description>
257+
</description>
258+
</method>
259+
<method name="_set_collision_mask" qualifiers="virtual required">
260+
<return type="void" />
261+
<param index="0" name="mask" type="int" />
262+
<description>
263+
</description>
264+
</method>
243265
<method name="_set_constant_force" qualifiers="virtual required">
244266
<return type="void" />
245267
<param index="0" name="force" type="Vector3" />

modules/godot_physics_2d/godot_body_direct_state_2d.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,22 @@ bool GodotPhysicsDirectBodyState2D::is_sleeping() const {
166166
return !body->is_active();
167167
}
168168

169+
void GodotPhysicsDirectBodyState2D::set_collision_layer(uint32_t p_layer) {
170+
body->set_collision_layer(p_layer);
171+
}
172+
173+
uint32_t GodotPhysicsDirectBodyState2D::get_collision_layer() const {
174+
return body->get_collision_layer();
175+
}
176+
177+
void GodotPhysicsDirectBodyState2D::set_collision_mask(uint32_t p_mask) {
178+
body->set_collision_mask(p_mask);
179+
}
180+
181+
uint32_t GodotPhysicsDirectBodyState2D::get_collision_mask() const {
182+
return body->get_collision_mask();
183+
}
184+
169185
int GodotPhysicsDirectBodyState2D::get_contact_count() const {
170186
return body->contact_count;
171187
}

modules/godot_physics_2d/godot_body_direct_state_2d.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ class GodotPhysicsDirectBodyState2D : public PhysicsDirectBodyState2D {
8181
virtual void set_sleep_state(bool p_enable) override;
8282
virtual bool is_sleeping() const override;
8383

84+
virtual void set_collision_layer(uint32_t p_layer) override;
85+
virtual uint32_t get_collision_layer() const override;
86+
87+
virtual void set_collision_mask(uint32_t p_mask) override;
88+
virtual uint32_t get_collision_mask() const override;
89+
8490
virtual int get_contact_count() const override;
8591

8692
virtual Vector2 get_contact_local_position(int p_contact_idx) const override;

modules/godot_physics_3d/godot_body_direct_state_3d.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,22 @@ bool GodotPhysicsDirectBodyState3D::is_sleeping() const {
174174
return !body->is_active();
175175
}
176176

177+
void GodotPhysicsDirectBodyState3D::set_collision_layer(uint32_t p_layer) {
178+
body->set_collision_layer(p_layer);
179+
}
180+
181+
uint32_t GodotPhysicsDirectBodyState3D::get_collision_layer() const {
182+
return body->get_collision_layer();
183+
}
184+
185+
void GodotPhysicsDirectBodyState3D::set_collision_mask(uint32_t p_mask) {
186+
body->set_collision_mask(p_mask);
187+
}
188+
189+
uint32_t GodotPhysicsDirectBodyState3D::get_collision_mask() const {
190+
return body->get_collision_mask();
191+
}
192+
177193
int GodotPhysicsDirectBodyState3D::get_contact_count() const {
178194
return body->contact_count;
179195
}

modules/godot_physics_3d/godot_body_direct_state_3d.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ class GodotPhysicsDirectBodyState3D : public PhysicsDirectBodyState3D {
8484
virtual void set_sleep_state(bool p_sleep) override;
8585
virtual bool is_sleeping() const override;
8686

87+
virtual void set_collision_layer(uint32_t p_layer) override;
88+
virtual uint32_t get_collision_layer() const override;
89+
90+
virtual void set_collision_mask(uint32_t p_mask) override;
91+
virtual uint32_t get_collision_mask() const override;
92+
8793
virtual int get_contact_count() const override;
8894

8995
virtual Vector3 get_contact_local_position(int p_contact_idx) const override;

modules/jolt_physics/objects/jolt_physics_direct_body_state_3d.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,22 @@ void JoltPhysicsDirectBodyState3D::set_sleep_state(bool p_enabled) {
162162
body->set_is_sleeping(p_enabled);
163163
}
164164

165+
void JoltPhysicsDirectBodyState3D::set_collision_layer(uint32_t p_layer) {
166+
body->set_collision_layer(p_layer);
167+
}
168+
169+
uint32_t JoltPhysicsDirectBodyState3D::get_collision_layer() const {
170+
return body->get_collision_layer();
171+
}
172+
173+
void JoltPhysicsDirectBodyState3D::set_collision_mask(uint32_t p_mask) {
174+
body->set_collision_mask(p_mask);
175+
}
176+
177+
uint32_t JoltPhysicsDirectBodyState3D::get_collision_mask() const {
178+
return body->get_collision_mask();
179+
}
180+
165181
int JoltPhysicsDirectBodyState3D::get_contact_count() const {
166182
return body->get_contact_count();
167183
}

modules/jolt_physics/objects/jolt_physics_direct_body_state_3d.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,12 @@ class JoltPhysicsDirectBodyState3D final : public PhysicsDirectBodyState3D {
9090
virtual void set_sleep_state(bool p_enabled) override;
9191
virtual bool is_sleeping() const override;
9292

93+
virtual void set_collision_layer(uint32_t p_layer) override;
94+
virtual uint32_t get_collision_layer() const override;
95+
96+
virtual void set_collision_mask(uint32_t p_mask) override;
97+
virtual uint32_t get_collision_mask() const override;
98+
9399
virtual int get_contact_count() const override;
94100

95101
virtual Vector3 get_contact_local_position(int p_contact_idx) const override;

0 commit comments

Comments
 (0)