Browse Source

Merge pull request #51364 from bengtsts/master

Expose soft body pin methods to GDScript
Camille Mohr-Daurat 4 years ago
parent
commit
a9fcbb1001
2 changed files with 28 additions and 0 deletions
  1. 23 0
      doc/classes/SoftBody3D.xml
  2. 5 0
      scene/3d/soft_body_3d.cpp

+ 23 - 0
doc/classes/SoftBody3D.xml

@@ -42,6 +42,20 @@
 			<description>
 			</description>
 		</method>
+		<method name="get_point_transform">
+			<return type="Vector3" />
+			<argument index="0" name="point_index" type="int" />
+			<description>
+				Returns local translation of a vertex in the surface array.
+			</description>
+		</method>
+		<method name="is_point_pinned" qualifiers="const">
+			<return type="bool" />
+			<argument index="0" name="point_index" type="int" />
+			<description>
+				Returns [code]true[/code] if vertex is set to pinned.
+			</description>
+		</method>
 		<method name="remove_collision_exception_with">
 			<return type="void" />
 			<argument index="0" name="body" type="Node" />
@@ -65,6 +79,15 @@
 				Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
 			</description>
 		</method>
+		<method name="set_point_pinned">
+			<return type="void" />
+			<argument index="0" name="point_index" type="int" />
+			<argument index="1" name="pinned" type="bool" />
+			<argument index="2" name="attachment_path" type="NodePath" default="NodePath(&quot;&quot;)" />
+			<description>
+				Sets the pinned state of a surface vertex. When set to [code]true[/code], the optional [code]attachment_path[/code] can define a [Node3D] the pinned vertex will be attached to.
+			</description>
+		</method>
 	</methods>
 	<members>
 		<member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer" default="1">

+ 5 - 0
scene/3d/soft_body_3d.cpp

@@ -355,6 +355,11 @@ void SoftBody3D::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("set_drag_coefficient", "drag_coefficient"), &SoftBody3D::set_drag_coefficient);
 	ClassDB::bind_method(D_METHOD("get_drag_coefficient"), &SoftBody3D::get_drag_coefficient);
 
+	ClassDB::bind_method(D_METHOD("get_point_transform", "point_index"), &SoftBody3D::get_point_transform);
+
+	ClassDB::bind_method(D_METHOD("set_point_pinned", "point_index", "pinned", "attachment_path"), &SoftBody3D::pin_point, DEFVAL(NodePath()));
+	ClassDB::bind_method(D_METHOD("is_point_pinned", "point_index"), &SoftBody3D::is_point_pinned);
+
 	ClassDB::bind_method(D_METHOD("set_ray_pickable", "ray_pickable"), &SoftBody3D::set_ray_pickable);
 	ClassDB::bind_method(D_METHOD("is_ray_pickable"), &SoftBody3D::is_ray_pickable);