You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Based on experimentation in Jackdaw (a 3D editor I created before BSN), I've found several pieces of BSN infra needed for editor tooling that would benefit the ecosystem.
@cart's PR #23630 explicitly mentions "It is not yet possible to write a World to BSN" as a gap. The subsequent PRs I plan to raise helps to address that, and other related gaps.
What we needed for a functioning BSN based editor in Jackdaw
BSN write-back - serialize ECS World to .bsn text (inverse of the bsn! macro)
Enum variant field serialization - ColliderConstructor::Sphere { radius: 2.5 } not just ColliderConstructor::Sphere - this was raised in discord as a bug I believe, but I've already had a fix for this in Jackdaw
Asset catalog - shared named assets in .bsn format, referenced across scenes
SceneDocument API - editing via ScenePatch, load/save/spawn
SceneAssetCatalog API - named shared asset management
Context
I've been working on converting Jackdaw to a BSN editor (inspector edits, entity creation, hierarchy changes, etc) where we write through BSN, and the ECS is derived from it so we can render previews in the viewport and such. I tried to keep the solution as generic as possible in Jackdaw so that we can upstream and prepare for the wider bevy-editor buildout based on these enhancements
Summary
Based on experimentation in Jackdaw (a 3D editor I created before BSN), I've found several pieces of BSN infra needed for editor tooling that would benefit the ecosystem.
@cart's PR #23630 explicitly mentions "It is not yet possible to write a World to BSN" as a gap. The subsequent PRs I plan to raise helps to address that, and other related gaps.
What we needed for a functioning BSN based editor in
Jackdaw.bsntext (inverse of thebsn!macro)ColliderConstructor::Sphere { radius: 2.5 }not justColliderConstructor::Sphere- this was raised in discord as a bug I believe, but I've already had a fix for this inJackdaw.bsnformat, referenced across scenesHandle<T><---> asset path conversionSceneDocument/SceneAssetCatalogAPIs - my solution for ergonomic editing viaScenePatchinstead of raw function callsPlanned PRs (building blocks first, then API)
serialize_to_bsn) - immediately necessary and beneficial, default-diffing for entity components and enum variant fields - Add BSN scene writer: serialize ECS World to .bsn text #23639SceneDocumentAPI - editing viaScenePatch, load/save/spawnSceneAssetCatalogAPI - named shared asset managementContext
I've been working on converting
Jackdawto a BSN editor (inspector edits, entity creation, hierarchy changes, etc) where we write through BSN, and the ECS is derived from it so we can render previews in the viewport and such. I tried to keep the solution as generic as possible inJackdawso that we can upstream and prepare for the wider bevy-editor buildout based on these enhancements