• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

djeedai / bevy_hanabi / 27069487078
58%

Build:
DEFAULT BRANCH: main
Ran 06 Jun 2026 05:54PM UTC
Jobs 1
Files 33
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Jun 2026 05:47PM UTC coverage: 58.459% (+0.8%) from 57.667%
27069487078

push

github

web-flow
Serialization through Bevy's type registry (#534)

This change transitions from the `typetag` dependency to using Bevy's
own built-in `TypeRegistry` to serialize and deserialize Hanabi's
`EffectAsset` (`*.effect`).

This solves a long-standing issue where modifiers couldn't be serialized
easily, and user-provided modifiers were ignored for serialization. With
the use of Bevy's own type registry, all built-in and user modifiers are
treated equally, as long as they are registered via
`register_reflect_modifier()`. All built-in modifiers are automatically
registered by the `HanabiPlugin`.

That registration allows leveraging the new `ReflectModifier` type data,
which provides a factory function to create a concrete modifier type
instance.  This is used during deserialization to instantiate the actual
modifier object.  This works around the lack of reflection/serialization
support for `Box<dyn Trait>`.

This change has a few knock-on effects on other parts of Hanabi:
- `EffectAsset::mesh` is now an `Option<AssetPath<'static>>` referencing
  the mesh, if any, used to render particles. That path is now also
  serialized.
- At runtime, the new `EffectMesh` component can override this asset
  mesh.

With this, `EffectAsset` is now entirely serializable. This doesn't
solve the entire asset story, as some additional items are still missing
(notably, textures). But this should greatly improve the value
proposition for loading Hanabi effects from assets on disk, rather than
generating effects in code.

280 of 410 new or added lines in 6 files covered. (68.29%)

8 existing lines in 2 files now uncovered.

5121 of 8760 relevant lines covered (58.46%)

190.98 hits per line

Uncovered Changes

Lines Coverage ∆ File
97
57.93
-17.07% src/asset.rs
25
64.79
src/modifier/registry.rs
4
55.77
0.64% src/graph/expr.rs
4
64.41
-0.06% src/lib.rs

Coverage Regressions

Lines Coverage ∆ File
6
77.62
15.78% src/modifier/mod.rs
2
65.54
6.21% src/modifier/output.rs
Jobs
ID Job ID Ran Files Coverage
1 27069487078.1 06 Jun 2026 05:54PM UTC 33
58.46
GitHub Action Run
Source Files on build 27069487078
  • Tree
  • List 33
  • Changed 13
  • Source Changed 0
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • c34b95ac on github
  • Prev Build on main (#26746152695)
  • Next Build on main (#27072219634)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc