Commit Graph

180 Commits

Author SHA1 Message Date
Mark Moissette
09915f521d
chore(Bevy): Update to bevy 0.13 (#136)
* chore(crates): updated crates to Bevy 0.13
   * updated deps
   * updated / changed code where relevant
   * updated README files
   * bumped version numbers for upcoming release
   * updated rust-toolchain
   * updated assets where relevant
   * closes #132 
* feat(bevy_gltf_components): 
  * added GltfProcessed flag component to improve performance of iteration over added<gltfExtras>
  * closes #144 
  * light & shadow processing is now integrated,  to match  lights coming from Blender: you can now control whether 
  lights cast shadows, the cascade resolution , background color etc  from Blender
   * closes #155 

* feat(bevy_registry_export): added boilerplate to make registry path relative to assets folder 
  * closes #137 
* feat(tools): added boilerplate for internal tools
   * clean zip file generator for blender add-on releases
   * example gltf file generator
* feat(lighting): added components, exporter support & testing for blender-configurable shadows
   * added BlenderLightShadows component to bevy_gltf_components
   * added writing shadow information to gltf_auto_export
   * updated tests
   * closes #157 

Co-authored-by: Jan Hohenheim <jan@hohenheim.ch>
2024-03-04 22:16:31 +01:00
Mark Moissette
9cb9dda5d3
fix(bevy components): fix handling of unit/empty structs (#151)
* closes #133 
* fix(gltf_auto_export): corrected ron value for "spawnHere" components
* fix(bevy_components): fixed handling of empty/ unit structs
   * updated to/from prop_groups
   * updated tests/ expected files
   * bumped version
   * removed verbose "watching schema file for changes"
* fix(bevy_gltf_components): fixed issue of incorect handling of empty component values in non legacy mode:
   * aka: replacing empty component values (ron strings) with '()' should ONLY happen in legacy mode
   * even more aka: ron strings for component values should not be altered when not in legacy mode (provided ron
  strings should be valid)
* tests():
   * changed bevy_component tests to use testing/bevy_example as source for registry data
   * removed testing/bevy_registry_export, as it is redudant
   * related tweaks & cleanups
* chore(crates): bumped up versions because of breaking change
* chore(examples): updated registry export example to use up-to-date / fixed components data
* chore(bevy_gltf_components): added back warning about legacy mode, in a less spammy way
* docs(bevy_components): added notes about v0.3 breaking changes
2024-03-04 08:20:00 +01:00
Mark Moissette
b40ab4983f
chore(gltf_auto_export): bumped version for release (#150) 2024-02-29 15:32:19 +01:00
Mark Moissette
7ffcd55f5d
fix(gltf_auto_export): fix animation export (#148)
* fix(gltf_auto_export): added  fix for correct "deep-copying" of objects & hierarchy so that animated
 meshes & nested hierarchies get exported correctly
* test(gltf_auto_export):
   * added visual testing to check for overall regression :
       * added screenshoting in bevy app
       * added visual compare with reference screenshot on python side
    * added testing of correct export of animated models 
    * added testing of correct export of empties
    * added testing of correct export of nested hierarchies
    * added testing of correct export of blueprints, with & without components etc 
* fixes #147
2024-02-29 15:27:02 +01:00
Mark Moissette
dfc2be8c50
feat(gltf_auto_export): component filtering for exports, bug-fixes and tests(#143)
* added filtering out of invalid components/ custom properties:
  * includes filtering out of invalid / disabled components as defined in bevy_components, components_meta etc
 * completely changed handling of "unique" (non blueprint) objects by copying them instead of moving/renaming them & manipulating their custom properties : much cleaner, much simpler !
 * disabled default gltf export of optimised animations
 * added tests !
 * closes #139 
 * closes #141 
 * closes #142 
 * closes #146
2024-02-27 00:12:14 +01:00
Jan Hohenheim
e83ef32b9f
chore(cargo): Remove nonexistent manifest key (#138)
* Remove nonexistent manifest key
2024-02-23 00:03:15 +01:00
Mark Moissette
1ceb5050f2
feat(bevy_gltf_components): testing a different approach using only gltf extras (#134)
* not using / tracking gltf files anymore (should avoid issues with scenes vs gltf files)
 * restructured accordingly
 * closes #102
 * closes #111
2024-02-19 22:43:27 +01:00
Jan Hohenheim
e0e3a620f7
fix(): Fix invalid lints entry (#135) 2024-02-19 20:46:27 +01:00
Mark Moissette
20b6fa6077
feat(bevy_components): set of fixes & improvements (#128)
* fixed issue with "reload registry" not clearing previous data
 * added watcher/ poll system to automatically updated the registry & components list when the registry file has been changed
* BREAKING CHANGE ! changed internal representation of components, incompatible with v0.1, breaks UI values.
* added buttons to regenerate UI to account for/fix the above and to offer the ability to regenerate UI values from custom property values
* lots of cleanups
* added tests 
* closes #127 
* closes #124 
* closes #121 
* closes #130
2024-02-18 17:14:31 +01:00
Mark Moissette
0083295a4d
fix(gltf_auto_export): fixed nested collections export (#126) 2024-02-07 14:22:53 +01:00
Mark Moissette
0d708b800e
chore(): cleanup & simplification pass (#122)
* closes #118 
* closes #110 
* closes #99
2024-02-07 14:07:17 +01:00
Mark Moissette
537f08b959
chore(tools/gltf_auto_export): fixed missing version bump & minor cleanup (#120) 2024-02-06 09:46:55 +01:00
Mark Moissette
cfbda24da7
feat(tools/bevy_blueprints): bevy plugin + blender addon for components UI to more easily create components (#70)
* adds a new crate: ```bevy_registry_export``` to be able to create a json import of the registered component/type definitions
* adds a new Blender addon: ```bevy_components``` that takes that json data to generate custom UIs for components , to be to add & edit components easily in Blender 
   * also adds component metadata per object for more advanced features
   * etc
* updates to bevy_gltf_components & bevy_gltf_blueprints to add legacy_mode to support the "old"/current style component definitions
* same with gltf_auto_export Blender add_on
* closes #60
2024-02-05 23:01:19 +01:00
Mark Moissette
5c8f41b4a6
fix(gltf_auto_export): bumped version (#117) 2024-02-05 10:23:53 +01:00
Mark Moissette
2ae8351e0f
feat(gltf_auto_export): rewrite for more cleaner code & a lot of bug fixes (#109)
* fundamental rewrite of a lot of aspects of the exporter, for cleaner code & to solve a number of issues
* set export_separate_dynamic_and_static_objects default to FALSE, as it is an edge use case
* added central tracker class, to track the post save & depsgraph changes
* auto_export is now more operator centric, with functional undo
* now storing add-on configuration at the blend file level  (bpy.data.texts)
* found source of export issues ! mismatch between context.scene & context.window.scene (the last we can set, the other not)
* overhauled & cleaned up materials handling to avoid context issues & reliance on bpy.ops
* huge restructure of how temporary scenes are created & cleaned up
* added support for exports in edit_mode
* updated examples
* a lot more
* fixes #103 
* fixes #112 
* fixes #113 
* fixes #114 
* fixes #115 
* fixes #116
2024-02-05 09:49:19 +01:00
Mark Moissette
7699e87aac
feat(bevy_gltf_components): will not panic anymore if a gltf handle cannot be found (#108)
* added some minor extra debug information
* removed a useless clone() call on the gltf handle
* should resolve at least a part of #102
2024-01-31 12:30:36 +01:00
Mark Moissette
b105f628df
chore(donations): added donation button in README (#106) 2024-01-23 22:09:59 +01:00
Mark Moissette
65aa59fb6d
chore(funding): added funding file + ko-fi config (#104) 2024-01-23 16:07:45 +01:00
GitGhillie
572a2b89a6
chore(CI): Add lint CI (#100)
* Add lint CI
* Clippy allow complex types, warn on some others
* bevy_gltf_blueprints use workspace lints
* Update toolchain for workspace wide lints
* Use workspace lints on the other crates as well
2024-01-19 22:23:47 +01:00
GitGhillie
fd625ef2e0
chore(lock files ): Delete and ignore Cargo.lock files (#101)
* Delete lock files
* Ignore lock files
2024-01-19 11:49:22 +01:00
Mark Moissette
5429bf4779
feat(Save & load): new crate bevy_gltf_save_load + lots of upgrades & improvements (#95)
* feat(bevy_gltf_save_load): saving & loading implemented
   * created new crate for save & load features, uses & filters out blueprints for efficient loading
   * saving & loading, even with dynamically spawned nested hierarchies works 
   * component filter , resource filter & save path root are configurable
   * for saving: added removal & cleanup logic for children component with children
  that have been filtered out: ie no more invalid children getting stored in the save files !
   * added sending of event once saving is done

* feat(examples/save-load): example for the new crate
   * loading level static & dynamic data as blueprints
   * added a bit of ui when entering saving & loading states & cleanup when exiting

* feat(bevy_gltf_blueprints): significant rewrite of how the crate works
     * simplified spawning process, no more spawning children containing blueprints etc
     * simplified post process : instead of copying original entity  into blueprint root
      we now copy blueprint root data (components & children) into the original entity ! fixes #96 
     * much simpler code wise
     * solves issue with needing to register components that we only use on the bevy side (not gltf)
    since we are not copying the bevy data into the blueprints data
     * added **copyComponents** helper to copy components from one entity to another, excluding existing
     components on the target entity, & some bells & whistles
     * **Name** is now optional when spawning a blueprint: closes #97 
     * **Transform** is now optional when spawning a blueprint: closes #98 
     * removed transform from bundle (BREAKING change)
     * added (optional)  **NoInBlueprint** component to have finer control over whether to inject the **InBlueprint** component inside spawned blueprint entities
     * added (optional) **Library**  component, so we can override library path when we want
     * added (optional) **AddToGameWorld** component for convenience   to automatically add entities to the game world, if there is one

* chore(bevy_gltf_components): removed verbose output, cleaned it up a bit

* feat(tools/auto_export): added option to split out "dynamic" objects in main scenes
   * ie if a collection instance (or its original collection) has a "dynamic" (aka mutable, saveable etc)
     flag it can get exported to a seperate gltf file (essentially acting like an "initial save")
   * the rest of the levels (the "static" data) is exported without the dynamic objects and
     can be reused with save files !
2024-01-10 14:49:29 +01:00
Mark Moissette
42c1c71b03
fix(tools/gltf_auto_export): correctly scan for sub collections in main scenes (#94)
* scans for 'in-use' collections now correctly looks inside sub collections as well
 * removed obsolete .gltf output (keeping only .glb & .gltf+bin+textures
 * closes #92 
 * closes #93
2024-01-03 10:45:03 +01:00
yukkop
97e8e8d862
chore(rust): Add specific Rust version via rust-toolchain (#91)
* specify rust version
2024-01-03 10:43:16 +01:00
Mark Moissette
d7574a104d
feat(wasm): added working examples for bevy_gltf_components & bevy_gltf_blueprints (#90)
closes #88
2024-01-02 14:03:29 +01:00
Mark Moissette
af94e49976
feat(Gltf auto export): multiple blend files workflow, combine modes, bugfixes and more ! (#83)
* feat(multiple blend files): added example of multi blend file workflow
* feat(tools/auto_export): 
 * added collection_instances_combine_mode superseeds  & replaces "export nested blueprints", with a lot more flexibilty
 * added preferences & ui settings
 * added (optional) use of marked assets as replacement for "autoExport" collection flag
 * added correct cleaning up of temporary sub_collections
* feat(tools/auto_export): change detection added for material changes
* feat(tools/auto_export): blueprints now also use the "combine" settings for nested collections
*  feat(tools/auto_export): added correct cleanup of data when removing hollow scenes, so that there is no orphan data left behind
* feat(tools/auto_export): changes to nested collections are now triggering change detection of root
 (exportable collections)
* feat(tools/auto_export):  now actually useful tracebacks using traceback.format_exc()
* various minor fixes, cleanups & UI description improvements
* docs(README): updated & fleshed out docs

* closes #87 
* closes #86
* closes #85 
* closes #79 
* closes #61 
* closes #68 
* closes #41
2024-01-01 22:35:21 +01:00
Mark Moissette
20b34dde20
feat(bevy_gltf_blueprints): improved error handling for clone_entity (#82)
* feat(bevy_gltf_blueprints): improved error handling for clone_entity
 * you will now get component name for components that have not been registered & thus cannot be cloned
* added a small example (in examples/bevy_gltf_blueprints/basic), just press 'U' at runtime to try to spawn an entity with unregistered components
* closes #81
2023-12-27 13:14:13 +01:00
Mark Moissette
6047959b3f
feat(nested_blueprints): added support for nested blueprints both in bevy_gltf_blueprints & in gltf_auto_export (#65)
* feat(bevy_gltf_blueprints): 
  * added support for nested blueprints
  * added example/test for nested blueprints with multiple levels of nesting
* feat(tools/gltf_auto_export): 
  * implemented functionality to export nested blueprints/collection instances
  * added add prefs to control nested blueprints export
  * experiments with nested blueprints merge modes
  * when exporting of nested blueprints is disabled, will not scan for nested blueprints
and thus no export them
* docs(): updated docs & added images for nested blueprints support
2023-12-22 00:37:52 +01:00
Mark Moissette
2c4720b951
fix(tools/gltf_auto_export): fixed lacking preference config that broke the exporter (#77)
* fix(tools/gltf_auto_export): fixed lacking preference config that broke the exporter
* chore(): bumped version
2023-12-17 16:08:20 +01:00
Mark Moissette
0aead0853c
feat(scene components) : added scene components to control ambient, bloom etc from Blender(#76)
* feat(tools):  scene component injection & export
 - ambient light, shadowmap resolution, bloom intensity, ambient occlusion are now directly settable from scene components that are injected automatically in the scene 
 - relaxed requirements for changes(aka when to export gltf) for main scenes,
so that render , background etc changes also trigger a save
 - added scene components examples
 - added additional proxies &  handling for camera & lights
 - in relevant cases, made sure that entity specific components are not overridden by scene components
 - added option to toggle scene level exports of params/ components
 - ambient colour/ intensity is now also set as background/clear colour
  - updated docs
2023-12-17 15:31:25 +01:00
Mark Moissette
3d192f7876
chore(tools/gltf_auto_export): (#73)
* removed the zip file
 * zip file for the addon will now be present under releases
 * updated docs accordingly
2023-12-12 14:10:25 +01:00
Mark Moissette
e1aa510457
feat(materials): Materials libraries tooling & bevy code for material/texture reuse (#71)
* updates both gltf_auto_export & bevy_gltf_blueprints to avoid duplicating common materials across blueprints
* feat(tools/gltf_auto_export): added materials library export !
 * export all materials in use by blueprints to a separate temporary scene with cubes (for now)
   with the materials assigned
 * injecting MaterialInfo components to each blueprint above with Material name + library name
 * generated gltf is named based on the project/blend file, so multiple blend file projects
   can each have their own material libraries
 * added preferences & ui & handling to be able to toggle material library exports
* feat(bevy_gltf_blueprints): added support for materials library!
 * material injection (toggleable via the plugin configuration)
 * added example
 * added materials library + texture files + updated assets
 * added physics debug toggling
* updated documentation
* closes #63
2023-12-12 13:21:53 +01:00
Mark Moissette
529a68c844
refactor(tools/gltf_auto_export): complete restructuring of the tool (#67)
* split up code in logical modules instead of one giant file
 * added module structure, imports etc
 * updated README
 * add storing & reloading of lists of scenes
 * minor cleanups & tweaks
 * closes #64 
 * moved gltf_auto_export specific docs/images inside the addon's folder
 * updated main title image
2023-12-04 14:48:52 +01:00
Shawn Workman
269a211e1e
fix(bevy_gltf_blueprints): fixed main_menu handling in examples
* restrict main_menu system to only run in AppState::MenuRunning 
* this is desired because hitting enter once we transition to AppState::AppRunning pressing enter will still trigger keycode.just_pressed in main_menu and set state to AppState::AppLoading and crash the game when it tries to create another scene, camera, etc...
2023-11-30 23:11:09 +01:00
Mark Moissette
21ad422f46
fix(bevy_gltf_blueprints): fixed aabb caching issue (#59)
closes #58
2023-11-25 02:52:23 +01:00
Mark Moissette
9a765d5e12
feat(bevy_gltf_blueprints): added ability to generate blueprint/scene aabbs automatically (#57)
* settable via a config flag & systems won't run if the flag is not set
 * caches aabbs per blueprint name so they do not need to be recomputed multiple time for the same blueprint
 * closes #56
2023-11-25 02:35:48 +01:00
Mark Moissette
8e67f76d28
feat(bevy_gltf_blueprints): added ability to also load gltf files, not just glb (#55)
* settable via a new field in the plugin configuration
 * updated examples & README
* closes #55
2023-11-24 12:30:47 +01:00
Mark Moissette
76f6a45fc4
feat(examples): added basics of multi-level example (#46)
* added basic assets & logic for scene switching upon reaching a trigger zone ! Works !
 * added toggling of physics debug
 * added handling of nested colliders for LevelTransitions
 * fix/ addition for point light intensity scaling & shadows
 * closes #40
2023-11-14 13:24:59 +01:00
Mark Moissette
dd4a04f237
fix(tools/gltf_auto_export): fixed issue with blueprints export not working anymore (#48)
* now passing the list of all available collections instead of only the dynamic ones
* fixes #47
2023-11-14 11:51:49 +01:00
Mark Moissette
66a3d71fe1
feat(examples): added basic_xpbd_physics example (#45)
* feat(examples): added basic_xpbd_physics example
 * adapted code from rapier physics
 * updated blend file & exported gltf files
 * changes & tweaks to cargo files so the examples are scanned as they should be
 * various minor tweaks
2023-11-13 16:16:31 +01:00
Mark Moissette
32d01eb48f
refactor(examples): restructure examples (#44)
* refactor(examples): moved examples into more logic folders & changed to allow for per example dependencies
* chore(): updated docs, added docs, updated deps , cargo files etc
2023-11-13 14:36:42 +01:00
Mark Moissette
c4e83655f3
chore(bevy_gltf_components): Update to Bevy 0.12 (#32)
* chore(bevy_gltf_components): updated code for bevy_main/ v0.12
* refactor(examples): cleanups & tweaks
* added compatibility tables
2023-11-11 22:58:00 +01:00
Mark Moissette
d06aa0042e
chore(tools/gltf_auto_export): bump version number after recent bugfixes (#42)
Bump the version up , after the two fixes from @Azorlogh :)
2023-11-11 21:41:15 +01:00
Alix Bott
111f0d0226
fix(tools/gltf_auto_export) : fix export of collections in the main scenes (#39)
* Recursively traverses the main scene collections to create the hollow scene, so that objects in sub-collections are properly exported
* fixes #36
2023-11-11 21:25:17 +01:00
Alix Bott
79f29776c2
fix(tools/gltf_auto_export): Don't replace non-library collection instances by empties (#35)
* don't try to export non-library collections (export embedded in main scene)
* add to contributors section
2023-11-08 08:13:22 +01:00
Mark Moissette
4afa0f5d7d
feat(Animation): added code & example for animation support (#33)
* feat(animation): added example & boilerplate
  * moved animations specific code to a different module
  * added multiple robots & foxes
  * added example of controlling animation based on distance from the player
  * removed obsolete files
  * added information about animation to READMEs
  * updated dependencies

closes #26
2023-11-01 12:44:37 +01:00
Mark Moissette
ea1d6cd78f
fix(tools/gltf_auto_export): various fixes (#31)
* fix exporter settings when changing blender project breaking the exporter
 * add auto creation of library folder if it does not exist (also any gltf export path where folders are missing)
 * main/level scene(s) now gets generated if there was no change, and they have never been generated before
2023-10-23 18:46:22 +02:00
Mark Moissette
6a40cdfd3f
feat(tools:gltf_auto_export): big ux improvements (#28)
* export_main_output_name => export_output_folder & the blueprints folder is now relative
to this one
* exported main scene gltf file name is now created based on the Blender scene name, not settable
* blueprints folder defaults to "library"
* the exporter now defaults to enabled blueprints, & enabled change detection in library
* added handling of export parameter changes
 * ie when the gltf parameters (gltf vs glb, compression etc), are changed
the next time you save , all the models are re-exported

* feat(tools:gltf_auto_export): major overhaul & optimisation of library export
 * added change detection handling so only the actually changed collections get exported on save
 * works with actual changes (ie clicks/ selections don't count)
 * this means "progressive" export of only the changed parts, WAY faster
 * removed "export_on_library_changes" setting, which was semi redundant with the library toggle itself
 * also scans for already existing exports on disk (for "first runs" in a Blender session)
 * many smaller cleanups

 * added logic to save/load export parameters in operator
 * parameters are thus now persisted even if the addon is removed & added back
 * based on standard gltf exporter
 * operator presets are now fixed as well & can be used normally
 * added injection of saved parameters in case there is a save attempts after installing the add_on
  and there where previously saved settings

* feat(tools:gltf_auto_export): added support for multiple main & lib scenes
 * with scene picking & filtering
 * adding a scene to the list now only works once you selected a scene from the picker

* docs(tools/gltf_auto_export): updated docs
2023-10-22 15:21:55 +02:00
Mark Moissette
921a5ef331
fix(tools:bevy_gltf_blueprints): (#27)
* fix(tools:bevy_gltf_blueprints):
 * fixed missing rotation in blueprint collections (if there is any)
 * fixed similar issues with scale 
 * fixed issues with active collection at the time of saving/export being poluted by temporary data
* refactor(bevy_gltf_blueprints): minor cleanups
2023-10-14 20:47:35 +02:00
Mark Moissette
5683f01cea
fix(tools:gltf_auto_export): fixed issue with subcollections not being exported for blueprints (#25) 2023-10-14 14:21:16 +02:00
Mark Moissette
bce6d43c50
Bevy gltf blueprints fixes and tweaks (#24)
* fixed bad default path for library
 * added missing ComponentsFromGltfPlugin which causes the blueprint plugin not to work as expected if ComponentsFromGltfPlugin is not added elsewhere
 * all info! calls are now debug! for a less spammy debugging experience

* refactor(examples:advanced):
 * removed ComponentsFromGltfPlugin as that is now included directly in the blueprints plugin
 * moved all physics (rapier) related code to the core/physics module
2023-10-14 13:51:29 +02:00