* 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
* 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
* 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
* 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 !
* auto_export now injecting the list of available animations into the "Animated" component
for any object with animations
* modified bevy side struct to match
* 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
* 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
* 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
* 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
* 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
* 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>
* 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
* 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
* 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
* 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
* 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
* 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 !
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* closes#11
* bumped Blender tool version to 0.2
* changed storage of internal data to WindowManager instead of Scenes: this fixes a few issues & logical flaws
* updated docs accordingly
* 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