Commit Graph

159 Commits

Author SHA1 Message Date
kaosat.dev
73441f34a4 feat(auto_export): restructured & improved changed parameters detection
* now all centralized in the operator's did_export_settings_change() function
 * now works correctly ! ie only compares the parameters for auto & gltf
at the time of exporting ! ie it does not matter anymore how many parameters you changed, until you save/export
 * this solves a lot of randomness bugs in change detection
 * related & various cleanups
2024-04-02 16:45:01 +02:00
kaosat.dev
73e81c2b64 feat(auto_export): continued cleaning up overhaul
* added both gltf exporter button AND auto export button to side bar
 * added storage of gltf settings
 * auto_export now uses stored gltf settings
 * updated override strategies of defaults vs gltf settings
 * removed all gltf specific (not auto export) parameters from preferences
 * updated auto export operator params changed logic to use updated system
 * updated bevy integration test
 * ui improvements
 * various tweaks
2024-04-02 14:15:56 +02:00
kaosat.dev
4a0479fbf0 feat(auto_export): further experimenting with standard gltf exporter integration 2024-04-02 00:46:09 +02:00
kaosat.dev
66a893e5b6 feat(auto_export): experimenting with the insane workarounds needed to get access to standard gltf exporter settings
* got a basic working version that runs the standard exporter with some overrides,
deletes the temporary exported gltf file, extracts the scene level settings etc
 * convoluted as hell , but still better than the alternatives
2024-04-01 16:12:05 +02:00
kaosat.dev
66df7fae99 feat(animation):
* moved triggering of frame marker events to the blueprints crate
 * added additional handling of frame markers for blueprint animations (yikes is this convoluted)
 * added additional animated blueprint for testing blueprint animation markers
2024-04-01 00:26:23 +02:00
kaosat.dev
49dd0bc536 chore(): cargo fmt 2024-03-30 23:43:58 +01:00
kaosat.dev
2523691513 refactor(animation): cleanups , reorg & tweaks 2024-03-30 23:43:09 +01:00
kaosat.dev
df3e335114 feat(animation):
* renamed Animated component to AnimationInfos, fleshed it out with additional
frame informations etc
 * restructured & cleaned up Bevy & Blender code in those areas a bit
 * various related minor tweaks
2024-03-30 18:29:43 +01:00
kaosat.dev
c44d82e7dc feat(animation): added basic handling of animation markers
* added additional component on the Bevy side + experimented with handling the data in the testing setup
 * added parsing of animation markers on the Blender side + injection of custom property/ component
 * rough around the edges, but the basics work !
2024-03-30 02:40:52 +01:00
kaosat.dev
1f959c51bd chore(): minor tweak 2024-03-23 00:02:34 +01:00
kaosat.dev
37dd6a990c feat(auto_export): experimenting with ways of getting standard gltf export settings & using them 2024-03-22 23:35:10 +01:00
kaosat.dev
ce473a357e feat(animation): split animation logic/components into Blueprint vs Instance animations
* renamed existing animation components with Blueprint prefix
 * added almost identical but seperate InstanceAnimations & InstanceAnimationPlayerLink
2024-03-22 13:59:01 +01:00
kaosat.dev
27201e5cd6 feat():
* sucessfull experiment with ways to animate world level objects, using
the same logic as the blueprint animations
 * made required changes
2024-03-22 11:11:45 +01:00
kaosat.dev
0b64de79da chore(testing): experimenting with scene level animation handling 2024-03-22 00:29:33 +01:00
kaosat.dev
67588ba3a4 chore(examples): updated registry for bevy_registry as some of the built in components have changed 2024-03-21 21:37:24 +01:00
kaosat.dev
4f5f3be317 chore(): minor tweaks 2024-03-21 21:37:10 +01:00
kaosat.dev
4f50c4f6d2 feat():
* auto_export now injecting the list of available animations into the "Animated" component
  for any object with animations
 * modified bevy side struct to match
2024-03-21 15:25:50 +01:00
kaosat.dev
a001ee21f6 test(auto_export):
* fleshed out testing of hierarchy
  * added export of serialized hierarchy from the bevy side & comparing it with a reference
 one on the python side
  * various tweaks
2024-03-20 17:57:06 +01:00
kaosat.dev
b51a0d38e2 chore(testing): made nesting cases even more complex to cover different scenarios 2024-03-20 12:32:39 +01:00
kaosat.dev
83258dbd07 fix(auto_export): found & fixed a huge issue with handling of hierarchies
* now various forms of nesting with parenting (not within collections) should be handled correctly
 * restructured a large part of creating copies / duplicates
 * removed some obsolete code
 * related cleanups
2024-03-20 12:29:39 +01:00
kaosat.dev
c2f09fbf22 feat(): added 'animated' flag component (wip) to mark any worlds/blueprints entities that have animations
* allows to not be restricted by bevy's a bit weird logic for AnimationPlayers
 * updated crate & tooling
 * updated testing example with a bit more complex nesting cases for testing
2024-03-19 22:12:37 +01:00
kaosat.dev
7584078f6d chore(testing): minor tweaks to testing blend file 2024-03-19 14:20:13 +01:00
kaosat.dev
87c03657e5 chore(auto_export): further experimentation 2024-03-19 14:19:32 +01:00
kaosat.dev
1c51d10da7 chore(auto_export): further exploration & experimenting
* now trying to copy the animation to the "empty" placeholder using animation linking operator
 * now in gltf viewer we can see the two animations/actions, but still nothing in Bevy
2024-03-18 22:26:06 +01:00
kaosat.dev
98eef2c755 chore(testing): added animation of a blueprint instance for testing 2024-03-18 20:07:03 +01:00
kaosat.dev
c6468f2b0b feat(auto_export):
* added tests for orphan data
 * changed handling of animation data slightly
 * trying to figure out source of various issues
2024-03-18 20:05:01 +01:00
Mark Moissette
9f21df035b
feat(): Asset preloading basics (#169)
* closes #80 
* preliminary work for further asset management from the Blender side without needing additional dependencies & boilerplate on the Bevy side 
* feat(auto_export): 
     * now injecting list/tree of sub blueprints to main scenes/levels & blueprints
     * made blueprints/asset list conditional on NOT legacy mode
* feat(gltf_blueprints): 
    * basics of dynamic loading of sub_blueprints
    * added same kind of logic to the loading of material files
    * also made a more generic variant of the BlueprintAssetLoadTracker 
    * added gltf file path for more informative error in case a gltf is missing
* refactor(): 
   * made the various gltf assets loaded by bevy_asset_loader optional (to handle the case where they are not present)
   * updated all examples accordingly
* chore(crates): fixed links, slight tweaks, bumped versions
2024-03-18 18:00:19 +01:00
Mark Moissette
1353e14802
feat(bevy_components): qol improvements (#164)
* closes #163 
* closes #153 
* closes #154 
* feat(bevy_components): added tools for diagnostics/ finding & replacing invalid & unregistered components
   * added ui for listing invalid & unregistered components
   * added boilerplate & functionality for component renaming/replacing
   * injection of invalid status & message in case the conversion did not work well
   * added deletion of components individual & bulk
   * added handling of wrong string for unit structs : allows detection of more wrong values for components
   * added progress bars for bulk operators
   * added docs for new features
   * added tests
   * added small "attempt to fix" button for unit struct uis in case they are invalid
* feat(bevy_components): added progress indicators for from/to custom properties
* various other minor ui tweaks for workflow improvement
2024-03-07 16:29:04 +01:00
Mark Moissette
3b7b5f28bd
feat(tools/internal_generate_release_zips): ensure compression (#161) 2024-03-04 22:28:35 +01:00
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