@@ -378,6 +378,8 @@ void SoftBody3D::_bind_methods() {
378378 ClassDB::bind_method (D_METHOD (" set_point_pinned" , " point_index" , " pinned" , " attachment_path" , " insert_at" ), &SoftBody3D::pin_point, DEFVAL (NodePath ()), DEFVAL (-1 ));
379379 ClassDB::bind_method (D_METHOD (" is_point_pinned" , " point_index" ), &SoftBody3D::is_point_pinned);
380380
381+ ClassDB::bind_method (D_METHOD (" get_point_count" ), &SoftBody3D::get_point_count);
382+
381383 ClassDB::bind_method (D_METHOD (" set_ray_pickable" , " ray_pickable" ), &SoftBody3D::set_ray_pickable);
382384 ClassDB::bind_method (D_METHOD (" is_ray_pickable" ), &SoftBody3D::is_ray_pickable);
383385
@@ -396,6 +398,8 @@ void SoftBody3D::_bind_methods() {
396398
397399 ADD_PROPERTY (PropertyInfo (Variant::BOOL , " ray_pickable" ), " set_ray_pickable" , " is_ray_pickable" );
398400
401+ ADD_PROPERTY (PropertyInfo (Variant::INT , " point_count" ), " " , " get_point_count" );
402+
399403 ADD_PROPERTY (PropertyInfo (Variant::INT , " disable_mode" , PROPERTY_HINT_ENUM , " Remove,KeepActive" ), " set_disable_mode" , " get_disable_mode" );
400404
401405 BIND_ENUM_CONSTANT (DISABLE_MODE_REMOVE );
@@ -692,6 +696,14 @@ Vector3 SoftBody3D::get_point_transform(int p_point_index) {
692696 return PhysicsServer3D::get_singleton ()->soft_body_get_point_global_position (physics_rid, p_point_index);
693697}
694698
699+ uint32_t SoftBody3D::get_point_count () const {
700+ if (mesh.is_null ()) {
701+ return 0 ;
702+ }
703+
704+ return mesh->surface_get_array_len (0 );
705+ }
706+
695707void SoftBody3D::apply_impulse (int p_point_index, const Vector3 &p_impulse) {
696708 PhysicsServer3D::get_singleton ()->soft_body_apply_point_impulse (physics_rid, p_point_index, p_impulse);
697709}
0 commit comments