elastic interpolators were imported twice, once in their class and once in the KeyframeINterpolator class.
This was offsetting the ids to which keyframes were pointing.
This PR removes the import from the ElasticInterpolator class (copying how the cpp version does)
Diffs=
a853c5ac7 remove duplicate interpolator import (#6180)
Co-authored-by: hernan <hernan@rive.app>
As discussed, in order to listen for events triggered from the same artboard, add support for Artboards as StateMachineListener targets (only display artboard events in the Event list if the Artboard is the target). This is for Artboards only, NestedArtboards already behave correctly.
One caveat to this is that we still show pointer events in the Event list when an Artboard is selected. Maybe we should remove those? However, we also show pointer events currently when no target is selected, so maybe at some point we should take another pass at that?
Diffs=
4a11ac691 Support Artboards as listener targets - Events only (#6147)
1506b069c Outofbandcache (#6049)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
Reported by Chad and simpleclub that the position of the constrained component moves to its 0 distance position when distance is set to any multiple of 100%. Fix is for editor and runtimes.
Diffs=
40f9d91ac Fix for FollowPathConstraint position at distance multiples of 100% (#6149)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
set state machine controller as active when an event is added to report event. This fixes events not being applied in some scenarios
Diffs=
eeaf88f05 set state machine active adding a reported event (#6153)
Co-authored-by: hernan <hernan@rive.app>
Fixes crash @LauraRive caught when editing a file with nested artboards.
Diffs=
389618e94 Add elastic interpolation to Flutter runtime (#6158)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
This update applies the initial values for nested inputs (as set in the Inputs panel of the Editor), so that NestedInputs behave in the same way as regular StateMachineInputs. There are a couple of reasons to do this:
1. Currently if you have a nested artboard and set the initial nested input value, it will only apply in the editor when viewing that artboard. If you nest that artboard in another artboard, the initial values do not apply. Similarly, initial nested values do not apply in the runtimes. Currently StateMachineInputs do apply initial values, so this brings NestedInputs in line with that.
2. There was a bug Hernan noticed where there in certain cases, NestedInput values that were keyed on a timeline did not apply properly in cases where the keyed value was the same as the default value. In these cases, the keyed value is ignored because it and the default values were the same. In addition, since the initial value wasn't being applied, the state wasn't being update properly based on the nested input's value.
Diffs=
6d9aa0179 Apply NestedInput initial values (#6140)
92c8f1164 Elastic easing (#6143)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
basically does what it says, i'm also removing an example i used to check on things being garbage collected
Diffs=
c0411df0a bring flutter asset loading inline with cpp (#6135)
Co-authored-by: Gordon Hayes <pggordonhayes@gmail.com>
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
This PR solves some issues with nested artboards where they don't get refreshed when some properties from its children change. In consequence, parent artboards display old data when their State machines are played.
It's solved by adding a unified way of flagging artboards when a property changes, so any class that inherits from artboard_provider will automatically flag the artboard as changed.
Diffs=
db984dfd3 add ArtboardProvider class (#6112)
d65b239c5 Add options to build with rtti and exceptions (#6121)
82d664d4b Fix clang format error (#6137)
8f6b07395 add isCollapsed validation on nested artboard advance method (#6081)
c5cde614b Fixed clang check. (#6125)
Co-authored-by: Luigi Rosso <luigi.rosso@gmail.com>
Co-authored-by: hernan <hernan@rive.app>
One feature missing from the nested inputs implementation was the ability to see the nested input values in the parent artboard's input panel. This update adds this feature, grouping the nested input by its nested artboard.
https://github.com/rive-app/rive/assets/186340/6892826f-14e0-46e7-a9bf-e629e005e85c
Diffs=
3b32d2431 Show NestedInputs in the Inputs panel of the parent artboard (#6107)
7227975fb Move vello (#6104)
6488a1822 Added by-name instantiation. (#6102)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
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>
Diffs=
c583c4e5b Xxxx nested inputs fixes (#6098)
8b7dd980b patch up division by zero issue on normalizing Length (#6095)
8c99c8dcf Android Out of Band Assets (#6019)
Co-authored-by: hernan <hernan@rive.app>
This PR adds support for setting NestedInput values from a parent artboard. We should support NestedBool, NestedNumber and NestedTrigger. After discussion with @alxgibsn there are at least 4 editor UI updates required to work together with this feature.
- [x] Add a `public` boolean to StateMachineInput that allows you to specify whether the input should be available outside of its own artboard. This is presented in the motion inspector when a StateMachineInput is selected.
- [x] Surfacing Nested Inputs in the Inputs panel alongside the Inputs for the current artboard. We also need a way to differentiate Nested Inputs from regular Inputs (possibly a folder-like hierarchy).
- [x] Surfacing Nested Inputs in the Inputs list for a Listener.
- [x] Surfacing Nested Inputs in the NestedArtboard StateMachine flyout. Looks like this work has already been done!
- [x] Get NestedTrigger working
Diffs=
45359b3e8 Nested Inputs (#6007)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
- Propagate events up to parent Artboard state machines
- Add Event to Listener types and display in combobox
- Add support for StateMachineListeners to listen for events
Still needs implementation on CPP runtime.
In this example, the rectangles are in a nested artboard. Clicking them fires an event from the nested artboard up to the parent artboard which has a listener which updates an input triggering the animation.
https://github.com/rive-app/rive/assets/186340/22bfb00e-8d1e-46f0-8faa-d2d5e5a1bbfb
Diffs=
1a9dd7e97 Add support to Listeners for events from nested artboards (#5923)
52a1a6f88 Added a Rust runtime. (#6027)
22077beda feat: add count and query APIs for events and text runs at the Artboard level, and expose in WASM (#6043)
f95f54140 Add out of band loading to rive-wasm (#6017)
54d736fec 6041 follow path with 0 opacity (#6060)
bb7d5ac4c Add a math::round_up_to_multiple_of<N>() utility (#6061)
6ee7cea9e Clamping color stops. (#6052)
bb00ec119 Add a WebGPU mode that uses EXT_shader_pixel_local_storage (#6048)
af873d55a update runtime with file asset cdn information (#6040)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
- Checks to see everything is working
- Fixes a few analyser warnings and updates CHANGELOG
Diffs=
399ef7716 chore: prep flutter runtime for release v0.11.17 (#6011)
Co-authored-by: Gordon <pggordonhayes@gmail.com>
Events that fire on the first frame (with a work area too) were not reporting. This was because the way we look for occurred events wouldn't catch an event that started at the same time as the playhead as presumably that would've been caught on the previous frame. This falls apart when the animation starts on the same frame as the one where an event (or multiple) are triggered.
Adds a fix by detecting this condition and a bunch of tests in both C++ and Dart for it.
Also revs the lightning bolt animation in the editor for triggering the event as this showed an issue with state contention in its state machine.
Diffs=
382a48cf8 Fix issue with timeline events on first frame (#6006)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
The goal of this PR is to improve the usability of events for the Flutter runtime and to hide unnecessary editor implementation detail. This also ensures that an event is not modifiable after it has been reported (from the runtime's perspective)
This is achieved by exposing runtime specific classes `RiveEvent`, `RiveOpenURLEvent` and `RiveGeneralEvent` (similar to the other runtimes), and mapping the current `Event` to these classes as an immutable object. It also maps the list of events to a Map called `properties`.
This PR also:
- Adds more event examples and fixes the audio example (`.stop` resulted in issues, and calling dispose, etc.)
- Adds tests for events
TODO:
- Will need to potentially change things (and expose the `delay`) when this lands: https://github.com/rive-app/rive/pull/5951
Diffs=
eae01824d feat: expose wrapper event class to runtime (#5956)
Co-authored-by: Gordon <pggordonhayes@gmail.com>
Addresses issues brought up here:
https://2dimensions.slack.com/archives/CLLCU09T6/p1694766559770229
- Custom properties not updating when expected.
- Events not firing on first frame.
One important aspect of all of this:
- Custom properties on events update with LinearAnimation.apply.
- Events on timelines and state machines accrue/report during StateMachine/LinearAnimation.advance
These could happen when the state machine would transition to a layer with an animation. The first frame would apply with mix 0 meaning all non-mixable properties wouldn't be applied per https://github.com/rive-app/rive/pull/5960/files.
I took a slightly different approach. Now apply will always try to apply values. If mix is 0, non mixing properties will apply. I think semantically this makes more sense too. If you don't want to apply, don't apply. Apply with mix 0 is effectively a no-op as we had it before, so it was just a perf suck.
So I re-worked the various call sites for apply to not call it when attempting to mix in an effectively mixed-out animation. This has one caveat for blend states. Because the blend state advances all the animations in sync, .advance must still be called when mix is 0, so events will still report but custom property keyframes in mixed out animations will not update. I think that's reasonable, but may not be immediately apparent. We can opt to not report events when the mix is 0 by introducing a "reportEvents" boolean to advance, or add an option to the blend state for whether or not they should report.
Diffs=
236d788ea Event fixes (#5997)
05e1afaf3 Bump the iOS minimum version to 13 on native builds (#5989)
0dcbdade4 add artboards shapes to updates when RenderOpacity has dirt (#5971)
85b2b6ed1 Read passed any empty runs when iterating glyphs. (#5974)
Co-authored-by: Alex Gibson <agibson.uk@gmail.com>
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Addresses an issue where mixing animations of a nested artboard from it's parent artboard can produce unexpected results when dealing with id based keyframes (such as active solo or draw rules). The proposed solution ignores applying an id keyframe's value to an object if the mix value for that animation/keyframe is 0. This provides a way to turn "off" an id based keyframe during a mix.
Behavior AFTER this update. This example has an artboard with 2 animations that each have different values for active solo and a draw rule that is on or off. This artboard is nested in another artboard which sets the animation mix as seen in the recording.
https://github.com/rive-app/rive/assets/186340/b67e98c8-ab7c-4a92-ab3b-65d27b0eadbd
Behavior BEFORE:
https://github.com/rive-app/rive/assets/186340/c0a6c558-efc4-43ec-8974-57bf8f6ab3e8
Diffs=
b9382846d Don't apply id keyframes when mix value is 0 (#5960)
f96c86fcc Timeline Events for runtime (#5951)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
Introduces a new Core field type which does not produce stored fields. Instead it provides a callback which can be keyed and unique per type so time based events can trigger against their property keys.
This is to allow things like nested trigger inputs and triggering events from the timeline.
Draft as there's a bunch more work to do for actually invoking them from the StateMachine & LinearAnimations. In the meantime the tests can do some sanity testing.
- [x] Generate core types that do not produce stored fields.
- [x] Massage Keyframe hierarchy to allow for non stored value Keyframes (markers for trigger).
- [x] Key those core types with specialized keyframes.
- [x] Pass context (like StateMachine) to those triggers and see it all tie together.
Diffs=
6058b52ce Timeline events & Core Callback type (#5877)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Diffs=
4be3c364b Published Flutter 0.11.16 (#5941)
853ae7de1 Fix keepGoing when a work area is used. (#5939)
33aec1b20 Make Mat2D constructors constexpr (#5932)
4335a2cd2 Fixed runtime to compile with gcc. (#5870)
c6b867df9 Allow setting text to completely empty. (#5924)
06a187288 Make RenderBuffer mappable (#5907)
654d4488e Add a macro to create bitsets from enums (#5922)
7bbf083ce Add some joystick flag tests. (#5921)
d35df0427 Delete the copy constructor from Mat2D (#5916)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Decided to go with the `is` check because it seems like all types of Constraints or ClippingShapes should follow this behavior now and in the future.
Diffs=
16cf8082f Treat Constraints, ClippingShapes and DrawRules as special Solo child types (#5897)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
Fixes https://2dimensions.slack.com/archives/CLLCU09T6/p1692895941301969
Should also address #5888
Basically we were propagating the collapse to the ClippingShape for the solo which meant that the update on the clip was never called. This meant the path would never be generated and so our contents would always get clipped out (no intersection with an empty path).
ClippingShapes and Constraints should be treated more like siblings (or properties) of the Solo instead of children that can be collapsed by the active solo child choice.
Diffs=
e1b9d360b Improve collapse propagation for solo. (#5890)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Diffs=
ab5745943 Update files to use git lfs (#5883)
2719b1463 early out of advance if we are not going to keep goign (#5849)
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
Co-authored-by: Philip Chung <philterdesign@gmail.com>
Explores an API for triggering events and querying them at runtime.
For Flutter we expose an onEvent callback that you can add a callback to on the StateMachineController:
```dart
final controller = StateMachineController.fromArtboard(artboard, 'bumpy', onEvent: {);
controller.onEvent = (event) {
// Do something with event. Like:
if(event is OpenURLEvent) {
launchUrl(event.url);
}
};
artboard.addController(controller!);
```
Note that I haven't piped onEvent to the Flutter runtime yet but you'll see it in the StateMachineController in core.
In C++:
```c++
auto count = stateMachineInstance->firedEventCount();
for(auto i = 0; i < count; i++) {
auto event = stateMachineInstance->firedEventAt(i);
if(event->is<OpenURLEvent>()) {
// Do something with the url.
auto url = event->as<OpenURLEvent>()->url();
}
}
```
You can see some of this in action in the state_machine_event_test.cpp.
You can also see the events in the console in the editor:
<img width="717" alt="CleanShot 2023-08-10 at 18 03 22@2x" src="https://github.com/rive-app/rive/assets/454182/af21902a-424d-435b-b5b0-2a43701fe186">
In a follow up PR:
- Ability to trigger events from State (in/out) and Transition (start/end).
- Add custom properties to Events C++ API (currently they are loaded but not tracked against their respective events).
Diffs=
8caa7d377 Event triggering (#5793)
e71ae68ba Fix issue with nested artboards not updating follow path constraints. (#5810)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Removing the default font logic from the runtime, because:
- Flutter Web will console log an error trying to load the default font from a URL
- `rootBundle` prevents tests as it cannot be spoofed.
Diffs=
b905380c9 fix: remove default font from flutter runtime (#5783)
Co-authored-by: Gordon <pggordonhayes@gmail.com>
…nge in rive_flutter to push downstream
tested this on a couple of private repos.
this also ran a linter on mono.sh 🙈 i guess that should be fine though
Diffs=
96a0f0b96 update mono to apply .gitattribute changes first & made a trivial cha… (#5781)
cbc6ba291 Add rive::math::msb() (#5777)
58cc49580 Add a Bitmap::detachBytes method (#5763)
30351d475 Letter spacing! (#5774)
e6941215f refactor: use ticker instead of stopwatch (#5761)
3ab062dd2 Run editor tests on hosted runner. (#5760)
Co-authored-by: Alex Gibson <agibson.uk@gmail.com>
Co-authored-by: Gordon <pggordonhayes@gmail.com>
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
- Moves the hit testing logic from `RiveAnimation` to the `Rive` render box instead. Setting the default to be false, and users have to opt in to enable it. This is to ensure we don't break code for anyone that currently handles their own pointer logic, and also to avoid unnecessarily doing work if it's not needed.
- Add onEnter and onExit to resolve https://github.com/rive-app/rive-flutter/issues/284
- Adds ability to set cursor (this had to be overridden to allow for onEnter/onExit) and makes sense to expose publicly. Note though that this will be for the entire render box area. It won't work for "part" of an artboard that has a listener. Though we could look into adding that in the future.
Diffs=
2eb7308d2 refactor: hit testing (#5731)
Co-authored-by: Gordon <pggordonhayes@gmail.com>
The important work is done in _initTextAndImport. This functionality needs to be called by the user if they call RiveFile.import. See the changelog for some notes.
I needed to bump rive_common for this to work as we manually added our fixRequireJs fix to the HTML. We should always try to inject functionality that's required at runtime dynamically so it can apply to all apps (not just our editor).
Diffs=
d072cbde0 Fix loading init text in Flutter runtime. (#5758)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
The way we were computing the bounds for clipping was off which also exposed it was off in the runtime for transform constraints! This was also breaking the Lottie converter.
Now the origin, baseline, bounds, and clipping all look right in Flutter + C++. Goldens would help here too @mjtalbot
<img width="1152" alt="CleanShot 2023-08-02 at 11 50 36@2x" src="https://github.com/rive-app/rive/assets/454182/5b7d580e-9d82-4e7b-8b91-7155a2c89fa6">
Fixes#5732
Fixes issue discussed here: https://2dimensions.slack.com/archives/CLLCU09T6/p1690977600095549
Diffs=
d3e75b38d Clipping and baseline (#5734)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
adding a basic text test to get to the bottom of text not working
Diffs=
66e234066 basic text test (#5718)
b69ae1312 Lift tess decoders into a static lib (#5709)
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
Fixes: https://github.com/rive-app/rive-flutter/issues/335
By calling `super.dispose()` at the end - as suggested in the Flutter docs for widgets + render objects.
Added the same to the editor (for widgets + render objects)
These changes _should_ not result in any issues. But I don't know if there are valid reasons for any of these to call super.dispose first - if yes, then we should investigate the underlying reason for that.
Diffs=
913760d97 chore: end with call to dispose (#5703)
Co-authored-by: Gordon <pggordonhayes@gmail.com>
Bunch of text fixes:
- gradients respect origin on text
- changing font size updates the text editor selection
- apply @avivian's transform constraint fix from https://github.com/rive-app/rive/pull/5689 to cpp
Diffs=
6af562d4c Text fixes (#5696)
fcccdeccd Add originX and originY support to images (#5624)
5b2a52f44 Fix text alignment in cpp based runtimes (#5691)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
[Archive.zip](https://github.com/rive-app/rive/files/12175519/Archive.zip)
re-adds the width height stuff, so that we do not remove parameters from files, as the "old" runtimes still need these to layout assets properly
included the same .riv once broken and once "fixed" @luigi-rosso i got a question about this "widthChanged/heightChanged"
Diffs=
a1b1c1ec3 Keep width height in rivs (#5672)
be33bd1b1 update thumbnailer for text (#5667)
Co-authored-by: Luigi Rosso <luigi.rosso@gmail.com>
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
Some updates to clean up warnings and info reported from flutter analyze.
Diffs=
83e539cff Updates for publishing Rive Flutter (#5666)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Ability to target an individual run with the modifier range:
<img width="1577" alt="CleanShot 2023-07-24 at 16 25 12@2x" src="https://github.com/rive-app/rive/assets/454182/48bca39b-057c-4ed5-b04e-cada62c1f190">
Diffs=
215d11c86 Adding run targeting to text value ranges! (#5660)
Co-authored-by: Alex Gibson <agibson.uk@gmail.com>
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Fixes the following as discussed:
- FP not respecting scale values of constrained component
- FP not handling distance values <0 and >100
This video shows 4 scenarios (all 4 show car being scaled from 100-500% and back):
TL - distance animating from 0 to 200 with orient on
TR - distance animating from 0 to -100 with orient on
BL - distance animating from 0 to 100 with orient on and animating path
BR - distance animating from 0 to 100 with orient off and car rotating 720 degrees
https://github.com/rive-app/rive/assets/186340/15156cec-ac90-4b67-8bfb-b4a60e99090f
Diffs=
24aaadf9a Follow path distance support all values & fix scaling issue. (#5659)
Co-authored-by: Philip Chung <philterdesign@gmail.com>
Makes this easier:
```
class MyController extends RiveAnimationController<Artboard> {
@override
bool init(Artboard core) {
var run = core.component<TextValueRun>("blah");
run?.text = "HEEEEEY";
return super.init(core);
}
@override
void apply(Artboard? core, double elapsedSeconds) {}
}
```
Also exposes NestedArtboard which lots of users have requested.
Diffs=
fa36ec055 Make TextValueRun visible to clients and NestedArtboards too. (#5657)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Follow this thread: https://2dimensions.slack.com/archives/CLLCU09T6/p1690220943525829
Note that re-running the generator picked up some more changes.
Diffs=
aeb9210ad Fix runtime image sizes and run core generator. (#5655)
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
- Exposes `useArtboardSize` in RiveAnimation
- Checks to see if clipping is disabled - Artboard.clip
- Provides means to supply a custom Rect for clipping
Diffs=
fa6ed717b improve Rive widget clipping and sizing (#5154)
13863bf8f Rive Text for iOS and Android! (#5634)
9e0c43b70 Fix small bugs caught by JC (and Alex). (#5647)
Co-authored-by: Gordon <pggordonhayes@gmail.com>
just ran "generate_core_runtimes.sh" because it looks like we've started to fall behind a bunch here.
Any reason not to get this merged (after sorting any issues)
looks like it has some text updates & follow constraints?
i guess it'd be good to double check this for things we do not want in the public runtimes
Diffs=
d0c65132d ran generate core runtimes (#5628)
420d27a5b FollowPathConstraint to extend TransformSpaceConstraint (#5635)
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
…e asset extensions into api as well
bit of a refactor...
tldr move stage mutation & export mutation stuff into rive api (we couldjust move export i guess...)
move the export helper into rive-api as well
this allows peon to share the same code as our backend here!
Diffs=
17a07fe2e refactor asset export helpers, moving them into rive-api & moving som… (#5620)
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
…sset
ok just "fixing" how we export .riv files, and no-longer rely on width and height form image assets, but take them from the image instead.
its not "huge" difference, but basically it means that if we replace an existing image with an image of different dimensions we end up drawing the image from the centre of where the original image was, rather than the top left, which is a bit mroe forgiving
example:
got a few images in here, (they're all like 5k x 3k pixels, so all quite large)
<img width="1086" alt="CleanShot 2023-07-03 at 16 28 34@2x" src="https://github.com/rive-app/rive/assets/1216025/625e0d34-ac0c-4eb6-ad75-cb839aca92ac">
before this change this would look like:
<img width="1135" alt="CleanShot 2023-07-03 at 16 28 46@2x" src="https://github.com/rive-app/rive/assets/1216025/8ba848da-5938-4897-a664-eaae39c86806">
with this change we get
<img width="1113" alt="CleanShot 2023-07-03 at 16 29 17@2x" src="https://github.com/rive-app/rive/assets/1216025/c5f30eb6-21bd-419e-802d-9c98c00399e7">
(the mesh is kinda interesting here)
*note* i'm not touching the cpp runtime just yet, so this & other changes still need to make it down there
Diffs=
235908221 use the dimensions of the image at runtime, rather than of the ImageA… (#5519)
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>
- enables overriding the exporttype on export
- forces the "preview" riv file that gets exported to be exported "embedded"
- allows us to handle exceptions when decoding images (more to be done here, but this at least lets us avoid crashing without being able to catch exceptions https://api.flutter.dev/flutter/dart-ui/decodeImageFromList.html)
Diffs=
185b76201 Force embed assets when getting the preview for the sharelinks (#5608)
8e82475b8 Baseline Origin (#5577)
8b49fcbc5 Add option to quantize time to whole frames of framerate. (#5578)
b8e5473b9 Follow path should respect constrained component rotation if orient is off (#5601)
Co-authored-by: Maxwell Talbot <talbot.maxwell@gmail.com>