Ver código fonte

solve duplicated node name issue

Jason0214 7 anos atrás
pai
commit
89726da555

+ 9 - 0
io_scene_godot/structures.py

@@ -152,9 +152,18 @@ class NodeTemplate(FileEntry):
         self.children = []
         self.children = []
         self.parent = parent_node
         self.parent = parent_node
 
 
+        # filter out special character
         node_name = name.replace('.', '').replace('/', '')
         node_name = name.replace('.', '').replace('/', '')
 
 
         if parent_node is not None:
         if parent_node is not None:
+            # solve duplication
+            counter = 1
+            child_name_set = set([c.get_name() for c in self.parent.children])
+            node_name_base = node_name
+            while node_name in child_name_set:
+                node_name = node_name_base + str(counter).zfill(3)
+                counter += 1
+
             parent_node.children.append(self)
             parent_node.children.append(self)
 
 
             super().__init__(
             super().__init__(

+ 88 - 0
tests/reference-exports/duplicate_name.escn

@@ -0,0 +1,88 @@
+[gd_scene load_steps=1 format=2]
+
+[sub_resource id=1 type="ArrayMesh"]
+
+surfaces/0 = {
+	"primitive":4,
+	"arrays":[
+		Vector3Array(-1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0),
+		Vector3Array(-1.0, 0.0, -0.0, -1.0, 0.0, -0.0, -1.0, 0.0, -0.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 1.0, 0.0, -0.0, 1.0, 0.0, -0.0, 1.0, 0.0, -0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, -0.0, 0.0, -1.0, -0.0, 0.0, -1.0, -0.0, 0.0, 1.0, -0.0, 0.0, 1.0, -0.0, 0.0, 1.0, -0.0, -1.0, 0.0, -0.0, 0.0, 0.0, -1.0, 1.0, 0.0, -0.0, 0.0, 0.0, 1.0, 0.0, -1.0, -0.0, 0.0, 1.0, -0.0),
+		null, ; No Tangents,
+		null, ; no Vertex Colors,
+		null, ; No UV1,
+		null, ; No UV2,
+		null, ; No Bones,
+		null, ; No Weights,
+		IntArray(0, 2, 1, 3, 5, 4, 6, 8, 7, 9, 11, 10, 12, 14, 13, 15, 17, 16, 0, 1, 18, 3, 4, 19, 6, 7, 20, 9, 10, 21, 12, 13, 22, 15, 16, 23)
+	],
+	"morph_arrays":[]
+}
+
+
+[sub_resource id=2 type="ArrayMesh"]
+
+surfaces/0 = {
+	"primitive":4,
+	"arrays":[
+		Vector3Array(-1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0),
+		Vector3Array(-1.0, 0.0, -0.0, -1.0, 0.0, -0.0, -1.0, 0.0, -0.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -1.0, 1.0, 0.0, -0.0, 1.0, 0.0, -0.0, 1.0, 0.0, -0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, -0.0, 0.0, -1.0, -0.0, 0.0, -1.0, -0.0, 0.0, 1.0, -0.0, 0.0, 1.0, -0.0, 0.0, 1.0, -0.0, -1.0, 0.0, -0.0, 0.0, 0.0, -1.0, 1.0, 0.0, -0.0, 0.0, 0.0, 1.0, 0.0, -1.0, -0.0, 0.0, 1.0, -0.0),
+		null, ; No Tangents,
+		null, ; no Vertex Colors,
+		null, ; No UV1,
+		null, ; No UV2,
+		null, ; No Bones,
+		null, ; No Weights,
+		IntArray(0, 2, 1, 3, 5, 4, 6, 8, 7, 9, 11, 10, 12, 14, 13, 15, 17, 16, 0, 1, 18, 3, 4, 19, 6, 7, 20, 9, 10, 21, 12, 13, 22, 15, 16, 23)
+	],
+	"morph_arrays":[]
+}
+
+
+[sub_resource id=3 type="SpatialMaterial"]
+
+flags_unshaded = false
+flags_vertex_lighting = false
+flags_transparent = false
+vertex_color_use_as_albedo = false
+albedo_color = Color( 0.800000011920929, 0.800000011920929, 0.800000011920929, 1.0 )
+subsurf_scatter_enabled = false
+
+[sub_resource id=4 type="ArrayMesh"]
+
+surfaces/0 = {
+	"material":SubResource(3),
+	"primitive":4,
+	"arrays":[
+		Vector3Array(1.0, -1.0, 1.0, -0.9999996423721313, -1.0, -1.0000003576278687, 1.0, -1.0, -0.9999999403953552, -0.9999999403953552, 1.0, -1.0, 0.9999993443489075, 1.0, 1.0000005960464478, 1.0000004768371582, 1.0, -0.999999463558197, 1.0000004768371582, 1.0, -0.999999463558197, 1.0, -1.0, 1.0, 1.0, -1.0, -0.9999999403953552, 0.9999993443489075, 1.0, 1.0000005960464478, -1.0000001192092896, -1.0, 0.9999998211860657, 1.0, -1.0, 1.0, -1.0000001192092896, -1.0, 0.9999998211860657, -0.9999999403953552, 1.0, -1.0, -0.9999996423721313, -1.0, -1.0000003576278687, 1.0, -1.0, -0.9999999403953552, -0.9999999403953552, 1.0, -1.0, 1.0000004768371582, 1.0, -0.999999463558197, 1.0, -1.0, 1.0, -1.0000001192092896, -1.0, 0.9999998211860657, -0.9999996423721313, -1.0, -1.0000003576278687, -0.9999999403953552, 1.0, -1.0, -1.0000003576278687, 1.0, 0.9999996423721313, 0.9999993443489075, 1.0, 1.0000005960464478, 1.0000004768371582, 1.0, -0.999999463558197, 0.9999993443489075, 1.0, 1.0000005960464478, 1.0, -1.0, 1.0, 0.9999993443489075, 1.0, 1.0000005960464478, -1.0000003576278687, 1.0, 0.9999996423721313, -1.0000001192092896, -1.0, 0.9999998211860657, -1.0000001192092896, -1.0, 0.9999998211860657, -1.0000003576278687, 1.0, 0.9999996423721313, -0.9999999403953552, 1.0, -1.0, 1.0, -1.0, -0.9999999403953552, -0.9999996423721313, -1.0, -1.0000003576278687, -0.9999999403953552, 1.0, -1.0),
+		Vector3Array(2.980232949312267e-08, -1.0, -0.0, 2.980232949312267e-08, -1.0, -0.0, 2.980232949312267e-08, -1.0, -0.0, 0.0, 1.0, -0.0, 0.0, 1.0, -0.0, 0.0, 1.0, -0.0, 1.0, -2.384185791015625e-07, -0.0, 1.0, -2.384185791015625e-07, -0.0, 1.0, -2.384185791015625e-07, -0.0, -8.940696716308594e-08, -4.76837158203125e-07, 1.0, -8.940696716308594e-08, -4.76837158203125e-07, 1.0, -8.940696716308594e-08, -4.76837158203125e-07, 1.0, -1.0, -1.4901156930591242e-07, -2.3841855067985307e-07, -1.0, -1.4901156930591242e-07, -2.3841855067985307e-07, -1.0, -1.4901156930591242e-07, -2.3841855067985307e-07, 2.6822084464583895e-07, 2.3841852225814364e-07, -1.0, 2.6822084464583895e-07, 2.3841852225814364e-07, -1.0, 2.6822084464583895e-07, 2.3841852225814364e-07, -1.0, 0.0, -1.0, -0.0, 0.0, -1.0, -0.0, 0.0, -1.0, -0.0, 5.96046660916727e-08, 1.0, -0.0, 5.96046660916727e-08, 1.0, -0.0, 5.96046660916727e-08, 1.0, -0.0, 1.0, 3.2782537573439186e-07, 5.960464477539062e-07, 1.0, 3.2782537573439186e-07, 5.960464477539062e-07, 1.0, 3.2782537573439186e-07, 5.960464477539062e-07, -4.768372150465439e-07, 1.1920927533992653e-07, 1.0, -4.768372150465439e-07, 1.1920927533992653e-07, 1.0, -4.768372150465439e-07, 1.1920927533992653e-07, 1.0, -1.0, -1.1920931797249068e-07, -2.3841863594498136e-07, -1.0, -1.1920931797249068e-07, -2.3841863594498136e-07, -1.0, -1.1920931797249068e-07, -2.3841863594498136e-07, 2.0861631355728605e-07, 8.940701690107744e-08, -1.0, 2.0861631355728605e-07, 8.940701690107744e-08, -1.0, 2.0861631355728605e-07, 8.940701690107744e-08, -1.0),
+		null, ; No Tangents,
+		null, ; no Vertex Colors,
+		null, ; No UV1,
+		null, ; No UV2,
+		null, ; No Bones,
+		null, ; No Weights,
+		IntArray(0, 2, 1, 3, 5, 4, 6, 8, 7, 9, 11, 10, 12, 14, 13, 15, 17, 16, 18, 20, 19, 21, 23, 22, 24, 26, 25, 27, 29, 28, 30, 32, 31, 33, 35, 34)
+	],
+	"morph_arrays":[]
+}
+
+[node type="Spatial" name="Scene"]
+
+
+[node name="Cube" type="MeshInstance" parent="."]
+
+mesh = SubResource(1)
+visible = true
+transform = Transform(  1.0, 0.0, -0.0, 0.0, 1.0, -0.0, -0.0, -0.0, 1.0, 1.5957765579223633, 2.8124284744262695, -6.1164021492004395 )
+
+[node name="Cube001" type="MeshInstance" parent="."]
+
+mesh = SubResource(2)
+visible = true
+transform = Transform(  1.0, 0.0, -0.0, 0.0, 1.0, -0.0, -0.0, -0.0, 1.0, 1.1332447528839111, 0.30739641189575195, -2.944631576538086 )
+
+[node name="Cube002" type="MeshInstance" parent="."]
+
+mesh = SubResource(4)
+visible = true
+transform = Transform(  1.0, 0.0, -0.0, 0.0, 1.0, -0.0, -0.0, -0.0, 1.0, 0.0, 0.0, -0.0 )

BIN
tests/scenes/duplicate_name.blend