Expose type registry to exporters and parsers#331
Merged
waynemwashuma merged 3 commits intoJun 3, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objective
Introduce
TypeRegistryaccess to asset parsers and exporters, enabling serialization and deserialization logic to leverage runtime type information. As part of this work, asset loading and saving responsibilities were moved out ofAssetServerand into the asset update system, making asset I/O execution part of the ECS pipeline rather than being performed directly by the resource. Secondary changes include simplifyingAssetServerinto a request-driven resource and consolidating asset event handling.Solution
Type-aware parsing and exporting
Parser.parse()andExporter.serialize()now receive aTypeRegistryinstance allowing custom asset formats to:The
TypeRegistryis retrieved from the ECS world during asset processing and passed to parsers/exporters automatically.AssetServer refactor
Previously,
AssetServer:This tightly coupled request scheduling with execution.
The implementation now follows a request-based model:
AssetServer.load()queues anAssetLoadRequestAssetServer.save()queues anAssetSaveRequestupdateAssets()performs all loading/saving workBenefits:
Showcase
Before
Parser and exporter implementations had no access to reflected type information:
After
Parsers and exporters now receive the active type registry:
Migration guide
Parser API
Replace:
with:
Exporter API
Replace:
with:
Checklist