diff --git a/.vscode/launch.json b/.vscode/launch.json index ff9ffac..d08cb7b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -55,6 +55,18 @@ "cwd": "${workspaceFolder}", "program": "${workspaceFolder}/bin/hotreload/game.bin", }, + { + "type": "lldb", + "request": "launch", + "name": "Run Test (Linux / Mac)", + "cwd": "${workspaceFolder}", + "program": "odin", + "args": [ + "test", + "common/container/xarr", + "-debug" + ], + }, { "type": "lldb", "request": "launch", diff --git a/assets/blender/test_level_blend/NurbsPath.glb b/assets/blender/test_level_blend/NurbsPath.glb index 1631303..4a23dfc 100644 --- a/assets/blender/test_level_blend/NurbsPath.glb +++ b/assets/blender/test_level_blend/NurbsPath.glb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab26b305c40a89cc920b36a8498b42307117754c6b2377b93008dbec3bad9272 -size 21500 +oid sha256:4b117e05fc5891a8540b703a5a7d2fdf8ec86caccd87c477d7922e39e21e0941 +size 233348 diff --git a/assets/blender/test_level_blend/Scene.scn b/assets/blender/test_level_blend/Scene.scn index 5a1a81e..a6b2cc6 100644 --- a/assets/blender/test_level_blend/Scene.scn +++ b/assets/blender/test_level_blend/Scene.scn @@ -3,11 +3,6 @@ :pos (0.000000 0.000000 -20.000000) :rot (0.000000 0.000000 0.000000 1.000000) :scale (1.000000 1.000000 1.000000)) -(inst - :model "assets/blender/test_level_blend/Plane.glb" - :pos (0.000000 -1.000000 -0.000000) - :rot (0.000000 0.000000 0.000000 1.000000) - :scale (22.469545 22.469545 22.469545)) (inst :model "assets/blender/testblend_blend/Fire_Station.glb" :pos (10.500000 0.000000 -22.500000) @@ -25,7 +20,7 @@ :scale (1.000000 1.000000 1.000000)) (inst :model "assets/blender/testblend_blend/Gas_Station_Shop.glb" - :pos (-20.000000 -1.000000 -1.000000) + :pos (-17.000000 -1.000000 19.000000) :rot (0.000000 0.000000 0.000000 1.000000) :scale (1.000000 1.000000 1.000000)) (inst @@ -35,7 +30,7 @@ :scale (1.000000 1.000000 1.000000)) (inst :model "assets/blender/testblend_blend/Hotel.glb" - :pos (8.000000 0.000000 18.000000) + :pos (10.000000 0.000000 17.000000) :rot (0.000000 0.000000 0.000000 1.000000) :scale (1.000000 1.000000 1.000000)) (inst @@ -43,3 +38,8 @@ :pos (-4.000000 0.000000 12.000000) :rot (0.000000 0.000000 0.000000 1.000000) :scale (1.000000 1.000000 1.000000)) +(inst + :model "assets/blender/testblend_blend/Hotel.glb" + :pos (9.000000 0.000000 46.000000) + :rot (0.000000 0.000000 0.000000 1.000000) + :scale (1.000000 1.000000 1.000000)) diff --git a/assets/blender/testblend_blend/Bakery.glb b/assets/blender/testblend_blend/Bakery.glb index e484471..6d77f92 100644 --- a/assets/blender/testblend_blend/Bakery.glb +++ b/assets/blender/testblend_blend/Bakery.glb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54e960c987cda541616acb0ada9087be54bd8806b35c7442b46d827c9644c7e7 -size 188860 +oid sha256:f6c494605b705a34d037d885aa0fe26d3704050d704e356f8ab6ad4187f806e1 +size 188856 diff --git a/assets/blender/testblend_blend/Fire_Station.glb b/assets/blender/testblend_blend/Fire_Station.glb index 52fedff..0468c14 100644 --- a/assets/blender/testblend_blend/Fire_Station.glb +++ b/assets/blender/testblend_blend/Fire_Station.glb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:121cf4b9ee8d776cbae862272ae5e836b501f144202939ffee0bde6761537968 -size 381492 +oid sha256:971eabf9f40340f6b3d81583a73a479cdda7bce4cffd4f6629bf046586cd7b5d +size 381488 diff --git a/assets/blender/testblend_blend/Gas_Station_Shop.glb b/assets/blender/testblend_blend/Gas_Station_Shop.glb index 59d1c98..f15cf69 100644 --- a/assets/blender/testblend_blend/Gas_Station_Shop.glb +++ b/assets/blender/testblend_blend/Gas_Station_Shop.glb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6181d7367dea72bc2d1d255e56db203755dd0d684c6a328afb028ddfeafaa03 -size 157344 +oid sha256:5ff2380b28fe97d5f9d71d7f2f93231108ed4c338fb725ce95320265296818b6 +size 157340 diff --git a/assets/blender/testblend_blend/Green_House.glb b/assets/blender/testblend_blend/Green_House.glb index 85116fe..c9c8203 100644 --- a/assets/blender/testblend_blend/Green_House.glb +++ b/assets/blender/testblend_blend/Green_House.glb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2332776ba064f85da62a6d9b2ea112c3b575d06fe3f25cdf3a98e97e96c81aa -size 82976 +oid sha256:012a90f6eaf75f9ad93796d63313fff0379f0c9a0489a714c5fe1e243c008c37 +size 82972 diff --git a/assets/blender/testblend_blend/Hotel.glb b/assets/blender/testblend_blend/Hotel.glb index 8018976..341bf37 100644 --- a/assets/blender/testblend_blend/Hotel.glb +++ b/assets/blender/testblend_blend/Hotel.glb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f34b1e17489006554c23870084370bbe064dfe5b6a99dd812835bddb70e58bf2 -size 4459304 +oid sha256:a2cd2e9da14c97861fca0752d8a052e03bffeaa8efe16f7404e9882f15cb5f6f +size 4459300 diff --git a/blender/batch_export.py b/blender/batch_export.py index 82dda15..1c3ff12 100644 --- a/blender/batch_export.py +++ b/blender/batch_export.py @@ -23,13 +23,10 @@ def temp_scene(name: str): finally: assert bpy.context.window is not None bpy.context.window.scene = original_scene - print(f'removing scene {temp_scene}') bpy.data.scenes.remove(temp_scene) scene = bpy.context.scene -export_scene = bpy.data.scenes.new('__export') - def clean_blend_path(blend_path: str) -> str: return os.path.join(os.path.dirname(blend_path), bpy.path.clean_name(os.path.basename(blend_path))) @@ -60,21 +57,18 @@ def export_object_as_glb(obj: bpy.types.Object, export_path: str): full_export_path = os.path.join(assets_path, export_path) pathlib.Path(os.path.dirname(full_export_path)).mkdir(parents=True, exist_ok=True) - if obj.instance_type == 'COLLECTION' and obj.instance_collection: - with temp_scene('__export') as scn: + with temp_scene('__export') as scn: + if obj.instance_type == 'COLLECTION' and obj.instance_collection: scn.collection.children.link(obj.instance_collection) - bpy.ops.export_scene.gltf(filepath=full_export_path, use_active_scene=True, export_apply=True) - else: - bpy.ops.object.select_all(action='DESELECT') - obj.select_set(True) - assert bpy.context.view_layer is not None - bpy.context.view_layer.objects.active = obj + else: + scn.collection.objects.link(obj) - if obj.type == 'CURVE': - bpy.ops.object.convert(target='MESH', keep_original=True) + obj.select_set(True) - bpy.ops.export_scene.gltf(filepath=full_export_path, use_selection=True, export_apply=True) - bpy.ops.object.delete() + if obj.type == 'CURVE': + bpy.ops.object.convert(target='MESH', keep_original=False) + + bpy.ops.export_scene.gltf(filepath=full_export_path, use_active_scene=True, export_apply=True) print(f"Exported {obj.name} -> {export_path}") diff --git a/src_assets/test_level.blend b/src_assets/test_level.blend index ea507b6..bc56899 100644 --- a/src_assets/test_level.blend +++ b/src_assets/test_level.blend @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af5efde3988903b939acadd7b37f06e35ed0e984596a0b365862da62e71478a4 -size 1198634 +oid sha256:c848778e3cfe2bf51645e0922d58c27ebbdaccfdafa29b0c7428d4e967f79dbd +size 538817 diff --git a/src_assets/test_level.blend1 b/src_assets/test_level.blend1 index fed4d05..426b462 100644 --- a/src_assets/test_level.blend1 +++ b/src_assets/test_level.blend1 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e19936699b158f6e274859e98aa5a33c263ad6d61a9e83379ef7c4c1bde74358 -size 1197392 +oid sha256:fa254b990e7c62b5fed32a59f8651ec1cab8956aed7abc6a1ecd863d0aa217c7 +size 538817 diff --git a/test.sh b/test.sh index 0060a22..8de8fbd 100755 --- a/test.sh +++ b/test.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -odin test common/encoding/sexp -collection:common=./common -collection:game=./game -collection:libs=./libs -strict-style -vet -sanitize:memory +odin test common/container/xarr -collection:common=./common -collection:game=./game -collection:libs=./libs -strict-style -vet -sanitize:memory