@@ -351,7 +351,7 @@ static String _fixstr(const String &p_what, const String &p_str) {
351351 return what;
352352}
353353
354- static void _pre_gen_shape_list (Ref<ImporterMesh> &mesh, Vector <Ref<Shape3D>> &r_shape_list, bool p_convex) {
354+ static void _pre_gen_shape_list (Ref<ImporterMesh> &mesh, TypedArray <Ref<Shape3D>> &r_shape_list, bool p_convex) {
355355 ERR_FAIL_NULL_MSG (mesh, " Cannot generate shape list with null mesh value" );
356356 ERR_FAIL_NULL_MSG (mesh->get_mesh (), " Cannot generate shape list with null mesh value" );
357357 if (!p_convex) {
@@ -368,7 +368,7 @@ static void _pre_gen_shape_list(Ref<ImporterMesh> &mesh, Vector<Ref<Shape3D>> &r
368368 }
369369}
370370
371- Node *ResourceImporterScene::_pre_fix_node (Node *p_node, Node *p_root, HashMap<Ref<ImporterMesh>, Vector <Ref<Shape3D>>> &r_collision_map, Pair<PackedVector3Array, PackedInt32Array> *r_occluder_arrays, List<Pair<NodePath, Node *>> &r_node_renames) {
371+ Node *ResourceImporterScene::_pre_fix_node (Node *p_node, Node *p_root, HashMap<Ref<ImporterMesh>, TypedArray <Ref<Shape3D>>> &r_collision_map, Pair<PackedVector3Array, PackedInt32Array> *r_occluder_arrays, List<Pair<NodePath, Node *>> &r_node_renames) {
372372 // Children first.
373373 for (int i = 0 ; i < p_node->get_child_count (); i++) {
374374 Node *r = _pre_fix_node (p_node->get_child (i), p_root, r_collision_map, r_occluder_arrays, r_node_renames);
@@ -496,7 +496,7 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, HashMap<R
496496 Ref<ImporterMesh> mesh = mi->get_mesh ();
497497
498498 if (mesh.is_valid ()) {
499- Vector <Ref<Shape3D>> shapes;
499+ TypedArray <Ref<Shape3D>> shapes;
500500 if (r_collision_map.has (mesh)) {
501501 shapes = r_collision_map[mesh];
502502 } else if (_teststr (name, " colonly" )) {
@@ -558,7 +558,7 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, HashMap<R
558558 Ref<ImporterMesh> mesh = mi->get_mesh ();
559559
560560 if (mesh.is_valid ()) {
561- Vector <Ref<Shape3D>> shapes;
561+ TypedArray <Ref<Shape3D>> shapes;
562562 if (r_collision_map.has (mesh)) {
563563 shapes = r_collision_map[mesh];
564564 } else {
@@ -583,7 +583,7 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, HashMap<R
583583 Ref<ImporterMesh> mesh = mi->get_mesh ();
584584
585585 if (mesh.is_valid ()) {
586- Vector <Ref<Shape3D>> shapes;
586+ TypedArray <Ref<Shape3D>> shapes;
587587 String fixed_name;
588588 if (r_collision_map.has (mesh)) {
589589 shapes = r_collision_map[mesh];
@@ -704,7 +704,7 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, HashMap<R
704704
705705 Ref<ImporterMesh> mesh = mi->get_mesh ();
706706 if (!mesh.is_null ()) {
707- Vector <Ref<Shape3D>> shapes;
707+ TypedArray <Ref<Shape3D>> shapes;
708708 if (r_collision_map.has (mesh)) {
709709 shapes = r_collision_map[mesh];
710710 } else if (_teststr (mesh->get_name (), " col" )) {
@@ -900,7 +900,7 @@ Node *ResourceImporterScene::_post_fix_animations(Node *p_node, Node *p_root, co
900900 return p_node;
901901}
902902
903- Node *ResourceImporterScene::_post_fix_node (Node *p_node, Node *p_root, HashMap<Ref<ImporterMesh>, Vector <Ref<Shape3D>>> &collision_map, Pair<PackedVector3Array, PackedInt32Array> &r_occluder_arrays, HashSet<Ref<ImporterMesh>> &r_scanned_meshes, const Dictionary &p_node_data, const Dictionary &p_material_data, const Dictionary &p_animation_data, float p_animation_fps) {
903+ Node *ResourceImporterScene::_post_fix_node (Node *p_node, Node *p_root, HashMap<Ref<ImporterMesh>, TypedArray <Ref<Shape3D>>> &collision_map, Pair<PackedVector3Array, PackedInt32Array> &r_occluder_arrays, HashSet<Ref<ImporterMesh>> &r_scanned_meshes, const Dictionary &p_node_data, const Dictionary &p_material_data, const Dictionary &p_animation_data, float p_animation_fps) {
904904 // children first
905905 for (int i = 0 ; i < p_node->get_child_count (); i++) {
906906 Node *r = _post_fix_node (p_node->get_child (i), p_root, collision_map, r_occluder_arrays, r_scanned_meshes, p_node_data, p_material_data, p_animation_data, p_animation_fps);
@@ -1040,7 +1040,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
10401040 }
10411041
10421042 if (mesh_physics_mode != MeshPhysicsMode::MESH_PHYSICS_DISABLED) {
1043- Vector <Ref<Shape3D>> shapes;
1043+ TypedArray <Ref<Shape3D>> shapes;
10441044 if (collision_map.has (m)) {
10451045 shapes = collision_map[m];
10461046 } else {
@@ -1092,7 +1092,8 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
10921092 }
10931093
10941094 int idx = 0 ;
1095- for (const Ref<Shape3D> &E : shapes) {
1095+ for (int i = 0 ; i < shapes.size (); i++) {
1096+ const Ref<Shape3D> &E = shapes[i];
10961097 CollisionShape3D *cshape = memnew (CollisionShape3D);
10971098 cshape->set_shape (E);
10981099 base->add_child (cshape, true );
@@ -1884,8 +1885,9 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_m
18841885 }
18851886}
18861887
1887- void ResourceImporterScene::_add_shapes (Node *p_node, const Vector<Ref<Shape3D>> &p_shapes) {
1888- for (const Ref<Shape3D> &E : p_shapes) {
1888+ void ResourceImporterScene::_add_shapes (Node *p_node, const TypedArray<Ref<Shape3D>> &p_shapes) {
1889+ for (int i = 0 ; i < p_shapes.size (); i++) {
1890+ const Ref<Shape3D> &E = p_shapes[i];
18891891 CollisionShape3D *cshape = memnew (CollisionShape3D);
18901892 cshape->set_shape (E);
18911893 p_node->add_child (cshape, true );
@@ -2081,7 +2083,7 @@ Node *ResourceImporterScene::pre_import(const String &p_source_file, const HashM
20812083 return nullptr ;
20822084 }
20832085
2084- HashMap<Ref<ImporterMesh>, Vector <Ref<Shape3D>>> collision_map;
2086+ HashMap<Ref<ImporterMesh>, TypedArray <Ref<Shape3D>>> collision_map;
20852087 List<Pair<NodePath, Node *>> node_renames;
20862088 _pre_fix_node (scene, scene, collision_map, nullptr , node_renames);
20872089
@@ -2162,7 +2164,7 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
21622164 }
21632165
21642166 HashSet<Ref<ImporterMesh>> scanned_meshes;
2165- HashMap<Ref<ImporterMesh>, Vector <Ref<Shape3D>>> collision_map;
2167+ HashMap<Ref<ImporterMesh>, TypedArray <Ref<Shape3D>>> collision_map;
21662168 Pair<PackedVector3Array, PackedInt32Array> occluder_arrays;
21672169 List<Pair<NodePath, Node *>> node_renames;
21682170
0 commit comments