Bascially add tracking of fileAssetReferencers from file assets, so that when file assets update, they can tell things that reference them to update also.
its worth looking at the rive-flutter & runtime implementations
in cpp it looks like we can hook into the delete hooks nicely to clean up after ourselves (so that when artboards get collected we are not holding references to them from file assets)
in dart this is more of a problem, however using weakReferences we do end up seeing artboards go out of scope
but weakReferences requires us to bump to a min dart of 2.17 (we are 2.14 in flutter & 2.12 in our editor atm)
the update here also uses the referencers to mark fonts dirty when fonts are set, which causes them to be updated on the next draw cycle
(video showing font updates working properly now in dart)
https://github.com/rive-app/rive/assets/1216025/d65ea2cf-95d6-4412-b8f5-368cda609d0b
(video showing how referencers get collected and trashed in dart, it looks like we hold onto about 10 of them at a time.. but they do drop off over time. also we start with 2 references, the main artboard and the artboard instance)
https://github.com/rive-app/rive/assets/1216025/b11b7b46-aa9d-4dcc-bc11-f745d8449575
Diffs=
7bc216b03 add ability to attach callbacks when resolving file asset listeners (#6068)
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
Adds some cleanup to this previous PR: https://github.com/rive-app/rive/pull/5411/files
- Brings back some classes and parameters and mark them as deprecated.
- Changed the naming for parameters
- Removed asset resolving from the high level `RiveAnimation` widget, prefer to manage this by loading in your own `RiveFile`. This is to avoid introducing too many changes that we may revert down the line
- Removed code comments that were intended as questions, marked some as TODOs
- Improved documentation and cleaned up example
The cached asset example now has a button to hot swap out assets at runtime by keeping a reference to the asset. This works for images, but not for Fonts.
- We can either remove this example for the time being
- Or investigate why it does not swap out (I would expect it to)
Diffs=
94e3490ae refactor: asset resolving (#5563)
bae069339 Stop automatically pruning empty segments in RawPath (#5557)
2d2d8c413 Line Height & Paragraph Spacing (#5552)
Co-authored-by: Gordon <pggordonhayes@gmail.com>
(basing this pr onto our dart runtime change for now, to limit scope)
made some small tweaks to function names, mostly to get fonts and images to "feel" more similar.
broke out "decode' into parsing the asset first.
makes it possible to cache images/fonts with our dart runtime, example included
Diffs=
40302069e Caching example (#5517)
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>