2
0
Эх сурвалжийг харах

Merge pull request #70477 from mihe/bind-joint-disable

Bind methods related to disabling collision between joint bodies
Rémi Verschelde 2 жил өмнө
parent
commit
d005293a34

+ 15 - 0
doc/classes/PhysicsServer2D.xml

@@ -736,6 +736,14 @@
 			<description>
 			</description>
 		</method>
+		<method name="joint_disable_collisions_between_bodies">
+			<return type="void" />
+			<param index="0" name="joint" type="RID" />
+			<param index="1" name="disable" type="bool" />
+			<description>
+				Sets whether the bodies attached to the [Joint2D] will collide with each other.
+			</description>
+		</method>
 		<method name="joint_get_param" qualifiers="const">
 			<return type="float" />
 			<param index="0" name="joint" type="RID" />
@@ -751,6 +759,13 @@
 				Returns a joint's type (see [enum JointType]).
 			</description>
 		</method>
+		<method name="joint_is_disabled_collisions_between_bodies" qualifiers="const">
+			<return type="bool" />
+			<param index="0" name="joint" type="RID" />
+			<description>
+				Returns whether the bodies attached to the [Joint2D] will collide with each other.
+			</description>
+		</method>
 		<method name="joint_make_damped_spring">
 			<return type="void" />
 			<param index="0" name="joint" type="RID" />

+ 15 - 0
doc/classes/PhysicsServer3D.xml

@@ -815,6 +815,14 @@
 			<description>
 			</description>
 		</method>
+		<method name="joint_disable_collisions_between_bodies">
+			<return type="void" />
+			<param index="0" name="joint" type="RID" />
+			<param index="1" name="disable" type="bool" />
+			<description>
+				Sets whether the bodies attached to the [Joint3D] will collide with each other.
+			</description>
+		</method>
 		<method name="joint_get_solver_priority" qualifiers="const">
 			<return type="int" />
 			<param index="0" name="joint" type="RID" />
@@ -829,6 +837,13 @@
 				Returns the type of the Joint3D.
 			</description>
 		</method>
+		<method name="joint_is_disabled_collisions_between_bodies" qualifiers="const">
+			<return type="bool" />
+			<param index="0" name="joint" type="RID" />
+			<description>
+				Returns whether the bodies attached to the [Joint3D] will collide with each other.
+			</description>
+		</method>
 		<method name="joint_make_cone_twist">
 			<return type="void" />
 			<param index="0" name="joint" type="RID" />

+ 13 - 0
doc/classes/PhysicsServer3DExtension.xml

@@ -772,6 +772,13 @@
 			<description>
 			</description>
 		</method>
+		<method name="_joint_disable_collisions_between_bodies" qualifiers="virtual">
+			<return type="void" />
+			<param index="0" name="joint" type="RID" />
+			<param index="1" name="disable" type="bool" />
+			<description>
+			</description>
+		</method>
 		<method name="_joint_get_solver_priority" qualifiers="virtual const">
 			<return type="int" />
 			<param index="0" name="joint" type="RID" />
@@ -784,6 +791,12 @@
 			<description>
 			</description>
 		</method>
+		<method name="_joint_is_disabled_collisions_between_bodies" qualifiers="virtual const">
+			<return type="bool" />
+			<param index="0" name="joint" type="RID" />
+			<description>
+			</description>
+		</method>
 		<method name="_joint_make_cone_twist" qualifiers="virtual">
 			<return type="void" />
 			<param index="0" name="joint" type="RID" />

+ 3 - 0
servers/extensions/physics_server_3d_extension.cpp

@@ -400,6 +400,9 @@ void PhysicsServer3DExtension::_bind_methods() {
 	GDVIRTUAL_BIND(_joint_set_solver_priority, "joint", "priority");
 	GDVIRTUAL_BIND(_joint_get_solver_priority, "joint");
 
+	GDVIRTUAL_BIND(_joint_disable_collisions_between_bodies, "joint", "disable");
+	GDVIRTUAL_BIND(_joint_is_disabled_collisions_between_bodies, "joint");
+
 	GDVIRTUAL_BIND(_free_rid, "rid");
 
 	GDVIRTUAL_BIND(_set_active, "active");

+ 3 - 0
servers/physics_server_2d.cpp

@@ -765,6 +765,9 @@ void PhysicsServer2D::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("joint_set_param", "joint", "param", "value"), &PhysicsServer2D::joint_set_param);
 	ClassDB::bind_method(D_METHOD("joint_get_param", "joint", "param"), &PhysicsServer2D::joint_get_param);
 
+	ClassDB::bind_method(D_METHOD("joint_disable_collisions_between_bodies", "joint", "disable"), &PhysicsServer2D::joint_disable_collisions_between_bodies);
+	ClassDB::bind_method(D_METHOD("joint_is_disabled_collisions_between_bodies", "joint"), &PhysicsServer2D::joint_is_disabled_collisions_between_bodies);
+
 	ClassDB::bind_method(D_METHOD("joint_make_pin", "joint", "anchor", "body_a", "body_b"), &PhysicsServer2D::joint_make_pin, DEFVAL(RID()));
 	ClassDB::bind_method(D_METHOD("joint_make_groove", "joint", "groove1_a", "groove2_a", "anchor_b", "body_a", "body_b"), &PhysicsServer2D::joint_make_groove, DEFVAL(RID()), DEFVAL(RID()));
 	ClassDB::bind_method(D_METHOD("joint_make_damped_spring", "joint", "anchor_a", "anchor_b", "body_a", "body_b"), &PhysicsServer2D::joint_make_damped_spring, DEFVAL(RID()));

+ 3 - 0
servers/physics_server_3d.cpp

@@ -943,6 +943,9 @@ void PhysicsServer3D::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("joint_set_solver_priority", "joint", "priority"), &PhysicsServer3D::joint_set_solver_priority);
 	ClassDB::bind_method(D_METHOD("joint_get_solver_priority", "joint"), &PhysicsServer3D::joint_get_solver_priority);
 
+	ClassDB::bind_method(D_METHOD("joint_disable_collisions_between_bodies", "joint", "disable"), &PhysicsServer3D::joint_disable_collisions_between_bodies);
+	ClassDB::bind_method(D_METHOD("joint_is_disabled_collisions_between_bodies", "joint"), &PhysicsServer3D::joint_is_disabled_collisions_between_bodies);
+
 	ClassDB::bind_method(D_METHOD("joint_make_generic_6dof", "joint", "body_A", "local_ref_A", "body_B", "local_ref_B"), &PhysicsServer3D::joint_make_generic_6dof);
 
 	ClassDB::bind_method(D_METHOD("generic_6dof_joint_set_param", "joint", "axis", "param", "value"), &PhysicsServer3D::generic_6dof_joint_set_param);