diff --git a/io_scene_godot/converters/simple_nodes.py b/io_scene_godot/converters/simple_nodes.py index e340748..160b5cb 100644 --- a/io_scene_godot/converters/simple_nodes.py +++ b/io_scene_godot/converters/simple_nodes.py @@ -20,6 +20,10 @@ def export_empty_node(escn_file, export_settings, node, parent_gd_node): return parent_gd_node empty_node = NodeTemplate(node.name, "Spatial", parent_gd_node) empty_node['transform'] = node.matrix_local + if node.name.endswith('-colonly') or node.name.endswith('-convcolonly'): + # For empties marked as collision shapes (name ending in -colonly/-convcolonly) Godot uses the draw/display type to pick a + # collision shape + empty_node['__meta__'] = '{{ "empty_draw_type": "{}" }}'.format(node.empty_display_type) escn_file.add_node(empty_node) return empty_node diff --git a/tests/reference_exports/collision_empties/arrow.escn b/tests/reference_exports/collision_empties/arrow.escn new file mode 100644 index 0000000..0ef5909 --- /dev/null +++ b/tests/reference_exports/collision_empties/arrow.escn @@ -0,0 +1,8 @@ +[gd_scene load_steps=1 format=2] + +[node type="Spatial" name="Scene"] + +[node name="arrow-colonly" type="Spatial" parent="."] + +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) +__meta__ = { "empty_draw_type": "SINGLE_ARROW" } diff --git a/tests/reference_exports/collision_empties/cube.escn b/tests/reference_exports/collision_empties/cube.escn new file mode 100644 index 0000000..d50ed7b --- /dev/null +++ b/tests/reference_exports/collision_empties/cube.escn @@ -0,0 +1,8 @@ +[gd_scene load_steps=1 format=2] + +[node type="Spatial" name="Scene"] + +[node name="cube-colonly" type="Spatial" parent="."] + +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) +__meta__ = { "empty_draw_type": "CUBE" } diff --git a/tests/reference_exports/collision_empties/image.escn b/tests/reference_exports/collision_empties/image.escn new file mode 100644 index 0000000..46352a5 --- /dev/null +++ b/tests/reference_exports/collision_empties/image.escn @@ -0,0 +1,8 @@ +[gd_scene load_steps=1 format=2] + +[node type="Spatial" name="Scene"] + +[node name="image-colonly" type="Spatial" parent="."] + +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) +__meta__ = { "empty_draw_type": "IMAGE" } diff --git a/tests/reference_exports/collision_empties/sphere.escn b/tests/reference_exports/collision_empties/sphere.escn new file mode 100644 index 0000000..0f1fd6b --- /dev/null +++ b/tests/reference_exports/collision_empties/sphere.escn @@ -0,0 +1,8 @@ +[gd_scene load_steps=1 format=2] + +[node type="Spatial" name="Scene"] + +[node name="sphere-colonly" type="Spatial" parent="."] + +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) +__meta__ = { "empty_draw_type": "SPHERE" } diff --git a/tests/test_scenes/collision_empties/arrow.blend b/tests/test_scenes/collision_empties/arrow.blend new file mode 100644 index 0000000..b15a368 Binary files /dev/null and b/tests/test_scenes/collision_empties/arrow.blend differ diff --git a/tests/test_scenes/collision_empties/cube.blend b/tests/test_scenes/collision_empties/cube.blend new file mode 100644 index 0000000..4a94647 Binary files /dev/null and b/tests/test_scenes/collision_empties/cube.blend differ diff --git a/tests/test_scenes/collision_empties/image.blend b/tests/test_scenes/collision_empties/image.blend new file mode 100644 index 0000000..8b1a476 Binary files /dev/null and b/tests/test_scenes/collision_empties/image.blend differ diff --git a/tests/test_scenes/collision_empties/sphere.blend b/tests/test_scenes/collision_empties/sphere.blend new file mode 100644 index 0000000..8494532 Binary files /dev/null and b/tests/test_scenes/collision_empties/sphere.blend differ