From 528e13a250f38f786b18771b7b9a9638d1909d94 Mon Sep 17 00:00:00 2001 From: Mark Moissette Date: Thu, 28 Sep 2023 14:10:45 +0200 Subject: [PATCH] feat(): Blueprints, crates, enhanced Blender tooling & more (#5) * feat(bevy_gltf_components): * create crate * added SystemSet (GltfComponentsSet) to run process_loaded_scenes (where components are injected) in a specific systemset & allow ordering other systems relative to it * feat(bevy_gltf_blueprints): * created crate * made the blueprint library path configurable * added BluePrintBundle helper * added SystemSet (GltfBlueprintsSet) for better system ordering * integrated into advanced demo * feat(tools-blender-auto-export): * renamed blender tool to gltf_auto_export * rewritten auto_export * added blueprint / prefab support * creates scene with empties with BlueprintName components in the scene * export of the main scene now exports this scene instead of real main scene * changes collection stand in names in original scene & sets them back after export to have correctly named collection instance exports * also added an additional 'SpawnHere' component to not conflate BlueprintNames & spawning requests * toggling & blueprint library output parameters added * added correct handling/ restoring of saved selection when using blueprints * feat(examples): * added advanced example * general example renamed to "basic", and cleaned up * feat(various): a lot of experiments with saving & loading etc * chore(assets): updated blend & generated assets * fix(examples-advanced): disabling hot reloading as it messes up scenes in experiments with save & loading * docs(): * added & fleshing out docs for the various crates & main README * added process doc image & tweaks to README * added missing licence info where relevant * fixed broken links * clarified some aspects * added updated screenshots where relevant * added tweaks & improvements etc --- Cargo.lock | 350 ++++--- Cargo.toml | 28 +- LICENCE.md | 4 + README.md | 289 +----- assets/advanced/advanced.blend | Bin 0 -> 1298120 bytes assets/advanced/assets_core.assets.ron | 1 + assets/advanced/assets_game.assets.ron | 6 + assets/advanced/models/library/Container.glb | Bin 0 -> 5576 bytes .../advanced/models/library/Health_Pickup.glb | Bin 0 -> 5084 bytes .../advanced/models/library/MagicTeapot.glb | Bin 0 -> 23608 bytes assets/advanced/models/library/Pillar.glb | Bin 0 -> 3620 bytes assets/advanced/models/library/Player.glb | Bin 0 -> 28348 bytes assets/advanced/models/world.glb | Bin 0 -> 5164 bytes assets/advanced/scenes/save.scn.ron | 485 ++++++++++ .../test.blend => basic/models/basic.blend} | Bin assets/{ => basic}/models/level1.glb | Bin 78932 -> 66996 bytes assets/test.ron | 3 - crates/bevy_gltf_blueprints/Cargo.toml | 18 + crates/bevy_gltf_blueprints/LICENCE.md | 4 + crates/bevy_gltf_blueprints/LICENSE_APACHE.md | 201 ++++ crates/bevy_gltf_blueprints/LICENSE_MIT.md | 21 + crates/bevy_gltf_blueprints/README.md | 146 +++ .../bevy_gltf_blueprints/src/clone_entity.rs | 66 ++ crates/bevy_gltf_blueprints/src/lib.rs | 90 ++ .../src/spawn_from_blueprints.rs | 81 ++ .../src/spawn_post_process.rs | 136 +++ crates/bevy_gltf_components/Cargo.toml | 19 + crates/bevy_gltf_components/LICENCE.md | 4 + crates/bevy_gltf_components/LICENSE_APACHE.md | 201 ++++ crates/bevy_gltf_components/LICENSE_MIT.md | 21 + crates/bevy_gltf_components/README.md | 83 ++ .../src}/gltf_to_components.rs | 15 +- crates/bevy_gltf_components/src/lib.rs | 74 ++ .../src}/process_gltfs.rs | 3 +- .../bevy_gltf_components/src}/utils.rs | 0 docs/blender_addon_install2.png | Bin 73385 -> 65661 bytes docs/blender_addon_use2.png | Bin 78912 -> 67802 bytes docs/blender_addon_use3.png | Bin 0 -> 41879 bytes docs/exported_library_files.png | Bin 0 -> 15627 bytes docs/process.svg | 881 +++++++++++++++++ docs/workflow_empties.jpg | Bin 0 -> 80600 bytes docs/workflow_original.jpg | Bin 0 -> 88302 bytes examples/advanced/README.md | 20 + examples/advanced/TODO.md | 53 + examples/advanced/assets/assets_core.rs | 7 + examples/advanced/assets/assets_game.rs | 13 + examples/advanced/assets/mod.rs | 34 + .../core/camera/camera_replace_proxies.rs | 0 .../core/camera/camera_tracking.rs | 0 examples/advanced/core/camera/mod.rs | 26 + .../core/lighting/lighting_replace_proxies.rs | 0 .../core/lighting/mod.rs | 0 examples/advanced/core/mod.rs | 94 ++ examples/advanced/core/physics/controls.rs | 12 + examples/advanced/core/physics/mod.rs | 39 + .../core/physics/physics_replace_proxies.rs | 121 +++ .../core/physics/utils.rs | 0 .../core/physics/utils_old.rs | 0 .../core/relationships/mod.rs | 0 ...lationships_insert_dependant_components.rs | 0 examples/advanced/core/save_load/loading.rs | 243 +++++ examples/advanced/core/save_load/mod.rs | 73 ++ examples/advanced/core/save_load/old.rs | 137 +++ examples/advanced/core/save_load/saveable.rs | 17 + examples/advanced/core/save_load/saving.rs | 95 ++ examples/advanced/game/in_game.rs | 30 + examples/advanced/game/in_main_menu.rs | 116 +++ examples/advanced/game/mod.rs | 136 +++ examples/advanced/game/picking.rs | 40 + examples/advanced/main.rs | 51 + examples/advanced/state.rs | 58 ++ .../{general => advanced}/test_components.rs | 0 examples/{general => basic}/README.md | 0 .../core/camera/camera_replace_proxies.rs | 34 + examples/basic/core/camera/camera_tracking.rs | 57 ++ .../{general => basic}/core/camera/mod.rs | 0 .../core/lighting/lighting_replace_proxies.rs | 29 + examples/basic/core/lighting/mod.rs | 18 + examples/{general => basic}/core/mod.rs | 0 .../core/physics/controls.rs | 0 .../{general => basic}/core/physics/mod.rs | 0 .../core/physics/physics_replace_proxies.rs | 0 examples/basic/core/physics/utils.rs | 175 ++++ examples/basic/core/physics/utils_old.rs | 75 ++ examples/basic/core/relationships/mod.rs | 11 + ...lationships_insert_dependant_components.rs | 16 + examples/{general => basic}/game.rs | 0 examples/{general => basic}/main.rs | 2 +- examples/basic/test_components.rs | 86 ++ src/lib.rs | 57 -- tools/blender_auto_export/README.md | 29 - tools/gltf_auto_export/README.md | 85 ++ .../__init__.py | 12 +- tools/gltf_auto_export/gltf_auto_export.py | 911 ++++++++++++++++++ .../old.py} | 427 +++++++- 95 files changed, 6178 insertions(+), 491 deletions(-) create mode 100644 LICENCE.md create mode 100644 assets/advanced/advanced.blend create mode 100644 assets/advanced/assets_core.assets.ron create mode 100644 assets/advanced/assets_game.assets.ron create mode 100644 assets/advanced/models/library/Container.glb create mode 100644 assets/advanced/models/library/Health_Pickup.glb create mode 100644 assets/advanced/models/library/MagicTeapot.glb create mode 100644 assets/advanced/models/library/Pillar.glb create mode 100644 assets/advanced/models/library/Player.glb create mode 100644 assets/advanced/models/world.glb create mode 100644 assets/advanced/scenes/save.scn.ron rename assets/{models/test.blend => basic/models/basic.blend} (100%) rename assets/{ => basic}/models/level1.glb (67%) delete mode 100644 assets/test.ron create mode 100644 crates/bevy_gltf_blueprints/Cargo.toml create mode 100644 crates/bevy_gltf_blueprints/LICENCE.md create mode 100644 crates/bevy_gltf_blueprints/LICENSE_APACHE.md create mode 100644 crates/bevy_gltf_blueprints/LICENSE_MIT.md create mode 100644 crates/bevy_gltf_blueprints/README.md create mode 100644 crates/bevy_gltf_blueprints/src/clone_entity.rs create mode 100644 crates/bevy_gltf_blueprints/src/lib.rs create mode 100644 crates/bevy_gltf_blueprints/src/spawn_from_blueprints.rs create mode 100644 crates/bevy_gltf_blueprints/src/spawn_post_process.rs create mode 100644 crates/bevy_gltf_components/Cargo.toml create mode 100644 crates/bevy_gltf_components/LICENCE.md create mode 100644 crates/bevy_gltf_components/LICENSE_APACHE.md create mode 100644 crates/bevy_gltf_components/LICENSE_MIT.md create mode 100644 crates/bevy_gltf_components/README.md rename {src => crates/bevy_gltf_components/src}/gltf_to_components.rs (95%) create mode 100644 crates/bevy_gltf_components/src/lib.rs rename {src => crates/bevy_gltf_components/src}/process_gltfs.rs (96%) rename {src => crates/bevy_gltf_components/src}/utils.rs (100%) create mode 100644 docs/blender_addon_use3.png create mode 100644 docs/exported_library_files.png create mode 100644 docs/process.svg create mode 100644 docs/workflow_empties.jpg create mode 100644 docs/workflow_original.jpg create mode 100644 examples/advanced/README.md create mode 100644 examples/advanced/TODO.md create mode 100644 examples/advanced/assets/assets_core.rs create mode 100644 examples/advanced/assets/assets_game.rs create mode 100644 examples/advanced/assets/mod.rs rename examples/{general => advanced}/core/camera/camera_replace_proxies.rs (100%) rename examples/{general => advanced}/core/camera/camera_tracking.rs (100%) create mode 100644 examples/advanced/core/camera/mod.rs rename examples/{general => advanced}/core/lighting/lighting_replace_proxies.rs (100%) rename examples/{general => advanced}/core/lighting/mod.rs (100%) create mode 100644 examples/advanced/core/mod.rs create mode 100644 examples/advanced/core/physics/controls.rs create mode 100644 examples/advanced/core/physics/mod.rs create mode 100644 examples/advanced/core/physics/physics_replace_proxies.rs rename examples/{general => advanced}/core/physics/utils.rs (100%) rename examples/{general => advanced}/core/physics/utils_old.rs (100%) rename examples/{general => advanced}/core/relationships/mod.rs (100%) rename examples/{general => advanced}/core/relationships/relationships_insert_dependant_components.rs (100%) create mode 100644 examples/advanced/core/save_load/loading.rs create mode 100644 examples/advanced/core/save_load/mod.rs create mode 100644 examples/advanced/core/save_load/old.rs create mode 100644 examples/advanced/core/save_load/saveable.rs create mode 100644 examples/advanced/core/save_load/saving.rs create mode 100644 examples/advanced/game/in_game.rs create mode 100644 examples/advanced/game/in_main_menu.rs create mode 100644 examples/advanced/game/mod.rs create mode 100644 examples/advanced/game/picking.rs create mode 100644 examples/advanced/main.rs create mode 100644 examples/advanced/state.rs rename examples/{general => advanced}/test_components.rs (100%) rename examples/{general => basic}/README.md (100%) create mode 100644 examples/basic/core/camera/camera_replace_proxies.rs create mode 100644 examples/basic/core/camera/camera_tracking.rs rename examples/{general => basic}/core/camera/mod.rs (100%) create mode 100644 examples/basic/core/lighting/lighting_replace_proxies.rs create mode 100644 examples/basic/core/lighting/mod.rs rename examples/{general => basic}/core/mod.rs (100%) rename examples/{general => basic}/core/physics/controls.rs (100%) rename examples/{general => basic}/core/physics/mod.rs (100%) rename examples/{general => basic}/core/physics/physics_replace_proxies.rs (100%) create mode 100644 examples/basic/core/physics/utils.rs create mode 100644 examples/basic/core/physics/utils_old.rs create mode 100644 examples/basic/core/relationships/mod.rs create mode 100644 examples/basic/core/relationships/relationships_insert_dependant_components.rs rename examples/{general => basic}/game.rs (100%) rename examples/{general => basic}/main.rs (97%) create mode 100644 examples/basic/test_components.rs delete mode 100644 src/lib.rs delete mode 100644 tools/blender_auto_export/README.md create mode 100644 tools/gltf_auto_export/README.md rename tools/{blender_auto_export => gltf_auto_export}/__init__.py (75%) create mode 100644 tools/gltf_auto_export/gltf_auto_export.py rename tools/{blender_auto_export/blender_auto_export_gltf.py => gltf_auto_export/old.py} (59%) diff --git a/Cargo.lock b/Cargo.lock index adc92ca..caeae81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -309,10 +309,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] -name = "bevy" -version = "0.11.0" +name = "base64" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04a90fe8e9c03fa2d30acf39a5178a48526df00c1ccea2fc43fa6d9ca4d8a168" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" + +[[package]] +name = "bevy" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e71a9143ac21bed247c30129399af8be170309e7ff5983a1bd37e87d3da520" dependencies = [ "bevy_internal", ] @@ -353,14 +359,14 @@ checksum = "0edba455601861b8e8b76128ae5d46dd968114edde60f0ac3d2c21535a947548" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] name = "bevy_a11y" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f758f437d9d862bf10a8e3a0f76b426095c19a87d118c945dcb935358d856076" +checksum = "3d87d5753cefaeb5f5c5d5e937844f5386eabaf9ab95f3013e86d8fb438d424e" dependencies = [ "accesskit", "bevy_app", @@ -370,9 +376,9 @@ dependencies = [ [[package]] name = "bevy_animation" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d130cb8b7e2b81304591c5c8e511accd2df58b8d8185ab4836ed2f377e6a61f" +checksum = "cc510d47ec4813359b7e715edc6976380d4244833feae124977468994554a0ab" dependencies = [ "bevy_app", "bevy_asset", @@ -389,9 +395,9 @@ dependencies = [ [[package]] name = "bevy_app" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1817e8d5b1146ea9e7730a7264d3470394840e0754d15abded26473f867967a0" +checksum = "3cb660188d5d4ceaead6d5861ce22ecedc08b68c385cc8edf0a3c0c0285560bf" dependencies = [ "bevy_derive", "bevy_ecs", @@ -405,11 +411,12 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e12f951d4af2ad4ad230cd7bcb05248149c415eec17c34bf26731c4cd8b897f" +checksum = "6733d20a22bb10da928785fdbf6fad6cfb1c7da4a8c170ab3adbba5862c375d5" dependencies = [ "anyhow", + "async-channel", "bevy_app", "bevy_diagnostic", "bevy_ecs", @@ -432,10 +439,35 @@ dependencies = [ ] [[package]] -name = "bevy_audio" -version = "0.11.0" +name = "bevy_asset_loader" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6bade3f5389f9463e150af874aebe672b5101df4268d28b0109a66f9cdce56e" +checksum = "67504fe2bfe56b0c58a2e042a7f5b1dd242a9b9f28e78e3fe63e2c3d62692bea" +dependencies = [ + "anyhow", + "bevy", + "bevy_asset_loader_derive", + "bevy_common_assets", + "path-slash", + "serde", +] + +[[package]] +name = "bevy_asset_loader_derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0d73cdac61fd6f9cb4df9c936ffe6d1343a63470c91c6a6823e1664d298fcb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bevy_audio" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f505704c3a8396c2d9dde898e19aee114143584b11bdb7189fcafc231b6e7a" dependencies = [ "anyhow", "bevy_app", @@ -452,10 +484,22 @@ dependencies = [ ] [[package]] -name = "bevy_core" -version = "0.11.0" +name = "bevy_common_assets" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "263b6a943ecba176c8390a1100615021f61a3b2d7a87e8eecf4009b6ed4457e0" +checksum = "a0e5659f20aeaa1703e76d87c62d66f92aaa56e431fbed71bb38345b576aa6f0" +dependencies = [ + "anyhow", + "bevy", + "ron", + "serde", +] + +[[package]] +name = "bevy_core" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d47b435bdebeefedda95de98a419c4d3b4c160ed8ce3470ea358a16aad6038" dependencies = [ "bevy_app", "bevy_ecs", @@ -469,9 +513,9 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c70113b5c4106855b888f96d8574697eb9082713f976c9b6487c1f5ab28589" +checksum = "a01c2652f5a6d24e0ab465e6feca8a034dfb33dfefbcdc19e436fec879a362a8" dependencies = [ "bevy_app", "bevy_asset", @@ -490,20 +534,20 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1477347b17df781756ba0dfd677e2975e57e930752cd3cd42e6cdd8fdaa3223" +checksum = "c5cc78985f4d0ad1fd7b8ead06dcfaa192685775a7b1be158191c788c7d52298" dependencies = [ "bevy_macro_utils", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] name = "bevy_diagnostic" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a594f970c261007cdd3edeccd61651c2cb4513de3d0b8b35d93f5d9c32c059" +checksum = "ee4e366724d233fdc7e282e1415f4cd570e97fbb8443e5a8ff3f8cc5ae253ffd" dependencies = [ "bevy_app", "bevy_core", @@ -516,9 +560,9 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "032c81ba7d919c1004b0abc33cc6c588c8f896a4d7c55a7c7aa1e46382242f43" +checksum = "fb6fd0ec64cd32b8fcf16157173431ba0e675b29c4643a8d6c9a9eeef6f93c32" dependencies = [ "async-channel", "bevy_ecs_macros", @@ -537,14 +581,14 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15ff7fcafdb8fe464ddd300b4860a76d5c6f9d684472e4bf21852d6f0ff3991" +checksum = "e13b0fd864433db6ff825efd0eb86b2690e208151905b184cc9bfd2c3ac66c3b" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] @@ -600,9 +644,9 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdf808dbdc68a0c519e09026c627bda85250205a40ac02794866bff254d6b56" +checksum = "da8ffb3d214ee4d8b7e851bc8409768a0f18c872c3a25065c248611ff832180e" dependencies = [ "bevy_macro_utils", "encase_derive_impl", @@ -610,9 +654,9 @@ dependencies = [ [[package]] name = "bevy_gilrs" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b877a371caa64edd6ec5d66b47c67b9e9e9acff2f3bcc51e31e175463e89f6ba" +checksum = "b84a2fbca3811261bcf02908132096595b81e5ec033169f922d6077f57baabb7" dependencies = [ "bevy_app", "bevy_ecs", @@ -626,9 +670,9 @@ dependencies = [ [[package]] name = "bevy_gizmos" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7938b43b4bdf9d039b7d3b310f871ed5ffa5a185e861a9c85731c40182019f8d" +checksum = "64c08196fcb36b7175577443cbe2c1193d596a15eb0fa210bae378e6e1478876" dependencies = [ "bevy_app", "bevy_asset", @@ -646,12 +690,12 @@ dependencies = [ [[package]] name = "bevy_gltf" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09b699698a2f5843ef63064010a5e7783403f99a697a04f41a2f8141cb4245d" +checksum = "478c832d8b132198ca9485c636c97eaea7a1fe393dabadbcabc693ef4437e0db" dependencies = [ "anyhow", - "base64", + "base64 0.13.1", "bevy_animation", "bevy_app", "bevy_asset", @@ -676,21 +720,53 @@ dependencies = [ ] [[package]] -name = "bevy_gltf_components" -version = "0.2.0" +name = "bevy_gltf_blueprints" +version = "0.1.0" dependencies = [ "bevy", + "bevy_gltf_components 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bevy_gltf_components" +version = "0.1.0" +dependencies = [ + "bevy", + "ron", + "serde", +] + +[[package]] +name = "bevy_gltf_components" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168c88211436e833f6f5104d2f2db8a9f3d705b6c6ae22b921f1be6b80b7d4cb" +dependencies = [ + "bevy", + "ron", + "serde", +] + +[[package]] +name = "bevy_gltf_flow" +version = "0.3.0" +dependencies = [ + "bevy", + "bevy_asset_loader", "bevy_editor_pls", + "bevy_gltf_blueprints", + "bevy_gltf_components 0.1.0", "bevy_rapier3d", + "rand", "ron", "serde", ] [[package]] name = "bevy_hierarchy" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba41e1bb0c367b31e59b53ab858de56764c78bee87c121843c1ff033efa0086c" +checksum = "402789ee53acf345243cf2c86a895d6cf8631e533780ed261c6ecf891eb050b8" dependencies = [ "bevy_app", "bevy_core", @@ -703,9 +779,9 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7221091c7b219a63a1f3f019512e8b72bed673230b97c3fcbca37ba566b1cffb" +checksum = "b9dfd9c768cf153f3fc807661996b2db44b824299860ba198fb3b92dd731bdd8" dependencies = [ "bevy_app", "bevy_ecs", @@ -718,9 +794,9 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f232e7bd2566abd05656789e3c6278a5ca2a24f1232dff525e5b0233a99a610" +checksum = "1006f2c501bceb1aef5cc18ed07eb822f295763227b83ba6887e6743698af9f8" dependencies = [ "bevy_a11y", "bevy_animation", @@ -757,9 +833,9 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487dfd1fc75fada8f3f2f4773addf3fbba53a2a91cb913616e6dc6c26dd62995" +checksum = "f0b1e5ca5b217dd384a3bf9186df0d0da757035f9f06d8eec0ebe62cffc05c34" dependencies = [ "android_log-sys", "bevy_app", @@ -773,21 +849,21 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3868e555723249fde3786891f35893b3001b2be4efb51f431467cb7fc378cd" +checksum = "d1cd460205fe05634d58b32d9bb752b1b4eaf32b2d29cbd4161ba35eb44a2f8c" dependencies = [ "quote", "rustc-hash", - "syn 2.0.27", + "syn 2.0.37", "toml_edit", ] [[package]] name = "bevy_math" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25088c6598fe0b8ded992c781dc49e613993c7a4e6a731c0f2ab0408add6afdb" +checksum = "267f2ec44aa948051768b1320c2dbff0871799e0a3b746f5fe5b6ee7258fbaf5" dependencies = [ "glam", "serde", @@ -795,9 +871,9 @@ dependencies = [ [[package]] name = "bevy_mikktspace" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99dde80034660f7dbb473141c31f0a746acc7229f5a06ce769aba5f16fd592ab" +checksum = "0d98eaa7f40b97bb9b2d681ecf9fd439830a7eb88ad2846680d4f4acd285cf84" dependencies = [ "glam", ] @@ -819,9 +895,9 @@ dependencies = [ [[package]] name = "bevy_pbr" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3efec2ae4b4f9fd38b82b93350499dac2dc6f07e63ef50a03c00c52075e2dea8" +checksum = "9386944248ac8fcaaabec2302b0e7cd8196ef5d7b7a2e63b10ace3eeb813d3de" dependencies = [ "bevy_app", "bevy_asset", @@ -842,9 +918,9 @@ dependencies = [ [[package]] name = "bevy_ptr" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c74fcf37593a0053f539c3b088f34f268cbefed031d8eb8ff0fb10d175160242" +checksum = "15702dff420fac72c2ab92428a8600e079ae89c5845401c4e39b843665a3d2d0" [[package]] name = "bevy_rapier3d" @@ -862,9 +938,9 @@ dependencies = [ [[package]] name = "bevy_reflect" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "362492a6b66f676176705cc06017b012320fa260a9cf4baf3513387e9c05693e" +checksum = "3ac66cccbf1457c5cfc004a0e83569bd4ddc5d6310701f4af6aa81001fe2964a" dependencies = [ "bevy_math", "bevy_ptr", @@ -883,23 +959,23 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e974d78eaf1b45e1b4146711b5c16e37c24234e12f3a52f5f2e28332c969d3c" +checksum = "e5a2a1fa784e9a22560b9de350246a159cd59239eb61c7b66824031b3b28abb0" dependencies = [ "bevy_macro_utils", "bit-set", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", "uuid", ] [[package]] name = "bevy_render" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46e4b6a82c3a2be1c0d0cbecf62debb8251b72c0ae76285f66265aabc5bf2d37" +checksum = "b2e125de06ffaed8100623843b447fb524dc16f2a2120adce81143d7307278be" dependencies = [ "anyhow", "async-channel", @@ -947,21 +1023,21 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c4d937f966644f5e1e3c9157736acdd36286bcce06142ff9ad25cd71348c09" +checksum = "e283eb4156285d0d4b85ce9b959d080b652165848f0b3f1a8770af6cfad41c34" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] name = "bevy_scene" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1e00eb30e2053d9fff0802b2f557350b4e66bac58d531de30882048b4e3232" +checksum = "a77172c572239e741283e585433e986dd7f1bfdd7f7489ff10933f59e93cbb04" dependencies = [ "anyhow", "bevy_app", @@ -981,9 +1057,9 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f64119444ef9788dcdd05012a60f0fa3b7ddb396d434ebcfc3edefd76c91b5" +checksum = "d7811ade4df81ffa6bae0e293c42d784ad88ce84d2b10fa05801e3c368714581" dependencies = [ "bevy_app", "bevy_asset", @@ -1006,9 +1082,9 @@ dependencies = [ [[package]] name = "bevy_tasks" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faab904296a3d6976bb8a12bc0f42f6c98fb6cd87a96244e0151d359f684ec2d" +checksum = "9200e7b42d49c787d9a08675c425d8bd6393ba3beed2eac64be6027a44a01870" dependencies = [ "async-channel", "async-executor", @@ -1020,9 +1096,9 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b52a19b3d0caf20acd1bdb47b6a00717accc834b46c4f204a63de15cea45ec4b" +checksum = "822e2cdb1c46338b85b7648d866f0b631cab23bd8f24395bb8ee7842dde024f0" dependencies = [ "ab_glyph", "anyhow", @@ -1043,9 +1119,9 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d09225ad2ffef14da000080143730b36ba225844ae479e4791cdb9d08066d06a" +checksum = "2ba50bf25c4dc40296b744f77de10d39c8981b710d8dce609da9de5e54ef164b" dependencies = [ "bevy_app", "bevy_ecs", @@ -1058,9 +1134,9 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da8a0cd3780e120e20be333cc48d41cb74620d798dc61bc18eb2a82d3545e184" +checksum = "86043ec5cc3cf406d33c0e4d6920171601e186b1288e9b4f5ae54682a0564032" dependencies = [ "bevy_app", "bevy_ecs", @@ -1072,9 +1148,9 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb85992eb5809936b3326940dc8d6e7b219af3dde1ecbca5948addd6a78694cc" +checksum = "105c82a79df1dfcdb75941fa1f58dbdbd8f702a740bc39e7bf719c3d51d55286" dependencies = [ "bevy_a11y", "bevy_app", @@ -1102,9 +1178,9 @@ dependencies = [ [[package]] name = "bevy_utils" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10bfde141f0cdd15e07bca72f4439a9db80877c283738f581d061972ef483b1b" +checksum = "829eb8d0d06a0baeabc2e8bad74136ed3329b055aa1e11c5d9df09ebb9be3d85" dependencies = [ "ahash 0.8.3", "bevy_utils_proc_macros", @@ -1119,20 +1195,20 @@ dependencies = [ [[package]] name = "bevy_utils_proc_macros" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e37f2e885b0e8af59dc19871c313d3cf2a2495db35bb4d4ae0a61b3f87d5401" +checksum = "0d104f29e231123c703e8b394e2341d2425c33c5a2e9ab8cc8d0a554bdb62a41" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] name = "bevy_window" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0528832361e3d942df287c90537ef6fafb726c4934468a7c3a5d53d659bfbf54" +checksum = "4a66f9963152093220fc5ffd2244cadcc7f79cf2c23dd02076f4d0cbb7f5162f" dependencies = [ "bevy_app", "bevy_ecs", @@ -1146,9 +1222,9 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24c6709dc70cfee1eb94d5f125d29612c4a9345dfc1a70dd3189af927b2fd503" +checksum = "003e20cff652a364f1f98b0d5ba24f53140dc77643241afe4a9b848bdde66184" dependencies = [ "accesskit_winit", "approx", @@ -1218,6 +1294,9 @@ name = "bitflags" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +dependencies = [ + "serde", +] [[package]] name = "block" @@ -1278,7 +1357,7 @@ checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] @@ -1720,7 +1799,7 @@ checksum = "3fe2568f851fd6144a45fa91cfed8fe5ca8fc0b56ba6797bfc1ed2771b90e37c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] @@ -2001,7 +2080,7 @@ dependencies = [ "inflections", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] @@ -2835,7 +2914,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] @@ -3048,6 +3127,12 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + [[package]] name = "peeking_take_while" version = "0.1.2" @@ -3104,6 +3189,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + [[package]] name = "pretty-type-name" version = "1.0.1" @@ -3146,9 +3237,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] @@ -3174,6 +3265,36 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + [[package]] name = "range-alloc" version = "0.1.3" @@ -3305,13 +3426,14 @@ dependencies = [ [[package]] name = "ron" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ - "base64", - "bitflags 1.3.2", + "base64 0.21.4", + "bitflags 2.3.3", "serde", + "serde_derive", ] [[package]] @@ -3369,22 +3491,22 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.175" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d25439cd7397d044e2748a6fe2432b5e85db703d6d097bd014b3c0ad1ebff0b" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.175" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23f7ade6f110613c0d63858ddb8b94c1041f550eab58a16b371bdf2c9c80ab4" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] @@ -3522,9 +3644,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.27" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -3603,7 +3725,7 @@ checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] @@ -3679,7 +3801,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", ] [[package]] @@ -3869,7 +3991,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", "wasm-bindgen-shared", ] @@ -3903,7 +4025,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.27", + "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 2f3c0e4..5730e77 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,22 +1,38 @@ [package] -name = "bevy_gltf_components" -version = "0.2.0" +name = "bevy_gltf_flow" +version = "0.3.0" edition = "2021" license = "MIT OR Apache-2.0" +[workspace] +members = [ + "crates/bevy_gltf_components", + "crates/bevy_gltf_blueprints", +] + + [dev-dependencies] -bevy="0.11" +bevy="0.11.2" bevy_rapier3d = { version = "0.22.0", features = [ "serde-serialize", "debug-render-3d", "enhanced-determinism"] } bevy_editor_pls = { git="https://github.com/jakobhellermann/bevy_editor_pls.git" } +bevy_asset_loader = { version = "0.17.0", features = ["standard_dynamic_assets" ]} #version = "0.16", +rand = "0.8.5" [dependencies] -bevy = { version = "0.11", default-features = false, features = ["bevy_asset", "bevy_scene", "bevy_gltf"] } +bevy = { version = "0.11.2", default-features = false, features = ["bevy_asset", "bevy_scene", "bevy_gltf"] } +bevy_gltf_components = { path = "crates/bevy_gltf_components" } +bevy_gltf_blueprints = { path = "crates/bevy_gltf_blueprints" } + serde = "*" ron="*" [[example]] -name = "general" -path = "examples/general/main.rs" +name = "basic" +path = "examples/basic/main.rs" + +[[example]] +name = "advanced" +path = "examples/advanced/main.rs" #### --------------------Dev/ debug------------------------------- # Enable high optimizations for dependencies (incl. Bevy), but not for our code: diff --git a/LICENCE.md b/LICENCE.md new file mode 100644 index 0000000..ad21aac --- /dev/null +++ b/LICENCE.md @@ -0,0 +1,4 @@ +This crate is available under either: + +* The [MIT License](./LICENSE_MIT) +* The [Apache License, Version 2.0](./LICENSE_APACHE) \ No newline at end of file diff --git a/README.md b/README.md index 5bbc483..574a9c8 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ [![Bevy tracking](https://img.shields.io/badge/Bevy%20tracking-released%20version-lightblue)](https://github.com/bevyengine/bevy/blob/main/docs/plugins_guidelines.md#main-branch-tracking) +[![License](https://img.shields.io/crates/l/bevy_gltf_components)](https://github.com/kaosat-dev/Blender_bevy_components_worklflow/blob/main/License.md) -# bevy_gltf_components +# Blender_bevy_components_worklflow ![demo](./docs/blender_gltf_components.png) -A plugin & tools for adding components from gltf files in the [bevy](https://bevyengine.org/) game engine. +Crates & tools for adding components from gltf files in the [Bevy](https://bevyengine.org/) game engine. It enables minimalistic [Blender](https://www.blender.org/) (gltf) centric workflow for Bevy, ie defining entites & their components inside Blender using Blender's objects **custom properties**. @@ -16,219 +17,46 @@ It also allows you to setup 'blueprints' in Blender by using collections (the re ## Features * Useful if you want to use Blender (or any editor allowing to export gltf with configurable gltf_extras) as your Editor -* define Bevy components as custom properties in Blender (RON, though an older JSON version is also available) -* no plugin or extra tools needed in Blender (but I provide a little Blender plugin to auto-export to gltf on save if you want !) +* define Bevy components as custom properties in Blender (some visually , some using RON, though an older JSON version is also available) +* no plugin or extra tools needed in Blender (but I provide a [little Blender plugin](./tools/gltf_auto_export/README.md) to auto-export to gltf on save (and more !) if you want !) * define components in Blender Collections & override any of them in your collection instances if you want +* ability to automatically turn your Blender collections into [gltf Blueprints](./crates/bevy_gltf_blueprints/README.md) for reuse * minimal setup & code, you can have something basic running fast - -## Usage - -***important*** : the plugin for processing gltf files runs in ***preUpdate*** , so you cannot use the components directly if you spawn your scene from gltf in ***setup*** (the additional components will not show up) -Please see the included example or use bevy_asset_loader for a reliable workflow - -1. Add the crate to your dependencies -```toml -[dependencies] -bevy_gltf_components = { git="https://github.com/kaosat-dev/Blender_bevy_components_worklflow.git" } - -``` -(not on crates.io yet !) - -2. Import - -```rust -use bevy_gltf_components::ComponentsFromGltfPlugin; -``` - -3. Add the plugin -```rust -.add_plugin(ComponentsFromGltfPlugin) -``` - -### Example (without bevy_asset_loader) - -See [here](./examples/general/main.rs) for more details - - ```rust -use bevy::prelude::*; -use bevy_gltf_components::ComponentsFromGltfPlugin; - - -#[derive(Component, Reflect, Default, Debug, Deref, DerefMut)] -#[reflect(Component)] -struct TuppleTestF32(f32); - -#[derive(Component, Reflect, Default, Debug, )] -#[reflect(Component)] -/// helper marker component, for demo only -pub struct LoadedMarker; - - -#[derive(Debug, Clone, Copy, Default, Eq, PartialEq, Hash, States)] -enum AppState { - #[default] - Loading, - Running, -} - -fn main(){ - App::new() - .add_plugins(( - DefaultPlugins, - ComponentsFromGltfPlugin, - )) - - .add_state::() - .add_systems(Startup, setup) - .add_systems(Update, ( - spawn_level.run_if(in_state(AppState::Loading)), - )) - .run(); -} - -#[derive(Resource)] -struct AssetLoadHelper(Handle); -// we preload the data here, but this is for DEMO PURPOSES ONLY !! Please use https://github.com/NiklasEi/bevy_asset_loader or a similar logic to seperate loading / pre processing -// of assets from the spawning -// AssetLoadHelper is also just for the same purpose, you do not need it in a real scenario -// the states here are also for demo purposes only, -fn setup( - mut commands: Commands, - asset_server: Res, -) { - - let tmp: Handle = asset_server.load("models/level1.glb#Scene0"); - commands.insert_resource(AssetLoadHelper(tmp)); -} - -fn spawn_level( - mut commands: Commands, - scene_markers: Query<&LoadedMarker>, - preloaded_scene: Res, - - mut asset_event_reader: EventReader>, - mut next_state: ResMut>, -){ - - if let Some(asset_event) = asset_event_reader.iter().next() { - match asset_event { - AssetEvent::Created { handle: _ } => { - info!("GLTF loaded"); - if scene_markers.is_empty() { - info!("spawning scene"); - commands.spawn( - ( - SceneBundle { - scene: preloaded_scene.0.clone(), - ..default() - }, - LoadedMarker, - Name::new("Level1") - ) - ); - next_state.set(AppState::Running); - } - } - _ => () - } - } -} - - -``` - - -### Example (with bevy_asset_loader, recommended for ease of use) - -- follow [bevy_asset_loader's](https://github.com/NiklasEi/bevy_asset_loader) docs to setup your gltf asset loading -- also add this plugin - - ```rust -use bevy::prelude::*; -use bevy_gltf_components::ComponentsFromGltfPlugin; - -// replace this with your actual states ! -#[derive(Debug, Clone, Copy, Default, Eq, PartialEq, Hash, States)] -enum AppState { - #[default] - Loading, - Running, -} - - -fn main(){ - App::new() - .add_plugins(( - DefaultPlugins, - ComponentsFromGltfPlugin, - )) - // do the setup for bevy_asset_loader - .add_system(setup_game.in_schedule(OnEnter(AppState::Running))) - - .run(); -} - - -pub fn setup_game( - mut commands: Commands, - game_assets: Res, // assets with your "world" or "level" gltf for example -) { - - - // more fast approach, load the game seperatly - commands.spawn(( - SceneBundle { - scene: game_assets.world.clone(), - ..default() - }, - bevy::prelude::Name::from("world"), - )); - -} - - -``` - -# Workflow with blender / demo information - -This example, is actually closer to a boilerplate + tooling showcases how to use a minimalistic [Blender](https://www.blender.org/) (gltf) centric workflow for [Bevy](https://bevyengine.org/), ie defining entites & their components -inside Blender using Blender's objects **custom properties**. -Aka "Blender as editor for Bevy" - -It also allows you to setup 'blueprints' in Blender by using collections (the recomended way to go most of the time), or directly on single use objects . - -## Features - -* Useful if you want to use Blender (or any editor allowing to export gltf with configurable gltf_extras) as your Editor -* define Bevy components as custom properties in Blender (RON, though an older JSON version is also available) -* no plugin or extra tools needed in Blender (but I provide a little Blender plugin to auto-export to gltf on save if you want !) -* define components in Blender Collections & override any of them in your collection instances if you want -* code to auto add additional required components in Bevy (if B is needed with A but B is not present, it adds it: optional & configurable) -* minimal setup & code, you can have something basic running fast +* minimal dependencies: Bevy, Serde & Ron only ! * opensource -There is a [video tutorial/explanation](https://youtu.be/-lcScjQCA3c) if you want, or you can skip to the text version ahead + +## Crates + +- [bevy_gltf_components]('./crates/bevy_gltf_components/) This crate allows you to define components direclty inside gltf files and instanciate/inject the components on the Bevy side. +There is a [video tutorial/explanation](https://youtu.be/-lcScjQCA3c) if you want, or you can read the crate docs/ basic example + +- [bevy_gltf_blueprints]('./crates/bevy_gltf_blueprints/) This crate adds the ability to define Blueprints/Prefabs for Bevy inside gltf files and spawn them in Bevy. With the ability to override and add components when spawning. +## Tools +### Blender: gltf_auto_export + +- for convenience I also added a [Blender addon](./tools/gltf_auto_export/README.md) that automatically exports your level/world from Blender to gltf whenever you save your Blend file +- it also supports automatical exports of collections as [Gltf blueprints](./crates/bevy_gltf_blueprints/README.md) & more ! + +Please read the [README]((./tools/gltf_auto_export/README.md)) of the add-on for installation & use instructions + + +## Examples + +- [basic](./examples/basic/) use of ```bevy_gltf_components``` only, to spawn entities with components defined inside gltf files +- [advanced](./examples/advanced/) more advanced example : use of ```bevy_gltf_blueprints``` to spawn a level and then populate it with entities coming from different gltf files, live (at runtime) spawning of entities etc ## Workflow The workflow goes as follows (once you got your Bevy code setup) -### All core/helper modules - -see the [example](./examples/general/) for more information on how to set things up - - -### Then... - - create & register all your components you want to be able to set from the Blender side (this is basic Bevy, no specific work needed) ![component registration](./docs/component_registration.png) - - -- Create a mesh/ collection (for reuse) in Blender +- Create an object / collection (for reuse) in Blender - Go to object properties => add a property, and add your component data - unit structs, enums, and more complex strucs / components are all supported, (if the fields are basic data types at least, have not tried more complex ones yet, but should also work) @@ -242,7 +70,7 @@ see the [example](./examples/general/) for more information on how to set things ![unit struct components in Bevy](./docs/demo_simple_components.png) - (the Rust struct for these components for reference is [here](./examples/general/game.rs#34) ) + (the Rust struct for these components for reference is [here](./examples/basic/game.rs#34) ) ![complex components in Blender](./docs/components_blender_parameters.png) @@ -251,9 +79,9 @@ see the [example](./examples/general/) for more information on how to set things ![complex components in Blender](./docs/camera_tracking_component.png) - (the Rust struct for this component for reference is [here](./examples/general/core/camera/camera_tracking.rs#21) ) + (the Rust struct for this component for reference is [here](./examples/basic/core/camera/camera_tracking.rs#21) ) - There is an other examples of using various Component types: Enums, Tupple structs, strucs with fields etc [here](./examples/general/test_components.rs), + There is an other examples of using various Component types: Enums, Tupple structs, strucs with fields etc [here](./examples/basic/test_components.rs), even colors, Vecs (arrays), Vec2, Vec3 etc are all supported ![complex components in Blender](./docs/components_blender_parameters2.png) @@ -263,17 +91,20 @@ see the [example](./examples/general/) for more information on how to set things * the leaf collections are the assets you use in your level * add an empty called xxxx_components * add the components as explained in the previous part + ![blender collection asset](./docs/blender_collections.png) * In the Level/world itself, just create an instance of the collection (standard Blender, ie Shift+A -> collection instance -> pick the collection) - export your level as a glb/gltf file : - !!**IMPORTANT** you need to check the following: - - custom properties - - cameras & lights if you want a complete level (as in this example) + - using Blender's default gltf exporter + !!**IMPORTANT** you need to check the following: + - custom properties + - cameras & lights if you want a complete level (as in this example) + ![gltf_export](./docs/gltf_export.png) + - or much better, using [gltf_auto_export](./tools/gltf_auto_export/) - ![gltf_export](./docs/gltf_export.png) - load it in Bevy (see the demo main file for this) @@ -286,51 +117,20 @@ see the [example](./examples/general/) for more information on how to set things > note: you get a warning if there are any unregistered components in your gltf file (they get ignored) you will get a warning **per entity** + ![missing components warnings](./docs/component_warnings.png) -### Additional notes - -* You usually define either the Components directly or use ```Proxy components``` that get replaced in Bevy systems with the actual Components that you want (usually when for some reason, ie external crates with unregistered components etc) you cannot use the components directly. - -Included are the following modules / tools - * [```process_gltf```](./src/process_gltfs.rs) the most important module: this is the one extracting ```component``` information from the gltf files - * [```insert_dependant_component```](./examples/general/core/relationships/relationships_insert_dependant_components.rs) a small utility to automatically inject - components that are dependant on an other component - for example an Entity with a Player component should also always have a ShouldBeWithPlayer component - you get a warning if you use this though, as I consider this to be stop-gap solution (usually you should have either a bundle, or directly define all needed components) - * [```camera```](./examples/general/core/camera/) an example post process/replace proxies plugin, for Camera that also adds CameraTracking functions (to enable a camera to follow an object, ie the player) - * [```lighting```](./examples/general/core/lighting/) an other example post process/replace proxies plugin for lighting, that toggles shadows, lighting config, etc so that things look closer to the original Blender data - * [```physics```](./examples/general/core/physics/) an other example post process/replace proxies plugin for physics, that add [Rapier](https://rapier.rs/docs/user_guides/bevy_plugin/getting_started_bevy) Colliders, Rigidbodies etc . Most of these do not need proxies these days, as the most Rapier components are in the Registry & can be used directly - -Feel free to use as you want, rip it appart, use any/all parts that you need ! - -This tooling and workflow has enabled me to go from a blank Bevy + Blender setup to a working barebones level in very little time (30 minutes or so ?) ! -You can then add your own components & systems for your own gameplay very easilly - -## Information -- the Bevy/ Rust code is [here](./examples/general/main.rs) -- the Blender file is [here](./assets/models/level.blend) -- I added [bevy_editor_pls](https://github.com/jakobhellermann/bevy_editor_pls) as a dependency for convenience so you can inspect your level/components - ## Limitations / issues -- the components have to be defined in ```text``` in Blender, might try using the AppTypeRegistry and some Python code on the Blender side for a nicer UI (although this loses the "fast & easy, no tooling" approach) -- the asset management in this example is stripped down for demo purposes, I normally use https://github.com/NiklasEi/bevy_asset_loader to define, organise and preload assets -(in a different state that comes before the actual game/level), so you will see some of the changes to the level/scene "flash by" +- some components have to be defined in ```text``` in Blender, might try using the AppTypeRegistry and some Python code on the Blender side for a nicer UI (although this loses the "fast & easy, no tooling" approach) - Some of `bevy_rapier`/physics code / ways to define colliders could perhaps be done better within Blender (currently it also goes via RON) +- there seem to be some random system ordering issues that I am still investigating (only when replacing proxy components, no breaking bugs, just restarting your Bevy app is enough) ## Future work - I have a number of other tools/ code helpers that I have not yet included here, because they need cleanup/ might make this example too complex - * gltf spawning tools where you just need to preload gltf files then you can spawn 1...n entities defined in gltf files by name (for example enemies, powerups, etc) * simplified animation logic: ie instead of having to manually specify the animations you need from a gltf file, it is integrated with the spawning system above, which creates a ```Animations``` component in all entities that have an ```AnimationPlayer``` and you can simply query for both to easilly control your animations per entity. -## Blender gltf_auto_export -- for convenience I also added a [Blender addon](./tools/blender_auto_export/README.md) that automatically exports your level/world from Blender to gltf whenever you save your Blend file -(actually when you save inside your level/world scene or in the "library" scene, where I personally usually store all collections to instanciate). -It is **very** barebones and messy, but it does a minimal ok job. Please read the README of the add-on for installation instructions - - ## Credits @@ -338,8 +138,7 @@ It is **very** barebones and messy, but it does a minimal ok job. Please read th ## License -This example, all its code, contents & assets is Dual-licensed under either of - -- Apache License, Version 2.0, ([LICENSE-APACHE](/LICENSE_APACHE) or https://www.apache.org/licenses/LICENSE-2.0) -- MIT license ([LICENSE-MIT](/LICENSE_MIT) or https://opensource.org/licenses/MIT) +This repo, all its code, contents & assets is Dual-licensed under either of +- Apache License, Version 2.0, ([LICENSE-APACHE](./LICENSE_APACHE.md) or https://www.apache.org/licenses/LICENSE-2.0) +- MIT license ([LICENSE-MIT](./LICENSE_MIT.md) or https://opensource.org/licenses/MIT) \ No newline at end of file diff --git a/assets/advanced/advanced.blend b/assets/advanced/advanced.blend new file mode 100644 index 0000000000000000000000000000000000000000..f906237d6401a4f5dcb5f996624403f73ff501c7 GIT binary patch literal 1298120 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 WB~!{T?KSpprC4ZD`B?tn-~R!hL#53C literal 0 HcmV?d00001 diff --git a/assets/advanced/assets_core.assets.ron b/assets/advanced/assets_core.assets.ron new file mode 100644 index 0000000..8d0a099 --- /dev/null +++ b/assets/advanced/assets_core.assets.ron @@ -0,0 +1 @@ +({}) \ No newline at end of file diff --git a/assets/advanced/assets_game.assets.ron b/assets/advanced/assets_game.assets.ron new file mode 100644 index 0000000..6efe66d --- /dev/null +++ b/assets/advanced/assets_game.assets.ron @@ -0,0 +1,6 @@ +({ + "world":File (path: "advanced/models/world.glb#Scene0"), + "models": Folder ( + path: "advanced/models/library", + ), +}) \ No newline at end of file diff --git a/assets/advanced/models/library/Container.glb b/assets/advanced/models/library/Container.glb new file mode 100644 index 0000000000000000000000000000000000000000..6d900cee62a2be62e7cb2f6b43dcf61834ba6666 GIT binary patch literal 5576 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 E2X*P(JOBUy literal 0 HcmV?d00001 diff --git a/assets/advanced/models/library/MagicTeapot.glb b/assets/advanced/models/library/MagicTeapot.glb new file mode 100644 index 0000000000000000000000000000000000000000..04a3e57059ef0bc394b8436a8deaeffcc2a72f83 GIT binary patch literal 23608 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 Mx|)Wd(`p3$KjIzh{r~^~ literal 0 HcmV?d00001 diff --git a/assets/advanced/models/library/Pillar.glb b/assets/advanced/models/library/Pillar.glb new file mode 100644 index 0000000000000000000000000000000000000000..2115f3a83b4a4981908a91aa47ed3fc36d60d46d GIT binary patch literal 3620 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 literal 0 HcmV?d00001 diff --git a/assets/advanced/scenes/save.scn.ron b/assets/advanced/scenes/save.scn.ron new file mode 100644 index 0000000..ed30389 --- /dev/null +++ b/assets/advanced/scenes/save.scn.ron @@ -0,0 +1,485 @@ +( + resources: {}, + entities: { + 20: ( + components: { + "bevy_render::camera::projection::Projection": Perspective(( + fov: 0.3995965, + aspect_ratio: 1.7777778, + near: 0.1, + far: 100.0, + )), + "bevy_render::primitives::Frustum": (), + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 34.821884, + y: 49.024857, + z: -36.79615, + ), + rotation: (-0.1694689, 0.82838506, 0.40884802, 0.3433684), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core_pipeline::tonemapping::Tonemapping": BlenderFilmic, + "bevy_core_pipeline::tonemapping::DebandDither": Enabled, + "bevy_render::view::ColorGrading": ( + exposure: 0.0, + gamma: 1.0, + pre_saturation: 1.0, + post_saturation: 1.0, + ), + "bevy_core::name::Name": ( + hash: 17702508670109176045, + name: "Camera", + ), + "advanced::core::camera::camera_tracking::CameraTrackingOffset": (( + x: 26.0, + y: 48.0, + z: -26.0, + )), + "bevy_pbr::light::ClusterConfig": FixedZ( + total: 4096, + z_slices: 24, + z_config: ( + first_slice_depth: 5.0, + far_z_mode: MaxLightRange, + ), + dynamic_resizing: true, + ), + "bevy_core_pipeline::bloom::settings::BloomSettings": ( + intensity: 0.01, + low_frequency_boost: 0.7, + low_frequency_boost_curvature: 0.95, + high_pass_frequency: 1.0, + prefilter_settings: ( + threshold: 0.0, + threshold_softness: 0.0, + ), + composite_mode: Additive, + ), + }, + ), + 34: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 4.697565, + y: 1.5983224, + z: 8.962274, + ), + rotation: (0.000000000000000031724054, -0.00000000000000000000647681, -0.000013119204, 1.0), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 9837288155836662016, + name: "Health_Pickup.001", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + }, + ), + 54: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 8.799996, + y: 1.02484, + z: -10.799994, + ), + rotation: (0.0, 0.0, 0.0, 1.0), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 17978181434632022651, + name: "Player", + ), + "advanced::core::camera::camera_tracking::CameraTrackable": (), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Player"), + "advanced::game::Player": (), + "advanced::game::SoundMaterial": Wood, + }, + ), + 60: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 3.6351967, + y: 1.7298106, + z: -7.313273, + ), + rotation: (0.0, 0.0, 0.0, 1.0), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 7225506896223411979, + name: "MagicTeapot.001", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("MagicTeapot"), + }, + ), + 64: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: -4.6068983, + y: 1.5983224, + z: -10.579347, + ), + rotation: (0.000000000000000031724054, 0.00000000000000000000647681, 0.000013119204, 1.0), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 3089896164553476909, + name: "Health_Pickup.002", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + }, + ), + 72: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: -11.560788, + y: 0.0, + z: 7.6554174, + ), + rotation: (0.0, 0.0, 0.0, 1.0), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 16961132108296874979, + name: "Container.001", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Container"), + "advanced::game::picking::Pickable": (), + }, + ), + 80: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: -21.397858, + y: 0.3833189, + z: -0.32418346, + ), + rotation: (0.0, 0.0, 0.0, 1.0), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 5104740624378885265, + name: "Container.002", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Container"), + "advanced::game::picking::Pickable": (), + }, + ), + 82: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 2.9156065, + y: 1.4984571, + z: 2.1909573, + ), + rotation: (0.058853183, 0.0726243, 0.2048649, 0.97431636), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 107557640935939866, + name: "test5159735758431545549", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + "bevy_rapier3d::dynamics::rigid_body::Velocity": ( + linvel: ( + x: -1.2580805, + y: -0.39687577, + z: 0.4816798, + ), + angvel: ( + x: 0.2979751, + y: 0.07926611, + z: 0.8434645, + ), + ), + }, + ), + 86: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 0.26087752, + y: 1.5525806, + z: 1.5980839, + ), + rotation: (0.059497803, -0.0000018232388, 0.13145457, 0.9895351), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 3398656236303073559, + name: "test7470642598731063943", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + "bevy_rapier3d::dynamics::rigid_body::Velocity": ( + linvel: ( + x: -0.9268077, + y: -0.19806683, + z: 0.41948256, + ), + angvel: ( + x: 0.26946256, + y: -0.000006710977, + z: 0.5953494, + ), + ), + }, + ), + 90: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 2.6515265, + y: 1.5944021, + z: -4.391837, + ), + rotation: (-0.030030435, -0.0000006527225, 0.029748484, 0.9991062), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 12541900054595385134, + name: "test3938024405863834719", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + "bevy_rapier3d::dynamics::rigid_body::Velocity": ( + linvel: ( + x: -0.28430828, + y: -0.022357654, + z: -0.2870027, + ), + angvel: ( + x: -0.17986917, + y: -0.0000035613396, + z: 0.17818078, + ), + ), + }, + ), + 94: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: -4.2356462, + y: 1.596993, + z: 0.7254991, + ), + rotation: (-0.0221751, -0.0000000001891749, 0.011065631, 0.99969286), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 6757906322211730861, + name: "test11007490954016878479", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + "bevy_rapier3d::dynamics::rigid_body::Velocity": ( + linvel: ( + x: -0.21747473, + y: -0.014912919, + z: -0.43581253, + ), + angvel: ( + x: -0.2727097, + y: -0.0000000034594905, + z: 0.13608481, + ), + ), + }, + ), + 98: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 3.1525247, + y: 1.5518407, + z: -2.9611976, + ), + rotation: (-0.09219627, 0.1602262, -0.11205085, 0.9763565), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 12588565107899185946, + name: "test5980867849331267699", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + "bevy_rapier3d::dynamics::rigid_body::Velocity": ( + linvel: ( + x: 0.8323179, + y: -0.20597076, + z: -0.68975484, + ), + angvel: ( + x: -0.37971017, + y: 0.49603412, + z: -0.6079359, + ), + ), + }, + ), + 4294967310: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 4.826278, + y: 1.2710563, + z: -3.1997645, + ), + rotation: (-0.303028, 0.00000087800436, -0.23889118, 0.9225535), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 15533546218717453536, + name: "test12380979123759326444", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + "bevy_rapier3d::dynamics::rigid_body::Velocity": ( + linvel: ( + x: 1.2146912, + y: -1.1640646, + z: -1.5408095, + ), + angvel: ( + x: -1.1932359, + y: 0.000002945365, + z: -0.94068503, + ), + ), + }, + ), + 4294967314: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 3.9906094, + y: 1.4824095, + z: 2.4394412, + ), + rotation: (0.06015042, 0.085218765, 0.2215642, 0.9695509), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 2466794778849297109, + name: "test12475628281920299197", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + "bevy_rapier3d::dynamics::rigid_body::Velocity": ( + linvel: ( + x: -1.0818624, + y: -0.37798148, + z: 0.45334253, + ), + angvel: ( + x: 0.25961447, + y: 0.14854014, + z: 0.7426717, + ), + ), + }, + ), + 4294967321: ( + components: { + "bevy_transform::components::transform::Transform": ( + translation: ( + x: 2.2306876, + y: 0.989814, + z: -1.3596333, + ), + rotation: (0.30614096, 0.002587511, -0.42789298, 0.8503991), + scale: ( + x: 1.0, + y: 1.0, + z: 1.0, + ), + ), + "bevy_core::name::Name": ( + hash: 1545925632270385398, + name: "test15780367212768138828", + ), + "bevy_gltf_blueprints::spawn_from_blueprints::BlueprintName": ("Health_Pickup"), + "advanced::game::picking::Pickable": (), + "bevy_rapier3d::dynamics::rigid_body::Velocity": ( + linvel: ( + x: 1.3027526, + y: -1.8947054, + z: 1.6179247, + ), + angvel: ( + x: 1.4565696, + y: -0.16299045, + z: -1.3631926, + ), + ), + }, + ), + }, +) \ No newline at end of file diff --git a/assets/models/test.blend b/assets/basic/models/basic.blend similarity index 100% rename from assets/models/test.blend rename to assets/basic/models/basic.blend diff --git a/assets/models/level1.glb b/assets/basic/models/level1.glb similarity index 67% rename from assets/models/level1.glb rename to assets/basic/models/level1.glb index 881fad4200ce3c47b982d5d991da73f12f52a859..abcf17048c41aef85276dfd070e6ad679b340b5c 100644 GIT binary patch delta 1817 zcmah|ZERCj7+yc-*zDG=`@n4ty}igjdQaPX&b__8?FyS4D_sH`fh7_LEM=5YE$tXx z0x^^Mkw`Q#&L<|Cm_RgYLX0v-j0QDm_{9$qQA|ku_=B1dwV23XeA^0JHIZNMd3&Ds zd7k&_x!?S1Klh@&VLCG&w^mhEovXG~J*O=;OfOz+v@l$0_Ab5qmSt$?R4SX2=b4;M z9!kkkx!hBm+n+ijM<-MkVg?H{&KVCep)#Q{5#BSuX9a?S^^QeF!S9bgLjMg5ugm9s@Cup(=<7x%1R_*qhL#ZPN<*0$ggFjiq@Hw_xOdNG|>D*wPA~G3|+|N-ad5m@|Iy&tb zutYFlzZSOo_jJli+-EkCN@ns0CyNQr&6Ft4)u$==bqzmL@YT-Vkj@1CN5*}4wk4<2 zQ{$=ROfFwyF`RpG*>wr0+G>{nZ285u{CacDf=qiGZntwRwT;@0c_`P_4 z!#WhG{zkRCTZX@@fQ8;Rpr;A@dQM=Zdp#P%ZoJd&hsW>2jcy5ZzCm>LcyP@p;U?8q z#RDJB%xHBOSG;(<*N2mej&FNUmGq7?fe#6L#xLP7ss*aL()LPk9h||fm{TOG)mR9+ zaaAePd=gxbW+vfI@HBQ(y?ehz=Q{p2Zc)9=C2*p03JEX!%X4Ew##i*)qBw!ZfP{$V zMJ`ah^Wy{RKh=`>Bj829E@2{Ao;j|s#~VSiGnw?^r%HcHqE~R9=n> zJuI+9qEf%pCPFHfNJ)gs3c^%zraxxa)QG_6u|BIt4ibI@V~ut#R2uBFX{LdvV+zKH zTy|Xz6@k8DV~glTzYJFgT{fMVmJ($UH@IFhK0efJYGE3p7>y6tHoNG`6r|4Z-Da0n)vy$2SUc>pQy!uOdW{-Qh;j_2#uQ~+ z*Xc&*inL0Ns?N= huBsXw8LdKL)Pw#Vj%DYVr*=6o@xlYkA59N@@i#frHc0>g delta 8595 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 diff --git a/assets/test.ron b/assets/test.ron deleted file mode 100644 index 587d785..0000000 --- a/assets/test.ron +++ /dev/null @@ -1,3 +0,0 @@ -(( - blender_worklfow::Player: () -)) \ No newline at end of file diff --git a/crates/bevy_gltf_blueprints/Cargo.toml b/crates/bevy_gltf_blueprints/Cargo.toml new file mode 100644 index 0000000..881f1ad --- /dev/null +++ b/crates/bevy_gltf_blueprints/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "bevy_gltf_blueprints" +version = "0.1.0" +authors = ["Mark 'kaosat-dev' Moissette"] +description = "Adds the ability to define Blueprints/Prefabs for [Bevy](https://bevyengine.org/) inside gltf files and spawn them in Bevy." +homepage = "https://github.com/kaosat-dev/Blender_bevy_components_worklflow" +repository = "https://github.com/kaosat-dev/Blender_bevy_components_worklflow" +keywords = ["gamedev", "bevy", "gltf", "blueprint", "prefab"] +categories = ["game-development"] +edition = "2021" +license = "MIT OR Apache-2.0" + +[dev-dependencies] +bevy="0.11.2" + +[dependencies] +bevy_gltf_components = "0.1.0" +bevy = { version = "0.11.2", default-features = false, features = ["bevy_asset", "bevy_scene", "bevy_gltf", "bevy_animation"] } diff --git a/crates/bevy_gltf_blueprints/LICENCE.md b/crates/bevy_gltf_blueprints/LICENCE.md new file mode 100644 index 0000000..ad21aac --- /dev/null +++ b/crates/bevy_gltf_blueprints/LICENCE.md @@ -0,0 +1,4 @@ +This crate is available under either: + +* The [MIT License](./LICENSE_MIT) +* The [Apache License, Version 2.0](./LICENSE_APACHE) \ No newline at end of file diff --git a/crates/bevy_gltf_blueprints/LICENSE_APACHE.md b/crates/bevy_gltf_blueprints/LICENSE_APACHE.md new file mode 100644 index 0000000..f748977 --- /dev/null +++ b/crates/bevy_gltf_blueprints/LICENSE_APACHE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [2023] [Mark "kaosat-dev" Moissette] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/crates/bevy_gltf_blueprints/LICENSE_MIT.md b/crates/bevy_gltf_blueprints/LICENSE_MIT.md new file mode 100644 index 0000000..f8b9094 --- /dev/null +++ b/crates/bevy_gltf_blueprints/LICENSE_MIT.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Mark "kaosat-dev" Moissette + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/crates/bevy_gltf_blueprints/README.md b/crates/bevy_gltf_blueprints/README.md new file mode 100644 index 0000000..3f6eda2 --- /dev/null +++ b/crates/bevy_gltf_blueprints/README.md @@ -0,0 +1,146 @@ +[![Crates.io](https://img.shields.io/crates/v/bevy_gltf_blueprints)](https://crates.io/crates/bevy_gltf_blueprints) +[![Docs](https://img.shields.io/docsrs/bevy_gltf_blueprints)](https://docs.rs/bevy_gltf_blueprints/latest/bevy_gltf_blueprints/) +[![License](https://img.shields.io/crates/l/bevy_gltf_blueprints)](https://github.com/kaosat-dev/Blender_bevy_components_worklflow/blob/main/crates/bevy_gltf_blueprints/License.md) +[![Bevy tracking](https://img.shields.io/badge/Bevy%20tracking-released%20version-lightblue)](https://github.com/bevyengine/bevy/blob/main/docs/plugins_guidelines.md#main-branch-tracking) + +# bevy_gltf_blueprints + +Built upon [bevy_gltf_components](https://crates.io/crates/bevy_gltf_components) this crate adds the ability to define Blueprints/Prefabs for [Bevy](https://bevyengine.org/) inside gltf files and spawn them in Bevy. + +A blueprint is a set of **overrideable** components + a hierarchy: ie + + * just a Gltf file with Gltf_extras specifying components + * a component called BlueprintName + +Particularly useful when using [Blender](https://www.blender.org/) as an editor for the [Bevy](https://bevyengine.org/) game engine, combined with the [Blender plugin](https://github.com/kaosat-dev/Blender_bevy_components_worklflow/tree/main/tools/gltf_auto_export) that does a lot of the work for you + + +## Usage + +Here's a minimal usage example: + +```toml +# Cargo.toml +[dependencies] +bevy_gltf_blueprints = { version = "0.1.0"} + +``` + +```rust no_run +use bevy::prelude::*; +use bevy_gltf_blueprints::*; + +fn main() { + App::new() + .add_plugins(DefaultPlugins) + .add_plugin(BlueprintsPlugin) + + .run(); +} + +// not shown here: any other setup that is not specific to blueprints + +fn spawn_blueprint( + mut commands: Commands, + keycode: Res>, +){ + if keycode.just_pressed(KeyCode::S) { + let new_entity = commands.spawn(( + BlueprintName("Health_Pickup".to_string()), // mandatory !! + SpawnHere, // mandatory !! + TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), // VERY important !! + // any other component you want to insert + )); + } +} +``` + +## Setup + +- configure your "library"/"blueprints" path: + advanced/models/library/ + +## Spawning entities from blueprints + +You can spawn entities from blueprints like this: +```rust no_run +commands.spawn(( + BlueprintName("Health_Pickup".to_string()), // mandatory !! + SpawnHere, // mandatory !! + TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), // VERY important !! + // any other component you want to insert +)) + +``` + +Once spawning of the actual entity is done, the spawned Blueprint will be *gone/merged* with the contents of Blueprint ! + +> Important : +you can **add** or **override** components present inside your Blueprint when spawning the BluePrint itself: ie + +### Adding components not specified inside the blueprint + +you can just add any additional components you need when spawning : + +```rust no_run +commands.spawn(( + BlueprintName("Health_Pickup".to_string()), + SpawnHere, + TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), + // from Rapier/bevy_xpbd: this means the entity will also have a velocity component when inserted into the world + Velocity { + linvel: Vec3::new(vel_x, vel_y, vel_z), + angvel: Vec3::new(0.0, 0.0, 0.0), + }, +)) + +``` +### Overriding components specified inside the blueprint + +any component you specify when spawning the Blueprint that is also specified **within** the Blueprint will **override** that component in the final spawned entity + +for example +```rust no_run +commands.spawn(( + BlueprintName("Health_Pickup".to_string()), + SpawnHere, + TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), + HealthPowerUp(20)// if this is component is also present inside the "Health_Pickup" blueprint, that one will be replaced with this component during spawning +)) + +``` + +### BluePrintBundle + +There is also a bundle for convenience , which just has + * a ```BlueprintName``` component + * a ```SpawnHere``` component + * a ```TransformBundle``` sub-bundle (so we know where to spawn) + +[```BluePrintBundle```](./src/lib.rs#22) + + +## SystemSet + +the ordering of systems is very important ! + +For example to replace your proxy components (stand-in components when you cannot/ do not want to use real components in the gltf file) with actual ones, which should happen **AFTER** the Blueprint based spawning, + +so ```bevy_gltf_blueprints``` provides a **SystemSet** for that purpose:[```GltfBlueprintsSet```](./src/lib.rs#16) + +Typically , the order of systems should be + +***bevy_gltf_components (GltfComponentsSet::Injection)*** => ***bevy_gltf_blueprints (GltfBlueprintsSet::Spawn, GltfBlueprintsSet::AfterSpawn)*** => ***replace_proxies*** + +see https://github.com/kaosat-dev/Blender_bevy_components_worklflow/tree/main/examples/advanced for how to set it up correctly + +## Examples + +https://github.com/kaosat-dev/Blender_bevy_components_worklflow/tree/main/examples/advanced + +## License + +This crate, all its code, contents & assets is Dual-licensed under either of + +- Apache License, Version 2.0, ([LICENSE-APACHE](./LICENSE_APACHE.md) or https://www.apache.org/licenses/LICENSE-2.0) +- MIT license ([LICENSE-MIT](./LICENSE_MIT.md) or https://opensource.org/licenses/MIT) \ No newline at end of file diff --git a/crates/bevy_gltf_blueprints/src/clone_entity.rs b/crates/bevy_gltf_blueprints/src/clone_entity.rs new file mode 100644 index 0000000..3702863 --- /dev/null +++ b/crates/bevy_gltf_blueprints/src/clone_entity.rs @@ -0,0 +1,66 @@ +use bevy::prelude::*; +use bevy::ecs::system::Command; + +// modified version from https://github.com/bevyengine/bevy/issues/1515, +// more specifically https://gist.github.com/nwtnni/85d6b87ae75337a522166c500c9a8418 +// to work with Bevy 0.11 +pub struct CloneEntity { + pub source: Entity, + pub destination: Entity, +} + +impl CloneEntity { + // Copy all components from an entity to another. + // Using an entity with no components as the destination creates a copy of the source entity. + // Panics if: + // - the components are not registered in the type registry, + // - the world does not have a type registry + // - the source or destination entity do not exist + fn clone_entity(self, world: &mut World) { + let components = { + let registry = world.get_resource::().unwrap().read(); + + world + .get_entity(self.source) + .unwrap() + .archetype() + .components() + .map(|component_id| { + world + .components() + .get_info(component_id) + .unwrap() + .type_id() + .unwrap() + }) + .map(|type_id| { + // println!("type_id {:?}", type_id); + registry + .get(type_id) + .unwrap() + .data::() + .unwrap() + .clone() + }) + .collect::>() + }; + + for component in components { + let source = component + .reflect(world.get_entity(self.source).unwrap()) + .unwrap() + .clone_value(); + + let mut destination = world.get_entity_mut(self.destination).unwrap(); + + component.apply_or_insert(&mut destination, &*source); + } + } +} + +// This allows the command to be used in systems +impl Command for CloneEntity { + fn apply(self, world: &mut World) { + self.clone_entity(world) + } +} \ No newline at end of file diff --git a/crates/bevy_gltf_blueprints/src/lib.rs b/crates/bevy_gltf_blueprints/src/lib.rs new file mode 100644 index 0000000..dac0f4e --- /dev/null +++ b/crates/bevy_gltf_blueprints/src/lib.rs @@ -0,0 +1,90 @@ + +pub mod spawn_from_blueprints; +use bevy_gltf_components::GltfComponentsSet; +pub use spawn_from_blueprints::*; + +pub mod spawn_post_process; +pub use spawn_post_process::*; + +pub mod clone_entity; +pub use clone_entity::*; + +use bevy::prelude::*; + +#[derive(SystemSet, Debug, Hash, PartialEq, Eq, Clone)] +/// set for the two stages of blueprint based spawning : +pub enum GltfBlueprintsSet{ + Spawn, + AfterSpawn, +} + +#[derive(Bundle)] +pub struct BluePrintBundle { + pub blueprint: BlueprintName, + pub spawn_here: SpawnHere, + pub transform: TransformBundle +} +impl Default for BluePrintBundle { + fn default() -> Self { + BluePrintBundle { + blueprint: BlueprintName("default".into()), + spawn_here: SpawnHere, + transform: TransformBundle::default() + } + } +} + + +#[derive(Clone, Resource)] +pub(crate) struct BluePrintsConfig { + pub(crate) library_folder: String, +} + +#[derive(Debug, Clone)] +pub struct BlueprintsPlugin { + /// The base folder where library/blueprints assets are loaded from, relative to the executable. + pub library_folder: String, +} + +impl Default for BlueprintsPlugin { + fn default() -> Self { + Self { + library_folder: "assets/models/library".to_string(), + } + } +} + +impl Plugin for BlueprintsPlugin { + fn build(&self, app: &mut App) { + app + .register_type::() + .register_type::() + .insert_resource(BluePrintsConfig{library_folder: self.library_folder.clone()}) + + .configure_sets( + Update, + (GltfBlueprintsSet::Spawn, GltfBlueprintsSet::AfterSpawn).chain().after(GltfComponentsSet::Injection) + ) + + .add_systems(Update, + (spawn_from_blueprints) + // .run_if(in_state(AppState::AppRunning).or_else(in_state(AppState::LoadingGame))) // FIXME: how to replace this with a crate compatible version ? + .in_set(GltfBlueprintsSet::Spawn), + ) + + .add_systems( + Update, + ( + // spawn_entities, + update_spawned_root_first_child, + apply_deferred, + cleanup_scene_instances, + apply_deferred, + ) + .chain() + // .run_if(in_state(AppState::LoadingGame).or_else(in_state(AppState::AppRunning))) // FIXME: how to replace this with a crate compatible version ? + .in_set(GltfBlueprintsSet::AfterSpawn), + ) + ; + } +} \ No newline at end of file diff --git a/crates/bevy_gltf_blueprints/src/spawn_from_blueprints.rs b/crates/bevy_gltf_blueprints/src/spawn_from_blueprints.rs new file mode 100644 index 0000000..9f9118c --- /dev/null +++ b/crates/bevy_gltf_blueprints/src/spawn_from_blueprints.rs @@ -0,0 +1,81 @@ +use bevy::{prelude::*, gltf::Gltf}; + +use crate::BluePrintsConfig; + +/// this is a flag component for our levels/game world +#[derive(Component)] +pub struct GameWorldTag; + +/// Main component for the blueprints +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub struct BlueprintName(pub String); + +/// flag component needed to signify the intent to spawn a Blueprint +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub struct SpawnHere; + +#[derive(Component)] +/// FlagComponent for spawned entity +pub struct Spawned; + + +#[derive(Component)] +/// helper component, just to transfer some data +pub(crate) struct Original(pub Entity); + +#[derive(Component)] +/// FlagComponent for dynamically spawned scenes +pub struct SpawnedRoot; + +/// main spawning functions, +/// * also takes into account the already exisiting "override" components, ie "override components" > components from blueprint +pub(crate) fn spawn_from_blueprints( + spawn_placeholders: Query<(Entity, &Name, &BlueprintName, &Transform), (Added, Added, Without, Without)>, + + mut commands: Commands, + mut game_world: Query<(Entity, &Children), With>, + + assets_gltf: Res>, + asset_server: Res, + blueprints_config: Res +){ + + for (entity, name, blupeprint_name, global_transform) in spawn_placeholders.iter() { + info!("need to spawn {:?}", blupeprint_name.0); + let what = &blupeprint_name.0; + let model_path = format!("{}/{}.glb", &blueprints_config.library_folder, &what); // FIXME: needs to be platform agnostic + let scene:Handle = asset_server.load(&model_path); + // let scene = game_assets.models.get(&model_path).expect(&format!("no matching model {:?} found", model_path)); + info!("attempting to spawn {:?}",model_path); + + let world = game_world.single_mut(); + let world = world.1[0]; // FIXME: dangerous hack because our gltf data have a single child like this, but might not always be the case + + let gltf = assets_gltf.get(&scene).expect("this gltf should have been loaded"); + // WARNING we work under the assumtion that there is ONLY ONE named scene, and that the first one is the right one + let main_scene_name =gltf.named_scenes.keys().nth(0).expect("there should be at least one named scene in the gltf file to spawn"); + let scene = &gltf.named_scenes[main_scene_name]; + + + //spawn_requested_events.send(SpawnRequestedEvent { what: "enemy".into(), position, amount: 1, spawner_id: None }); + let child_scene = commands.spawn( + ( + SceneBundle { + scene: scene.clone(), + transform: global_transform.clone(), + ..Default::default() + }, + bevy::prelude::Name::from(["scene_wrapper", &name.clone()].join("_") ), + // Parent(world) // FIXME/ would be good if this worked directly + SpawnedRoot, + /*AnimationHelper{ // TODO: insert this at the ENTITY level, not the scene level + named_animations: gltf.named_animations.clone(), + // animations: gltf.named_animations.values().clone() + },*/ + Original(entity) + )).id(); + commands.entity(world).add_child(child_scene); + } +} \ No newline at end of file diff --git a/crates/bevy_gltf_blueprints/src/spawn_post_process.rs b/crates/bevy_gltf_blueprints/src/spawn_post_process.rs new file mode 100644 index 0000000..2c49d34 --- /dev/null +++ b/crates/bevy_gltf_blueprints/src/spawn_post_process.rs @@ -0,0 +1,136 @@ +use bevy::prelude::*; +use bevy::utils::HashMap; + +use super::{CloneEntity, SpawnHere}; +use super::{Original, SpawnedRoot}; + + +// FIXME: move to more relevant module +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub struct AnimationHelper { + pub named_animations: HashMap>, +} + +#[derive(Component)] +/// FlagComponent for dynamically spawned scenes +pub(crate) struct SpawnedRootProcessed; + + + +/// this system updates the first (and normally only) child of a scene flaged SpawnedRoot +/// - adds a name based on parent component (spawned scene) which is named on the scene name/prefab to be instanciated +/// - adds the initial physics impulse (FIXME: we would need to add a temporary physics component to those who do not have it) +// FIXME: updating hierarchy does not work in all cases ! this is sadly dependant on the structure of the exported blend data, disablin for now +// - blender root-> object with properties => WORKS +// - scene instance -> does not work +// it might be due to how we add components to the PARENT item in gltf to components +pub(crate) fn update_spawned_root_first_child( + // all_children: Query<(Entity, &Children)>, + unprocessed_entities :Query<(Entity, &Children, &Name, &Parent, &Original ), (With, Without)>, + mut commands: Commands, + + // FIXME: should be done at a more generic gltf level + animation_helpers: Query<&AnimationHelper>, + added_animation_helpers : Query<(Entity, &AnimationPlayer), Added> +){ + /* + currently we have + - scene instance + - root node ? + - the actual stuff + we want to remove the root node + so we wend up with + - scene instance + - the actual stuff + + so + - get root node + - add its children to the scene instance + - remove root node + + Another issue is, the scene instance become empty if we have a pickabke as the "actual stuff", so that would lead to a lot of + empty scenes if we spawn pickables + - perhaps another system that cleans up empty scene instances ? + + FIME: this is all highly dependent on the hierachy ;.. + */ + + for (scene_instance, children, name, parent, original) in unprocessed_entities.iter() { + println!("children of scene {:?}", children); + if children.len() == 0 { + continue; + } + // the root node is the first & normally only child inside a scene, it is the one that has all relevant components + let root_entity = children.first().unwrap(); //FIXME: and what about childless ones ?? + // let root_entity_data = all_children.get(*root_entity).unwrap(); + + // fixme : randomization should be controlled via parameters, perhaps even the seed could be specified ? + // use this https://rust-random.github.io/book/guide-seeding.html#a-simple-number, blenders seeds are also uInts + // also this is not something we want every time, this should be a settable parameter when requesting a spawn + + + // add missing name of entity, based on the wrapper's name + let name= name.clone().replace("scene_wrapper_", ""); + + // this is our new actual entity + commands.entity(*root_entity).insert(( + bevy::prelude::Name::from(name.clone()), + // ItemType {name}, + // Spawned, // FIXME: not sure + )); + + // flag the spawned_root as being processed + commands.entity(scene_instance).insert(SpawnedRootProcessed); + + + // let original_transforms = + // parent is either the world or an entity with a marker (BlueprintName) + commands.entity(parent.get()).add_child(*root_entity); + // commands.entity(*root_entity).despawn_recursive(); + // commands.entity(parent.get()).push_children(&actual_stuff); + //commands.entity(*root_entity).log_components(); + + let matching_animation_helper = animation_helpers.get(scene_instance); + + // println!("WE HAVE SOME ADDED ANIMATION PLAYERS {:?}", matching_animation_helper); + if let Ok(anim_helper) = matching_animation_helper{ + for (added, _) in added_animation_helpers.iter(){ + commands.entity(added).insert( + AnimationHelper{ // TODO: insert this at the ENTITY level, not the scene level + named_animations: anim_helper.named_animations.clone(), + // animations: gltf.named_animations.values().clone() + }, + ); + } + } + + commands.add(CloneEntity { + source: original.0, + destination: *root_entity, + }); + + // remove the original entity, now that we have cloned it into the spawned scenes first child + commands.entity(original.0).despawn_recursive(); + commands.entity(*root_entity).remove::(); + } +} + +/// cleans up dynamically spawned scenes so that they get despawned if they have no more children +// FIXME: this can run too early , and since withouth_children matches not yet completed scene instances, boom, it removes components/children before they can be used +pub(crate) fn cleanup_scene_instances( + scene_instances: Query<(Entity, &Children), With>, + without_children: Query, Without)>,// if there are not children left, bevy removes Children ? + mut commands: Commands +){ + for (entity, children) in scene_instances.iter(){ + if children.len() == 0{ // it seems this does not happen ? + info!("cleaning up emptied spawned scene instance"); + commands.entity(entity).despawn_recursive(); + } + } + for entity in without_children.iter() { + info!("cleaning up emptied spawned scene instance"); + commands.entity(entity).despawn_recursive(); + } +} diff --git a/crates/bevy_gltf_components/Cargo.toml b/crates/bevy_gltf_components/Cargo.toml new file mode 100644 index 0000000..a596ab3 --- /dev/null +++ b/crates/bevy_gltf_components/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "bevy_gltf_components" +version = "0.1.0" +authors = ["Mark 'kaosat-dev' Moissette"] +description = "Allows you to define [Bevy](https://bevyengine.org/) components direclty inside gltf files and instanciate the components on the Bevy side." +homepage = "https://github.com/kaosat-dev/Blender_bevy_components_worklflow" +repository = "https://github.com/kaosat-dev/Blender_bevy_components_worklflow" +keywords = ["gamedev", "bevy", "assets", "gltf", "components"] +categories = ["game-development"] +edition = "2021" +license = "MIT OR Apache-2.0" + +[dev-dependencies] +bevy="0.11.2" + +[dependencies] +bevy = { version = "0.11.2", default-features = false, features = ["bevy_asset", "bevy_scene", "bevy_gltf"] } +serde = "1.0.188" +ron="0.8.1" diff --git a/crates/bevy_gltf_components/LICENCE.md b/crates/bevy_gltf_components/LICENCE.md new file mode 100644 index 0000000..ad21aac --- /dev/null +++ b/crates/bevy_gltf_components/LICENCE.md @@ -0,0 +1,4 @@ +This crate is available under either: + +* The [MIT License](./LICENSE_MIT) +* The [Apache License, Version 2.0](./LICENSE_APACHE) \ No newline at end of file diff --git a/crates/bevy_gltf_components/LICENSE_APACHE.md b/crates/bevy_gltf_components/LICENSE_APACHE.md new file mode 100644 index 0000000..f748977 --- /dev/null +++ b/crates/bevy_gltf_components/LICENSE_APACHE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [2023] [Mark "kaosat-dev" Moissette] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/crates/bevy_gltf_components/LICENSE_MIT.md b/crates/bevy_gltf_components/LICENSE_MIT.md new file mode 100644 index 0000000..f8b9094 --- /dev/null +++ b/crates/bevy_gltf_components/LICENSE_MIT.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Mark "kaosat-dev" Moissette + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/crates/bevy_gltf_components/README.md b/crates/bevy_gltf_components/README.md new file mode 100644 index 0000000..fd76281 --- /dev/null +++ b/crates/bevy_gltf_components/README.md @@ -0,0 +1,83 @@ +[![Crates.io](https://img.shields.io/crates/v/bevy_gltf_components)](https://crates.io/crates/bevy_gltf_components) +[![Docs](https://img.shields.io/docsrs/bevy_gltf_components)](https://docs.rs/bevy_gltf_components/latest/bevy_gltf_components/) +[![License](https://img.shields.io/crates/l/bevy_gltf_components)](https://github.com/kaosat-dev/Blender_bevy_components_worklflow/blob/main/crates/bevy_gltf_components/License.md) +[![Bevy tracking](https://img.shields.io/badge/Bevy%20tracking-released%20version-lightblue)](https://github.com/bevyengine/bevy/blob/main/docs/plugins_guidelines.md#main-branch-tracking) + + +# bevy_gltf_components + +This crate allows you to define [Bevy](https://bevyengine.org/) components direclty inside gltf files and instanciate the components on the Bevy side. + +## Usage + +***important*** : the plugin for processing gltf files runs in ***update*** , so you cannot use the components directly if you spawn your scene from gltf in ***setup*** (the additional components will not show up) + +Please see the + * [example](https://github.com/kaosat-dev/Blender_bevy_components_worklflow/examples/basic) + * or use [```bevy_asset_loader```](https://github.com/NiklasEi/bevy_asset_loader) for a reliable workflow. + * alternatively, use the [```bevy_gltf_blueprints```](https://github.com/kaosat-dev/Blender_bevy_components_worklflow/blob/main/crates/bevy_gltf_blueprints) crate, build on this crate's features, + that allows you to directly spawn entities from gltf based blueprints. + +Here's a minimal usage example: + +```toml +# Cargo.toml +[dependencies] +bevy="0.11.2" +bevy_gltf_components = { version = "0.1.0"} + +``` + +```rust no_run +//too barebones of an example to be meaningfull, please see https://github.com/kaosat-dev/Blender_bevy_components_worklflow/examples/basic for a real example + fn main() { + App::new() + .add_plugins(DefaultPlugins) + .add_plugin(ComponentsFromGltfPlugin) + .add_system(spawn_level) + .run(); + } + + fn spawn_level( + asset_server: Res, + mut commands: bevy::prelude::Commands, + keycode: Res>, + + ){ + if keycode.just_pressed(KeyCode::Return) { + commands.spawn(SceneBundle { + scene: asset_server.load("basic/models/level1.glb#Scene0"), + transform: Transform::from_xyz(2.0, 0.0, -5.0), + ..Default::default() + }); + } +} + +``` + + +## SystemSet + +the ordering of systems is very important ! + +For example to replace your proxy components (stand-in components when you cannot/ do not want to use real components in the gltf file) with actual ones, + +which should happen **AFTER** the components from the gltf files have been injected, + +so ```bevy_gltf_components``` provides a **SystemSet** for that purpose:[```GltfComponentsSet```](./src/lib.rs#46) + +Typically , the order of systems should be + +***bevy_gltf_components (GltfComponentsSet::Injection)*** => ***replace_proxies*** + +## Examples + +https://github.com/kaosat-dev/Blender_bevy_components_worklflow/tree/main/examples/basic + + +## License + +This crate, all its code, contents & assets is Dual-licensed under either of + +- Apache License, Version 2.0, ([LICENSE-APACHE](./LICENSE_APACHE.md) or https://www.apache.org/licenses/LICENSE-2.0) +- MIT license ([LICENSE-MIT](./LICENSE_MIT.md) or https://opensource.org/licenses/MIT) \ No newline at end of file diff --git a/src/gltf_to_components.rs b/crates/bevy_gltf_components/src/gltf_to_components.rs similarity index 95% rename from src/gltf_to_components.rs rename to crates/bevy_gltf_components/src/gltf_to_components.rs index 515cb2e..afcca23 100644 --- a/src/gltf_to_components.rs +++ b/crates/bevy_gltf_components/src/gltf_to_components.rs @@ -13,6 +13,7 @@ use bevy::gltf::{Gltf, GltfExtras}; use super::capitalize_first_letter; +/// main function: injects components into each entity in gltf files that have gltf_extras, using reflection pub fn gltf_extras_to_components( gltf: &mut Gltf, scenes: &mut ResMut>, @@ -21,7 +22,7 @@ pub fn gltf_extras_to_components( ){ let mut added_components = 0; for (_name, scene) in &gltf.named_scenes { - info!("gltf: {:?} scene name {:?}", gltf_name, _name); + debug!("gltf: {:?} scene name {:?}", gltf_name, _name); let scene = scenes.get_mut(scene).unwrap(); @@ -49,7 +50,6 @@ pub fn gltf_extras_to_components( if entity_components.contains_key(&target_entity) { let mut updated_components: Vec> = Vec::new(); let current_components = &entity_components[&target_entity]; - // first inject the current components for component in current_components { updated_components.push(component.clone_value()); @@ -74,7 +74,6 @@ pub fn gltf_extras_to_components( debug!("-----value {:?}", &extras.value); } - // println!("FOUND ASSET {:?}", foob); // GltfNode // find a way to link this name to the current entity ? => WOULD BE VERY USEFULL for animations & co !! debug!("done pre-processing components, now adding them to entities"); @@ -98,10 +97,9 @@ pub fn gltf_extras_to_components( // scene.world.components(). // TODO: how can we insert any additional components "by hand" here ? } - let entity_mut = scene.world.entity_mut(entity); - let archetype = entity_mut.archetype().clone(); - let _all_components = archetype.components(); - // println!("All components {:?}", all_components); + // let entity_mut = scene.world.entity_mut(entity); + // let archetype = entity_mut.archetype().clone(); + // let _all_components = archetype.components(); if added_components > 0 { debug!("------done adding {} components", added_components); @@ -120,7 +118,6 @@ pub fn gltf_extras_to_components( for (key, value) in lookup.into_iter() { let type_string = key.replace("component: ", "").trim().to_string(); let capitalized_type_name = capitalize_first_letter(type_string.as_str()); - // println!("capitalized_type_name {}", capitalized_type_name); let mut parsed_value:String; match value.clone() { @@ -140,8 +137,6 @@ pub fn gltf_extras_to_components( if info.field_len() == 1 { let field = info.field_at(0).expect("we should always have at least one field here"); let field_name = field.type_name(); - // println!("field name {}", field_name); - // let bla = TypeId::of::(); // TODO: find a way to cast with typeId instead of this matching /*match field.type_id(){ TypeId::of::() => { diff --git a/crates/bevy_gltf_components/src/lib.rs b/crates/bevy_gltf_components/src/lib.rs new file mode 100644 index 0000000..00bfdc1 --- /dev/null +++ b/crates/bevy_gltf_components/src/lib.rs @@ -0,0 +1,74 @@ +pub mod utils; +pub use utils::*; + +pub mod gltf_to_components; +pub use gltf_to_components::*; + +pub mod process_gltfs; +pub use process_gltfs::*; + +use bevy::prelude::{ + App,Plugin, Update, SystemSet, IntoSystemConfigs +}; + + +/// A Bevy plugin for extracting components from gltf files and automatically adding them to the relevant entities +/// It will automatically run every time you load a gltf file +/// Add this plugin to your Bevy app to get access to this feature +/// ``` +/// # use bevy::prelude::*; +/// # use bevy::gltf::*; +/// # use bevy_gltf_components::ComponentsFromGltfPlugin; +/// +/// //too barebones of an example to be meaningfull, please see https://github.com/kaosat-dev/Blender_bevy_components_worklflow/examples/basic for a real example +/// fn main() { +/// App::new() +/// .add_plugins(DefaultPlugins) +/// .add_plugin(ComponentsFromGltfPlugin) +/// .add_system(spawn_level) +/// .run(); +/// } +/// +/// fn spawn_level( +/// asset_server: Res, +/// mut commands: bevy::prelude::Commands, +/// keycode: Res>, + +/// ){ +/// if keycode.just_pressed(KeyCode::Return) { +/// commands.spawn(SceneBundle { +/// scene: asset_server.load("basic/models/level1.glb#Scene0"), +/// transform: Transform::from_xyz(2.0, 0.0, -5.0), +/// ..Default::default() +/// }); +/// } +///} +/// ``` + + +#[derive(SystemSet, Debug, Hash, PartialEq, Eq, Clone)] +/// systemset to order your systems after the component injection when needed +pub enum GltfComponentsSet{ + Injection, +} + + +#[derive(Default)] +pub struct ComponentsFromGltfPlugin; +impl Plugin for ComponentsFromGltfPlugin { + fn build(&self, app: &mut App) { + app + .insert_resource(GltfLoadingTracker::new()) + + .add_systems(Update, ( + track_new_gltf, + process_loaded_scenes, + )) + + .add_systems(Update, + (process_loaded_scenes) + .in_set(GltfComponentsSet::Injection) + ) + ; + } +} diff --git a/src/process_gltfs.rs b/crates/bevy_gltf_components/src/process_gltfs.rs similarity index 96% rename from src/process_gltfs.rs rename to crates/bevy_gltf_components/src/process_gltfs.rs index c57912a..dce20d4 100644 --- a/src/process_gltfs.rs +++ b/crates/bevy_gltf_components/src/process_gltfs.rs @@ -5,7 +5,8 @@ use bevy::gltf::Gltf; use super::gltf_extras_to_components; #[derive(Resource)] - pub struct GltfLoadingTracker{ +/// component to keep track of gltfs' loading state +pub struct GltfLoadingTracker{ pub loading_gltfs: HashSet>, pub loaded_gltfs: HashSet> } diff --git a/src/utils.rs b/crates/bevy_gltf_components/src/utils.rs similarity index 100% rename from src/utils.rs rename to crates/bevy_gltf_components/src/utils.rs diff --git a/docs/blender_addon_install2.png b/docs/blender_addon_install2.png index de1db1bbc3206558c7cf6e2ebb9a84bc61a553b2..6b81a22a52dde683a9d14bb596b89fe0a4134775 100644 GIT binary patch literal 65661 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 z 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 F{|74@VGaNQ literal 78912 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 literal 0 HcmV?d00001 diff --git a/docs/exported_library_files.png b/docs/exported_library_files.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ca8fbcf0642b1c394a746fc39c809ba78a68e4 GIT binary patch literal 15627 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

g1RQ|Hj4^`ts#e zQ&J)SE@Ye?j`q#~A1yL=11tejl2^tySt-o>l;C(B+J};SY89SF{aZ-;S^1;A8(D}w z|1b>Ffw5$GC9S+zI z${0!xaHOG6pAv7b{iGN*R8(RC~n3|f3%#^a2zoN2R+S6jYvdw}FyjD#BgF<_w z00bar)eL2>X=1FVPbtH;ZQB5N0`qQwKL~zR=+iABj%w@cZw-&ZS)YR)A(eD@gQ_EH zT)Ee{Rok!PIN;l^t}f>cDEm~*fuO#(Wz=X|U?2YEZgM*bP&v3qYhOoHS~JpzTXrlt z^JrzX?BOqoK~8U|t)il$NE*t@ZZJHETzL6nu<}3bc35N@&j|3d-8s>a8=SF?@)#nm z+4vGd#$T%bvc66Xp8BDK9|9`xyNm98QHw~5csncu5H-(*OnV3IK}6;j;+8Lz7(d9! z$ep@cJO@anvNjo=QWq}NxDFr+_^hEfX`_L5g?h;TA!gGvlKWF)4;AZso(VJt^!^|r zUpYA}9}QPhWn?xO56y$JPSXd^2^L}TbPODhiMN~=_^$6yqDB|3!Me!*7j6BgWS{!U zdh!^cY~UV3z**0*m;&Y=U>2dGizfaYp+mSbh+BX%;juXhtzAiFdVFEvuH(kme)?o% zWdVae>(@3Uz`AeW^=+#_NrbV(&I&vtssp4&jvJAaB!2V3jT`QA_@8^CDQQ*^HZ7Qr ztgN)ZU)??=z+W@)cs*n|nIUs|l0?{ot?4Q@3)+vUGm+U;EK7xbhD?%!nVLL;LXuKM zRv-P9(Gxn*^WYsfdL%wpeoXzk?lyq?2Xkw0Y*;};ehQE^EW?qLQ(D3z3vzz|4yxMJ z<;lvx=wrpCsoRKY@o5926d;OGsC2*-1+(A3??)Kc&m*5XvLp2M43mEmC74oBss%@4ulqPJ zY;kz;sJ{|}GM?k8y`rL_t(^+uGgxJw&(y%MW8wvH;SGP= zx*aSQPaNHvQex?7)iyGsSgaw!H?n4g2m0HeJlPlI(?<`^OCn@G)Mx^wHb&>Ya`%Oj zS+@1Sz<}tD4?8biz6>ukRbQ*ggEtU>PlK0NTA;)s>U43uT>%eep970TV@uk-dl$l^ zhC$s{`~$<1g?(~w&DPf5j``8qH-Kiz2@ zp(}!3a?^>#nY>sTFs?#8or3VDr70H%y&8f~06#R8)>_kSw~}&?WgGOCT@n1M(^v}^ zbpG;1M{AjB{eZ!BY7p?|MLDv%`ZJ7GSKs!BP@A#J^L;L)lO8`Wx9h({UQ!guqh{x@ z=-n6u~rXos6CmrqoFeJs4}$p+Y(90Cxnipv zU&p!__x?d(r5s^J<-8;$)n&*Jv+%mg*}?y^sQD3o3`l#z3I!R!no3g^h+q-WR8o3e zwmzqT+&SRp)d2zz#OV;QYB-Iz)qtI?uM7vWks7?3BZ~o{x+R254P{JF$pOgJ9ogX^ z3f7R1A3mHsefkLKPjg2jm1pyh1Zr2|Bgh7EWd_KY&JAM-X}nA zwRH-GL!W`J@9#3GxIfUxK>pXY$nfy+NNe6hghp2_5In!P%;}a6P92Cn{VbFe^qf`P z>ki2LZ%BGqZF`1Hi-o_t|F-^*LDlX*f-3ia234+V_1|yZQ{UxjRtCTXG*AEy!m%%S zaHz5sl!*mBZv-qQ>WM^B45lw<0}lH + + + + + + + + + + + + + + + + Original + + + + + + Object A(unique) + + Main Scene (world/level) + + + Object B1 (instance) + + + + Object C0 (instance) + + + + + + Object C1 (instance) + + + + Library Scene + + Object B: collection/ blueprint + + + Object C: collection/ blueprint + + + + Transform Step + + + + + + Object A(unique) + + Temporary Scene (world/level) + + + Object B1 (Empty)+ blueprintName("ObjectB")+ spawnHere + + + + Object C0 (Empty)+ blueprintName("ObjectC")+ spawnHere + + + + + + Object C1 (Empty)+ blueprintName("ObjectC")+ spawnHere + + + + Determine used Collections to export + + Object B + + Object C + + + Result + + + + + Entity A(unique) + + + world/level.gltf + + + Entity B1+ blueprintName("ObjectB")+ spawnHere + + + + Entity C0+ blueprintName("ObjectC")+ spawnHere + + + + + + Entity C1+ blueprintName("ObjectC")+ spawnHere + + + + Library of gltf files (one per Collection/Blueprint) + + Object B.gltf + blueprintName("ObjectB") + + Object C:.gltf + blueprintName("ObjectC") + + + Object D: unused collection/ blueprint + + + + + + + diff --git a/docs/workflow_empties.jpg b/docs/workflow_empties.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eace6cb7369e9ec1445620a048578de39eec16f1 GIT binary patch literal 80600 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 literal 0 HcmV?d00001 diff --git a/docs/workflow_original.jpg b/docs/workflow_original.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4ca7d4e8bfbdefb4482ad79911d5aab7b0eb35d GIT binary patch literal 88302 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�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 we need to be able to only save the camera position (and name) +- [ ] only spawn "new level" stuff when transitioning from menu to game ? + - [ ] put more thoughts into this + +- [ ] rework how save-loading is triggered + - [ ] no hardcoded keypresses + - [ ] ability to choose what save to load ? + - [ ] take a look at bevy_moonshine_save + - [ ] move to system pipelines + +- [x] split Blueprints into a seperate crate: perhaps bevy_gltf_blueprints + - [x] how to deal with states that are not defined as part of the plugin/crate ? + - [x] same issue for the assets + +- [ ] support multiple main scenes in the blender plugin ? +- [ ] study possibilities of expanding the bevy & blender tooling side to define UIS + - likely using the blender data only as a placeholder/ directly replace in Python + +- system ordering ? + load level => inject components => spawn blueprint entities/rehydrate => (loading) => replace proxies + OR + load level => inject components => (loading) => spawn blueprint entities/rehydrate => replace proxies + +- perhaps it does make more sense to save ALL entities and not just the dynamic ones? mostly as we have the blueprints anyway, which should cut down on needed data ? + + +- different approaches for dealing with saving/loading + in particular the problem of entites that are defined as part of the level but can be despawned (items that get picked up etc) + + Bevy side + * var 1 : spawn all entities completely, despawn those saveables that are not actually present in the save data but that have been spawned + * problems: needs correct ordering of systems otherwise the diffing above will not work + * pros: minimal save files, only bevy boilerplate + * cons: requires spawning potentially huge gltf files just to "peek" inside of them to know if they are saveable + + + * var 2 : save both saveables & unsaveables but only save the absolute minimal data for unsaveables + * problems: how to combine different filters into a single save file ? + * pros: easier diffing, more homogeneous handling + * cons: a lot bigger save file with mostly useless data + + Blender side + + * var 3 => CHOSEN OPTION : mark INSTANCES in advance as static/dynamic (ie saveable or not), thus this data would be present in the world/level and not inside the gltf data + * problems: would require adding custom properties to each instance in Blender (COULD be automated by 'peeking' inside the collection) + * pros: simpler, and this might be more "editor-like" where you would mark each item as static or not + * cons: potentially a lot of manual work / error prone \ No newline at end of file diff --git a/examples/advanced/assets/assets_core.rs b/examples/advanced/assets/assets_core.rs new file mode 100644 index 0000000..52a4c16 --- /dev/null +++ b/examples/advanced/assets/assets_core.rs @@ -0,0 +1,7 @@ +use bevy::prelude::*; +use bevy_asset_loader::prelude::*; + +#[derive(AssetCollection, Resource)] +pub struct CoreAssets { + +} diff --git a/examples/advanced/assets/assets_game.rs b/examples/advanced/assets/assets_game.rs new file mode 100644 index 0000000..b7bb336 --- /dev/null +++ b/examples/advanced/assets/assets_game.rs @@ -0,0 +1,13 @@ +use bevy::gltf::Gltf; +use bevy::prelude::*; +use bevy::utils::HashMap; +use bevy_asset_loader::prelude::*; + +#[derive(AssetCollection, Resource)] +pub struct GameAssets { + #[asset(key = "world")] + pub world: Handle, + + #[asset(key = "models", collection(typed, mapped))] + pub models: HashMap>, +} diff --git a/examples/advanced/assets/mod.rs b/examples/advanced/assets/mod.rs new file mode 100644 index 0000000..a431113 --- /dev/null +++ b/examples/advanced/assets/mod.rs @@ -0,0 +1,34 @@ +pub mod assets_core; +pub use assets_core::*; + +pub mod assets_game; +pub use assets_game::*; + +use bevy::prelude::*; +use bevy_asset_loader::prelude::*; + +use crate::state::{AppState}; + +pub struct AssetsPlugin; +impl Plugin for AssetsPlugin { + fn build(&self, app: &mut App) { + app + // load core assets (ie assets needed in the main menu, and everywhere else before loading more assets in game) + .add_loading_state(LoadingState::new(AppState::CoreLoading).continue_to_state(AppState::MenuRunning)) + .add_dynamic_collection_to_loading_state::<_, StandardDynamicAssetCollection>( + AppState::CoreLoading, + "advanced/assets_core.assets.ron", + ) + .add_collection_to_loading_state::<_, CoreAssets>(AppState::CoreLoading) + + // load game assets + .add_loading_state(LoadingState::new(AppState::AppLoading).continue_to_state(AppState::AppRunning)) + .add_dynamic_collection_to_loading_state::<_, StandardDynamicAssetCollection>( + AppState::AppLoading, + "advanced/assets_game.assets.ron", + ) + .add_collection_to_loading_state::<_, GameAssets>(AppState::AppLoading) + + ; + } +} \ No newline at end of file diff --git a/examples/general/core/camera/camera_replace_proxies.rs b/examples/advanced/core/camera/camera_replace_proxies.rs similarity index 100% rename from examples/general/core/camera/camera_replace_proxies.rs rename to examples/advanced/core/camera/camera_replace_proxies.rs diff --git a/examples/general/core/camera/camera_tracking.rs b/examples/advanced/core/camera/camera_tracking.rs similarity index 100% rename from examples/general/core/camera/camera_tracking.rs rename to examples/advanced/core/camera/camera_tracking.rs diff --git a/examples/advanced/core/camera/mod.rs b/examples/advanced/core/camera/mod.rs new file mode 100644 index 0000000..28f3aaa --- /dev/null +++ b/examples/advanced/core/camera/mod.rs @@ -0,0 +1,26 @@ +pub mod camera_tracking; +pub use camera_tracking::*; + +pub mod camera_replace_proxies; +pub use camera_replace_proxies::*; + +use bevy::prelude::*; +use bevy_gltf_blueprints::GltfBlueprintsSet; + +pub struct CameraPlugin; +impl Plugin for CameraPlugin { + fn build(&self, app: &mut App) { + app + .register_type::() + .register_type::() + .register_type::() + + .add_systems(Update, + ( + camera_replace_proxies.after(GltfBlueprintsSet::AfterSpawn), + camera_track, + ) + ) + ; + } +} \ No newline at end of file diff --git a/examples/general/core/lighting/lighting_replace_proxies.rs b/examples/advanced/core/lighting/lighting_replace_proxies.rs similarity index 100% rename from examples/general/core/lighting/lighting_replace_proxies.rs rename to examples/advanced/core/lighting/lighting_replace_proxies.rs diff --git a/examples/general/core/lighting/mod.rs b/examples/advanced/core/lighting/mod.rs similarity index 100% rename from examples/general/core/lighting/mod.rs rename to examples/advanced/core/lighting/mod.rs diff --git a/examples/advanced/core/mod.rs b/examples/advanced/core/mod.rs new file mode 100644 index 0000000..4e40b44 --- /dev/null +++ b/examples/advanced/core/mod.rs @@ -0,0 +1,94 @@ +pub mod camera; +use bevy_rapier3d::prelude::Velocity; +pub use camera::*; + +pub mod lighting; +pub use lighting::*; + +pub mod relationships; +pub use relationships::*; + +pub mod physics; +pub use physics::*; + +// pub mod blueprints; +// pub use blueprints::*; + +pub mod save_load; +pub use save_load::*; + +use bevy::prelude::*; +use bevy_gltf_blueprints::*; + +use rand::Rng; + + +fn spawn_test( + keycode: Res>, + mut commands: Commands, + + mut game_world: Query<(Entity, &Children), With>, + + +) { + if keycode.just_pressed(KeyCode::T) { + let world = game_world.single_mut(); + let world = world.1[0]; + + let mut rng = rand::thread_rng(); + let range = 5.5; + let x: f32 = rng.gen_range(-range..range); + let y: f32 = rng.gen_range(-range..range); + + + let mut rng = rand::thread_rng(); + let range = 0.8; + let vel_x: f32 = rng.gen_range(-range..range); + let vel_y: f32 = rng.gen_range(2.0..2.5); + let vel_z: f32 = rng.gen_range(-range..range); + + + let name_index:u64 = rng.gen(); + + let new_entity = commands.spawn(( + BluePrintBundle{ + blueprint: BlueprintName("Health_Pickup".to_string()), + transform: TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), + ..Default::default() + }, + bevy::prelude::Name::from(format!("test{}", name_index)), + // BlueprintName("Health_Pickup".to_string()), + // SpawnHere, + // TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), + + Velocity { + linvel: Vec3::new(vel_x, vel_y, vel_z), + angvel: Vec3::new(0.0, 0.0, 0.0), + }, + )).id(); + commands.entity(world).add_child(new_entity); + } +} + +pub struct CorePlugin; +impl Plugin for CorePlugin { + fn build(&self, app: &mut App) { + app + .add_plugins(( + LightingPlugin, + CameraPlugin, + PhysicsPlugin, + SaveLoadPlugin, + BlueprintsPlugin{ + library_folder: "advanced/models/library".into() + } + )) + + // just for testing + .add_systems( + Update, + spawn_test + ) + ; + } +} diff --git a/examples/advanced/core/physics/controls.rs b/examples/advanced/core/physics/controls.rs new file mode 100644 index 0000000..9c88bba --- /dev/null +++ b/examples/advanced/core/physics/controls.rs @@ -0,0 +1,12 @@ +use bevy::prelude::{ResMut, info}; +use bevy_rapier3d::prelude::RapierConfiguration; + +pub fn pause_physics(mut physics_config: ResMut){ + info!("pausing physics"); + physics_config.physics_pipeline_active = false; +} + +pub fn resume_physics(mut physics_config: ResMut){ + info!("unpausing physics"); + physics_config.physics_pipeline_active = true; +} \ No newline at end of file diff --git a/examples/advanced/core/physics/mod.rs b/examples/advanced/core/physics/mod.rs new file mode 100644 index 0000000..58f8bc7 --- /dev/null +++ b/examples/advanced/core/physics/mod.rs @@ -0,0 +1,39 @@ +pub mod physics_replace_proxies; +pub use physics_replace_proxies::*; + +pub mod utils; + +pub mod controls; +pub use controls::*; + +use bevy::prelude::*; +use crate::state::GameState; +// use super::blueprints::GltfBlueprintsSet; +use bevy_gltf_blueprints::GltfBlueprintsSet; +// use crate::Collider; +pub struct PhysicsPlugin; +impl Plugin for PhysicsPlugin { + fn build(&self, app: &mut App) { + app + .register_type::() + .register_type::() + .register_type::() + + // find a way to make serde's stuff serializable + // .register_type::() + //bevy_rapier3d::dynamics::CoefficientCombineRule + + .add_systems(Update, physics_replace_proxies.after(GltfBlueprintsSet::AfterSpawn)) + + .add_systems( + OnEnter(GameState::InGame), + resume_physics + ) + .add_systems( + OnExit(GameState::InGame), + pause_physics + ) + ; + } +} + diff --git a/examples/advanced/core/physics/physics_replace_proxies.rs b/examples/advanced/core/physics/physics_replace_proxies.rs new file mode 100644 index 0000000..85bce84 --- /dev/null +++ b/examples/advanced/core/physics/physics_replace_proxies.rs @@ -0,0 +1,121 @@ +use bevy::prelude::*; +// use bevy::render::primitives::Aabb; +use bevy_rapier3d::geometry::Collider as RapierCollider; +use bevy_rapier3d::dynamics::RigidBody as RapierRigidBody; +use bevy_rapier3d::prelude::{ComputedColliderShape, ActiveEvents, ActiveCollisionTypes}; + +use super::utils::*; + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub enum RigidBodyProxy{ + #[default] + Dynamic, + Fixed, + Position, + Velocity +} + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub enum Collider { + Ball(f32), + Cuboid(Vec3), + Capsule(Vec3, Vec3, f32), + #[default] + Mesh, +} + + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub enum AutoAABBCollider { + #[default] + Cuboid, + Ball, + Capsule +} + +// replaces all physics stand-ins with the actual rapier types +pub fn physics_replace_proxies ( + meshes: Res>, + mesh_handles: Query<&Handle>, + // rigidbodies + proxy_rigidbodies: Query<(Entity, &RigidBodyProxy,), (Without, Added)>, + mut proxy_colliders: Query<(Entity, &Collider, &Name, &mut Visibility), (Without, Added)>, + // needed for tri meshes + children: Query<&Children>, + + mut commands: Commands, +) { + for proxy_colider in proxy_colliders.iter_mut() { + let (entity, collider_proxy, name, mut visibility) = proxy_colider; + // we hide the collider meshes: perhaps they should be removed altogether once processed ? + if name.ends_with( "_collider" ) || name.ends_with( "_sensor" ) { + *visibility = Visibility::Hidden; + } + + let mut rapier_collider:RapierCollider; + match collider_proxy{ + Collider::Ball(radius) => { + info!("generating collider from proxy: ball"); + rapier_collider = RapierCollider::ball(*radius); + commands.entity(entity) + .insert(rapier_collider) + .insert(ActiveEvents::COLLISION_EVENTS) // FIXME: this is just for demo purposes !!! + ; + } + Collider::Cuboid(size) => { + info!("generating collider from proxy: cuboid"); + rapier_collider = RapierCollider::cuboid(size.x, size.y, size.z); + commands.entity(entity) + .insert(rapier_collider) + .insert(ActiveEvents::COLLISION_EVENTS) // FIXME: this is just for demo purposes !!! + ; + } + Collider::Capsule(a, b, radius) => { + info!("generating collider from proxy: capsule"); + rapier_collider = RapierCollider::capsule(*a, *b, *radius); + commands.entity(entity) + .insert(rapier_collider) + .insert(ActiveEvents::COLLISION_EVENTS) // FIXME: this is just for demo purposes !!! + ; + } + Collider::Mesh => { + info!("generating collider from proxy: mesh"); + for (_, collider_mesh) in Mesh::search_in_children(entity, &children, &meshes, &mesh_handles) + { + rapier_collider = RapierCollider::from_bevy_mesh(collider_mesh, &ComputedColliderShape::TriMesh).unwrap(); + commands.entity(entity) + .insert(rapier_collider) + // FIXME: this is just for demo purposes !!! + .insert(ActiveCollisionTypes::default() | ActiveCollisionTypes::KINEMATIC_STATIC | ActiveCollisionTypes::STATIC_STATIC | ActiveCollisionTypes::DYNAMIC_STATIC) + .insert(ActiveEvents::COLLISION_EVENTS) + ; + // .insert(ActiveEvents::COLLISION_EVENTS) + // break; + // RapierCollider::convex_hull(points) + } + + } + } + } + // rigidbodies + for (entity, proxy_rigidbody) in proxy_rigidbodies.iter() { + info!("Generation rigid body from Proxy rigid body !! {:?}", proxy_rigidbody ); + let rigid_body:RapierRigidBody = match proxy_rigidbody { + RigidBodyProxy::Dynamic => RapierRigidBody::Dynamic, + RigidBodyProxy::Fixed=> RapierRigidBody::Fixed, + RigidBodyProxy::Position => RapierRigidBody::KinematicPositionBased, + RigidBodyProxy::Velocity => RapierRigidBody::KinematicVelocityBased, + }; + commands.entity(entity) + .insert(rigid_body) + // IMPORTANT ! this allows collisions between dynamic & static(fixed) entities + // see https://rapier.rs/docs/user_guides/bevy_plugin/colliders#active-collision-types + .insert(ActiveCollisionTypes::default() | ActiveCollisionTypes::KINEMATIC_STATIC | ActiveCollisionTypes::STATIC_STATIC | ActiveCollisionTypes::DYNAMIC_STATIC) + .insert(ActiveEvents::COLLISION_EVENTS) + ; + } + +} diff --git a/examples/general/core/physics/utils.rs b/examples/advanced/core/physics/utils.rs similarity index 100% rename from examples/general/core/physics/utils.rs rename to examples/advanced/core/physics/utils.rs diff --git a/examples/general/core/physics/utils_old.rs b/examples/advanced/core/physics/utils_old.rs similarity index 100% rename from examples/general/core/physics/utils_old.rs rename to examples/advanced/core/physics/utils_old.rs diff --git a/examples/general/core/relationships/mod.rs b/examples/advanced/core/relationships/mod.rs similarity index 100% rename from examples/general/core/relationships/mod.rs rename to examples/advanced/core/relationships/mod.rs diff --git a/examples/general/core/relationships/relationships_insert_dependant_components.rs b/examples/advanced/core/relationships/relationships_insert_dependant_components.rs similarity index 100% rename from examples/general/core/relationships/relationships_insert_dependant_components.rs rename to examples/advanced/core/relationships/relationships_insert_dependant_components.rs diff --git a/examples/advanced/core/save_load/loading.rs b/examples/advanced/core/save_load/loading.rs new file mode 100644 index 0000000..cc1e8e2 --- /dev/null +++ b/examples/advanced/core/save_load/loading.rs @@ -0,0 +1,243 @@ +use bevy::prelude::*; +use bevy_gltf_blueprints::{clone_entity::CloneEntity, SpawnHere, GameWorldTag}; + +use crate::{ + assets::GameAssets, + state::{InAppRunning, AppState, GameState} +}; + +use super::Saveable; + +const SCENE_FILE_PATH: &str = "scenes/save.scn.ron"; + +#[derive(Component, Debug, )] +pub struct TempLoadedSceneMarker; + +#[derive(Component, Debug, )] +pub struct SaveablesToRemove(Vec<(Entity, Name)>); + +#[derive(Component, Event)] +pub struct LoadRequest { + pub path: String, +} + + +pub fn should_load( + save_requested_events: EventReader, +) -> bool { + return save_requested_events.len() > 0 +} + +pub fn load_prepare( + mut next_app_state: ResMut>, + mut next_game_state: ResMut>, +){ + + next_app_state.set(AppState::LoadingGame); + next_game_state.set(GameState::None); + info!("--loading: prepare") +} + +/// unload the level recursively +pub fn _unload_world_old(world: &mut World) { + let entities: Vec = world + // .query_filtered::, With)>>() + .query_filtered::>()// our level/world contains this component + .iter(world) + .collect(); + for entity in entities { + // Check the entity again in case it was despawned recursively + if world.get_entity(entity).is_some() { + world.entity_mut(entity).despawn_recursive(); + } + } +} + +pub fn unload_world( + mut commands: Commands, + gameworlds: Query> +){ + for e in gameworlds.iter(){ + info!("--loading: despawn old world/level"); + commands.entity(e).despawn_recursive(); + } +} + +// almost identical to setup_game, !!?? +pub fn load_world( + mut commands: Commands, + game_assets: Res, + // scenes: ResMut, +){ + info!("--loading: loading world/level"); + + commands.spawn(( + SceneBundle { + scene: game_assets.world.clone(), + ..default() + }, + bevy::prelude::Name::from("world"), + GameWorldTag, + InAppRunning + )); +} + + + + +pub fn load_saved_scene( + mut commands: Commands, + asset_server: Res +) { + commands.spawn( + ( + DynamicSceneBundle { + // Scenes are loaded just like any other asset. + scene: asset_server.load(SCENE_FILE_PATH), + ..default() + }, + TempLoadedSceneMarker + )); + // commands.entity(world).add_child(child_scene); + info!("--loading: loaded saved scene"); +} + +pub fn process_loaded_scene( + loaded_scene: Query<(Entity, &Children), With>, + named_entities: Query<(Entity, &Name, &Parent)>, // FIXME: very inneficient + mut commands: Commands, + + mut game_world: Query<(Entity, &Children), With>, + saveables: Query<(Entity, &Name), With>, + asset_server: Res +){ + for (loaded_scene, children) in loaded_scene.iter(){ + info!("--loading: post processing loaded scene"); + + let mut entities_to_load:Vec<(Entity, Name)> = vec![]; + + for loaded_entity in children.iter() { + if let Ok((source, name, _)) = named_entities.get(*loaded_entity) { + entities_to_load.push((source, name.clone())); + + let mut found = false; + for (e, n, p) in named_entities.iter(){ + // if we have an entity with the same name as in same file, overwrite + if e != source && name.as_str() == n.as_str(){ + // println!("found entity with same name {} {} {:?} {:?}", name, n, source, e); + // source is entity within the newly loaded scene (source), e is within the existing world (destination) + info!("copying data from {:?} to {:?}", source, e); + commands.add(CloneEntity { + source: source, + destination: e, + }); + // FIXME: issue with hierarchy & parenting, would be nice to be able to filter out components from CloneEntity + commands.entity(p.get()).add_child(e); + commands.entity(source).despawn_recursive(); + found = true; + break; + } + } + // entity not found in the list of existing entities (ie entities that came as part of the level) + // so we spawn a new one + if !found { + info!("generating new entity"); + let world = game_world.single_mut(); + let world = world.1[0]; + + let new_entity = commands.spawn(( + bevy::prelude::Name::from(name.clone()), + SpawnHere, + )).id(); + + commands.add(CloneEntity { + source: source, + destination: new_entity, + }); + + commands.entity(world).add_child(new_entity); + info!("copying data from {:?} to {:?}", source, new_entity); + + + + } + + } + } + commands.spawn(SaveablesToRemove(entities_to_load.clone())); + + + + // if an entity is present in the world but NOT in the saved entities , it should be removed from the world + // ideally this should be run between spawning of the world/level AND spawn_placeholders + + // remove the dynamic scene + info!("--loading: DESPAWNING LOADED SCENE"); + commands.entity(loaded_scene).despawn_recursive(); + + asset_server.mark_unused_assets(); + asset_server.free_unused_assets(); + + } + //for saveable in saveables.iter(){ + // println!("SAVEABLE BEFORE {:?}", saveable) + //} +} + +pub fn final_cleanup( + saveables_to_remove: Query<(Entity, &SaveablesToRemove)>, + mut commands: Commands, + saveables: Query<(Entity, &Name), With>, + mut next_app_state: ResMut>, + mut next_game_state: ResMut>, + +){ + if let Ok((e, entities_to_load)) = saveables_to_remove.get_single() + { + info!("saveables to remove {:?}", entities_to_load); + for (e, n) in saveables.iter(){ + let mut found = false; + println!("SAVEABLE {}", n); + + //let entities_to_load = saveables_to_remove.single(); + for (en, na) in entities_to_load.0.iter(){ + found = na.as_str() == n.as_str(); + if found { + break; + } + } + if !found { + println!("REMOVING THIS ONE {}", n); + commands.entity(e).despawn_recursive(); + } + } + // if there is a saveable that is NOT in the list of entities to load, despawn it + + // despawn list + commands.entity(e).despawn_recursive(); + + info!("--loading: done, move to InGame state"); + // next_app_state.set(AppState::AppRunning); + next_game_state.set(GameState::InGame); + } +} + +fn process_loaded_scene_load_alt( + entities: Query<(Entity, &Children), With>, + named_entities: Query<(Entity, &Name, &Parent)>, // FIXME: very inneficient + mut commands: Commands, + +){ + for (entity, children) in entities.iter(){ + let mut entities_to_load:Vec<(Entity, Name)> = vec![]; + for saved_source in children.iter() { + if let Ok((source, name, _)) = named_entities.get(*saved_source) { + println!("AAAAAAA {}", name); + entities_to_load.push((source, name.clone())); + } + } + println!("entities to load {:?}", entities_to_load); + + commands.entity(entity).despawn_recursive(); + } +} \ No newline at end of file diff --git a/examples/advanced/core/save_load/mod.rs b/examples/advanced/core/save_load/mod.rs new file mode 100644 index 0000000..30784aa --- /dev/null +++ b/examples/advanced/core/save_load/mod.rs @@ -0,0 +1,73 @@ +pub mod saveable; +use bevy::asset::free_unused_assets_system; +use bevy_gltf_components::GltfComponentsSet; +pub use saveable::*; + +pub mod saving; +pub use saving::*; + +pub mod loading; +pub use loading::*; + +use bevy::prelude::*; +use bevy::prelude::{App, Plugin, IntoSystemConfigs}; +use bevy::utils::Uuid; + +use bevy_gltf_blueprints::GltfBlueprintsSet; + + + +#[derive(SystemSet, Debug, Hash, PartialEq, Eq, Clone)] +pub enum LoadingSet{ + Load, + PostLoad, +} + +pub struct SaveLoadPlugin; +impl Plugin for SaveLoadPlugin { + fn build(&self, app: &mut App) { + app + .register_type::() + .register_type::() + .add_event::() + .add_event::() + + .configure_sets( + Update, + (LoadingSet::Load, LoadingSet::PostLoad) + .chain() + .before(GltfBlueprintsSet::Spawn) + .before(GltfComponentsSet::Injection) + ) + + .add_systems(PreUpdate, save_game.run_if(should_save)) + + .add_systems(Update, + ( + load_prepare, + unload_world, + load_world, + load_saved_scene, + // process_loaded_scene + ) + .chain() + .run_if(should_load) // .run_if(in_state(AppState::AppRunning)) + .in_set(LoadingSet::Load) + ) + .add_systems(Update, + ( + process_loaded_scene, + apply_deferred, + final_cleanup, + apply_deferred, + free_unused_assets_system + ) + .chain() + .in_set(LoadingSet::PostLoad) + ) + + // .add_systems(Update, bla) + + ; + } +} diff --git a/examples/advanced/core/save_load/old.rs b/examples/advanced/core/save_load/old.rs new file mode 100644 index 0000000..7d8a389 --- /dev/null +++ b/examples/advanced/core/save_load/old.rs @@ -0,0 +1,137 @@ +const NEW_SCENE_FILE_PATH:&str="save.scn.ron"; + + + + +use bevy::ecs::component::Components; +use bevy::ecs::entity::EntityMap; +use serde::{Deserialize, Serialize}; + + +use std::io::Read; +use bevy::scene::serde::SceneDeserializer; +use ron::Deserializer; +use serde::de::DeserializeSeed; + + + + +#[derive(Debug, Deserialize)] +struct Components2; + +#[derive(Debug, Deserialize)] +struct Fake { + resources: HashMap, + entities: HashMap +} + +fn ron_test(){ + let full_path = "/home/ckaos/projects/grappling-boom-bot/assets/save.ron"; + match File::open(full_path) { + Ok(mut file) => { + let mut serialized_scene = Vec::new(); + if let Err(why) = file.read_to_end(&mut serialized_scene) { + error!("file read failed: {why:?}"); + } + match Deserializer::from_bytes(&serialized_scene) { + Ok(mut deserializer) => { + // deserializer. + let bla:Fake = ron::from_str("( + resources: {}, + entities: {} + )").unwrap(); + info!("testing {:?}", bla); + info!("YOYO DONE YO !") + } + Err(why) => { + error!("deserializer creation failed: {why:?}"); + } + } + } + Err(why) => { + error!("load failed: {why:?}"); + } + } +} + +fn inject_component_data(world: &mut World, scene: DynamicScene){ + let mut entity_map = EntityMap::default(); + if let Err(why) = scene.write_to_world(world, &mut entity_map) { + panic!("world write failed: {why:?}"); + } + println!("entity map {:?}", entity_map); + // TODO: EntityMap doesn't implement `iter()` + for old_entity in entity_map.keys() { + let entity = entity_map.get(old_entity).unwrap(); + info!("entity update required: {old_entity:?} -> {entity:?}"); + let e_mut = world + .entity_mut(entity); + } + + info!("done loading scene"); +} + +fn post_load(world: &mut World){ + let full_path = "/home/ckaos/projects/grappling-boom-bot/assets/save.ron"; + match File::open(full_path) { + Ok(mut file) => { + let mut serialized_scene = Vec::new(); + if let Err(why) = file.read_to_end(&mut serialized_scene) { + error!("file read failed: {why:?}"); + } + match Deserializer::from_bytes(&serialized_scene) { + Ok(mut deserializer) => { + let result = SceneDeserializer { + type_registry: &world.resource::().read(), + } + .deserialize(&mut deserializer); + info!("deserialize done"); + match result { + Ok(scene) => { + info!("scene loaded"); + // scene.write_to_world(world, entity_map) + // println!("{:?}", scene.entities); + inject_component_data(world, scene); + /*for dyn_ent in scene.entities.iter(){ + // let mut query = scene.world.query::<(Entity, &Name, &GltfExtras, &Parent)>(); + }*/ + } + Err(why) => { + error!("deserialization failed: {why:?}"); + } + } + } + Err(why) => { + error!("deserializer creation failed: {why:?}"); + } + } + } + Err(why) => { + error!("load failed: {why:?}"); + } + } + +} + + + +#[derive(Component, Reflect, Debug, Default )] +#[reflect(Component)] +pub struct Hackish; + + + +/// unload saveables +fn unload_saveables(world: &mut World) { + let entities: Vec = world + .query_filtered::>()// our level/world contains this component + .iter(world) + .collect(); + for entity in entities { + // Check the entity again in case it was despawned recursively + if world.get_entity(entity).is_some() { + info!("despawning"); + world.entity_mut(entity).despawn_recursive(); + } + } +} \ No newline at end of file diff --git a/examples/advanced/core/save_load/saveable.rs b/examples/advanced/core/save_load/saveable.rs new file mode 100644 index 0000000..c944fc0 --- /dev/null +++ b/examples/advanced/core/save_load/saveable.rs @@ -0,0 +1,17 @@ +use bevy::prelude::*; +use bevy::utils::{Uuid}; + +#[derive(Component, Reflect, Debug, )] +#[reflect(Component)] +pub struct Saveable{ + id: Uuid +} + +impl Default for Saveable{ + fn default() -> Self { + Saveable{ + id: Uuid::new_v4() + } + } +} + diff --git a/examples/advanced/core/save_load/saving.rs b/examples/advanced/core/save_load/saving.rs new file mode 100644 index 0000000..1e78322 --- /dev/null +++ b/examples/advanced/core/save_load/saving.rs @@ -0,0 +1,95 @@ +use bevy::pbr::{Clusters, VisiblePointLights}; +use bevy::render::camera::CameraRenderGraph; +use bevy::render::view::VisibleEntities; +use bevy::{prelude::*, gltf::GltfExtras}; +use bevy::tasks::IoTaskPool; +use bevy_rapier3d::prelude::RigidBody; +use std::io::Write; +use std::fs::File; + +use crate::core::physics::{Collider, RigidBodyProxy}; +use crate::game::{Pickable, Player}; + +use super::Saveable; + + +const NEW_SCENE_FILE_PATH:&str="save.scn.ron"; + +#[derive(Component, Event)] +pub struct SaveRequest { + pub path: String, +} + + +pub fn should_save( + // keycode: Res>, + save_requested_events: EventReader, + +) -> bool { + return save_requested_events.len() > 0; + + // return keycode.just_pressed(KeyCode::S) +} + +pub fn save_game( + world: &mut World, + // save_requested_events: EventReader, +){ + info!("saving"); + // world. + /*for bli in save_requested_events.iter(){ + println!("SAAAAVE TO THISSSSS {:?}", bli.path) + }*/ + + let saveable_entities: Vec = world + .query_filtered::>() + .iter(world) + .collect(); + + /*let static_entities: Vec = world + .query_filtered::>() + .iter(world) + .collect();*/ + println!("saveable entities {}", saveable_entities.len()); + + let mut scene_builder = DynamicSceneBuilder::from_world(world); + scene_builder + .deny::() + .deny::() + .deny::() + .deny::() + .deny::() + .deny::() + + .deny::() + .deny::() + .deny::() + .deny::() + + // camera stuff + .deny::() + .deny::() + .deny::() + .deny::() + .deny::() + .deny::() + //.deny::() + + + .extract_entities(saveable_entities.into_iter()); + + + + let dyn_scene = scene_builder.build(); + let serialized_scene = dyn_scene.serialize_ron(world.resource::()).unwrap(); + + #[cfg(not(target_arch = "wasm32"))] + IoTaskPool::get() + .spawn(async move { + // Write the scene RON data to file + File::create(format!("assets/scenes/{NEW_SCENE_FILE_PATH}")) + .and_then(|mut file| file.write(serialized_scene.as_bytes())) + .expect("Error while writing scene to file"); + }) + .detach(); +} \ No newline at end of file diff --git a/examples/advanced/game/in_game.rs b/examples/advanced/game/in_game.rs new file mode 100644 index 0000000..4167c1a --- /dev/null +++ b/examples/advanced/game/in_game.rs @@ -0,0 +1,30 @@ +use bevy::prelude::*; + +use crate::{assets::GameAssets, state::{InAppRunning, GameState}}; +use bevy_gltf_blueprints::GameWorldTag; + +pub fn setup_game( + mut commands: Commands, + game_assets: Res, + mut next_game_state: ResMut>, +) { + + println!("setting up all stuff"); + commands.insert_resource(AmbientLight { + color: Color::WHITE, + brightness: 0.2, + }); + // here we actually spawn our game world/level + + commands.spawn(( + SceneBundle { + scene: game_assets.world.clone(), + ..default() + }, + bevy::prelude::Name::from("world"), + GameWorldTag, + InAppRunning + )); + + next_game_state.set(GameState::InGame) +} \ No newline at end of file diff --git a/examples/advanced/game/in_main_menu.rs b/examples/advanced/game/in_main_menu.rs new file mode 100644 index 0000000..138d6d6 --- /dev/null +++ b/examples/advanced/game/in_main_menu.rs @@ -0,0 +1,116 @@ +use bevy::prelude::*; + +use crate::{state::{AppState, GameState, InMainMenu}, core::save_load::{LoadRequest, SaveRequest}}; + +pub fn setup_main_menu(mut commands: Commands){ + commands.spawn((Camera2dBundle::default(), InMainMenu)); + + commands.spawn(( + TextBundle::from_section( + "SOME GAME TITLE !!", + TextStyle { + //font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: 18.0, + color: Color::WHITE, + ..Default::default() + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: Val::Px(100.0), + left: Val::Px(200.0), + ..default() + }), + InMainMenu + )); + + + commands.spawn(( + TextBundle::from_section( + "New Game (press Enter to start, press T once the game is started for demo spawning)", + TextStyle { + //font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: 18.0, + color: Color::WHITE, + ..Default::default() + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: Val::Px(200.0), + left: Val::Px(200.0), + ..default() + }), + InMainMenu + )); + + /* + commands.spawn(( + TextBundle::from_section( + "Load Game", + TextStyle { + //font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: 18.0, + color: Color::WHITE, + ..Default::default() + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: Val::Px(250.0), + left: Val::Px(200.0), + ..default() + }), + InMainMenu + )); + + commands.spawn(( + TextBundle::from_section( + "Exit Game", + TextStyle { + //font: asset_server.load("fonts/FiraMono-Medium.ttf"), + font_size: 18.0, + color: Color::WHITE, + ..Default::default() + }, + ) + .with_style(Style { + position_type: PositionType::Absolute, + top: Val::Px(300.0), + left: Val::Px(200.0), + ..default() + }), + InMainMenu + ));*/ +} + +pub fn teardown_main_menu(bla: Query>, mut commands: Commands){ + for bli in bla.iter(){ + commands.entity(bli).despawn_recursive(); + } +} + +pub fn main_menu( + keycode: Res>, + + mut next_app_state: ResMut>, + // mut next_game_state: ResMut>, + + mut save_requested_events: EventWriter, + mut load_requested_events: EventWriter, + +){ + if keycode.just_pressed(KeyCode::Return) { + next_app_state.set(AppState::AppLoading); + // next_game_state.set(GameState::None); + } + + if keycode.just_pressed(KeyCode::L) { + next_app_state.set(AppState::AppLoading); + // load_requested_events.send(LoadRequest { path: "toto".into() }) + } + + if keycode.just_pressed(KeyCode::S) { + // save_requested_events.send(SaveRequest { path: "toto".into() }) + } +} \ No newline at end of file diff --git a/examples/advanced/game/mod.rs b/examples/advanced/game/mod.rs new file mode 100644 index 0000000..81691c5 --- /dev/null +++ b/examples/advanced/game/mod.rs @@ -0,0 +1,136 @@ +pub mod in_game; +pub use in_game::*; + +pub mod in_main_menu; +pub use in_main_menu::*; + +pub mod picking; +pub use picking::*; + +use bevy::prelude::*; +use bevy_rapier3d::prelude::*; +use crate::{insert_dependant_component, state::{AppState, GameState}}; + + + +// this file is just for demo purposes, contains various types of components, systems etc + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub enum SoundMaterial{ + Metal, + Wood, + Rock, + Cloth, + Squishy, + #[default] + None +} + + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +/// Demo marker component +pub struct Player; + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +/// Demo component showing auto injection of components +pub struct ShouldBeWithPlayer; + + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +/// Demo marker component +pub struct Interactible; + + + + + +fn player_move_demo( + keycode: Res>, + mut players: Query<&mut Transform, With>, +){ + + let speed = 0.2; + if let Ok(mut player) = players.get_single_mut() { + if keycode.pressed(KeyCode::Left) { + player.translation.x += speed; + } + if keycode.pressed(KeyCode::Right) { + player.translation.x -= speed; + } + + if keycode.pressed(KeyCode::Up) { + player.translation.z += speed; + } + if keycode.pressed(KeyCode::Down) { + player.translation.z -= speed; + } + } +} + +// collision tests/debug +pub fn test_collision_events( + mut collision_events: EventReader, + mut contact_force_events: EventReader, +) +{ + for collision_event in collision_events.iter() { + println!("collision"); + match collision_event { + CollisionEvent::Started(_entity1, _entity2 ,_) => { + println!("collision started") + } + CollisionEvent::Stopped(_entity1, _entity2 ,_) => { + println!("collision ended") + + } + } + } + + for contact_force_event in contact_force_events.iter() { + println!("Received contact force event: {:?}", contact_force_event); + } +} + + +pub struct GamePlugin; +impl Plugin for GamePlugin { + fn build(&self, app: &mut App) { + app + .add_plugins(PickingPlugin) + + .register_type::() + .register_type::() + .register_type::() + // little helper utility, to automatically inject components that are dependant on an other component + // ie, here an Entity with a Player component should also always have a ShouldBeWithPlayer component + // you get a warning if you use this, as I consider this to be stop-gap solution (usually you should have either a bundle, or directly define all needed components) + .add_systems(Update, ( + // insert_dependant_component::, + player_move_demo, //.run_if(in_state(AppState::Running)), + // test_collision_events + ) + .run_if(in_state(GameState::InGame))) + + + .add_systems( + OnEnter(AppState::MenuRunning), + setup_main_menu + ) + .add_systems( + OnExit(AppState::MenuRunning), + teardown_main_menu + ) + .add_systems(Update, (main_menu)) + + + .add_systems( + OnEnter(AppState::AppRunning), + setup_game + ) + ; + } +} diff --git a/examples/advanced/game/picking.rs b/examples/advanced/game/picking.rs new file mode 100644 index 0000000..5f05cfa --- /dev/null +++ b/examples/advanced/game/picking.rs @@ -0,0 +1,40 @@ + +use bevy::prelude::*; +use super::Player; + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub struct Pickable; + +// very simple, crude picking (as in picking up objects) implementation + +pub fn picking( + players: Query<&GlobalTransform, With>, + pickables: Query<(Entity, &GlobalTransform), With>, + mut commands: Commands +){ + for player_transforms in players.iter(){ + for (pickable, pickable_transforms) in pickables.iter(){ + let distance = player_transforms.translation().distance(pickable_transforms.translation()); + if distance < 2.5 { + commands.entity(pickable).despawn_recursive(); + } + } + } +} + +pub struct PickingPlugin; +impl Plugin for PickingPlugin { + fn build(&self, app: &mut App) { + app + .register_type::() + + .add_systems(Update, ( + picking, //.run_if(in_state(AppState::Running)), + )) + + + + ; + } +} diff --git a/examples/advanced/main.rs b/examples/advanced/main.rs new file mode 100644 index 0000000..ecbee4e --- /dev/null +++ b/examples/advanced/main.rs @@ -0,0 +1,51 @@ +use std::time::Duration; +use bevy::{prelude::*, asset::ChangeWatcher, gltf::Gltf}; +use bevy_editor_pls::prelude::*; +use bevy_rapier3d::prelude::*; +use bevy_gltf_components::ComponentsFromGltfPlugin; + +mod core; +use crate::core::*; + +pub mod assets; +use assets::*; + +pub mod state; +use state::*; + +mod game; +use game::*; + +mod test_components; +use test_components::*; + + + +fn main(){ + App::new() + .add_plugins(( + DefaultPlugins.set( + AssetPlugin { + // This tells the AssetServer to watch for changes to assets. + // It enables our scenes to automatically reload in game when we modify their files. + // practical in our case to be able to edit the shaders without needing to recompile + // watch_for_changes: ChangeWatcher::with_delay(Duration::from_millis(50)), : FIXME: breaks scene save/loading + ..default() + } + ), + // editor + EditorPlugin::default(), + // physics + RapierPhysicsPlugin::::default(), + RapierDebugRenderPlugin::default(), + // our custom plugins + ComponentsFromGltfPlugin, + + StatePlugin, + AssetsPlugin, + CorePlugin, // reusable plugins + GamePlugin, // specific to our game + ComponentsTestPlugin // Showcases different type of components /structs + )) + .run(); +} diff --git a/examples/advanced/state.rs b/examples/advanced/state.rs new file mode 100644 index 0000000..7d87c58 --- /dev/null +++ b/examples/advanced/state.rs @@ -0,0 +1,58 @@ +use bevy::prelude::*; +use bevy::app::AppExit; + +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Default, States)] +pub enum AppState{ + #[default] + CoreLoading, + MenuRunning, + AppLoading, + AppRunning, + AppEnding, + + // FIXME: not sure + LoadingGame +} + +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Default, States)] +pub enum GameState { + #[default] + None, + + InMenu, + InGame, + + InGameOver, + + InSaving, + InLoading +} + +// tag components for all entities within a certain state (for despawning them if needed) , FIXME: seems kinda hack-ish +#[derive(Component)] +pub struct InCoreLoading; +#[derive(Component, Default)] +pub struct InMenuRunning; +#[derive(Component)] +pub struct InAppLoading; +#[derive(Component)] +pub struct InAppRunning; + +// components for tagging in game vs in game menu stuff +#[derive(Component, Default)] +pub struct InMainMenu; +#[derive(Component, Default)] +pub struct InMenu; +#[derive(Component, Default)] +pub struct InGame; + + +pub struct StatePlugin; +impl Plugin for StatePlugin { + fn build(&self, app: &mut App) { + app + .add_state::() + .add_state::() + ; + } +} \ No newline at end of file diff --git a/examples/general/test_components.rs b/examples/advanced/test_components.rs similarity index 100% rename from examples/general/test_components.rs rename to examples/advanced/test_components.rs diff --git a/examples/general/README.md b/examples/basic/README.md similarity index 100% rename from examples/general/README.md rename to examples/basic/README.md diff --git a/examples/basic/core/camera/camera_replace_proxies.rs b/examples/basic/core/camera/camera_replace_proxies.rs new file mode 100644 index 0000000..9bd5859 --- /dev/null +++ b/examples/basic/core/camera/camera_replace_proxies.rs @@ -0,0 +1,34 @@ + +use bevy::prelude::*; +use bevy::core_pipeline::bloom::{BloomSettings, BloomCompositeMode}; +use bevy::core_pipeline::tonemapping::{Tonemapping, DebandDither}; + +use super::CameraTrackingOffset; + +pub fn camera_replace_proxies ( + mut commands: Commands, + mut added_cameras: Query<(Entity, &mut Camera), (Added, With)>, +) { + + for (entity, mut camera) in added_cameras.iter_mut(){ + info!("detected added camera, updating proxy"); + camera.hdr = true; + commands.entity(entity) + .insert( + DebandDither::Enabled + ) + .insert( + Tonemapping::BlenderFilmic + ) + .insert( + BloomSettings{ + intensity: 0.01, + composite_mode:BloomCompositeMode::Additive, + ..default() + } + ) + + ; + } +} + diff --git a/examples/basic/core/camera/camera_tracking.rs b/examples/basic/core/camera/camera_tracking.rs new file mode 100644 index 0000000..ec3a45f --- /dev/null +++ b/examples/basic/core/camera/camera_tracking.rs @@ -0,0 +1,57 @@ +use bevy::prelude::*; + + +#[derive(Component, Reflect, Debug)] +#[reflect(Component)] +/// Component for cameras, with an offset from the Trackable target +/// +pub struct CameraTracking{ + pub offset: Vec3 +} +impl Default for CameraTracking { + fn default() -> Self { + CameraTracking { offset: Vec3::new(0.0, 6.0, 8.0) } + } +} + + +#[derive(Component, Reflect, Debug, Deref, DerefMut)] +#[reflect(Component)] +/// Component for cameras, with an offset from the Trackable target +pub struct CameraTrackingOffset(Vec3); +impl Default for CameraTrackingOffset { + fn default() -> Self { + CameraTrackingOffset(Vec3::new(0.0, 6.0, 8.0)) + } +} + +impl CameraTrackingOffset { + fn new (input: Vec3) -> Self { + CameraTrackingOffset(input) + } +} + + + + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +/// Add this component to an entity if you want it to be tracked by a Camera +pub struct CameraTrackable; + +pub fn camera_track( + mut tracking_cameras: Query<(&mut Transform, &CameraTrackingOffset), (With, With, Without)>, + camera_tracked: Query<&Transform, With>, +) { + + for (mut camera_transform, tracking_offset) in tracking_cameras.iter_mut() { + for tracked_transform in camera_tracked.iter(){ + + let target_position = tracked_transform.translation + tracking_offset.0; + let eased_position = camera_transform.translation.lerp(target_position, 0.1); + camera_transform.translation = eased_position;// + tracking.offset;// tracked_transform.translation + tracking.offset; + *camera_transform = camera_transform.looking_at(tracked_transform.translation, Vec3::Y); + } + } + +} diff --git a/examples/general/core/camera/mod.rs b/examples/basic/core/camera/mod.rs similarity index 100% rename from examples/general/core/camera/mod.rs rename to examples/basic/core/camera/mod.rs diff --git a/examples/basic/core/lighting/lighting_replace_proxies.rs b/examples/basic/core/lighting/lighting_replace_proxies.rs new file mode 100644 index 0000000..9e1d31d --- /dev/null +++ b/examples/basic/core/lighting/lighting_replace_proxies.rs @@ -0,0 +1,29 @@ +use bevy::prelude::*; + +use bevy::pbr::{CascadeShadowConfigBuilder, CascadeShadowConfig}; + +// fixme might be too specific to might needs, should it be moved out ? also these are all for lights, not models +pub fn lighting_replace_proxies( + mut added_dirights: Query<(Entity, &mut DirectionalLight), Added>, + mut added_spotlights: Query<&mut SpotLight, Added>, + mut commands: Commands, + +){ + + for (entity, mut light) in added_dirights.iter_mut(){ + light.illuminance *= 5.0; + light.shadows_enabled = true; + let shadow_config:CascadeShadowConfig = CascadeShadowConfigBuilder { + first_cascade_far_bound: 15.0, + maximum_distance: 135.0, + ..default() + } + .into(); + commands.entity(entity) + .insert(shadow_config); + } + for mut light in added_spotlights.iter_mut(){ + light.shadows_enabled = true; + } +} + diff --git a/examples/basic/core/lighting/mod.rs b/examples/basic/core/lighting/mod.rs new file mode 100644 index 0000000..d1744b7 --- /dev/null +++ b/examples/basic/core/lighting/mod.rs @@ -0,0 +1,18 @@ +mod lighting_replace_proxies; +use lighting_replace_proxies::*; + +use bevy::prelude::*; +use bevy::pbr::{NotShadowCaster, DirectionalLightShadowMap}; + +pub struct LightingPlugin; +impl Plugin for LightingPlugin { + fn build(&self, app: &mut App) { + app + .insert_resource(DirectionalLightShadowMap { size: 4096 }) + // FIXME: adding these since they are missing + .register_type::() + + .add_systems(PreUpdate, lighting_replace_proxies) // FIXME: you should actually run this in a specific state most likely + ; + } +} \ No newline at end of file diff --git a/examples/general/core/mod.rs b/examples/basic/core/mod.rs similarity index 100% rename from examples/general/core/mod.rs rename to examples/basic/core/mod.rs diff --git a/examples/general/core/physics/controls.rs b/examples/basic/core/physics/controls.rs similarity index 100% rename from examples/general/core/physics/controls.rs rename to examples/basic/core/physics/controls.rs diff --git a/examples/general/core/physics/mod.rs b/examples/basic/core/physics/mod.rs similarity index 100% rename from examples/general/core/physics/mod.rs rename to examples/basic/core/physics/mod.rs diff --git a/examples/general/core/physics/physics_replace_proxies.rs b/examples/basic/core/physics/physics_replace_proxies.rs similarity index 100% rename from examples/general/core/physics/physics_replace_proxies.rs rename to examples/basic/core/physics/physics_replace_proxies.rs diff --git a/examples/basic/core/physics/utils.rs b/examples/basic/core/physics/utils.rs new file mode 100644 index 0000000..7886710 --- /dev/null +++ b/examples/basic/core/physics/utils.rs @@ -0,0 +1,175 @@ +use bevy::prelude::*; +use bevy::render::mesh::{MeshVertexAttributeId, PrimitiveTopology, VertexAttributeValues}; +// TAKEN VERBATIB FROM https://github.com/janhohenheim/foxtrot/blob/src/util/trait_extension.rs + +pub(crate) trait Vec3Ext: Copy { + fn is_approx_zero(self) -> bool; + fn split(self, up: Vec3) -> SplitVec3; +} +impl Vec3Ext for Vec3 { + #[inline] + fn is_approx_zero(self) -> bool { + self.length_squared() < 1e-5 + } + + #[inline] + fn split(self, up: Vec3) -> SplitVec3 { + let vertical = up * self.dot(up); + let horizontal = self - vertical; + SplitVec3 { + vertical, + horizontal, + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq)] +pub(crate) struct SplitVec3 { + pub(crate) vertical: Vec3, + pub(crate) horizontal: Vec3, +} + +pub(crate) trait Vec2Ext: Copy { + fn is_approx_zero(self) -> bool; + fn x0y(self) -> Vec3; +} +impl Vec2Ext for Vec2 { + #[inline] + fn is_approx_zero(self) -> bool { + self.length_squared() < 1e-5 + } + + #[inline] + fn x0y(self) -> Vec3 { + Vec3::new(self.x, 0., self.y) + } +} + +pub(crate) trait MeshExt { + fn transform(&mut self, transform: Transform); + fn transformed(&self, transform: Transform) -> Mesh; + fn read_coords_mut(&mut self, id: impl Into) -> &mut Vec<[f32; 3]>; + fn search_in_children<'a>( + parent: Entity, + children: &'a Query<&Children>, + meshes: &'a Assets, + mesh_handles: &'a Query<&Handle>, + ) -> Vec<(Entity, &'a Mesh)>; +} + +impl MeshExt for Mesh { + fn transform(&mut self, transform: Transform) { + for coords in self.read_coords_mut(Mesh::ATTRIBUTE_POSITION.clone()) { + let vec3 = (*coords).into(); + let transformed = transform.transform_point(vec3); + *coords = transformed.into(); + } + for normal in self.read_coords_mut(Mesh::ATTRIBUTE_NORMAL.clone()) { + let vec3 = (*normal).into(); + let transformed = transform.rotation.mul_vec3(vec3); + *normal = transformed.into(); + } + } + + fn transformed(&self, transform: Transform) -> Mesh { + let mut mesh = self.clone(); + mesh.transform(transform); + mesh + } + + fn read_coords_mut(&mut self, id: impl Into) -> &mut Vec<[f32; 3]> { + // Guaranteed by Bevy for the current usage + match self + .attribute_mut(id) + .expect("Failed to read unknown mesh attribute") + { + VertexAttributeValues::Float32x3(values) => values, + // Guaranteed by Bevy for the current usage + _ => unreachable!(), + } + } + + fn search_in_children<'a>( + parent: Entity, + children_query: &'a Query<&Children>, + meshes: &'a Assets, + mesh_handles: &'a Query<&Handle>, + ) -> Vec<(Entity, &'a Mesh)> { + if let Ok(children) = children_query.get(parent) { + let mut result: Vec<_> = children + .iter() + .filter_map(|entity| mesh_handles.get(*entity).ok().map(|mesh| (*entity, mesh))) + .map(|(entity, mesh_handle)| { + ( + entity, + meshes + .get(mesh_handle) + .expect("Failed to get mesh from handle"), + ) + }) + .map(|(entity, mesh)| { + assert_eq!(mesh.primitive_topology(), PrimitiveTopology::TriangleList); + (entity, mesh) + }) + .collect(); + let mut inner_result = children + .iter() + .flat_map(|entity| { + Self::search_in_children(*entity, children_query, meshes, mesh_handles) + }) + .collect(); + result.append(&mut inner_result); + result + } else { + Vec::new() + } + } +} + +pub(crate) trait F32Ext: Copy { + fn is_approx_zero(self) -> bool; + fn squared(self) -> f32; + fn lerp(self, other: f32, ratio: f32) -> f32; +} + +impl F32Ext for f32 { + #[inline] + fn is_approx_zero(self) -> bool { + self.abs() < 1e-5 + } + + #[inline] + fn squared(self) -> f32 { + self * self + } + + #[inline] + fn lerp(self, other: f32, ratio: f32) -> f32 { + self.mul_add(1. - ratio, other * ratio) + } +} + +pub(crate) trait TransformExt: Copy { + fn horizontally_looking_at(self, target: Vec3, up: Vec3) -> Transform; + fn lerp(self, other: Transform, ratio: f32) -> Transform; +} + +impl TransformExt for Transform { + fn horizontally_looking_at(self, target: Vec3, up: Vec3) -> Transform { + let direction = target - self.translation; + let horizontal_direction = direction - up * direction.dot(up); + let look_target = self.translation + horizontal_direction; + self.looking_at(look_target, up) + } + + fn lerp(self, other: Transform, ratio: f32) -> Transform { + let translation = self.translation.lerp(other.translation, ratio); + let rotation = self.rotation.slerp(other.rotation, ratio); + let scale = self.scale.lerp(other.scale, ratio); + Transform { + translation, + rotation, + scale, + } + } +} diff --git a/examples/basic/core/physics/utils_old.rs b/examples/basic/core/physics/utils_old.rs new file mode 100644 index 0000000..c210dd3 --- /dev/null +++ b/examples/basic/core/physics/utils_old.rs @@ -0,0 +1,75 @@ +use bevy::prelude::*; +use bevy::render::mesh::{MeshVertexAttributeId, PrimitiveTopology, VertexAttributeValues}; +// TAKEN VERBATIB FROM https://github.com/janhohenheim/foxtrot/blob/6e31fc02652fc9d085a4adde0a73ab007dbbb0dc/src/util/trait_extension.rs + +pub trait Vec3Ext { + #[allow(clippy::wrong_self_convention)] // Because [`Vec3`] is [`Copy`] + fn is_approx_zero(self) -> bool; + fn x0z(self) -> Vec3; +} +impl Vec3Ext for Vec3 { + fn is_approx_zero(self) -> bool { + [self.x, self.y, self.z].iter().all(|&x| x.abs() < 1e-5) + } + fn x0z(self) -> Vec3 { + Vec3::new(self.x, 0., self.z) + } +} + +pub trait MeshExt { + fn transform(&mut self, transform: Transform); + fn transformed(&self, transform: Transform) -> Mesh; + fn read_coords_mut(&mut self, id: impl Into) -> &mut Vec<[f32; 3]>; + fn search_in_children<'a>( + children: &'a Children, + meshes: &'a Assets, + mesh_handles: &'a Query<&Handle>, + ) -> (Entity, &'a Mesh); +} + +impl MeshExt for Mesh { + fn transform(&mut self, transform: Transform) { + for attribute in [Mesh::ATTRIBUTE_POSITION, Mesh::ATTRIBUTE_NORMAL] { + for coords in self.read_coords_mut(attribute.clone()) { + let vec3 = (*coords).into(); + let transformed = transform.transform_point(vec3); + *coords = transformed.into(); + } + } + } + + fn transformed(&self, transform: Transform) -> Mesh { + let mut mesh = self.clone(); + mesh.transform(transform); + mesh + } + + fn read_coords_mut(&mut self, id: impl Into) -> &mut Vec<[f32; 3]> { + match self.attribute_mut(id).unwrap() { + VertexAttributeValues::Float32x3(values) => values, + // Guaranteed by Bevy + _ => unreachable!(), + } + } + + fn search_in_children<'a>( + children: &'a Children, + meshes: &'a Assets, + mesh_handles: &'a Query<&Handle>, + ) -> (Entity, &'a Mesh) { + let entity_handles: Vec<_> = children + .iter() + .filter_map(|entity| mesh_handles.get(*entity).ok().map(|mesh| (*entity, mesh))) + .collect(); + assert_eq!( + entity_handles.len(), + 1, + "Collider must contain exactly one mesh, but found {}", + entity_handles.len() + ); + let (entity, mesh_handle) = entity_handles.first().unwrap(); + let mesh = meshes.get(mesh_handle).unwrap(); + assert_eq!(mesh.primitive_topology(), PrimitiveTopology::TriangleList); + (*entity, mesh) + } +} diff --git a/examples/basic/core/relationships/mod.rs b/examples/basic/core/relationships/mod.rs new file mode 100644 index 0000000..6345d35 --- /dev/null +++ b/examples/basic/core/relationships/mod.rs @@ -0,0 +1,11 @@ +pub mod relationships_insert_dependant_components; +pub use relationships_insert_dependant_components::*; + +use bevy::prelude::*; + +pub struct EcsRelationshipsPlugin; +impl Plugin for EcsRelationshipsPlugin { + fn build(&self, app: &mut App) { + app; + } +} \ No newline at end of file diff --git a/examples/basic/core/relationships/relationships_insert_dependant_components.rs b/examples/basic/core/relationships/relationships_insert_dependant_components.rs new file mode 100644 index 0000000..afec54e --- /dev/null +++ b/examples/basic/core/relationships/relationships_insert_dependant_components.rs @@ -0,0 +1,16 @@ +use bevy::prelude::*; + +pub fn insert_dependant_component( + mut commands: Commands, + entities_without_depency: Query<(Entity, &Name), (With, Without)>, +) { + for (entity, name) in entities_without_depency.iter() { + let name = name.clone().to_string(); + commands.entity(entity) + .insert( + Dependency::default() + ) + ; + warn!("found an entity called {} with a {} component but without an {}, please check your assets", name.clone(), std::any::type_name::(), std::any::type_name::()); + } +} \ No newline at end of file diff --git a/examples/general/game.rs b/examples/basic/game.rs similarity index 100% rename from examples/general/game.rs rename to examples/basic/game.rs diff --git a/examples/general/main.rs b/examples/basic/main.rs similarity index 97% rename from examples/general/main.rs rename to examples/basic/main.rs index 333f167..5ddc261 100644 --- a/examples/general/main.rs +++ b/examples/basic/main.rs @@ -73,7 +73,7 @@ fn setup( asset_server: Res, ) { - let tmp: Handle = asset_server.load("models/level1.glb#Scene0"); + let tmp: Handle = asset_server.load("basic/models/level1.glb#Scene0"); commands.insert_resource(AssetLoadHelper(tmp)); } diff --git a/examples/basic/test_components.rs b/examples/basic/test_components.rs new file mode 100644 index 0000000..79a45f6 --- /dev/null +++ b/examples/basic/test_components.rs @@ -0,0 +1,86 @@ +use bevy::prelude::*; + + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct UnitTest; + +#[derive(Component, Reflect, Default, Debug, Deref, DerefMut)] +#[reflect(Component)] +struct TuppleTestF32(f32); + +#[derive(Component, Reflect, Default, Debug, Deref, DerefMut)] +#[reflect(Component)] +struct TuppleTestU64(u64); + +#[derive(Component, Reflect, Default, Debug, Deref, DerefMut)] +#[reflect(Component)] +pub struct TuppleTestStr(String); + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct TuppleTest2(f32, u64, String); + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct TuppleTestBool(bool); + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct TuppleVec2(Vec2); + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct TuppleVec3(Vec3); + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct TuppleVec(Vec); + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct TuppleTestColor(Color); + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct BasicTest{ + a: f32, + b: u64, + c: String +} + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +pub enum EnumTest{ + Metal, + Wood, + Rock, + Cloth, + Squishy, + #[default] + None +} + + +pub struct ComponentsTestPlugin; +impl Plugin for ComponentsTestPlugin { + fn build(&self, app: &mut App) { + app + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + + .register_type::() + .register_type::>() + + ; + } +} diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index 45cf1fc..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,57 +0,0 @@ -pub mod utils; -pub use utils::*; - -pub mod gltf_to_components; -pub use gltf_to_components::*; - -pub mod process_gltfs; -pub use process_gltfs::*; - -use bevy::prelude::{ - App,Plugin, PreUpdate -}; - - -/// A Bevy plugin for extracting components from gltf files and automatically adding them to the relevant entities -/// It will automatically run every time you load a gltf file -/// Add this plugin to your Bevy app to get access to this feature -/// ``` -/// # use bevy::prelude::*; -/// # use bevy_gltf_components::ComponentsFromGltfPlugin::*; -/// -/// -/// fn main() { -/// App::new() -/// .add_plugins(DefaultPlugins) -/// .add_plugin(GltfComponentsPlugin) -/// .add_startup_system(setup) -/// .add_system(spawn_level) -/// .run(); -/// } -/// -/// fn setup( -/// mut state: ResMut, -/// asset_server: Res, -/// mut commands: bevy::prelude::Commands -/// ){ -/// asset_server.load("models/level1.glb#Scene0") -/// } -/// -/// fn spawn_level(){ -/// -///} -/// ``` -#[derive(Default)] -pub struct ComponentsFromGltfPlugin; -impl Plugin for ComponentsFromGltfPlugin { - fn build(&self, app: &mut App) { - app - .insert_resource(GltfLoadingTracker::new()) - - .add_systems(PreUpdate, ( - track_new_gltf, - process_loaded_scenes, - )) - ; - } -} diff --git a/tools/blender_auto_export/README.md b/tools/blender_auto_export/README.md deleted file mode 100644 index 4b22283..0000000 --- a/tools/blender_auto_export/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# gltf_auto_export - -For convenience I also added this [Blender addon](./blender_auto_export_gltf.py) that automatically exports your level/world from Blender to gltf whenever you save your Blend file -(actually when you save inside your level/world scene or in the "library" scene, where I personally usually store all collections to instanciate). -It is **very** barebones and messy, but it does a minimal ok job. - -### Installation: - -* in Blender go to edit => preferences => install - -![blender addon install](../../docs/blender_addon_install.png) - -* choose the path where ```blender_auto_export/blender_auto_export_gltf.py``` is stored - -![blender addon install](../../docs/blender_addon_install2.png) - -### Usage: - -* before it can automatically save to gltf, you need to configure it -* go to file => export => gltf auto export - -![blender addon use](../../docs/blender_addon_use.png) - -* set up your parameters: output path, name of your main scene etc - - ![blender addon use2](../../docs/blender_addon_use2.png) - -* click on "apply settings" -* now next time you save your blend file you will get an automatically exported gltf file diff --git a/tools/gltf_auto_export/README.md b/tools/gltf_auto_export/README.md new file mode 100644 index 0000000..37894dc --- /dev/null +++ b/tools/gltf_auto_export/README.md @@ -0,0 +1,85 @@ +# gltf_auto_export + +For convenience I also added this [Blender addon](./gltf_auto_export.py) that +- automatically exports your level/world from Blender to gltf whenever you save your Blend file. +- it also supports automatical exports of used collections as [Gltf blueprints](../../crates/bevy_gltf_blueprints/README.md) & more ! + + +## Installation: + +* in Blender go to edit => preferences => install + +![blender addon install](../../docs/blender_addon_install.png) + +* choose the path where ```gltf_auto_export/gltf_auto_export.py``` is stored + +![blender addon install](../../docs/blender_addon_install2.png) + +## Usage: + + +### Basics + +* before it can automatically save to gltf, you need to configure it +* go to file => export => gltf auto export + +![blender addon use](../../docs/blender_addon_use.png) + +* set the autoexport parameters : output path, name of your main scene etc in the **auto export** panel + +![blender addon use3](../../docs/blender_addon_use3.png) + +* and your standard gltf export parameters in the **gltf** panel + +![blender addon use2](../../docs/blender_addon_use2.png) + + +* click on "apply settings" +* now next time you save your blend file you will get an automatically exported gltf file (or more than one, depending on your settings, see below) + +### Blueprints + +You can enable this option to automatically replace all the **collection instances** inside your main scene with blueprints +- whenever you change your main scene (or your library scene , if that option is enabled), all your collection instances + * will be replaced with empties (this will not be visible to you) + * those empties will have additional custom properties / components : ```BlueprintName``` & ```SpawnHere``` + * your main scene/ level will be exported to a much more trimmed down gltf file (see next point) + * all the original collections (that you used to create the instances) will be exported as **seperate gltf files** into the "library" folder + +- this means you will have + * one small main gltf file (your level/world) + * as many gltf files as you have used collections in the main scene , in the library path you specified : + for the included [advanced](../../examples/advanced/) example's [assets](../../assets/advanced/models/), it looks something like this: + + ![library](../../docs/exported_library_files.png) + + the .blend file that they are generated from can be found [here](../../assets/advanced/advanced.blend) + +#### Process + +This is the internal logic of the export process with blueprints + +![process](../../docs/process.svg) + +ie this is an example scene... + +![](../../docs/workflow_original.jpg) + +and what actually gets exported for the main scene/world/level + +![](../../docs/workflow_empties.jpg) + +all collections instances replaced with empties, and all those collections exported to gltf files as seen above + + +### TODO: + +- [ ] add ability to have multiple main & library scenes +- [ ] detect which objects have been changed to only re-export those + +## License + +This tool, all its code, contents & assets is Dual-licensed under either of + +- Apache License, Version 2.0, ([LICENSE-APACHE](../LICENSE_APACHE.md) or https://www.apache.org/licenses/LICENSE-2.0) +- MIT license ([LICENSE-MIT](../LICENSE_MIT.md) or https://opensource.org/licenses/MIT) \ No newline at end of file diff --git a/tools/blender_auto_export/__init__.py b/tools/gltf_auto_export/__init__.py similarity index 75% rename from tools/blender_auto_export/__init__.py rename to tools/gltf_auto_export/__init__.py index 2cf9e04..5bbf3c6 100644 --- a/tools/blender_auto_export/__init__.py +++ b/tools/gltf_auto_export/__init__.py @@ -1,4 +1,4 @@ -#TODO: this is not actually in use yet, just use the blender_auto_export_gltf.py file +#TODO: this is not actually in use yet, just use the gltf_auto_export.py file bl_info = { "name": "Test glTF/glb auto-export", "author": "kaosigh", @@ -14,11 +14,11 @@ bl_info = { import bpy -from .blender_auto_export_gltf import TEST_AUTO_OT_gltf -from .blender_auto_export_gltf import deps_update_handler -from .blender_auto_export_gltf import save_handler -from .blender_auto_export_gltf import get_changedScene -from .blender_auto_export_gltf import set_ChangedScene +from .gltf_auto_export import TEST_AUTO_OT_gltf +from .gltf_auto_export import deps_update_handler +from .gltf_auto_export import save_handler +from .gltf_auto_export import get_changedScene +from .gltf_auto_export import set_ChangedScene # Only needed if you want to add into a dynamic menu diff --git a/tools/gltf_auto_export/gltf_auto_export.py b/tools/gltf_auto_export/gltf_auto_export.py new file mode 100644 index 0000000..20174bf --- /dev/null +++ b/tools/gltf_auto_export/gltf_auto_export.py @@ -0,0 +1,911 @@ +bl_info = { + "name": "gltf_auto_export", + "author": "kaosigh", + "version": (0, 1), + "blender": (3, 4, 0), + "location": "File > Import-Export", + "description": "glTF/glb auto-export", + "warning": "", + "wiki_url": "", + "tracker_url": "", + "category": "Import-Export" +} + +import os +import bpy +from bpy.types import Operator, AddonPreferences +from bpy.app.handlers import persistent +from bpy_extras.io_utils import ExportHelper +from bpy.props import (BoolProperty, + IntProperty, + StringProperty, + EnumProperty, + CollectionProperty + ) + + + + + +#see here for original gltf exporter infos https://github.com/KhronosGroup/glTF-Blender-IO/blob/main/addons/io_scene_gltf2/__init__.py +@persistent +def deps_update_handler(scene, depsgraph): + + #print("depsgraph_update_post", scene.name) + """ + print("-------------") + changed_objects = [] + for obj in depsgraph.updates: + if isinstance(obj.id, bpy.types.Object): + print("object changed, amazing", obj.id, obj.id.name) + changed_objects.append(obj) + """ + changed = scene.name or "" + # bpy.context.scene.changedObjects = changed_objects + bpy.context.scene.changedScene = changed + +@persistent +def save_handler(dummy): + print("-------------") + print("saved", bpy.data.filepath) + auto_export() + + +def get_changedScene(self): + return self["changedScene"] + +def set_changedScene(self, value): + self["changedScene"] = value + + +#def get_changedObjects(self): +# return self["changedObjects"] + +#def set_changedObjects(self, value): +# self["changedObjects"] = value + +#https://docs.blender.org/api/current/bpy.ops.export_scene.html#bpy.ops.export_scene.gltf +def export_gltf (path, export_settings): + settings = {**export_settings, "filepath": path} + bpy.ops.export_scene.gltf(**settings) + + +##################################################### +#### Helpers #### + +def get_collection_hierarchy(root_col, levels=1): + """Read hierarchy of the collections in the scene""" + level_lookup = {} + def recurse(root_col, parent, depth): + if depth > levels: + return + if isinstance(parent, bpy.types.Collection): + level_lookup.setdefault(parent, []).append(root_col) + for child in root_col.children: + recurse(child, root_col, depth + 1) + recurse(root_col, root_col.children, 0) + return level_lookup + +# the active collection is a View Layer concept, so you actually have to find the active LayerCollection +# which must be done recursively +def find_layer_collection_recursive(find, col): + for c in col.children: + if c.collection == find: + return c + return None + +#Recursivly transverse layer_collection for a particular name +def recurLayerCollection(layerColl, collName): + found = None + if (layerColl.name == collName): + return layerColl + for layer in layerColl.children: + found = recurLayerCollection(layer, collName) + if found: + return found + + +# Makes an empty, at location, stores it in existing collection, from https://blender.stackexchange.com/questions/51290/how-to-add-empty-object-not-using-bpy-ops +def make_empty(name, location, coll_name): #string, vector, string of existing coll + empty_obj = bpy.data.objects.new( "empty", None, ) + empty_obj.name = name + empty_obj.empty_display_size = 1 + bpy.data.collections[coll_name].objects.link(empty_obj) + empty_obj.location = location + return empty_obj + + +def make_empty2(name, location, collection): + object_data = None #bpy.data.meshes.new("NewMesh") #None + empty_obj = bpy.data.objects.new( name, object_data ) + empty_obj.name = name + empty_obj.location = location + + + empty_obj.empty_display_size = 2 + empty_obj.empty_display_type = 'PLAIN_AXES' + collection.objects.link( empty_obj ) + return empty_obj + +def make_empty3(name, location, collection): + original_active_object = bpy.context.active_object + bpy.ops.object.empty_add(type='PLAIN_AXES', location=location) + empty_obj = bpy.context.active_object + empty_obj.name = name + collection.objects.link( empty_obj ) + bpy.context.view_layer.objects.active = original_active_object + return empty_obj + + +# generate a copy of a scene that replaces collection instances with empties +# FIXME: will not preserve original names +# alternative: copy original names before creating a new scene, & reset them +# or create empties, hide original ones, and do the same renaming trick +def generate_hollow_scene(scene): + root_collection = scene.collection + temp_scene = bpy.data.scenes.new(name="temp_scene") + copy_root_collection = temp_scene.collection + scene_objects = [o for o in root_collection.objects] + + + found = find_layer_collection_recursive(copy_root_collection, bpy.context.view_layer.layer_collection) + if found: + print("FOUND COLLECTION") + # once it's found, set the active layer collection to the one we found + bpy.context.view_layer.active_layer_collection = found + + #original_names = {} + original_names = [] + for object in scene_objects: + if object.instance_type == 'COLLECTION': + collection_name = object.instance_collection.name + + #original_names[object.name] = object.name# + "____bak" + #print("custom properties", object, object.keys(), object.items()) + #for k, e in object.items(): + # print("custom properties ", k, e) + print("object location", object.location) + original_name = object.name + original_names.append(original_name) + + object.name = original_name + "____bak" + empty_obj = make_empty3(original_name, object.location, copy_root_collection) + """we inject the collection/blueprint name, as a component called 'BlueprintName', but we only do this in the empty, not the original object""" + empty_obj['BlueprintName'] = '"'+collection_name+'"' + empty_obj['SpawnHere'] = '' + + for k, v in object.items(): + empty_obj[k] = v + else: + copy_root_collection.objects.link(object) + + # bpy.data.scenes.remove(temp_scene) + # objs = bpy.data.objects + #objs.remove(objs["Cube"], do_unlink=True) + return (temp_scene, original_names) + +# clear & remove "hollow scene" +def clear_hollow_scene(temp_scene, original_scene, original_names): + # reset original names + root_collection = original_scene.collection + scene_objects = [o for o in root_collection.objects] + + for object in scene_objects: + if object.instance_type == 'COLLECTION': + print("object name to reset", object.name) + if object.name.endswith("____bak"): + print("reseting") + object.name = object.name.replace("____bak", "") + + # remove empties (only needed when we go via ops ????) + root_collection = temp_scene.collection + scene_objects = [o for o in root_collection.objects] + for object in scene_objects: + if object.type == 'EMPTY': + bpy.data.objects.remove(object, do_unlink=True) + + bpy.data.scenes.remove(temp_scene) + + +# returns the list of the collections in use for a given scene +def get_used_collections(scene): + root_collection = scene.collection + + scene_objects = [o for o in root_collection.objects] + collection_names = set() + used_collections = [] + for object in scene_objects: + print("object ", object) + if object.instance_type == 'COLLECTION': + print("THIS OBJECT IS A COLLECTION") + # print("instance_type" ,object.instance_type) + collection_name = object.instance_collection.name + print("instance collection", object.instance_collection.name) + #object.instance_collection.users_scene + # del object['blueprint'] + # object['BlueprintName'] = '"'+collection_name+'"' + if not collection_name in collection_names: + collection_names.add(collection_name) + used_collections.append(object.instance_collection) + + print("scene objects", scene_objects) + return (collection_names, used_collections) + + +def generate_gltf_export_preferences(addon_prefs): + # default values + gltf_export_preferences = dict( + export_format= 'GLB', #'GLB', 'GLTF_SEPARATE', 'GLTF_EMBEDDED' + check_existing=False, + + use_selection=False, + use_visible=True, # Export visible and hidden objects. See Object/Batch Export to skip. + use_renderable=False, + use_active_collection= False, + use_active_collection_with_nested=False, + use_active_scene = False, + + export_texcoords=True, + export_normals=True, + # here add draco settings + export_draco_mesh_compression_enable = False, + + export_tangents=False, + #export_materials + export_colors=True, + export_attributes=True, + #use_mesh_edges + #use_mesh_vertices + export_cameras=True, + export_extras=True, # For custom exported properties. + export_lights=True, + export_yup=True, + export_skins=True, + export_morph=False, + export_apply=False, + export_animations=False + ) + + for key in addon_prefs.__annotations__.keys(): + if str(key) not in AutoExportGltfPreferenceNames: + print("overriding setting", key, "value", getattr(addon_prefs,key)) + gltf_export_preferences[key] = getattr(addon_prefs,key) + + return gltf_export_preferences + +###################################################### +#### Export logic ##### + +def export_used_collections(scene, folder_path, addon_prefs, gltf_export_preferences): + (collection_names, used_collections) = get_used_collections(scene) + library_scene = getattr(addon_prefs, "export_library_scene_name") + print("used collection names", collection_names, used_collections) + + # set active scene to be the library scene (hack for now) + bpy.context.window.scene = bpy.data.scenes[library_scene] + # save current active collection + active_collection = bpy.context.view_layer.active_layer_collection + + for collection_name in list(collection_names): + print("exporting collection", collection_name) + + layer_collection = bpy.context.view_layer.layer_collection + layerColl = recurLayerCollection(layer_collection, collection_name) + # set active collection to the collection + bpy.context.view_layer.active_layer_collection = layerColl + + gltf_output_path = os.path.join(folder_path, collection_name) + + export_settings = { **gltf_export_preferences, 'use_active_scene': True, 'use_active_collection': True} #'use_visible': False, + export_gltf(gltf_output_path, export_settings) + + # reset active collection to the one we save before + bpy.context.view_layer.active_layer_collection = active_collection + + +def export_main(scene, folder_path, addon_prefs): + output_name = getattr(addon_prefs,"export_main_output_name") + gltf_export_preferences = generate_gltf_export_preferences(addon_prefs) + print("exporting to", folder_path, output_name) + + export_blueprints = getattr(addon_prefs,"export_blueprints") + export_blueprints_path = os.path.join(folder_path, getattr(addon_prefs,"export_blueprints_path")) if getattr(addon_prefs,"export_blueprints_path") != '' else folder_path + + # backup current active scene + old_current_scene = bpy.context.scene + # backup current selections + old_selections = bpy.context.selected_objects + + + if export_blueprints : + print("-----EXPORTING BLUEPRINTS----") + print("LIBRARY EXPORT", export_blueprints_path ) + + try: + export_used_collections(scene, export_blueprints_path, addon_prefs, gltf_export_preferences) + except Exception as error: + print("failed to export collections to gltf: ", error) + + (hollow_scene, object_names) = generate_hollow_scene(scene) + #except Exception: + # print("failed to create hollow scene") + + # set active scene to be the given scene + bpy.context.window.scene = hollow_scene + + gltf_output_path = os.path.join(folder_path, output_name) + + export_settings = { **gltf_export_preferences, + 'use_active_scene': True, + 'use_active_collection':True, + 'use_active_collection_with_nested':True, + 'use_visible': False, + 'use_renderable': False, + 'export_apply':True + } + export_gltf(gltf_output_path, export_settings) + + if export_blueprints : + clear_hollow_scene(hollow_scene, scene, object_names) + + # reset current scene from backup + bpy.context.window.scene = old_current_scene + # reset selections + for obj in old_selections: + obj.select_set(True) + + +"""Main function""" +def auto_export(): + file_path = bpy.data.filepath + # Get the folder + folder_path = os.path.dirname(file_path) + # get the preferences for our addon + addon_prefs = bpy.context.preferences.addons[__name__].preferences + + print("last changed", bpy.context.scene.changedScene) + + # optimised variation + last_changed = bpy.context.scene.changedScene + + export_main_scene_name = getattr(addon_prefs,"export_main_scene_name") + export_on_library_changes = getattr(addon_prefs,"export_on_library_changes") + export_library_scene_name = getattr(addon_prefs,"export_library_scene_name") + + # export the main game world + game_scene = bpy.data.scenes[export_main_scene_name] + + # most recent change was in the main scene (game world/ level) + if last_changed == export_main_scene_name: + print("game world changed, exporting game gltf only") + export_main(game_scene, folder_path, addon_prefs) + + # if the library has changed, so will likely the game world that uses the library assets + if last_changed == export_library_scene_name and export_library_scene_name != "" and export_on_library_changes: + print("library changed") + export_main(game_scene, folder_path, addon_prefs) + + +###################################################### +## ui logic & co + +AutoExportGltfPreferenceNames = [ + 'auto_export', + 'export_main_scene_name', + 'export_main_output_name', + 'export_on_library_changes', + 'export_library_scene_name', + 'export_blueprints', + 'export_blueprints_path' +] + +class AutoExportGltfAddonPreferences(AddonPreferences): + # this must match the add-on name, use '__package__' + # when defining this in a submodule of a python package. + bl_idname = __name__ + + auto_export: BoolProperty( + name='Auto export', + description='Automatically export to gltf on save', + default=True + ) + export_main_scene_name: StringProperty( + name='Main scene', + description='The name of the main scene/level/world to auto export', + default='Scene' + ) + export_main_output_name: StringProperty( + name='Glb output name', + description='The glb output name for the main scene to auto export', + default='world' + ) + export_on_library_changes: BoolProperty( + name='Export on library changes', + description='Export main scene on library changes', + default=False + ) + export_library_scene_name: StringProperty( + name='Library scene', + description='The name of the library scene to auto export', + default='Library' + ) + # blueprint settings + export_blueprints: BoolProperty( + name='Export Blueprints', + description='Replaces collection instances with an Empty with a BlueprintName custom property', + default=False + ) + export_blueprints_path: StringProperty( + name='Blueprints path', + description='path to export the blueprints to (relative to this Blend file)', + default='' + ) + + + ##### + export_format: EnumProperty( + name='Format', + items=(('GLB', 'glTF Binary (.glb)', + 'Exports a single file, with all data packed in binary form. ' + 'Most efficient and portable, but more difficult to edit later'), + ('GLTF_EMBEDDED', 'glTF Embedded (.gltf)', + 'Exports a single file, with all data packed in JSON. ' + 'Less efficient than binary, but easier to edit later'), + ('GLTF_SEPARATE', 'glTF Separate (.gltf + .bin + textures)', + 'Exports multiple files, with separate JSON, binary and texture data. ' + 'Easiest to edit later')), + description=( + 'Output format and embedding options. Binary is most efficient, ' + 'but JSON (embedded or separate) may be easier to edit later' + ), + default='GLB' + ) + export_copyright: StringProperty( + name='Copyright', + description='Legal rights and conditions for the model', + default='' + ) + + export_image_format: EnumProperty( + name='Images', + items=(('AUTO', 'Automatic', + 'Save PNGs as PNGs and JPEGs as JPEGs. ' + 'If neither one, use PNG'), + ('JPEG', 'JPEG Format (.jpg)', + 'Save images as JPEGs. (Images that need alpha are saved as PNGs though.) ' + 'Be aware of a possible loss in quality'), + ('NONE', 'None', + 'Don\'t export images'), + ), + description=( + 'Output format for images. PNG is lossless and generally preferred, but JPEG might be preferable for web ' + 'applications due to the smaller file size. Alternatively they can be omitted if they are not needed' + ), + default='AUTO' + ) + + export_texture_dir: StringProperty( + name='Textures', + description='Folder to place texture files in. Relative to the .gltf file', + default='', + ) + + """ + export_jpeg_quality: IntProperty( + name='JPEG quality', + description='Quality of JPEG export', + default=75, + min=0, + max=100 + ) + """ + + export_keep_originals: BoolProperty( + name='Keep original', + description=('Keep original textures files if possible. ' + 'WARNING: if you use more than one texture, ' + 'where pbr standard requires only one, only one texture will be used. ' + 'This can lead to unexpected results' + ), + default=False, + ) + + export_texcoords: BoolProperty( + name='UVs', + description='Export UVs (texture coordinates) with meshes', + default=True + ) + + export_normals: BoolProperty( + name='Normals', + description='Export vertex normals with meshes', + default=True + ) + + export_draco_mesh_compression_enable: BoolProperty( + name='Draco mesh compression', + description='Compress mesh using Draco', + default=False + ) + + export_draco_mesh_compression_level: IntProperty( + name='Compression level', + description='Compression level (0 = most speed, 6 = most compression, higher values currently not supported)', + default=6, + min=0, + max=10 + ) + + export_draco_position_quantization: IntProperty( + name='Position quantization bits', + description='Quantization bits for position values (0 = no quantization)', + default=14, + min=0, + max=30 + ) + + export_draco_normal_quantization: IntProperty( + name='Normal quantization bits', + description='Quantization bits for normal values (0 = no quantization)', + default=10, + min=0, + max=30 + ) + + export_draco_texcoord_quantization: IntProperty( + name='Texcoord quantization bits', + description='Quantization bits for texture coordinate values (0 = no quantization)', + default=12, + min=0, + max=30 + ) + + export_draco_color_quantization: IntProperty( + name='Color quantization bits', + description='Quantization bits for color values (0 = no quantization)', + default=10, + min=0, + max=30 + ) + + export_draco_generic_quantization: IntProperty( + name='Generic quantization bits', + description='Quantization bits for generic coordinate values like weights or joints (0 = no quantization)', + default=12, + min=0, + max=30 + ) + + export_tangents: BoolProperty( + name='Tangents', + description='Export vertex tangents with meshes', + default=False + ) + + export_materials: EnumProperty( + name='Materials', + items=(('EXPORT', 'Export', + 'Export all materials used by included objects'), + ('PLACEHOLDER', 'Placeholder', + 'Do not export materials, but write multiple primitive groups per mesh, keeping material slot information'), + ('NONE', 'No export', + 'Do not export materials, and combine mesh primitive groups, losing material slot information')), + description='Export materials', + default='EXPORT' + ) + + export_original_specular: BoolProperty( + name='Export original PBR Specular', + description=( + 'Export original glTF PBR Specular, instead of Blender Principled Shader Specular' + ), + default=False, + ) + + export_colors: BoolProperty( + name='Vertex Colors', + description='Export vertex colors with meshes', + default=True + ) + + export_attributes: BoolProperty( + name='Attributes', + description='Export Attributes (when starting with underscore)', + default=False + ) + + use_mesh_edges: BoolProperty( + name='Loose Edges', + description=( + 'Export loose edges as lines, using the material from the first material slot' + ), + default=False, + ) + + use_mesh_vertices: BoolProperty( + name='Loose Points', + description=( + 'Export loose points as glTF points, using the material from the first material slot' + ), + default=False, + ) + + export_cameras: BoolProperty( + name='Cameras', + description='Export cameras', + default=True + ) + + use_selection: BoolProperty( + name='Selected Objects', + description='Export selected objects only', + default=False + ) + + use_visible: BoolProperty( + name='Visible Objects', + description='Export visible objects only', + default=True + ) + + use_renderable: BoolProperty( + name='Renderable Objects', + description='Export renderable objects only', + default=False + ) + + + export_apply: BoolProperty( + name='Export Apply Modifiers', + description='Apply modifiers (excluding Armatures) to mesh objects -' + 'WARNING: prevents exporting shape keys', + default=True + ) + + export_yup: BoolProperty( + name='+Y Up', + description='Export using glTF convention, +Y up', + default=True + ) + + use_visible: BoolProperty( + name='Visible Objects', + description='Export visible objects only', + default=False + ) + + use_renderable: BoolProperty( + name='Renderable Objects', + description='Export renderable objects only', + default=False + ) + + export_extras: BoolProperty( + name='Custom Properties', + description='Export custom properties as glTF extras', + default=True + ) + + export_animations: BoolProperty( + name='Animations', + description='Exports active actions and NLA tracks as glTF animations', + default=False + ) + +class AutoExportGLTF(Operator, ExportHelper): + """test""" + bl_idname = "export_scenes.auto_gltf" + bl_label = "Apply settings" + bl_options = {'PRESET', 'UNDO'} + + # ExportHelper mixin class uses this + filename_ext = '' + + filter_glob: StringProperty( + default='*.glb;*.gltf', + options={'HIDDEN'} + ) + """ + auto_export: BoolProperty( + name='Auto export', + description='Automatically export to gltf on save', + default=True + ) + export_main_scene_name: StringProperty( + name='Main scene', + description='The name of the main scene/level/world to auto export', + default='Scene' + ) + export_main_output_name: StringProperty( + name='Glb output name', + description='The glb output name for the main scene to auto export', + default='world' + ) + export_on_library_changes: BoolProperty( + name='Export on library changes', + description='Export main scene on library changes', + default=False + ) + export_library_scene_name: StringProperty( + name='Library scene', + description='The name of the library scene to auto export', + default='Library' + ) + # blueprint settings + export_blueprints: BoolProperty( + name='Export Blueprints', + description='Replaces collection instances with an Empty with a BlueprintName custom property', + default=False + ) + export_blueprints_path: StringProperty( + name='Blueprints path', + description='path to export the blueprints to (relative to this Blend file)', + default='' + )""" + + def draw(self, context): + pass + + def execute(self, context): + preferences = context.preferences + return {'FINISHED'} + +class GLTF_PT_auto_export_main(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "" + bl_parent_id = "FILE_PT_operator" + bl_options = {'HIDE_HEADER'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENES_OT_auto_gltf" + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + + sfile = context.space_data + + +class GLTF_PT_auto_export_root(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "Auto export" + bl_parent_id = "GLTF_PT_auto_export_main" + #bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENES_OT_auto_gltf" + + def draw_header(self, context): + sfile = context.space_data + operator = sfile.active_operator + self.layout.prop(operator, "auto_export", text="") + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + + sfile = context.space_data + #operator = sfile.active_operator + operator = bpy.context.preferences.addons[__name__].preferences + + layout.active = operator.auto_export + layout.prop(operator, "export_main_scene_name") + layout.prop(operator, "export_library_scene_name") + + layout.prop(operator, "export_main_output_name") + layout.prop(operator, "export_on_library_changes") + +class GLTF_PT_auto_export_blueprints(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "Blueprints" + bl_parent_id = "GLTF_PT_auto_export_root" + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENES_OT_auto_gltf" #"EXPORT_SCENE_OT_gltf" + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + + sfile = context.space_data + operator = sfile.active_operator + addon_prefs = bpy.context.preferences.addons[__name__].preferences + + layout.prop(addon_prefs, "export_blueprints") + layout.prop(addon_prefs, "export_blueprints_path") + +class GLTF_PT_auto_export_gltf(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "Gltf" + bl_parent_id = "GLTF_PT_auto_export_main" + bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENES_OT_auto_gltf" #"EXPORT_SCENE_OT_gltf" + + def draw(self, context): + preferences = context.preferences + addon_prefs = preferences.addons[__name__].preferences + layout = self.layout + + #preferences = context.preferences + #print("ADDON PREFERENCES ", list(preferences.addons.keys())) + #print("standard blender gltf prefs", list(preferences.addons["io_scene_gltf2"].preferences.keys())) + # we get the addon preferences from the standard gltf exporter & use those : + addon_prefs_gltf = preferences.addons["io_scene_gltf2"].preferences + + #addon_prefs = preferences.addons[__name__].preferences + + # print("KEYS", dir(addon_prefs)) + #print("BLAS", addon_prefs.__annotations__) + #print(addon_prefs.__dict__) + for key in addon_prefs.__annotations__.keys(): + if key not in AutoExportGltfPreferenceNames: + layout.prop(addon_prefs, key) + #for key in addon_prefs_gltf.__annotations__.keys(): + # layout.prop(addon_prefs_gltf, key) + +def menu_func_import(self, context): + self.layout.operator(AutoExportGLTF.bl_idname, text="glTF auto Export (.glb/gltf)") + +classes = [ + AutoExportGLTF, + AutoExportGltfAddonPreferences, + GLTF_PT_auto_export_main, + GLTF_PT_auto_export_root, + GLTF_PT_auto_export_blueprints, + GLTF_PT_auto_export_gltf +] + +def register(): + for cls in classes: + bpy.utils.register_class(cls) + + # setup handlers for updates & saving + bpy.app.handlers.depsgraph_update_post.append(deps_update_handler) + bpy.app.handlers.save_post.append(save_handler) + bpy.types.Scene.changedScene = bpy.props.StringProperty(get=get_changedScene, set=set_changedScene) + #bpy.types.Scene.changedObjects = bpy.props.CollectionProperty(get=get_changedObjects, set=set_changedObjects) + + # add our addon to the toolbar + bpy.types.TOPBAR_MT_file_export.append(menu_func_import) + + + +def unregister(): + for cls in classes: + bpy.utils.unregister_class(cls) + + bpy.types.TOPBAR_MT_file_export.remove(menu_func_import) + + # remove handlers & co + bpy.app.handlers.depsgraph_update_post.remove(deps_update_handler) + bpy.app.handlers.save_post.remove(save_handler) + del bpy.types.Scene.changedScene + #del bpy.types.Scene.changedObjects + +if __name__ == "__main__": + register() \ No newline at end of file diff --git a/tools/blender_auto_export/blender_auto_export_gltf.py b/tools/gltf_auto_export/old.py similarity index 59% rename from tools/blender_auto_export/blender_auto_export_gltf.py rename to tools/gltf_auto_export/old.py index 862f084..1a67c9a 100644 --- a/tools/blender_auto_export/blender_auto_export_gltf.py +++ b/tools/gltf_auto_export/old.py @@ -1,5 +1,5 @@ bl_info = { - "name": "blender_auto_export_gltf", + "name": "gltf_auto_export_gltf", "author": "kaosigh", "version": (0, 1), "blender": (3, 4, 0), @@ -24,7 +24,6 @@ from bpy.props import (BoolProperty, ) #see here for original gltf exporter infos https://github.com/KhronosGroup/glTF-Blender-IO/blob/main/addons/io_scene_gltf2/__init__.py - @persistent def deps_update_handler(scene): print("-------------") @@ -109,7 +108,6 @@ def export_library_split(scene, folder_path, gltf_export_preferences): # reset current scene from backup bpy.context.window.scene = old_current_scene - def debug_test(scene): root_collection = scene.collection collections_lookup = get_collection_hierarchy(root_collection, 1) @@ -238,18 +236,215 @@ def export_library_merged(scene, folder_path, gltf_export_preferences): # reset current scene from backup bpy.context.window.scene = old_current_scene -def export_main(scene, folder_path, gltf_export_preferences, output_name): + +# the active collection is a View Layer concept, so you actually have to find the active LayerCollection +# which must be done recursively +def find_layer_collection_recursive(find, col): + for c in col.children: + if c.collection == find: + return c + return None + + +# Makes an empty, at location, stores it in existing collection, from https://blender.stackexchange.com/questions/51290/how-to-add-empty-object-not-using-bpy-ops +def make_empty(name, location, coll_name): #string, vector, string of existing coll + empty_obj = bpy.data.objects.new( "empty", None, ) + empty_obj.name = name + empty_obj.empty_display_size = 1 + bpy.data.collections[coll_name].objects.link(empty_obj) + empty_obj.location = location + return empty_obj + + +def make_empty2(name, location, collection): + object_data = None #bpy.data.meshes.new("NewMesh") #None + empty_obj = bpy.data.objects.new( name, object_data ) + empty_obj.name = name + empty_obj.location = location + + + empty_obj.empty_display_size = 2 + empty_obj.empty_display_type = 'PLAIN_AXES' + collection.objects.link( empty_obj ) + return empty_obj + +def make_empty3(name, location, collection): + original_active_object = bpy.context.active_object + bpy.ops.object.empty_add(type='PLAIN_AXES', location=location) + empty_obj = bpy.context.active_object + empty_obj.name = name + collection.objects.link( empty_obj ) + bpy.context.view_layer.objects.active = original_active_object + return empty_obj + +# generate a copy of a scene that replaces collection instances with empties +# FIXME: will not preserve original names +# alternative: copy original names before creating a new scene, & reset them +# or create empties, hide original ones, and do the same renaming trick +def generate_hollow_scene(scene): + root_collection = scene.collection + temp_scene = bpy.data.scenes.new(name="temp_scene") + copy_root_collection = temp_scene.collection + scene_objects = [o for o in root_collection.objects] + + + found = find_layer_collection_recursive(copy_root_collection, bpy.context.view_layer.layer_collection) + if found: + print("FOUND COLLECTION") + # once it's found, set the active layer collection to the one we found + bpy.context.view_layer.active_layer_collection = found + + #original_names = {} + original_names = [] + for object in scene_objects: + if object.instance_type == 'COLLECTION': + collection_name = object.instance_collection.name + + #original_names[object.name] = object.name# + "____bak" + #print("custom properties", object, object.keys(), object.items()) + #for k, e in object.items(): + # print("custom properties ", k, e) + print("object location", object.location) + original_name = object.name + original_names.append(original_name) + + object.name = original_name + "____bak" + empty_obj = make_empty3(original_name, object.location, copy_root_collection) + """we inject the collection/blueprint name, as a component called 'BlueprintName', but we only do this in the empty, not the original object""" + empty_obj['BlueprintName'] = '"'+collection_name+'"' + empty_obj['SpawnHere'] = '' + + for k, v in object.items(): + empty_obj[k] = v + else: + copy_root_collection.objects.link(object) + + # bpy.data.scenes.remove(temp_scene) + # objs = bpy.data.objects + #objs.remove(objs["Cube"], do_unlink=True) + return (temp_scene, original_names) + +def clear_hollow_scene(temp_scene, original_scene, original_names): + # reset original names + root_collection = original_scene.collection + scene_objects = [o for o in root_collection.objects] + + for object in scene_objects: + if object.instance_type == 'COLLECTION': + print("object name to reset", object.name) + if object.name.endswith("____bak"): + print("reseting") + object.name = object.name.replace("____bak", "") + + # remove empties (only needed when we go via ops ????) + root_collection = temp_scene.collection + scene_objects = [o for o in root_collection.objects] + for object in scene_objects: + if object.type == 'EMPTY': + bpy.data.objects.remove(object, do_unlink=True) + + bpy.data.scenes.remove(temp_scene) + +#Recursivly transverse layer_collection for a particular name +def recurLayerCollection(layerColl, collName): + found = None + if (layerColl.name == collName): + return layerColl + for layer in layerColl.children: + found = recurLayerCollection(layer, collName) + if found: + return found + +def get_used_collections(scene): + root_collection = scene.collection + + scene_objects = [o for o in root_collection.objects] + collection_names = set() + used_collections = [] + for object in scene_objects: + print("object ", object) + if object.instance_type == 'COLLECTION': + print("THIS OBJECT IS A COLLECTION") + # print("instance_type" ,object.instance_type) + collection_name = object.instance_collection.name + print("instance collection", object.instance_collection.name) + #object.instance_collection.users_scene + # del object['blueprint'] + # object['BlueprintName'] = '"'+collection_name+'"' + if not collection_name in collection_names: + collection_names.add(collection_name) + used_collections.append(object.instance_collection) + + print("scene objects", scene_objects) + return (collection_names, used_collections) + +def export_used_collections(scene, folder_path, gltf_export_preferences): + (collection_names, used_collections) = get_used_collections(scene) + print("used collection names", collection_names, used_collections) + + # set active scene to be the library scene (hack for now) + bpy.context.window.scene = bpy.data.scenes["library"] + # save current active collection + active_collection = bpy.context.view_layer.active_layer_collection + + for collection_name in list(collection_names): + print("exporting collection", collection_name) + + layer_collection = bpy.context.view_layer.layer_collection + layerColl = recurLayerCollection(layer_collection, collection_name) + # set active collection to the collection + bpy.context.view_layer.active_layer_collection = layerColl + + print("layercoll", layerColl) + gltf_output_path = os.path.join(folder_path, collection_name) + + export_settings = { **gltf_export_preferences, 'use_active_scene': True, 'use_active_collection': True} #'use_visible': False, + export_gltf(gltf_output_path, export_settings) + + # reset active collection to the one we save before + bpy.context.view_layer.active_layer_collection = active_collection + +def export_main(scene, folder_path, gltf_export_preferences, output_name, addon_prefs): print("exporting to", folder_path, output_name) + export_blueprints = getattr(addon_prefs,"export_blueprints") + export_blueprints_path = os.path.join(folder_path, getattr(addon_prefs,"export_blueprints_path")) if getattr(addon_prefs,"export_blueprints_path") != '' else folder_path + # backup current active scene old_current_scene = bpy.context.scene - # set active scene to be the given scene - bpy.context.window.scene = scene + + if export_blueprints : + print("-----EXPORTING BLUEPRINTS----") + print("LIBRARY EXPORT", export_blueprints_path ) + + try: + #gltf_output_path = os.path.join(folder_path, "library") + #export_gltf(gltf_output_path, export_settings) + export_used_collections(scene, export_blueprints_path, gltf_export_preferences) + except Exception: + print("failed to export collections to gltf") + + (hollow_scene, object_names) = generate_hollow_scene(scene) + #except Exception: + # print("failed to create hollow scene") + + # set active scene to be the given scene + bpy.context.window.scene = hollow_scene gltf_output_path = os.path.join(folder_path, output_name) - export_settings = { **gltf_export_preferences, 'use_active_scene': True} + export_settings = { **gltf_export_preferences, + 'use_active_scene': True, + 'use_active_collection':True, + 'use_active_collection_with_nested':True, + 'use_visible': False, + 'use_renderable': False, + 'export_apply':True + } export_gltf(gltf_output_path, export_settings) + if export_blueprints : + clear_hollow_scene(hollow_scene, scene, object_names) + # reset current scene from backup bpy.context.window.scene = old_current_scene @@ -320,11 +515,11 @@ def auto_export(): ) for key in addon_prefs.__annotations__.keys(): - if key is not "export_on_library_changes" and key is not "export_main_scene_name" and key is not "export_main_output_name" and key is not "export_library_scene_name": #FIXME: ugh, cleanup + if key != "export_on_library_changes" and key != "export_main_scene_name" and key != "export_main_output_name" and key != "export_library_scene_name" and key != "export_blueprints" and key != "export_blueprints_path": #FIXME: ugh, cleanup gltf_export_preferences[key] = getattr(addon_prefs,key) print("overriding setting", key, "value", getattr(addon_prefs,key)) - # testing (we want an in-memory scene, not one that is visible in the ui) + # (we want an in-memory scene, not one that is visible in the ui) #invisible_scene = bpy.types.Scene("foo") @@ -338,10 +533,9 @@ def auto_export(): export_main_scene_name = getattr(addon_prefs,"export_main_scene_name") export_main_output_name = getattr(addon_prefs,"export_main_output_name") export_on_library_changes = getattr(addon_prefs,"export_on_library_changes") - export_library_scene_name = getattr(addon_prefs,"export_library_scene_name") - print("exporting ??", export_on_library_changes, export_main_scene_name, export_main_output_name) + # print("ADD ON PARAMS FOR EXPORT ??", export_on_library_changes, export_main_scene_name, export_main_output_name, export_blueprints) print("last changed", bpy.context.scene.changedScene) # optimised variation last_changed = bpy.context.scene.changedScene #get_changedScene() @@ -350,8 +544,8 @@ def auto_export(): game_scene = bpy.data.scenes[export_main_scene_name] print("game world changed, exporting game gltf only") - export_main(game_scene, folder_path, gltf_export_preferences, export_main_output_name) - if last_changed == export_library_scene_name and export_library_scene_name is not "" : # if the library has changed, so will likely the game world that uses the library assets + export_main(game_scene, folder_path, gltf_export_preferences, export_main_output_name, addon_prefs) + if last_changed == export_library_scene_name and export_library_scene_name != "" : # if the library has changed, so will likely the game world that uses the library assets print("library changed, exporting both game & library gltf") library_scene = bpy.data.scenes[export_library_scene_name] @@ -360,7 +554,7 @@ def auto_export(): # export the main game world if export_on_library_changes: game_scene = bpy.data.scenes[export_main_scene_name] - export_main(game_scene, folder_path, gltf_export_preferences, export_main_output_name) + export_main(game_scene, folder_path, gltf_export_preferences, export_main_output_name, addon_prefs) return {'FINISHED'} @@ -384,7 +578,14 @@ class AutoExportGltfAddonPreferences(AddonPreferences): # this must match the add-on name, use '__package__' # when defining this in a submodule of a python package. bl_idname = __name__ - + ui_tab: EnumProperty( + items=(('GENERAL', "General", "General settings"), + ('MESHES', "Meshes", "Mesh settings"), + ('OBJECTS', "Objects", "Object settings"), + ('ANIMATION', "Animation", "Animation settings")), + name="ui_tab", + description="Export setting categories", + ) export_format: EnumProperty( name='Format', items=(('GLB', 'glTF Binary (.glb)', @@ -425,6 +626,19 @@ class AutoExportGltfAddonPreferences(AddonPreferences): default='' ) + # blueprint settings + export_blueprints: BoolProperty( + name='Export Blueprints', + description='Replaces collection instances with an Empty with a BlueprintName custom property', + default=False + ) + + export_blueprints_path: StringProperty( + name='Export Blueprints path', + description='path to export the blueprints to', + default='' + ) + ##### export_copyright: StringProperty( @@ -663,7 +877,7 @@ class AutoExportGltfAddonPreferences(AddonPreferences): -class TEST_AUTO_OT_gltf(Operator, ExportHelper): +class AutoExportGLTF2(Operator, ExportHelper): """test""" bl_idname = "export_scenes.auto_gltf" bl_label = "Apply settings" @@ -681,6 +895,7 @@ class TEST_AUTO_OT_gltf(Operator, ExportHelper): # to the class instance from the operator setting before calling. def draw(self, context): + pass layout = self.layout preferences = context.preferences addon_prefs = preferences.addons[__name__].preferences @@ -716,9 +931,184 @@ class TEST_AUTO_OT_gltf(Operator, ExportHelper): # Only needed if you want to add into a dynamic menu def menu_func_import(self, context): - self.layout.operator(TEST_AUTO_OT_gltf.bl_idname, text="glTF auto Export (.glb/gltf)") + self.layout.operator(AutoExportGLTF2.bl_idname, text="glTF auto Export (.glb/gltf)") -classes = [TEST_AUTO_OT_gltf, AutoExportGltfAddonPreferences] + +class GLTF_PT_export_main(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "" + bl_parent_id = "FILE_PT_operator" + bl_options = {'HIDE_HEADER'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENE_OT_gltf" + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + + sfile = context.space_data + operator = sfile.active_operator + + layout.prop(operator, 'export_format') + if operator.export_format == 'GLTF_SEPARATE': + layout.prop(operator, 'export_keep_originals') + if operator.export_keep_originals is False: + layout.prop(operator, 'export_texture_dir', icon='FILE_FOLDER') + + layout.prop(operator, 'export_copyright') + layout.prop(operator, 'will_save_settings') + + +class GLTF_PT_export_transform(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "Transform" + bl_parent_id = "FILE_PT_operator" + bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENE_OT_gltf" + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + + sfile = context.space_data + operator = sfile.active_operator + + layout.prop(operator, 'export_yup') + +class GLTF_PT_export_include(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "Include" + bl_parent_id = "FILE_PT_operator" + bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENE_OT_gltf" + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + + sfile = context.space_data + operator = sfile.active_operator + + col = layout.column(heading = "Limit to", align = True) + col.prop(operator, 'use_selection') + col.prop(operator, 'use_visible') + col.prop(operator, 'use_renderable') + col.prop(operator, 'use_active_collection') + if operator.use_active_collection: + col.prop(operator, 'use_active_collection_with_nested') + col.prop(operator, 'use_active_scene') + + col = layout.column(heading = "Data", align = True) + col.prop(operator, 'export_extras') + col.prop(operator, 'export_cameras') + col.prop(operator, 'export_lights') + +class GLTF_PT_export_animation(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "Animation" + bl_parent_id = "FILE_PT_operator" + bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENE_OT_gltf" + + def draw_header(self, context): + sfile = context.space_data + operator = sfile.active_operator + self.layout.prop(operator, "export_animations", text="") + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + + sfile = context.space_data + operator = sfile.active_operator + + layout.active = operator.export_animations + + layout.prop(operator, 'export_animation_mode') + if operator.export_animation_mode == "ACTIVE_ACTIONS": + layout.prop(operator, 'export_nla_strips_merged_animation_name') + + row = layout.row() + row.active = operator.export_force_sampling and operator.export_animation_mode in ['ACTIONS', 'ACTIVE_ACTIONS'] + row.prop(operator, 'export_bake_animation') + if operator.export_animation_mode == "SCENE": + layout.prop(operator, 'export_anim_scene_split_object') + +class GLTF_PT_export_animation_notes(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "Notes" + bl_parent_id = "GLTF_PT_export_animation" + bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + + return operator.bl_idname == "EXPORT_SCENE_OT_gltf" and \ + operator.export_animation_mode in ["NLA_TRACKS", "SCENE"] + + def draw(self, context): + operator = context.space_data.active_operator + layout = self.layout + if operator.export_animation_mode == "SCENE": + layout.label(text="Scene mode uses full bake mode:") + layout.label(text="- sampling is active") + layout.label(text="- baking all objects is active") + layout.label(text="- Using scene frame range") + elif operator.export_animation_mode == "NLA_TRACKS": + layout.label(text="Track mode uses full bake mode:") + layout.label(text="- sampling is active") + layout.label(text="- baking all objects is active") + +classes = [ + AutoExportGLTF2, + AutoExportGltfAddonPreferences, + + # + # GLTF_PT_export_main, + # GLTF_PT_export_include, + # GLTF_PT_export_transform, + + # GLTF_PT_export_animation, + # GLTF_PT_export_animation_notes, + + + #panel1 + +] def register(): for cls in classes: @@ -732,7 +1122,6 @@ def register(): bpy.app.handlers.depsgraph_update_post.append(deps_update_handler) bpy.app.handlers.save_post.append(save_handler) - #bpy.types.TOPBAR_MT_file_export.append(menu_func_import) bpy.types.Scene.changedScene = bpy.props.StringProperty(get=get_changedScene, set=set_ChangedScene)