From 07665f3cc9ffb4ac43206fa34b2d6e37b9ad3470 Mon Sep 17 00:00:00 2001 From: mjtalbot Date: Thu, 10 Aug 2023 10:33:33 +0000 Subject: [PATCH] =?UTF-8?q?update=20mono=20to=20apply=20.gitattribute=20ch?= =?UTF-8?q?anges=20first=20&=20made=20a=20trivial=20cha=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …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 Co-authored-by: Gordon Co-authored-by: Luigi Rosso Co-authored-by: Maxwell Talbot --- .gitattributes | 2 + .rive_head | 2 +- CHANGELOG.md | 4 +- .../animation/advanceable_state_base.dart | 7 +- .../generated/animation/animation_base.dart | 6 +- .../animation/animation_state_base.dart | 7 +- .../animation/blend_animation_1d_base.dart | 7 +- .../animation/blend_animation_base.dart | 6 +- .../blend_animation_direct_base.dart | 11 +- .../animation/blend_state_1d_base.dart | 7 +- .../blend_state_transition_base.dart | 7 +- .../animation/cubic_interpolator_base.dart | 12 ++- .../cubic_interpolator_component_base.dart | 13 ++- .../animation/keyed_object_base.dart | 6 +- .../animation/keyed_property_base.dart | 6 +- .../generated/animation/keyframe_base.dart | 10 +- .../animation/keyframe_bool_base.dart | 7 +- .../animation/keyframe_color_base.dart | 7 +- .../animation/keyframe_double_base.dart | 7 +- .../generated/animation/keyframe_id_base.dart | 7 +- .../animation/keyframe_string_base.dart | 7 +- .../animation/linear_animation_base.dart | 21 ++-- .../animation/listener_align_target_base.dart | 7 +- .../animation/listener_bool_change_base.dart | 7 +- .../animation/listener_fire_event_base.dart | 47 ++++++++ .../animation/listener_input_change_base.dart | 7 +- .../listener_number_change_base.dart | 7 +- .../generated/animation/nested_bool_base.dart | 7 +- .../animation/nested_input_base.dart | 7 +- .../nested_linear_animation_base.dart | 7 +- .../animation/nested_number_base.dart | 7 +- .../nested_remap_animation_base.dart | 7 +- .../nested_simple_animation_base.dart | 9 +- .../animation/state_machine_bool_base.dart | 7 +- .../state_machine_component_base.dart | 6 +- .../state_machine_listener_base.dart | 9 +- .../animation/state_machine_number_base.dart | 7 +- .../animation/state_transition_base.dart | 17 +-- .../animation/transition_condition_base.dart | 6 +- .../transition_number_condition_base.dart | 7 +- .../transition_value_condition_base.dart | 7 +- lib/src/generated/artboard_base.dart | 21 ++-- lib/src/generated/assets/asset_base.dart | 6 +- .../generated/assets/drawable_asset_base.dart | 9 +- lib/src/generated/assets/file_asset_base.dart | 10 +- .../assets/file_asset_contents_base.dart | 6 +- lib/src/generated/bones/bone_base.dart | 7 +- .../generated/bones/cubic_weight_base.dart | 13 ++- lib/src/generated/bones/root_bone_base.dart | 9 +- lib/src/generated/bones/skin_base.dart | 16 +-- lib/src/generated/bones/tendon_base.dart | 19 ++-- lib/src/generated/bones/weight_base.dart | 9 +- lib/src/generated/component_base.dart | 8 +- .../constraints/constraint_base.dart | 7 +- .../constraints/distance_constraint_base.dart | 9 +- .../follow_path_constraint_base.dart | 11 +- .../constraints/ik_constraint_base.dart | 9 +- .../constraints/targeted_constraint_base.dart | 7 +- .../transform_component_constraint_base.dart | 21 ++-- ...transform_component_constraint_y_base.dart | 17 +-- .../transform_constraint_base.dart | 9 +- .../transform_space_constraint_base.dart | 9 +- lib/src/generated/custom_property_base.dart | 12 +++ .../custom_property_boolean_base.dart | 19 ++-- .../custom_property_number_base.dart | 19 ++-- .../custom_property_string_base.dart | 19 ++-- lib/src/generated/draw_rules_base.dart | 6 +- lib/src/generated/draw_target_base.dart | 9 +- lib/src/generated/drawable_base.dart | 9 +- lib/src/generated/joystick_base.dart | 29 ++--- lib/src/generated/nested_animation_base.dart | 6 +- lib/src/generated/nested_artboard_base.dart | 7 +- lib/src/generated/node_base.dart | 9 +- lib/src/generated/rive_core_context.dart | 29 +++++ .../generated/shapes/clipping_shape_base.dart | 11 +- .../shapes/cubic_asymmetric_vertex_base.dart | 11 +- .../shapes/cubic_detached_vertex_base.dart | 13 ++- .../shapes/cubic_mirrored_vertex_base.dart | 9 +- lib/src/generated/shapes/image_base.dart | 11 +- lib/src/generated/shapes/mesh_base.dart | 6 +- .../generated/shapes/mesh_vertex_base.dart | 9 +- lib/src/generated/shapes/paint/fill_base.dart | 7 +- .../shapes/paint/gradient_stop_base.dart | 9 +- .../shapes/paint/linear_gradient_base.dart | 14 +-- .../shapes/paint/shape_paint_base.dart | 6 +- .../shapes/paint/solid_color_base.dart | 7 +- .../generated/shapes/paint/stroke_base.dart | 13 ++- .../shapes/paint/trim_path_base.dart | 13 ++- .../shapes/parametric_path_base.dart | 13 ++- lib/src/generated/shapes/path_base.dart | 7 +- .../generated/shapes/points_path_base.dart | 7 +- lib/src/generated/shapes/polygon_base.dart | 9 +- lib/src/generated/shapes/rectangle_base.dart | 15 +-- lib/src/generated/shapes/star_base.dart | 7 +- .../shapes/straight_vertex_base.dart | 7 +- lib/src/generated/shapes/vertex_base.dart | 8 +- lib/src/generated/solo_base.dart | 7 +- lib/src/generated/text/text_base.dart | 23 ++-- .../text/text_modifier_group_base.dart | 22 ++-- .../text/text_modifier_range_base.dart | 26 ++--- .../generated/text/text_style_axis_base.dart | 9 +- lib/src/generated/text/text_style_base.dart | 34 +++++- .../text/text_style_feature_base.dart | 9 +- .../generated/text/text_value_run_base.dart | 9 +- .../text/text_variation_modifier_base.dart | 9 +- .../generated/transform_component_base.dart | 11 +- .../world_transform_component_base.dart | 6 +- lib/src/rive.dart | 14 ++- .../animation/listener_fire_event.dart | 37 +++++++ lib/src/rive_core/custom_property.dart | 8 ++ .../rive_core/custom_property_boolean.dart | 3 - lib/src/rive_core/custom_property_number.dart | 3 - lib/src/rive_core/custom_property_string.dart | 3 - lib/src/rive_core/event.dart | 23 ++-- lib/src/rive_core/text/text.dart | 23 +--- lib/src/rive_core/text/text_style.dart | 5 + lib/src/rive_render_box.dart | 100 +++++++++++++----- pubspec.yaml | 4 +- test/assets/cdn_image.riv | Bin 206 -> 128 bytes test/assets/file.png | Bin 159880 -> 131 bytes test/assets/follow_path_shapes.riv | 3 + test/assets/image_asset_prod.riv | Bin 240 -> 128 bytes test/assets/image_asset_uat.riv | Bin 281 -> 128 bytes test/assets/joystick_handle_source.riv | 3 + test/assets/off_road_car.riv | 3 + test/assets/rive-flutter-test-asset.riv | Bin 264 -> 128 bytes test/assets/sample_image.riv | Bin 202647 -> 131 bytes test/assets/skins_demo.riv | 3 + .../follow_path/golden_follow_path_test.dart | 59 +++++++++++ .../images/follow_path_over_time_01.png | 3 + .../images/follow_path_over_time_02.png | 3 + .../images/follow_path_over_time_03.png | 3 + .../images/follow_path_over_time_04.png | 3 + test/goldens/golden_comparator.dart | 62 +++++++++++ .../joysticks/golden_joysticks_test.dart | 64 +++++++++++ .../images/joystick_handle_source_01.png | 3 + .../images/joystick_handle_source_02.png | 3 + .../images/joystick_handle_source_03.png | 3 + .../images/joystick_handle_source_04.png | 3 + .../golden_simple_animations_test.dart | 96 +++++++++++++++++ .../images/mixed_animations_01.png | 3 + .../images/mixed_animations_02.png | 3 + .../images/play_first_animation_found.png | 3 + .../play_provided_animation_controller_01.png | 3 + .../play_provided_animation_controller_02.png | 3 + .../golden_skins_opacity_test.dart | 82 ++++++++++++++ .../skins_opacity/images/skins_opacity_01.png | 3 + .../skins_opacity/images/skins_opacity_02.png | 3 + .../skins_opacity/images/skins_opacity_03.png | 3 + .../skins_opacity/images/skins_opacity_04.png | 3 + .../skins_opacity/images/skins_opacity_05.png | 3 + update_dependencies.sh | 2 - 152 files changed, 1341 insertions(+), 449 deletions(-) create mode 100644 .gitattributes create mode 100644 lib/src/generated/animation/listener_fire_event_base.dart create mode 100644 lib/src/generated/custom_property_base.dart create mode 100644 lib/src/rive_core/animation/listener_fire_event.dart create mode 100644 lib/src/rive_core/custom_property.dart create mode 100644 test/assets/follow_path_shapes.riv create mode 100644 test/assets/joystick_handle_source.riv create mode 100644 test/assets/off_road_car.riv create mode 100644 test/assets/skins_demo.riv create mode 100644 test/goldens/follow_path/golden_follow_path_test.dart create mode 100644 test/goldens/follow_path/images/follow_path_over_time_01.png create mode 100644 test/goldens/follow_path/images/follow_path_over_time_02.png create mode 100644 test/goldens/follow_path/images/follow_path_over_time_03.png create mode 100644 test/goldens/follow_path/images/follow_path_over_time_04.png create mode 100644 test/goldens/golden_comparator.dart create mode 100644 test/goldens/joysticks/golden_joysticks_test.dart create mode 100644 test/goldens/joysticks/images/joystick_handle_source_01.png create mode 100644 test/goldens/joysticks/images/joystick_handle_source_02.png create mode 100644 test/goldens/joysticks/images/joystick_handle_source_03.png create mode 100644 test/goldens/joysticks/images/joystick_handle_source_04.png create mode 100644 test/goldens/simple_animations/golden_simple_animations_test.dart create mode 100644 test/goldens/simple_animations/images/mixed_animations_01.png create mode 100644 test/goldens/simple_animations/images/mixed_animations_02.png create mode 100644 test/goldens/simple_animations/images/play_first_animation_found.png create mode 100644 test/goldens/simple_animations/images/play_provided_animation_controller_01.png create mode 100644 test/goldens/simple_animations/images/play_provided_animation_controller_02.png create mode 100644 test/goldens/skins_opacity/golden_skins_opacity_test.dart create mode 100644 test/goldens/skins_opacity/images/skins_opacity_01.png create mode 100644 test/goldens/skins_opacity/images/skins_opacity_02.png create mode 100644 test/goldens/skins_opacity/images/skins_opacity_03.png create mode 100644 test/goldens/skins_opacity/images/skins_opacity_04.png create mode 100644 test/goldens/skins_opacity/images/skins_opacity_05.png diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..292edff --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +test/assets/** filter=lfs diff=lfs merge=lfs -text +test/goldens/**/images/*.png filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/.rive_head b/.rive_head index f35e5cb..a0ae7d5 100644 --- a/.rive_head +++ b/.rive_head @@ -1 +1 @@ -2eb7308d297bd1b829c6aa829df6470823e76671 +96a0f0b967bb6ced28c5f4c5a5616cda22b22944 diff --git a/CHANGELOG.md b/CHANGELOG.md index a6623c9..dfdbc7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ -## Upcoming +## 0.11.14 - Refactor how hit testing is performed in `RiveAnimation` and `Rive` widgets. Pointer events (listeners) can now be enabled on the `Rive` widget by setting `enablePointerEvents` to `true` (default is false). +- Change in how animations advance when using `RiveAnimation` and `Rive` widgets. Now using `Ticker`, which will allow Rive animations to respect `timeDilation` and `TickerMode`. Resolves [187](https://github.com/rive-app/rive-flutter/issues/187), [254](https://github.com/rive-app/rive-flutter/issues/254), [307](https://github.com/rive-app/rive-flutter/issues/307), and [328](https://github.com/rive-app/rive-flutter/issues/328) +- Support for line spacing. ## 0.11.13 diff --git a/lib/src/generated/animation/advanceable_state_base.dart b/lib/src/generated/animation/advanceable_state_base.dart index 8a36272..2fa52f4 100644 --- a/lib/src/generated/animation/advanceable_state_base.dart +++ b/lib/src/generated/animation/advanceable_state_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/advanceable_state_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/layer_state.dart'; @@ -39,8 +40,10 @@ abstract class AdvanceableStateBase extends LayerState { void speedChanged(double from, double to); @override - void copy(covariant AdvanceableStateBase source) { + void copy(Core source) { super.copy(source); - _speed = source._speed; + if (source is AdvanceableStateBase) { + _speed = source._speed; + } } } diff --git a/lib/src/generated/animation/animation_base.dart b/lib/src/generated/animation/animation_base.dart index 794b61a..f84c441 100644 --- a/lib/src/generated/animation/animation_base.dart +++ b/lib/src/generated/animation/animation_base.dart @@ -36,7 +36,9 @@ abstract class AnimationBase extends Core { void nameChanged(String from, String to); @override - void copy(covariant AnimationBase source) { - _name = source._name; + void copy(Core source) { + if (source is AnimationBase) { + _name = source._name; + } } } diff --git a/lib/src/generated/animation/animation_state_base.dart b/lib/src/generated/animation/animation_state_base.dart index 11242a6..f857df4 100644 --- a/lib/src/generated/animation/animation_state_base.dart +++ b/lib/src/generated/animation/animation_state_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/animation_state_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/layer_state_base.dart'; import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/advanceable_state.dart'; @@ -44,8 +45,10 @@ abstract class AnimationStateBase extends AdvanceableState { void animationIdChanged(int from, int to); @override - void copy(covariant AnimationStateBase source) { + void copy(Core source) { super.copy(source); - _animationId = source._animationId; + if (source is AnimationStateBase) { + _animationId = source._animationId; + } } } diff --git a/lib/src/generated/animation/blend_animation_1d_base.dart b/lib/src/generated/animation/blend_animation_1d_base.dart index fbc9939..d15f0a7 100644 --- a/lib/src/generated/animation/blend_animation_1d_base.dart +++ b/lib/src/generated/animation/blend_animation_1d_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/blend_animation_1d_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/blend_animation.dart'; abstract class BlendAnimation1DBase extends BlendAnimation { @@ -35,8 +36,10 @@ abstract class BlendAnimation1DBase extends BlendAnimation { void valueChanged(double from, double to); @override - void copy(covariant BlendAnimation1DBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is BlendAnimation1DBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/blend_animation_base.dart b/lib/src/generated/animation/blend_animation_base.dart index c29c76d..74aadb0 100644 --- a/lib/src/generated/animation/blend_animation_base.dart +++ b/lib/src/generated/animation/blend_animation_base.dart @@ -37,7 +37,9 @@ abstract class BlendAnimationBase extends Core { void animationIdChanged(int from, int to); @override - void copy(covariant BlendAnimationBase source) { - _animationId = source._animationId; + void copy(Core source) { + if (source is BlendAnimationBase) { + _animationId = source._animationId; + } } } diff --git a/lib/src/generated/animation/blend_animation_direct_base.dart b/lib/src/generated/animation/blend_animation_direct_base.dart index bdd1a4a..8ac746f 100644 --- a/lib/src/generated/animation/blend_animation_direct_base.dart +++ b/lib/src/generated/animation/blend_animation_direct_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/blend_animation_direct_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/blend_animation.dart'; abstract class BlendAnimationDirectBase extends BlendAnimation { @@ -87,10 +88,12 @@ abstract class BlendAnimationDirectBase extends BlendAnimation { void blendSourceChanged(int from, int to); @override - void copy(covariant BlendAnimationDirectBase source) { + void copy(Core source) { super.copy(source); - _inputId = source._inputId; - _mixValue = source._mixValue; - _blendSource = source._blendSource; + if (source is BlendAnimationDirectBase) { + _inputId = source._inputId; + _mixValue = source._mixValue; + _blendSource = source._blendSource; + } } } diff --git a/lib/src/generated/animation/blend_state_1d_base.dart b/lib/src/generated/animation/blend_state_1d_base.dart index 63c990c..09c5aa2 100644 --- a/lib/src/generated/animation/blend_state_1d_base.dart +++ b/lib/src/generated/animation/blend_state_1d_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/blend_state_1d_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/layer_state_base.dart'; import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/blend_animation_1d.dart'; @@ -44,8 +45,10 @@ abstract class BlendState1DBase extends BlendState { void inputIdChanged(int from, int to); @override - void copy(covariant BlendState1DBase source) { + void copy(Core source) { super.copy(source); - _inputId = source._inputId; + if (source is BlendState1DBase) { + _inputId = source._inputId; + } } } diff --git a/lib/src/generated/animation/blend_state_transition_base.dart b/lib/src/generated/animation/blend_state_transition_base.dart index b96cf34..23409c3 100644 --- a/lib/src/generated/animation/blend_state_transition_base.dart +++ b/lib/src/generated/animation/blend_state_transition_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/blend_state_transition_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; import 'package:rive/src/rive_core/animation/state_transition.dart'; @@ -42,8 +43,10 @@ abstract class BlendStateTransitionBase extends StateTransition { void exitBlendAnimationIdChanged(int from, int to); @override - void copy(covariant BlendStateTransitionBase source) { + void copy(Core source) { super.copy(source); - _exitBlendAnimationId = source._exitBlendAnimationId; + if (source is BlendStateTransitionBase) { + _exitBlendAnimationId = source._exitBlendAnimationId; + } } } diff --git a/lib/src/generated/animation/cubic_interpolator_base.dart b/lib/src/generated/animation/cubic_interpolator_base.dart index 006ac3f..c8daf91 100644 --- a/lib/src/generated/animation/cubic_interpolator_base.dart +++ b/lib/src/generated/animation/cubic_interpolator_base.dart @@ -100,10 +100,12 @@ abstract class CubicInterpolatorBase extends Core { void y2Changed(double from, double to); @override - void copy(covariant CubicInterpolatorBase source) { - _x1 = source._x1; - _y1 = source._y1; - _x2 = source._x2; - _y2 = source._y2; + void copy(Core source) { + if (source is CubicInterpolatorBase) { + _x1 = source._x1; + _y1 = source._y1; + _x2 = source._x2; + _y2 = source._y2; + } } } diff --git a/lib/src/generated/animation/cubic_interpolator_component_base.dart b/lib/src/generated/animation/cubic_interpolator_component_base.dart index 4708f39..4a8ffb9 100644 --- a/lib/src/generated/animation/cubic_interpolator_component_base.dart +++ b/lib/src/generated/animation/cubic_interpolator_component_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/cubic_interpolator_component_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class CubicInterpolatorComponentBase extends Component { @@ -101,11 +102,13 @@ abstract class CubicInterpolatorComponentBase extends Component { void y2Changed(double from, double to); @override - void copy(covariant CubicInterpolatorComponentBase source) { + void copy(Core source) { super.copy(source); - _x1 = source._x1; - _y1 = source._y1; - _x2 = source._x2; - _y2 = source._y2; + if (source is CubicInterpolatorComponentBase) { + _x1 = source._x1; + _y1 = source._y1; + _x2 = source._x2; + _y2 = source._y2; + } } } diff --git a/lib/src/generated/animation/keyed_object_base.dart b/lib/src/generated/animation/keyed_object_base.dart index 13adc3a..e1b087e 100644 --- a/lib/src/generated/animation/keyed_object_base.dart +++ b/lib/src/generated/animation/keyed_object_base.dart @@ -36,7 +36,9 @@ abstract class KeyedObjectBase extends Core { void objectIdChanged(int from, int to); @override - void copy(covariant KeyedObjectBase source) { - _objectId = source._objectId; + void copy(Core source) { + if (source is KeyedObjectBase) { + _objectId = source._objectId; + } } } diff --git a/lib/src/generated/animation/keyed_property_base.dart b/lib/src/generated/animation/keyed_property_base.dart index 9ddb36a..a7a7deb 100644 --- a/lib/src/generated/animation/keyed_property_base.dart +++ b/lib/src/generated/animation/keyed_property_base.dart @@ -37,7 +37,9 @@ abstract class KeyedPropertyBase extends Core { void propertyKeyChanged(int from, int to); @override - void copy(covariant KeyedPropertyBase source) { - _propertyKey = source._propertyKey; + void copy(Core source) { + if (source is KeyedPropertyBase) { + _propertyKey = source._propertyKey; + } } } diff --git a/lib/src/generated/animation/keyframe_base.dart b/lib/src/generated/animation/keyframe_base.dart index 77c98de..f33c8e0 100644 --- a/lib/src/generated/animation/keyframe_base.dart +++ b/lib/src/generated/animation/keyframe_base.dart @@ -87,9 +87,11 @@ abstract class KeyFrameBase extends Core { void interpolatorIdChanged(int from, int to); @override - void copy(covariant KeyFrameBase source) { - _frame = source._frame; - _interpolationType = source._interpolationType; - _interpolatorId = source._interpolatorId; + void copy(Core source) { + if (source is KeyFrameBase) { + _frame = source._frame; + _interpolationType = source._interpolationType; + _interpolatorId = source._interpolatorId; + } } } diff --git a/lib/src/generated/animation/keyframe_bool_base.dart b/lib/src/generated/animation/keyframe_bool_base.dart index b5a11fb..b07b237 100644 --- a/lib/src/generated/animation/keyframe_bool_base.dart +++ b/lib/src/generated/animation/keyframe_bool_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/keyframe_bool_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameBoolBase extends KeyFrame { @@ -34,8 +35,10 @@ abstract class KeyFrameBoolBase extends KeyFrame { void valueChanged(bool from, bool to); @override - void copy(covariant KeyFrameBoolBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is KeyFrameBoolBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/keyframe_color_base.dart b/lib/src/generated/animation/keyframe_color_base.dart index 516c68f..8d84710 100644 --- a/lib/src/generated/animation/keyframe_color_base.dart +++ b/lib/src/generated/animation/keyframe_color_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/keyframe_color_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameColorBase extends KeyFrame { @@ -34,8 +35,10 @@ abstract class KeyFrameColorBase extends KeyFrame { void valueChanged(int from, int to); @override - void copy(covariant KeyFrameColorBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is KeyFrameColorBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/keyframe_double_base.dart b/lib/src/generated/animation/keyframe_double_base.dart index 2c648a4..a51883a 100644 --- a/lib/src/generated/animation/keyframe_double_base.dart +++ b/lib/src/generated/animation/keyframe_double_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/keyframe_double_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameDoubleBase extends KeyFrame { @@ -34,8 +35,10 @@ abstract class KeyFrameDoubleBase extends KeyFrame { void valueChanged(double from, double to); @override - void copy(covariant KeyFrameDoubleBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is KeyFrameDoubleBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/keyframe_id_base.dart b/lib/src/generated/animation/keyframe_id_base.dart index 171ca1c..e004927 100644 --- a/lib/src/generated/animation/keyframe_id_base.dart +++ b/lib/src/generated/animation/keyframe_id_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/keyframe_id_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameIdBase extends KeyFrame { @@ -34,8 +35,10 @@ abstract class KeyFrameIdBase extends KeyFrame { void valueChanged(int from, int to); @override - void copy(covariant KeyFrameIdBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is KeyFrameIdBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/keyframe_string_base.dart b/lib/src/generated/animation/keyframe_string_base.dart index 209708c..98c39a9 100644 --- a/lib/src/generated/animation/keyframe_string_base.dart +++ b/lib/src/generated/animation/keyframe_string_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/keyframe_string_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/keyframe.dart'; abstract class KeyFrameStringBase extends KeyFrame { @@ -34,8 +35,10 @@ abstract class KeyFrameStringBase extends KeyFrame { void valueChanged(String from, String to); @override - void copy(covariant KeyFrameStringBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is KeyFrameStringBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/linear_animation_base.dart b/lib/src/generated/animation/linear_animation_base.dart index 1c05ad8..61cfdd7 100644 --- a/lib/src/generated/animation/linear_animation_base.dart +++ b/lib/src/generated/animation/linear_animation_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/linear_animation_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/animation.dart'; abstract class LinearAnimationBase extends Animation { @@ -208,15 +209,17 @@ abstract class LinearAnimationBase extends Animation { void quantizeChanged(bool from, bool to); @override - void copy(covariant LinearAnimationBase source) { + void copy(Core source) { super.copy(source); - _fps = source._fps; - _duration = source._duration; - _speed = source._speed; - _loopValue = source._loopValue; - _workStart = source._workStart; - _workEnd = source._workEnd; - _enableWorkArea = source._enableWorkArea; - _quantize = source._quantize; + if (source is LinearAnimationBase) { + _fps = source._fps; + _duration = source._duration; + _speed = source._speed; + _loopValue = source._loopValue; + _workStart = source._workStart; + _workEnd = source._workEnd; + _enableWorkArea = source._enableWorkArea; + _quantize = source._quantize; + } } } diff --git a/lib/src/generated/animation/listener_align_target_base.dart b/lib/src/generated/animation/listener_align_target_base.dart index 2fa57ca..9ced41b 100644 --- a/lib/src/generated/animation/listener_align_target_base.dart +++ b/lib/src/generated/animation/listener_align_target_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/listener_align_target_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/listener_action.dart'; abstract class ListenerAlignTargetBase extends ListenerAction { @@ -38,8 +39,10 @@ abstract class ListenerAlignTargetBase extends ListenerAction { void targetIdChanged(int from, int to); @override - void copy(covariant ListenerAlignTargetBase source) { + void copy(Core source) { super.copy(source); - _targetId = source._targetId; + if (source is ListenerAlignTargetBase) { + _targetId = source._targetId; + } } } diff --git a/lib/src/generated/animation/listener_bool_change_base.dart b/lib/src/generated/animation/listener_bool_change_base.dart index 15adf5e..a87c272 100644 --- a/lib/src/generated/animation/listener_bool_change_base.dart +++ b/lib/src/generated/animation/listener_bool_change_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/listener_bool_change_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/listener_action_base.dart'; import 'package:rive/src/rive_core/animation/listener_input_change.dart'; @@ -41,8 +42,10 @@ abstract class ListenerBoolChangeBase extends ListenerInputChange { void valueChanged(int from, int to); @override - void copy(covariant ListenerBoolChangeBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is ListenerBoolChangeBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/listener_fire_event_base.dart b/lib/src/generated/animation/listener_fire_event_base.dart new file mode 100644 index 0000000..b6fa536 --- /dev/null +++ b/lib/src/generated/animation/listener_fire_event_base.dart @@ -0,0 +1,47 @@ +// Core automatically generated +// lib/src/generated/animation/listener_fire_event_base.dart. +// Do not modify manually. + +import 'package:rive/src/core/core.dart'; +import 'package:rive/src/rive_core/animation/listener_action.dart'; + +abstract class ListenerFireEventBase extends ListenerAction { + static const int typeKey = 168; + @override + int get coreType => ListenerFireEventBase.typeKey; + @override + Set get coreTypes => + {ListenerFireEventBase.typeKey, ListenerActionBase.typeKey}; + + /// -------------------------------------------------------------------------- + /// EventId field with key 389. + static const int eventIdInitialValue = -1; + int _eventId = eventIdInitialValue; + static const int eventIdPropertyKey = 389; + + /// Id of the Event referenced. + int get eventId => _eventId; + + /// Change the [_eventId] field value. + /// [eventIdChanged] will be invoked only if the field's value has changed. + set eventId(int value) { + if (_eventId == value) { + return; + } + int from = _eventId; + _eventId = value; + if (hasValidated) { + eventIdChanged(from, value); + } + } + + void eventIdChanged(int from, int to); + + @override + void copy(Core source) { + super.copy(source); + if (source is ListenerFireEventBase) { + _eventId = source._eventId; + } + } +} diff --git a/lib/src/generated/animation/listener_input_change_base.dart b/lib/src/generated/animation/listener_input_change_base.dart index 7106050..ff54f6b 100644 --- a/lib/src/generated/animation/listener_input_change_base.dart +++ b/lib/src/generated/animation/listener_input_change_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/listener_input_change_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/listener_action.dart'; abstract class ListenerInputChangeBase extends ListenerAction { @@ -37,8 +38,10 @@ abstract class ListenerInputChangeBase extends ListenerAction { void inputIdChanged(int from, int to); @override - void copy(covariant ListenerInputChangeBase source) { + void copy(Core source) { super.copy(source); - _inputId = source._inputId; + if (source is ListenerInputChangeBase) { + _inputId = source._inputId; + } } } diff --git a/lib/src/generated/animation/listener_number_change_base.dart b/lib/src/generated/animation/listener_number_change_base.dart index 8254e9d..b51d1fe 100644 --- a/lib/src/generated/animation/listener_number_change_base.dart +++ b/lib/src/generated/animation/listener_number_change_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/listener_number_change_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/listener_action_base.dart'; import 'package:rive/src/rive_core/animation/listener_input_change.dart'; @@ -41,8 +42,10 @@ abstract class ListenerNumberChangeBase extends ListenerInputChange { void valueChanged(double from, double to); @override - void copy(covariant ListenerNumberChangeBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is ListenerNumberChangeBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/nested_bool_base.dart b/lib/src/generated/animation/nested_bool_base.dart index c3cce7e..2f7f8ce 100644 --- a/lib/src/generated/animation/nested_bool_base.dart +++ b/lib/src/generated/animation/nested_bool_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/nested_bool_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/rive_core/animation/nested_input.dart'; @@ -37,8 +38,10 @@ abstract class NestedBoolBase extends NestedInput { void nestedValueChanged(bool from, bool to); @override - void copy(covariant NestedBoolBase source) { + void copy(Core source) { super.copy(source); - _nestedValue = source._nestedValue; + if (source is NestedBoolBase) { + _nestedValue = source._nestedValue; + } } } diff --git a/lib/src/generated/animation/nested_input_base.dart b/lib/src/generated/animation/nested_input_base.dart index ea360a2..7dd7843 100644 --- a/lib/src/generated/animation/nested_input_base.dart +++ b/lib/src/generated/animation/nested_input_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/nested_input_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class NestedInputBase extends Component { @@ -36,8 +37,10 @@ abstract class NestedInputBase extends Component { void inputIdChanged(int from, int to); @override - void copy(covariant NestedInputBase source) { + void copy(Core source) { super.copy(source); - _inputId = source._inputId; + if (source is NestedInputBase) { + _inputId = source._inputId; + } } } diff --git a/lib/src/generated/animation/nested_linear_animation_base.dart b/lib/src/generated/animation/nested_linear_animation_base.dart index 48d4dc0..49f8e55 100644 --- a/lib/src/generated/animation/nested_linear_animation_base.dart +++ b/lib/src/generated/animation/nested_linear_animation_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/nested_linear_animation_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/rive_core/animation/linear_animation.dart'; @@ -45,8 +46,10 @@ abstract class NestedLinearAnimationBase void mixChanged(double from, double to); @override - void copy(covariant NestedLinearAnimationBase source) { + void copy(Core source) { super.copy(source); - _mix = source._mix; + if (source is NestedLinearAnimationBase) { + _mix = source._mix; + } } } diff --git a/lib/src/generated/animation/nested_number_base.dart b/lib/src/generated/animation/nested_number_base.dart index e4ad78a..9b9ed84 100644 --- a/lib/src/generated/animation/nested_number_base.dart +++ b/lib/src/generated/animation/nested_number_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/nested_number_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/rive_core/animation/nested_input.dart'; @@ -40,8 +41,10 @@ abstract class NestedNumberBase extends NestedInput { void nestedValueChanged(double from, double to); @override - void copy(covariant NestedNumberBase source) { + void copy(Core source) { super.copy(source); - _nestedValue = source._nestedValue; + if (source is NestedNumberBase) { + _nestedValue = source._nestedValue; + } } } diff --git a/lib/src/generated/animation/nested_remap_animation_base.dart b/lib/src/generated/animation/nested_remap_animation_base.dart index 1b4eed8..458543c 100644 --- a/lib/src/generated/animation/nested_remap_animation_base.dart +++ b/lib/src/generated/animation/nested_remap_animation_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/nested_remap_animation_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/nested_animation_base.dart'; @@ -45,8 +46,10 @@ abstract class NestedRemapAnimationBase extends NestedLinearAnimation { void timeChanged(double from, double to); @override - void copy(covariant NestedRemapAnimationBase source) { + void copy(Core source) { super.copy(source); - _time = source._time; + if (source is NestedRemapAnimationBase) { + _time = source._time; + } } } diff --git a/lib/src/generated/animation/nested_simple_animation_base.dart b/lib/src/generated/animation/nested_simple_animation_base.dart index 8f9375d..b0f185b 100644 --- a/lib/src/generated/animation/nested_simple_animation_base.dart +++ b/lib/src/generated/animation/nested_simple_animation_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/nested_simple_animation_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/nested_animation_base.dart'; @@ -69,9 +70,11 @@ abstract class NestedSimpleAnimationBase extends NestedLinearAnimation { void isPlayingChanged(bool from, bool to); @override - void copy(covariant NestedSimpleAnimationBase source) { + void copy(Core source) { super.copy(source); - _speed = source._speed; - _isPlaying = source._isPlaying; + if (source is NestedSimpleAnimationBase) { + _speed = source._speed; + _isPlaying = source._isPlaying; + } } } diff --git a/lib/src/generated/animation/state_machine_bool_base.dart b/lib/src/generated/animation/state_machine_bool_base.dart index 5c73c4e..36e3b44 100644 --- a/lib/src/generated/animation/state_machine_bool_base.dart +++ b/lib/src/generated/animation/state_machine_bool_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/state_machine_bool_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/state_machine_component_base.dart'; import 'package:rive/src/rive_core/animation/state_machine_input.dart'; @@ -39,8 +40,10 @@ abstract class StateMachineBoolBase extends StateMachineInput { void valueChanged(bool from, bool to); @override - void copy(covariant StateMachineBoolBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is StateMachineBoolBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/state_machine_component_base.dart b/lib/src/generated/animation/state_machine_component_base.dart index fbfa8ba..74ed6db 100644 --- a/lib/src/generated/animation/state_machine_component_base.dart +++ b/lib/src/generated/animation/state_machine_component_base.dart @@ -38,7 +38,9 @@ abstract class StateMachineComponentBase void nameChanged(String from, String to); @override - void copy(covariant StateMachineComponentBase source) { - _name = source._name; + void copy(Core source) { + if (source is StateMachineComponentBase) { + _name = source._name; + } } } diff --git a/lib/src/generated/animation/state_machine_listener_base.dart b/lib/src/generated/animation/state_machine_listener_base.dart index 4f88110..e0ab06e 100644 --- a/lib/src/generated/animation/state_machine_listener_base.dart +++ b/lib/src/generated/animation/state_machine_listener_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/state_machine_listener_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/state_machine_component.dart'; abstract class StateMachineListenerBase extends StateMachineComponent { @@ -62,9 +63,11 @@ abstract class StateMachineListenerBase extends StateMachineComponent { void listenerTypeValueChanged(int from, int to); @override - void copy(covariant StateMachineListenerBase source) { + void copy(Core source) { super.copy(source); - _targetId = source._targetId; - _listenerTypeValue = source._listenerTypeValue; + if (source is StateMachineListenerBase) { + _targetId = source._targetId; + _listenerTypeValue = source._listenerTypeValue; + } } } diff --git a/lib/src/generated/animation/state_machine_number_base.dart b/lib/src/generated/animation/state_machine_number_base.dart index 531dbb7..413cec4 100644 --- a/lib/src/generated/animation/state_machine_number_base.dart +++ b/lib/src/generated/animation/state_machine_number_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/state_machine_number_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/state_machine_component_base.dart'; import 'package:rive/src/rive_core/animation/state_machine_input.dart'; @@ -39,8 +40,10 @@ abstract class StateMachineNumberBase extends StateMachineInput { void valueChanged(double from, double to); @override - void copy(covariant StateMachineNumberBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is StateMachineNumberBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/state_transition_base.dart b/lib/src/generated/animation/state_transition_base.dart index aa3f7b4..c7ea3e7 100644 --- a/lib/src/generated/animation/state_transition_base.dart +++ b/lib/src/generated/animation/state_transition_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/state_transition_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/state_machine_layer_component.dart'; abstract class StateTransitionBase extends StateMachineLayerComponent { @@ -161,13 +162,15 @@ abstract class StateTransitionBase extends StateMachineLayerComponent { void interpolatorIdChanged(int from, int to); @override - void copy(covariant StateTransitionBase source) { + void copy(Core source) { super.copy(source); - _stateToId = source._stateToId; - _flags = source._flags; - _duration = source._duration; - _exitTime = source._exitTime; - _interpolationType = source._interpolationType; - _interpolatorId = source._interpolatorId; + if (source is StateTransitionBase) { + _stateToId = source._stateToId; + _flags = source._flags; + _duration = source._duration; + _exitTime = source._exitTime; + _interpolationType = source._interpolationType; + _interpolatorId = source._interpolatorId; + } } } diff --git a/lib/src/generated/animation/transition_condition_base.dart b/lib/src/generated/animation/transition_condition_base.dart index 6038428..0a45af8 100644 --- a/lib/src/generated/animation/transition_condition_base.dart +++ b/lib/src/generated/animation/transition_condition_base.dart @@ -36,7 +36,9 @@ abstract class TransitionConditionBase extends Core { void inputIdChanged(int from, int to); @override - void copy(covariant TransitionConditionBase source) { - _inputId = source._inputId; + void copy(Core source) { + if (source is TransitionConditionBase) { + _inputId = source._inputId; + } } } diff --git a/lib/src/generated/animation/transition_number_condition_base.dart b/lib/src/generated/animation/transition_number_condition_base.dart index b051457..9d583c9 100644 --- a/lib/src/generated/animation/transition_number_condition_base.dart +++ b/lib/src/generated/animation/transition_number_condition_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/transition_number_condition_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/animation/transition_condition_base.dart'; import 'package:rive/src/rive_core/animation/transition_value_condition.dart'; @@ -39,8 +40,10 @@ abstract class TransitionNumberConditionBase extends TransitionValueCondition { void valueChanged(double from, double to); @override - void copy(covariant TransitionNumberConditionBase source) { + void copy(Core source) { super.copy(source); - _value = source._value; + if (source is TransitionNumberConditionBase) { + _value = source._value; + } } } diff --git a/lib/src/generated/animation/transition_value_condition_base.dart b/lib/src/generated/animation/transition_value_condition_base.dart index 8a0e8f9..e9fb96b 100644 --- a/lib/src/generated/animation/transition_value_condition_base.dart +++ b/lib/src/generated/animation/transition_value_condition_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/animation/transition_value_condition_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/animation/transition_condition.dart'; abstract class TransitionValueConditionBase extends TransitionCondition { @@ -37,8 +38,10 @@ abstract class TransitionValueConditionBase extends TransitionCondition { void opValueChanged(int from, int to); @override - void copy(covariant TransitionValueConditionBase source) { + void copy(Core source) { super.copy(source); - _opValue = source._opValue; + if (source is TransitionValueConditionBase) { + _opValue = source._opValue; + } } } diff --git a/lib/src/generated/artboard_base.dart b/lib/src/generated/artboard_base.dart index e013d95..aec4924 100644 --- a/lib/src/generated/artboard_base.dart +++ b/lib/src/generated/artboard_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/artboard_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/rive_core/world_transform_component.dart'; @@ -212,15 +213,17 @@ abstract class ArtboardBase extends WorldTransformComponent { void defaultStateMachineIdChanged(int from, int to); @override - void copy(covariant ArtboardBase source) { + void copy(Core source) { super.copy(source); - _clip = source._clip; - _width = source._width; - _height = source._height; - _x = source._x; - _y = source._y; - _originX = source._originX; - _originY = source._originY; - _defaultStateMachineId = source._defaultStateMachineId; + if (source is ArtboardBase) { + _clip = source._clip; + _width = source._width; + _height = source._height; + _x = source._x; + _y = source._y; + _originX = source._originX; + _originY = source._originY; + _defaultStateMachineId = source._defaultStateMachineId; + } } } diff --git a/lib/src/generated/assets/asset_base.dart b/lib/src/generated/assets/asset_base.dart index 69b0334..039ad7a 100644 --- a/lib/src/generated/assets/asset_base.dart +++ b/lib/src/generated/assets/asset_base.dart @@ -35,7 +35,9 @@ abstract class AssetBase extends Core { void nameChanged(String from, String to); @override - void copy(covariant AssetBase source) { - _name = source._name; + void copy(Core source) { + if (source is AssetBase) { + _name = source._name; + } } } diff --git a/lib/src/generated/assets/drawable_asset_base.dart b/lib/src/generated/assets/drawable_asset_base.dart index e0f1920..bd21c43 100644 --- a/lib/src/generated/assets/drawable_asset_base.dart +++ b/lib/src/generated/assets/drawable_asset_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/assets/drawable_asset_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/assets/asset_base.dart'; import 'package:rive/src/rive_core/assets/file_asset.dart'; @@ -62,9 +63,11 @@ abstract class DrawableAssetBase extends FileAsset { void widthChanged(double from, double to); @override - void copy(covariant DrawableAssetBase source) { + void copy(Core source) { super.copy(source); - _height = source._height; - _width = source._width; + if (source is DrawableAssetBase) { + _height = source._height; + _width = source._width; + } } } diff --git a/lib/src/generated/assets/file_asset_base.dart b/lib/src/generated/assets/file_asset_base.dart index 035d134..a1b5a8e 100644 --- a/lib/src/generated/assets/file_asset_base.dart +++ b/lib/src/generated/assets/file_asset_base.dart @@ -85,10 +85,12 @@ abstract class FileAssetBase extends Asset { void cdnBaseUrlChanged(String from, String to); @override - void copy(covariant FileAssetBase source) { + void copy(Core source) { super.copy(source); - _assetId = source._assetId; - _cdnUuid = source._cdnUuid; - _cdnBaseUrl = source._cdnBaseUrl; + if (source is FileAssetBase) { + _assetId = source._assetId; + _cdnUuid = source._cdnUuid; + _cdnBaseUrl = source._cdnBaseUrl; + } } } diff --git a/lib/src/generated/assets/file_asset_contents_base.dart b/lib/src/generated/assets/file_asset_contents_base.dart index 928ff16..8592178 100644 --- a/lib/src/generated/assets/file_asset_contents_base.dart +++ b/lib/src/generated/assets/file_asset_contents_base.dart @@ -36,7 +36,9 @@ abstract class FileAssetContentsBase extends Core { void bytesChanged(Uint8List from, Uint8List to); @override - void copy(covariant FileAssetContentsBase source) { - _bytes = source._bytes; + void copy(Core source) { + if (source is FileAssetContentsBase) { + _bytes = source._bytes; + } } } diff --git a/lib/src/generated/bones/bone_base.dart b/lib/src/generated/bones/bone_base.dart index dc28a35..c799f25 100644 --- a/lib/src/generated/bones/bone_base.dart +++ b/lib/src/generated/bones/bone_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/bones/bone_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/transform_component_base.dart'; @@ -44,8 +45,10 @@ abstract class BoneBase extends SkeletalComponent { void lengthChanged(double from, double to); @override - void copy(covariant BoneBase source) { + void copy(Core source) { super.copy(source); - _length = source._length; + if (source is BoneBase) { + _length = source._length; + } } } diff --git a/lib/src/generated/bones/cubic_weight_base.dart b/lib/src/generated/bones/cubic_weight_base.dart index d2b796a..1daa457 100644 --- a/lib/src/generated/bones/cubic_weight_base.dart +++ b/lib/src/generated/bones/cubic_weight_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/bones/cubic_weight_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/rive_core/bones/weight.dart'; @@ -101,11 +102,13 @@ abstract class CubicWeightBase extends Weight { void outIndicesChanged(int from, int to); @override - void copy(covariant CubicWeightBase source) { + void copy(Core source) { super.copy(source); - _inValues = source._inValues; - _inIndices = source._inIndices; - _outValues = source._outValues; - _outIndices = source._outIndices; + if (source is CubicWeightBase) { + _inValues = source._inValues; + _inIndices = source._inIndices; + _outValues = source._outValues; + _outIndices = source._outIndices; + } } } diff --git a/lib/src/generated/bones/root_bone_base.dart b/lib/src/generated/bones/root_bone_base.dart index 793dadc..f939d7b 100644 --- a/lib/src/generated/bones/root_bone_base.dart +++ b/lib/src/generated/bones/root_bone_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/bones/root_bone_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/bones/skeletal_component_base.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; @@ -72,9 +73,11 @@ abstract class RootBoneBase extends Bone { void yChanged(double from, double to); @override - void copy(covariant RootBoneBase source) { + void copy(Core source) { super.copy(source); - _x = source._x; - _y = source._y; + if (source is RootBoneBase) { + _x = source._x; + _y = source._y; + } } } diff --git a/lib/src/generated/bones/skin_base.dart b/lib/src/generated/bones/skin_base.dart index f6c05d3..808120d 100644 --- a/lib/src/generated/bones/skin_base.dart +++ b/lib/src/generated/bones/skin_base.dart @@ -158,13 +158,15 @@ abstract class SkinBase extends ContainerComponent { void tyChanged(double from, double to); @override - void copy(covariant SkinBase source) { + void copy(Core source) { super.copy(source); - _xx = source._xx; - _yx = source._yx; - _xy = source._xy; - _yy = source._yy; - _tx = source._tx; - _ty = source._ty; + if (source is SkinBase) { + _xx = source._xx; + _yx = source._yx; + _xy = source._xy; + _yy = source._yy; + _tx = source._tx; + _ty = source._ty; + } } } diff --git a/lib/src/generated/bones/tendon_base.dart b/lib/src/generated/bones/tendon_base.dart index d15e366..dae19c5 100644 --- a/lib/src/generated/bones/tendon_base.dart +++ b/lib/src/generated/bones/tendon_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/bones/tendon_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class TendonBase extends Component { @@ -179,14 +180,16 @@ abstract class TendonBase extends Component { void tyChanged(double from, double to); @override - void copy(covariant TendonBase source) { + void copy(Core source) { super.copy(source); - _boneId = source._boneId; - _xx = source._xx; - _yx = source._yx; - _xy = source._xy; - _yy = source._yy; - _tx = source._tx; - _ty = source._ty; + if (source is TendonBase) { + _boneId = source._boneId; + _xx = source._xx; + _yx = source._yx; + _xy = source._xy; + _yy = source._yy; + _tx = source._tx; + _ty = source._ty; + } } } diff --git a/lib/src/generated/bones/weight_base.dart b/lib/src/generated/bones/weight_base.dart index d42aa9f..54f1ca4 100644 --- a/lib/src/generated/bones/weight_base.dart +++ b/lib/src/generated/bones/weight_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/bones/weight_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class WeightBase extends Component { @@ -55,9 +56,11 @@ abstract class WeightBase extends Component { void indicesChanged(int from, int to); @override - void copy(covariant WeightBase source) { + void copy(Core source) { super.copy(source); - _values = source._values; - _indices = source._indices; + if (source is WeightBase) { + _values = source._values; + _indices = source._indices; + } } } diff --git a/lib/src/generated/component_base.dart b/lib/src/generated/component_base.dart index 7292700..3f55b9f 100644 --- a/lib/src/generated/component_base.dart +++ b/lib/src/generated/component_base.dart @@ -60,8 +60,10 @@ abstract class ComponentBase extends Core { void parentIdChanged(int from, int to); @override - void copy(covariant ComponentBase source) { - _name = source._name; - _parentId = source._parentId; + void copy(Core source) { + if (source is ComponentBase) { + _name = source._name; + _parentId = source._parentId; + } } } diff --git a/lib/src/generated/constraints/constraint_base.dart b/lib/src/generated/constraints/constraint_base.dart index a8f3896..83f3a51 100644 --- a/lib/src/generated/constraints/constraint_base.dart +++ b/lib/src/generated/constraints/constraint_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/constraint_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class ConstraintBase extends Component { @@ -36,8 +37,10 @@ abstract class ConstraintBase extends Component { void strengthChanged(double from, double to); @override - void copy(covariant ConstraintBase source) { + void copy(Core source) { super.copy(source); - _strength = source._strength; + if (source is ConstraintBase) { + _strength = source._strength; + } } } diff --git a/lib/src/generated/constraints/distance_constraint_base.dart b/lib/src/generated/constraints/distance_constraint_base.dart index bf81512..4d93a29 100644 --- a/lib/src/generated/constraints/distance_constraint_base.dart +++ b/lib/src/generated/constraints/distance_constraint_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/distance_constraint_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/constraints/constraint_base.dart'; import 'package:rive/src/rive_core/constraints/targeted_constraint.dart'; @@ -68,9 +69,11 @@ abstract class DistanceConstraintBase extends TargetedConstraint { void modeValueChanged(int from, int to); @override - void copy(covariant DistanceConstraintBase source) { + void copy(Core source) { super.copy(source); - _distance = source._distance; - _modeValue = source._modeValue; + if (source is DistanceConstraintBase) { + _distance = source._distance; + _modeValue = source._modeValue; + } } } diff --git a/lib/src/generated/constraints/follow_path_constraint_base.dart b/lib/src/generated/constraints/follow_path_constraint_base.dart index eb30000..c1133f0 100644 --- a/lib/src/generated/constraints/follow_path_constraint_base.dart +++ b/lib/src/generated/constraints/follow_path_constraint_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/follow_path_constraint_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/constraints/constraint_base.dart'; import 'package:rive/src/generated/constraints/targeted_constraint_base.dart'; @@ -94,10 +95,12 @@ abstract class FollowPathConstraintBase extends TransformSpaceConstraint { void offsetChanged(bool from, bool to); @override - void copy(covariant FollowPathConstraintBase source) { + void copy(Core source) { super.copy(source); - _distance = source._distance; - _orient = source._orient; - _offset = source._offset; + if (source is FollowPathConstraintBase) { + _distance = source._distance; + _orient = source._orient; + _offset = source._offset; + } } } diff --git a/lib/src/generated/constraints/ik_constraint_base.dart b/lib/src/generated/constraints/ik_constraint_base.dart index f82d09a..da961c2 100644 --- a/lib/src/generated/constraints/ik_constraint_base.dart +++ b/lib/src/generated/constraints/ik_constraint_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/ik_constraint_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/constraints/constraint_base.dart'; import 'package:rive/src/rive_core/constraints/targeted_constraint.dart'; @@ -71,9 +72,11 @@ abstract class IKConstraintBase extends TargetedConstraint { void parentBoneCountChanged(int from, int to); @override - void copy(covariant IKConstraintBase source) { + void copy(Core source) { super.copy(source); - _invertDirection = source._invertDirection; - _parentBoneCount = source._parentBoneCount; + if (source is IKConstraintBase) { + _invertDirection = source._invertDirection; + _parentBoneCount = source._parentBoneCount; + } } } diff --git a/lib/src/generated/constraints/targeted_constraint_base.dart b/lib/src/generated/constraints/targeted_constraint_base.dart index 8bba274..1ce86d1 100644 --- a/lib/src/generated/constraints/targeted_constraint_base.dart +++ b/lib/src/generated/constraints/targeted_constraint_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/targeted_constraint_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/rive_core/constraints/constraint.dart'; @@ -42,8 +43,10 @@ abstract class TargetedConstraintBase extends Constraint { void targetIdChanged(int from, int to); @override - void copy(covariant TargetedConstraintBase source) { + void copy(Core source) { super.copy(source); - _targetId = source._targetId; + if (source is TargetedConstraintBase) { + _targetId = source._targetId; + } } } diff --git a/lib/src/generated/constraints/transform_component_constraint_base.dart b/lib/src/generated/constraints/transform_component_constraint_base.dart index cc0dd4c..cb6a157 100644 --- a/lib/src/generated/constraints/transform_component_constraint_base.dart +++ b/lib/src/generated/constraints/transform_component_constraint_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/transform_component_constraint_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/constraints/constraint_base.dart'; import 'package:rive/src/generated/constraints/targeted_constraint_base.dart'; @@ -216,15 +217,17 @@ abstract class TransformComponentConstraintBase void maxChanged(bool from, bool to); @override - void copy(covariant TransformComponentConstraintBase source) { + void copy(Core source) { super.copy(source); - _minMaxSpaceValue = source._minMaxSpaceValue; - _copyFactor = source._copyFactor; - _minValue = source._minValue; - _maxValue = source._maxValue; - _offset = source._offset; - _doesCopy = source._doesCopy; - _min = source._min; - _max = source._max; + if (source is TransformComponentConstraintBase) { + _minMaxSpaceValue = source._minMaxSpaceValue; + _copyFactor = source._copyFactor; + _minValue = source._minValue; + _maxValue = source._maxValue; + _offset = source._offset; + _doesCopy = source._doesCopy; + _min = source._min; + _max = source._max; + } } } diff --git a/lib/src/generated/constraints/transform_component_constraint_y_base.dart b/lib/src/generated/constraints/transform_component_constraint_y_base.dart index 2fee3da..6fad9bb 100644 --- a/lib/src/generated/constraints/transform_component_constraint_y_base.dart +++ b/lib/src/generated/constraints/transform_component_constraint_y_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/transform_component_constraint_y_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/constraints/constraint_base.dart'; import 'package:rive/src/generated/constraints/targeted_constraint_base.dart'; @@ -169,13 +170,15 @@ abstract class TransformComponentConstraintYBase void maxYChanged(bool from, bool to); @override - void copy(covariant TransformComponentConstraintYBase source) { + void copy(Core source) { super.copy(source); - _copyFactorY = source._copyFactorY; - _minValueY = source._minValueY; - _maxValueY = source._maxValueY; - _doesCopyY = source._doesCopyY; - _minY = source._minY; - _maxY = source._maxY; + if (source is TransformComponentConstraintYBase) { + _copyFactorY = source._copyFactorY; + _minValueY = source._minValueY; + _maxValueY = source._maxValueY; + _doesCopyY = source._doesCopyY; + _minY = source._minY; + _maxY = source._maxY; + } } } diff --git a/lib/src/generated/constraints/transform_constraint_base.dart b/lib/src/generated/constraints/transform_constraint_base.dart index b278a18..cd9d057 100644 --- a/lib/src/generated/constraints/transform_constraint_base.dart +++ b/lib/src/generated/constraints/transform_constraint_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/transform_constraint_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/constraints/constraint_base.dart'; import 'package:rive/src/generated/constraints/targeted_constraint_base.dart'; @@ -69,9 +70,11 @@ abstract class TransformConstraintBase extends TransformSpaceConstraint { void originYChanged(double from, double to); @override - void copy(covariant TransformConstraintBase source) { + void copy(Core source) { super.copy(source); - _originX = source._originX; - _originY = source._originY; + if (source is TransformConstraintBase) { + _originX = source._originX; + _originY = source._originY; + } } } diff --git a/lib/src/generated/constraints/transform_space_constraint_base.dart b/lib/src/generated/constraints/transform_space_constraint_base.dart index 377dc94..3b9e6c4 100644 --- a/lib/src/generated/constraints/transform_space_constraint_base.dart +++ b/lib/src/generated/constraints/transform_space_constraint_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/constraints/transform_space_constraint_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/constraints/constraint_base.dart'; import 'package:rive/src/rive_core/constraints/targeted_constraint.dart'; @@ -69,9 +70,11 @@ abstract class TransformSpaceConstraintBase extends TargetedConstraint { void destSpaceValueChanged(int from, int to); @override - void copy(covariant TransformSpaceConstraintBase source) { + void copy(Core source) { super.copy(source); - _sourceSpaceValue = source._sourceSpaceValue; - _destSpaceValue = source._destSpaceValue; + if (source is TransformSpaceConstraintBase) { + _sourceSpaceValue = source._sourceSpaceValue; + _destSpaceValue = source._destSpaceValue; + } } } diff --git a/lib/src/generated/custom_property_base.dart b/lib/src/generated/custom_property_base.dart new file mode 100644 index 0000000..9a404d9 --- /dev/null +++ b/lib/src/generated/custom_property_base.dart @@ -0,0 +1,12 @@ +// Core automatically generated lib/src/generated/custom_property_base.dart. +// Do not modify manually. + +import 'package:rive/src/rive_core/component.dart'; + +abstract class CustomPropertyBase extends Component { + static const int typeKey = 167; + @override + int get coreType => CustomPropertyBase.typeKey; + @override + Set get coreTypes => {CustomPropertyBase.typeKey, ComponentBase.typeKey}; +} diff --git a/lib/src/generated/custom_property_boolean_base.dart b/lib/src/generated/custom_property_boolean_base.dart index ceabbb0..45bc3b1 100644 --- a/lib/src/generated/custom_property_boolean_base.dart +++ b/lib/src/generated/custom_property_boolean_base.dart @@ -2,15 +2,20 @@ // lib/src/generated/custom_property_boolean_base.dart. // Do not modify manually. -import 'package:rive/src/rive_core/component.dart'; +import 'package:rive/src/core/core.dart'; +import 'package:rive/src/generated/component_base.dart'; +import 'package:rive/src/rive_core/custom_property.dart'; -abstract class CustomPropertyBooleanBase extends Component { +abstract class CustomPropertyBooleanBase extends CustomProperty { static const int typeKey = 129; @override int get coreType => CustomPropertyBooleanBase.typeKey; @override - Set get coreTypes => - {CustomPropertyBooleanBase.typeKey, ComponentBase.typeKey}; + Set get coreTypes => { + CustomPropertyBooleanBase.typeKey, + CustomPropertyBase.typeKey, + ComponentBase.typeKey + }; /// -------------------------------------------------------------------------- /// PropertyValue field with key 245. @@ -36,8 +41,10 @@ abstract class CustomPropertyBooleanBase extends Component { void propertyValueChanged(bool from, bool to); @override - void copy(covariant CustomPropertyBooleanBase source) { + void copy(Core source) { super.copy(source); - _propertyValue = source._propertyValue; + if (source is CustomPropertyBooleanBase) { + _propertyValue = source._propertyValue; + } } } diff --git a/lib/src/generated/custom_property_number_base.dart b/lib/src/generated/custom_property_number_base.dart index e41f7dd..7f99eaf 100644 --- a/lib/src/generated/custom_property_number_base.dart +++ b/lib/src/generated/custom_property_number_base.dart @@ -2,15 +2,20 @@ // lib/src/generated/custom_property_number_base.dart. // Do not modify manually. -import 'package:rive/src/rive_core/component.dart'; +import 'package:rive/src/core/core.dart'; +import 'package:rive/src/generated/component_base.dart'; +import 'package:rive/src/rive_core/custom_property.dart'; -abstract class CustomPropertyNumberBase extends Component { +abstract class CustomPropertyNumberBase extends CustomProperty { static const int typeKey = 127; @override int get coreType => CustomPropertyNumberBase.typeKey; @override - Set get coreTypes => - {CustomPropertyNumberBase.typeKey, ComponentBase.typeKey}; + Set get coreTypes => { + CustomPropertyNumberBase.typeKey, + CustomPropertyBase.typeKey, + ComponentBase.typeKey + }; /// -------------------------------------------------------------------------- /// PropertyValue field with key 243. @@ -36,8 +41,10 @@ abstract class CustomPropertyNumberBase extends Component { void propertyValueChanged(double from, double to); @override - void copy(covariant CustomPropertyNumberBase source) { + void copy(Core source) { super.copy(source); - _propertyValue = source._propertyValue; + if (source is CustomPropertyNumberBase) { + _propertyValue = source._propertyValue; + } } } diff --git a/lib/src/generated/custom_property_string_base.dart b/lib/src/generated/custom_property_string_base.dart index 0c0d791..963ffd5 100644 --- a/lib/src/generated/custom_property_string_base.dart +++ b/lib/src/generated/custom_property_string_base.dart @@ -2,15 +2,20 @@ // lib/src/generated/custom_property_string_base.dart. // Do not modify manually. -import 'package:rive/src/rive_core/component.dart'; +import 'package:rive/src/core/core.dart'; +import 'package:rive/src/generated/component_base.dart'; +import 'package:rive/src/rive_core/custom_property.dart'; -abstract class CustomPropertyStringBase extends Component { +abstract class CustomPropertyStringBase extends CustomProperty { static const int typeKey = 130; @override int get coreType => CustomPropertyStringBase.typeKey; @override - Set get coreTypes => - {CustomPropertyStringBase.typeKey, ComponentBase.typeKey}; + Set get coreTypes => { + CustomPropertyStringBase.typeKey, + CustomPropertyBase.typeKey, + ComponentBase.typeKey + }; /// -------------------------------------------------------------------------- /// PropertyValue field with key 246. @@ -36,8 +41,10 @@ abstract class CustomPropertyStringBase extends Component { void propertyValueChanged(String from, String to); @override - void copy(covariant CustomPropertyStringBase source) { + void copy(Core source) { super.copy(source); - _propertyValue = source._propertyValue; + if (source is CustomPropertyStringBase) { + _propertyValue = source._propertyValue; + } } } diff --git a/lib/src/generated/draw_rules_base.dart b/lib/src/generated/draw_rules_base.dart index e96fd5a..c57bc36 100644 --- a/lib/src/generated/draw_rules_base.dart +++ b/lib/src/generated/draw_rules_base.dart @@ -42,8 +42,10 @@ abstract class DrawRulesBase extends ContainerComponent { void drawTargetIdChanged(int from, int to); @override - void copy(covariant DrawRulesBase source) { + void copy(Core source) { super.copy(source); - _drawTargetId = source._drawTargetId; + if (source is DrawRulesBase) { + _drawTargetId = source._drawTargetId; + } } } diff --git a/lib/src/generated/draw_target_base.dart b/lib/src/generated/draw_target_base.dart index 987b22e..b0c2176 100644 --- a/lib/src/generated/draw_target_base.dart +++ b/lib/src/generated/draw_target_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/draw_target_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class DrawTargetBase extends Component { @@ -60,9 +61,11 @@ abstract class DrawTargetBase extends Component { void placementValueChanged(int from, int to); @override - void copy(covariant DrawTargetBase source) { + void copy(Core source) { super.copy(source); - _drawableId = source._drawableId; - _placementValue = source._placementValue; + if (source is DrawTargetBase) { + _drawableId = source._drawableId; + _placementValue = source._placementValue; + } } } diff --git a/lib/src/generated/drawable_base.dart b/lib/src/generated/drawable_base.dart index 3f12e12..8373d28 100644 --- a/lib/src/generated/drawable_base.dart +++ b/lib/src/generated/drawable_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/drawable_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/transform_component_base.dart'; @@ -68,9 +69,11 @@ abstract class DrawableBase extends Node { void drawableFlagsChanged(int from, int to); @override - void copy(covariant DrawableBase source) { + void copy(Core source) { super.copy(source); - _blendModeValue = source._blendModeValue; - _drawableFlags = source._drawableFlags; + if (source is DrawableBase) { + _blendModeValue = source._blendModeValue; + _drawableFlags = source._drawableFlags; + } } } diff --git a/lib/src/generated/joystick_base.dart b/lib/src/generated/joystick_base.dart index 890a11d..52cc01c 100644 --- a/lib/src/generated/joystick_base.dart +++ b/lib/src/generated/joystick_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/joystick_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class JoystickBase extends Component { @@ -289,19 +290,21 @@ abstract class JoystickBase extends Component { void handleSourceIdChanged(int from, int to); @override - void copy(covariant JoystickBase source) { + void copy(Core source) { super.copy(source); - _x = source._x; - _y = source._y; - _posX = source._posX; - _posY = source._posY; - _originX = source._originX; - _originY = source._originY; - _width = source._width; - _height = source._height; - _xId = source._xId; - _yId = source._yId; - _joystickFlags = source._joystickFlags; - _handleSourceId = source._handleSourceId; + if (source is JoystickBase) { + _x = source._x; + _y = source._y; + _posX = source._posX; + _posY = source._posY; + _originX = source._originX; + _originY = source._originY; + _width = source._width; + _height = source._height; + _xId = source._xId; + _yId = source._yId; + _joystickFlags = source._joystickFlags; + _handleSourceId = source._handleSourceId; + } } } diff --git a/lib/src/generated/nested_animation_base.dart b/lib/src/generated/nested_animation_base.dart index d72fc92..a991b8f 100644 --- a/lib/src/generated/nested_animation_base.dart +++ b/lib/src/generated/nested_animation_base.dart @@ -42,8 +42,10 @@ abstract class NestedAnimationBase extends ContainerComponent { void animationIdChanged(int from, int to); @override - void copy(covariant NestedAnimationBase source) { + void copy(Core source) { super.copy(source); - _animationId = source._animationId; + if (source is NestedAnimationBase) { + _animationId = source._animationId; + } } } diff --git a/lib/src/generated/nested_artboard_base.dart b/lib/src/generated/nested_artboard_base.dart index e409b21..9c7e4e3 100644 --- a/lib/src/generated/nested_artboard_base.dart +++ b/lib/src/generated/nested_artboard_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/nested_artboard_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/node_base.dart'; @@ -48,8 +49,10 @@ abstract class NestedArtboardBase extends Drawable { void artboardIdChanged(int from, int to); @override - void copy(covariant NestedArtboardBase source) { + void copy(Core source) { super.copy(source); - _artboardId = source._artboardId; + if (source is NestedArtboardBase) { + _artboardId = source._artboardId; + } } } diff --git a/lib/src/generated/node_base.dart b/lib/src/generated/node_base.dart index d99365c..5d78642 100644 --- a/lib/src/generated/node_base.dart +++ b/lib/src/generated/node_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/node_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/world_transform_component_base.dart'; @@ -68,9 +69,11 @@ abstract class NodeBase extends TransformComponent { void yChanged(double from, double to); @override - void copy(covariant NodeBase source) { + void copy(Core source) { super.copy(source); - _x = source._x; - _y = source._y; + if (source is NodeBase) { + _x = source._x; + _y = source._y; + } } } diff --git a/lib/src/generated/rive_core_context.dart b/lib/src/generated/rive_core_context.dart index 8581443..25bd6d3 100644 --- a/lib/src/generated/rive_core_context.dart +++ b/lib/src/generated/rive_core_context.dart @@ -58,6 +58,7 @@ import 'package:rive/src/rive_core/animation/keyframe_string.dart'; import 'package:rive/src/rive_core/animation/linear_animation.dart'; import 'package:rive/src/rive_core/animation/listener_align_target.dart'; import 'package:rive/src/rive_core/animation/listener_bool_change.dart'; +import 'package:rive/src/rive_core/animation/listener_fire_event.dart'; import 'package:rive/src/rive_core/animation/listener_number_change.dart'; import 'package:rive/src/rive_core/animation/listener_trigger_change.dart'; import 'package:rive/src/rive_core/animation/nested_bool.dart'; @@ -164,6 +165,8 @@ class RiveCoreContext { return NestedArtboard(); case SoloBase.typeKey: return Solo(); + case ListenerFireEventBase.typeKey: + return ListenerFireEvent(); case AnimationBase.typeKey: return Animation(); case LinearAnimationBase.typeKey: @@ -562,6 +565,11 @@ class RiveCoreContext { object.activeComponentId = value; } break; + case ListenerFireEventBase.eventIdPropertyKey: + if (object is ListenerFireEventBase && value is int) { + object.eventId = value; + } + break; case AnimationBase.namePropertyKey: if (object is AnimationBase && value is String) { object.name = value; @@ -1482,6 +1490,11 @@ class RiveCoreContext { object.lineHeight = value; } break; + case TextStyleBase.letterSpacingPropertyKey: + if (object is TextStyleBase && value is double) { + object.letterSpacing = value; + } + break; case TextStyleBase.fontAssetIdPropertyKey: if (object is TextStyleBase && value is int) { object.fontAssetId = value; @@ -1626,6 +1639,7 @@ class RiveCoreContext { case NestedArtboardBase.artboardIdPropertyKey: case NestedAnimationBase.animationIdPropertyKey: case SoloBase.activeComponentIdPropertyKey: + case ListenerFireEventBase.eventIdPropertyKey: case LinearAnimationBase.fpsPropertyKey: case LinearAnimationBase.durationPropertyKey: case LinearAnimationBase.loopValuePropertyKey: @@ -1816,6 +1830,7 @@ class RiveCoreContext { case TextModifierGroupBase.scaleYPropertyKey: case TextStyleBase.fontSizePropertyKey: case TextStyleBase.lineHeightPropertyKey: + case TextStyleBase.letterSpacingPropertyKey: case TextStyleAxisBase.axisValuePropertyKey: case TextBase.widthPropertyKey: case TextBase.heightPropertyKey: @@ -1915,6 +1930,8 @@ class RiveCoreContext { return (object as NestedAnimationBase).animationId; case SoloBase.activeComponentIdPropertyKey: return (object as SoloBase).activeComponentId; + case ListenerFireEventBase.eventIdPropertyKey: + return (object as ListenerFireEventBase).eventId; case LinearAnimationBase.fpsPropertyKey: return (object as LinearAnimationBase).fps; case LinearAnimationBase.durationPropertyKey: @@ -2299,6 +2316,8 @@ class RiveCoreContext { return (object as TextStyleBase).fontSize; case TextStyleBase.lineHeightPropertyKey: return (object as TextStyleBase).lineHeight; + case TextStyleBase.letterSpacingPropertyKey: + return (object as TextStyleBase).letterSpacing; case TextStyleAxisBase.axisValuePropertyKey: return (object as TextStyleAxisBase).axisValue; case TextBase.widthPropertyKey: @@ -2514,6 +2533,11 @@ class RiveCoreContext { object.activeComponentId = value; } break; + case ListenerFireEventBase.eventIdPropertyKey: + if (object is ListenerFireEventBase) { + object.eventId = value; + } + break; case LinearAnimationBase.fpsPropertyKey: if (object is LinearAnimationBase) { object.fps = value; @@ -3464,6 +3488,11 @@ class RiveCoreContext { object.lineHeight = value; } break; + case TextStyleBase.letterSpacingPropertyKey: + if (object is TextStyleBase) { + object.letterSpacing = value; + } + break; case TextStyleAxisBase.axisValuePropertyKey: if (object is TextStyleAxisBase) { object.axisValue = value; diff --git a/lib/src/generated/shapes/clipping_shape_base.dart b/lib/src/generated/shapes/clipping_shape_base.dart index bb748c8..a71f377 100644 --- a/lib/src/generated/shapes/clipping_shape_base.dart +++ b/lib/src/generated/shapes/clipping_shape_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/clipping_shape_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class ClippingShapeBase extends Component { @@ -82,10 +83,12 @@ abstract class ClippingShapeBase extends Component { void isVisibleChanged(bool from, bool to); @override - void copy(covariant ClippingShapeBase source) { + void copy(Core source) { super.copy(source); - _sourceId = source._sourceId; - _fillRule = source._fillRule; - _isVisible = source._isVisible; + if (source is ClippingShapeBase) { + _sourceId = source._sourceId; + _fillRule = source._fillRule; + _isVisible = source._isVisible; + } } } diff --git a/lib/src/generated/shapes/cubic_asymmetric_vertex_base.dart b/lib/src/generated/shapes/cubic_asymmetric_vertex_base.dart index dd8420f..550636d 100644 --- a/lib/src/generated/shapes/cubic_asymmetric_vertex_base.dart +++ b/lib/src/generated/shapes/cubic_asymmetric_vertex_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/cubic_asymmetric_vertex_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/shapes/path_vertex_base.dart'; @@ -96,10 +97,12 @@ abstract class CubicAsymmetricVertexBase extends CubicVertex { void outDistanceChanged(double from, double to); @override - void copy(covariant CubicAsymmetricVertexBase source) { + void copy(Core source) { super.copy(source); - _rotation = source._rotation; - _inDistance = source._inDistance; - _outDistance = source._outDistance; + if (source is CubicAsymmetricVertexBase) { + _rotation = source._rotation; + _inDistance = source._inDistance; + _outDistance = source._outDistance; + } } } diff --git a/lib/src/generated/shapes/cubic_detached_vertex_base.dart b/lib/src/generated/shapes/cubic_detached_vertex_base.dart index 124b367..c3473b9 100644 --- a/lib/src/generated/shapes/cubic_detached_vertex_base.dart +++ b/lib/src/generated/shapes/cubic_detached_vertex_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/cubic_detached_vertex_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/shapes/path_vertex_base.dart'; @@ -121,11 +122,13 @@ abstract class CubicDetachedVertexBase extends CubicVertex { void outDistanceChanged(double from, double to); @override - void copy(covariant CubicDetachedVertexBase source) { + void copy(Core source) { super.copy(source); - _inRotation = source._inRotation; - _inDistance = source._inDistance; - _outRotation = source._outRotation; - _outDistance = source._outDistance; + if (source is CubicDetachedVertexBase) { + _inRotation = source._inRotation; + _inDistance = source._inDistance; + _outRotation = source._outRotation; + _outDistance = source._outDistance; + } } } diff --git a/lib/src/generated/shapes/cubic_mirrored_vertex_base.dart b/lib/src/generated/shapes/cubic_mirrored_vertex_base.dart index 1d0b937..a63c534 100644 --- a/lib/src/generated/shapes/cubic_mirrored_vertex_base.dart +++ b/lib/src/generated/shapes/cubic_mirrored_vertex_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/cubic_mirrored_vertex_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/shapes/path_vertex_base.dart'; @@ -71,9 +72,11 @@ abstract class CubicMirroredVertexBase extends CubicVertex { void distanceChanged(double from, double to); @override - void copy(covariant CubicMirroredVertexBase source) { + void copy(Core source) { super.copy(source); - _rotation = source._rotation; - _distance = source._distance; + if (source is CubicMirroredVertexBase) { + _rotation = source._rotation; + _distance = source._distance; + } } } diff --git a/lib/src/generated/shapes/image_base.dart b/lib/src/generated/shapes/image_base.dart index 682e00b..f5a7438 100644 --- a/lib/src/generated/shapes/image_base.dart +++ b/lib/src/generated/shapes/image_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/shapes/image_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/node_base.dart'; @@ -96,10 +97,12 @@ abstract class ImageBase extends Drawable { void originYChanged(double from, double to); @override - void copy(covariant ImageBase source) { + void copy(Core source) { super.copy(source); - _assetId = source._assetId; - _originX = source._originX; - _originY = source._originY; + if (source is ImageBase) { + _assetId = source._assetId; + _originX = source._originX; + _originY = source._originY; + } } } diff --git a/lib/src/generated/shapes/mesh_base.dart b/lib/src/generated/shapes/mesh_base.dart index 1290ffb..098a376 100644 --- a/lib/src/generated/shapes/mesh_base.dart +++ b/lib/src/generated/shapes/mesh_base.dart @@ -39,8 +39,10 @@ abstract class MeshBase extends ContainerComponent { void triangleIndexBytesChanged(Uint8List from, Uint8List to); @override - void copy(covariant MeshBase source) { + void copy(Core source) { super.copy(source); - _triangleIndexBytes = source._triangleIndexBytes; + if (source is MeshBase) { + _triangleIndexBytes = source._triangleIndexBytes; + } } } diff --git a/lib/src/generated/shapes/mesh_vertex_base.dart b/lib/src/generated/shapes/mesh_vertex_base.dart index 1ce37fc..4fef8d4 100644 --- a/lib/src/generated/shapes/mesh_vertex_base.dart +++ b/lib/src/generated/shapes/mesh_vertex_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/shapes/mesh_vertex_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/rive_core/shapes/vertex.dart'; @@ -66,9 +67,11 @@ abstract class MeshVertexBase extends Vertex { void vChanged(double from, double to); @override - void copy(covariant MeshVertexBase source) { + void copy(Core source) { super.copy(source); - _u = source._u; - _v = source._v; + if (source is MeshVertexBase) { + _u = source._u; + _v = source._v; + } } } diff --git a/lib/src/generated/shapes/paint/fill_base.dart b/lib/src/generated/shapes/paint/fill_base.dart index 7b0f1ed..610644e 100644 --- a/lib/src/generated/shapes/paint/fill_base.dart +++ b/lib/src/generated/shapes/paint/fill_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/shapes/paint/fill_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/rive_core/shapes/paint/shape_paint.dart'; @@ -40,8 +41,10 @@ abstract class FillBase extends ShapePaint { void fillRuleChanged(int from, int to); @override - void copy(covariant FillBase source) { + void copy(Core source) { super.copy(source); - _fillRule = source._fillRule; + if (source is FillBase) { + _fillRule = source._fillRule; + } } } diff --git a/lib/src/generated/shapes/paint/gradient_stop_base.dart b/lib/src/generated/shapes/paint/gradient_stop_base.dart index 0897349..b64aba7 100644 --- a/lib/src/generated/shapes/paint/gradient_stop_base.dart +++ b/lib/src/generated/shapes/paint/gradient_stop_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/paint/gradient_stop_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class GradientStopBase extends Component { @@ -56,9 +57,11 @@ abstract class GradientStopBase extends Component { void positionChanged(double from, double to); @override - void copy(covariant GradientStopBase source) { + void copy(Core source) { super.copy(source); - _colorValue = source._colorValue; - _position = source._position; + if (source is GradientStopBase) { + _colorValue = source._colorValue; + _position = source._position; + } } } diff --git a/lib/src/generated/shapes/paint/linear_gradient_base.dart b/lib/src/generated/shapes/paint/linear_gradient_base.dart index 949ea80..31dee87 100644 --- a/lib/src/generated/shapes/paint/linear_gradient_base.dart +++ b/lib/src/generated/shapes/paint/linear_gradient_base.dart @@ -128,12 +128,14 @@ abstract class LinearGradientBase extends ContainerComponent { void opacityChanged(double from, double to); @override - void copy(covariant LinearGradientBase source) { + void copy(Core source) { super.copy(source); - _startX = source._startX; - _startY = source._startY; - _endX = source._endX; - _endY = source._endY; - _opacity = source._opacity; + if (source is LinearGradientBase) { + _startX = source._startX; + _startY = source._startY; + _endX = source._endX; + _endY = source._endY; + _opacity = source._opacity; + } } } diff --git a/lib/src/generated/shapes/paint/shape_paint_base.dart b/lib/src/generated/shapes/paint/shape_paint_base.dart index 011cf8b..5f41b27 100644 --- a/lib/src/generated/shapes/paint/shape_paint_base.dart +++ b/lib/src/generated/shapes/paint/shape_paint_base.dart @@ -40,8 +40,10 @@ abstract class ShapePaintBase extends ContainerComponent { void isVisibleChanged(bool from, bool to); @override - void copy(covariant ShapePaintBase source) { + void copy(Core source) { super.copy(source); - _isVisible = source._isVisible; + if (source is ShapePaintBase) { + _isVisible = source._isVisible; + } } } diff --git a/lib/src/generated/shapes/paint/solid_color_base.dart b/lib/src/generated/shapes/paint/solid_color_base.dart index 7c83782..9e5cf45 100644 --- a/lib/src/generated/shapes/paint/solid_color_base.dart +++ b/lib/src/generated/shapes/paint/solid_color_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/paint/solid_color_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class SolidColorBase extends Component { @@ -34,8 +35,10 @@ abstract class SolidColorBase extends Component { void colorValueChanged(int from, int to); @override - void copy(covariant SolidColorBase source) { + void copy(Core source) { super.copy(source); - _colorValue = source._colorValue; + if (source is SolidColorBase) { + _colorValue = source._colorValue; + } } } diff --git a/lib/src/generated/shapes/paint/stroke_base.dart b/lib/src/generated/shapes/paint/stroke_base.dart index 0d72d7a..8fbdf02 100644 --- a/lib/src/generated/shapes/paint/stroke_base.dart +++ b/lib/src/generated/shapes/paint/stroke_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/paint/stroke_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/rive_core/shapes/paint/shape_paint.dart'; @@ -108,11 +109,13 @@ abstract class StrokeBase extends ShapePaint { void transformAffectsStrokeChanged(bool from, bool to); @override - void copy(covariant StrokeBase source) { + void copy(Core source) { super.copy(source); - _thickness = source._thickness; - _cap = source._cap; - _join = source._join; - _transformAffectsStroke = source._transformAffectsStroke; + if (source is StrokeBase) { + _thickness = source._thickness; + _cap = source._cap; + _join = source._join; + _transformAffectsStroke = source._transformAffectsStroke; + } } } diff --git a/lib/src/generated/shapes/paint/trim_path_base.dart b/lib/src/generated/shapes/paint/trim_path_base.dart index 2538f68..b706011 100644 --- a/lib/src/generated/shapes/paint/trim_path_base.dart +++ b/lib/src/generated/shapes/paint/trim_path_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/paint/trim_path_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class TrimPathBase extends Component { @@ -100,11 +101,13 @@ abstract class TrimPathBase extends Component { void modeValueChanged(int from, int to); @override - void copy(covariant TrimPathBase source) { + void copy(Core source) { super.copy(source); - _start = source._start; - _end = source._end; - _offset = source._offset; - _modeValue = source._modeValue; + if (source is TrimPathBase) { + _start = source._start; + _end = source._end; + _offset = source._offset; + _modeValue = source._modeValue; + } } } diff --git a/lib/src/generated/shapes/parametric_path_base.dart b/lib/src/generated/shapes/parametric_path_base.dart index 120c674..50b2123 100644 --- a/lib/src/generated/shapes/parametric_path_base.dart +++ b/lib/src/generated/shapes/parametric_path_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/parametric_path_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/node_base.dart'; @@ -121,11 +122,13 @@ abstract class ParametricPathBase extends Path { void originYChanged(double from, double to); @override - void copy(covariant ParametricPathBase source) { + void copy(Core source) { super.copy(source); - _width = source._width; - _height = source._height; - _originX = source._originX; - _originY = source._originY; + if (source is ParametricPathBase) { + _width = source._width; + _height = source._height; + _originX = source._originX; + _originY = source._originY; + } } } diff --git a/lib/src/generated/shapes/path_base.dart b/lib/src/generated/shapes/path_base.dart index 751bd4b..4edd569 100644 --- a/lib/src/generated/shapes/path_base.dart +++ b/lib/src/generated/shapes/path_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/shapes/path_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/transform_component_base.dart'; @@ -44,8 +45,10 @@ abstract class PathBase extends Node { void pathFlagsChanged(int from, int to); @override - void copy(covariant PathBase source) { + void copy(Core source) { super.copy(source); - _pathFlags = source._pathFlags; + if (source is PathBase) { + _pathFlags = source._pathFlags; + } } } diff --git a/lib/src/generated/shapes/points_path_base.dart b/lib/src/generated/shapes/points_path_base.dart index 1866cb7..a34334e 100644 --- a/lib/src/generated/shapes/points_path_base.dart +++ b/lib/src/generated/shapes/points_path_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/shapes/points_path_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/node_base.dart'; @@ -49,8 +50,10 @@ abstract class PointsPathBase extends Path { void isClosedChanged(bool from, bool to); @override - void copy(covariant PointsPathBase source) { + void copy(Core source) { super.copy(source); - _isClosed = source._isClosed; + if (source is PointsPathBase) { + _isClosed = source._isClosed; + } } } diff --git a/lib/src/generated/shapes/polygon_base.dart b/lib/src/generated/shapes/polygon_base.dart index 750dcf0..0ebd013 100644 --- a/lib/src/generated/shapes/polygon_base.dart +++ b/lib/src/generated/shapes/polygon_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/shapes/polygon_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/node_base.dart'; @@ -75,9 +76,11 @@ abstract class PolygonBase extends ParametricPath { void cornerRadiusChanged(double from, double to); @override - void copy(covariant PolygonBase source) { + void copy(Core source) { super.copy(source); - _points = source._points; - _cornerRadius = source._cornerRadius; + if (source is PolygonBase) { + _points = source._points; + _cornerRadius = source._cornerRadius; + } } } diff --git a/lib/src/generated/shapes/rectangle_base.dart b/lib/src/generated/shapes/rectangle_base.dart index 071ea2a..911f2f2 100644 --- a/lib/src/generated/shapes/rectangle_base.dart +++ b/lib/src/generated/shapes/rectangle_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/shapes/rectangle_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/node_base.dart'; @@ -151,12 +152,14 @@ abstract class RectangleBase extends ParametricPath { void cornerRadiusBRChanged(double from, double to); @override - void copy(covariant RectangleBase source) { + void copy(Core source) { super.copy(source); - _linkCornerRadius = source._linkCornerRadius; - _cornerRadiusTL = source._cornerRadiusTL; - _cornerRadiusTR = source._cornerRadiusTR; - _cornerRadiusBL = source._cornerRadiusBL; - _cornerRadiusBR = source._cornerRadiusBR; + if (source is RectangleBase) { + _linkCornerRadius = source._linkCornerRadius; + _cornerRadiusTL = source._cornerRadiusTL; + _cornerRadiusTR = source._cornerRadiusTR; + _cornerRadiusBL = source._cornerRadiusBL; + _cornerRadiusBR = source._cornerRadiusBR; + } } } diff --git a/lib/src/generated/shapes/star_base.dart b/lib/src/generated/shapes/star_base.dart index d0e7158..82ddf3c 100644 --- a/lib/src/generated/shapes/star_base.dart +++ b/lib/src/generated/shapes/star_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/shapes/star_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/node_base.dart'; @@ -53,8 +54,10 @@ abstract class StarBase extends Polygon { void innerRadiusChanged(double from, double to); @override - void copy(covariant StarBase source) { + void copy(Core source) { super.copy(source); - _innerRadius = source._innerRadius; + if (source is StarBase) { + _innerRadius = source._innerRadius; + } } } diff --git a/lib/src/generated/shapes/straight_vertex_base.dart b/lib/src/generated/shapes/straight_vertex_base.dart index b72771f..0f41813 100644 --- a/lib/src/generated/shapes/straight_vertex_base.dart +++ b/lib/src/generated/shapes/straight_vertex_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/shapes/straight_vertex_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/shapes/vertex_base.dart'; @@ -46,8 +47,10 @@ abstract class StraightVertexBase extends PathVertex { void radiusChanged(double from, double to); @override - void copy(covariant StraightVertexBase source) { + void copy(Core source) { super.copy(source); - _radius = source._radius; + if (source is StraightVertexBase) { + _radius = source._radius; + } } } diff --git a/lib/src/generated/shapes/vertex_base.dart b/lib/src/generated/shapes/vertex_base.dart index e761f29..c67526c 100644 --- a/lib/src/generated/shapes/vertex_base.dart +++ b/lib/src/generated/shapes/vertex_base.dart @@ -65,9 +65,11 @@ abstract class VertexBase extends ContainerComponent { void yChanged(double from, double to); @override - void copy(covariant VertexBase source) { + void copy(Core source) { super.copy(source); - _x = source._x; - _y = source._y; + if (source is VertexBase) { + _x = source._x; + _y = source._y; + } } } diff --git a/lib/src/generated/solo_base.dart b/lib/src/generated/solo_base.dart index 6e060de..951a696 100644 --- a/lib/src/generated/solo_base.dart +++ b/lib/src/generated/solo_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/solo_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/transform_component_base.dart'; @@ -47,8 +48,10 @@ abstract class SoloBase extends Node { void activeComponentIdChanged(int from, int to); @override - void copy(covariant SoloBase source) { + void copy(Core source) { super.copy(source); - _activeComponentId = source._activeComponentId; + if (source is SoloBase) { + _activeComponentId = source._activeComponentId; + } } } diff --git a/lib/src/generated/text/text_base.dart b/lib/src/generated/text/text_base.dart index 12bb407..ad4b6fa 100644 --- a/lib/src/generated/text/text_base.dart +++ b/lib/src/generated/text/text_base.dart @@ -1,6 +1,7 @@ // Core automatically generated lib/src/generated/text/text_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/generated/node_base.dart'; @@ -238,16 +239,18 @@ abstract class TextBase extends Drawable { void originValueChanged(int from, int to); @override - void copy(covariant TextBase source) { + void copy(Core source) { super.copy(source); - _alignValue = source._alignValue; - _sizingValue = source._sizingValue; - _overflowValue = source._overflowValue; - _width = source._width; - _height = source._height; - _originX = source._originX; - _originY = source._originY; - _paragraphSpacing = source._paragraphSpacing; - _originValue = source._originValue; + if (source is TextBase) { + _alignValue = source._alignValue; + _sizingValue = source._sizingValue; + _overflowValue = source._overflowValue; + _width = source._width; + _height = source._height; + _originX = source._originX; + _originY = source._originY; + _paragraphSpacing = source._paragraphSpacing; + _originValue = source._originValue; + } } } diff --git a/lib/src/generated/text/text_modifier_group_base.dart b/lib/src/generated/text/text_modifier_group_base.dart index 610cd12..0314161 100644 --- a/lib/src/generated/text/text_modifier_group_base.dart +++ b/lib/src/generated/text/text_modifier_group_base.dart @@ -217,16 +217,18 @@ abstract class TextModifierGroupBase extends ContainerComponent { void scaleYChanged(double from, double to); @override - void copy(covariant TextModifierGroupBase source) { + void copy(Core source) { super.copy(source); - _modifierFlags = source._modifierFlags; - _originX = source._originX; - _originY = source._originY; - _opacity = source._opacity; - _x = source._x; - _y = source._y; - _rotation = source._rotation; - _scaleX = source._scaleX; - _scaleY = source._scaleY; + if (source is TextModifierGroupBase) { + _modifierFlags = source._modifierFlags; + _originX = source._originX; + _originY = source._originY; + _opacity = source._opacity; + _x = source._x; + _y = source._y; + _rotation = source._rotation; + _scaleX = source._scaleX; + _scaleY = source._scaleY; + } } } diff --git a/lib/src/generated/text/text_modifier_range_base.dart b/lib/src/generated/text/text_modifier_range_base.dart index a589bb0..cf95943 100644 --- a/lib/src/generated/text/text_modifier_range_base.dart +++ b/lib/src/generated/text/text_modifier_range_base.dart @@ -263,18 +263,20 @@ abstract class TextModifierRangeBase extends ContainerComponent { void runIdChanged(int from, int to); @override - void copy(covariant TextModifierRangeBase source) { + void copy(Core source) { super.copy(source); - _modifyFrom = source._modifyFrom; - _modifyTo = source._modifyTo; - _strength = source._strength; - _unitsValue = source._unitsValue; - _typeValue = source._typeValue; - _modeValue = source._modeValue; - _clamp = source._clamp; - _falloffFrom = source._falloffFrom; - _falloffTo = source._falloffTo; - _offset = source._offset; - _runId = source._runId; + if (source is TextModifierRangeBase) { + _modifyFrom = source._modifyFrom; + _modifyTo = source._modifyTo; + _strength = source._strength; + _unitsValue = source._unitsValue; + _typeValue = source._typeValue; + _modeValue = source._modeValue; + _clamp = source._clamp; + _falloffFrom = source._falloffFrom; + _falloffTo = source._falloffTo; + _offset = source._offset; + _runId = source._runId; + } } } diff --git a/lib/src/generated/text/text_style_axis_base.dart b/lib/src/generated/text/text_style_axis_base.dart index 79649e1..ae83caf 100644 --- a/lib/src/generated/text/text_style_axis_base.dart +++ b/lib/src/generated/text/text_style_axis_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/text/text_style_axis_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class TextStyleAxisBase extends Component { @@ -56,9 +57,11 @@ abstract class TextStyleAxisBase extends Component { void axisValueChanged(double from, double to); @override - void copy(covariant TextStyleAxisBase source) { + void copy(Core source) { super.copy(source); - _tag = source._tag; - _axisValue = source._axisValue; + if (source is TextStyleAxisBase) { + _tag = source._tag; + _axisValue = source._axisValue; + } } } diff --git a/lib/src/generated/text/text_style_base.dart b/lib/src/generated/text/text_style_base.dart index d589257..144424c 100644 --- a/lib/src/generated/text/text_style_base.dart +++ b/lib/src/generated/text/text_style_base.dart @@ -60,6 +60,29 @@ abstract class TextStyleBase extends ContainerComponent { void lineHeightChanged(double from, double to); + /// -------------------------------------------------------------------------- + /// LetterSpacing field with key 390. + static const double letterSpacingInitialValue = 0.0; + double _letterSpacing = letterSpacingInitialValue; + static const int letterSpacingPropertyKey = 390; + double get letterSpacing => _letterSpacing; + + /// Change the [_letterSpacing] field value. + /// [letterSpacingChanged] will be invoked only if the field's value has + /// changed. + set letterSpacing(double value) { + if (_letterSpacing == value) { + return; + } + double from = _letterSpacing; + _letterSpacing = value; + if (hasValidated) { + letterSpacingChanged(from, value); + } + } + + void letterSpacingChanged(double from, double to); + /// -------------------------------------------------------------------------- /// FontAssetId field with key 279. static const int fontAssetIdInitialValue = -1; @@ -84,10 +107,13 @@ abstract class TextStyleBase extends ContainerComponent { void fontAssetIdChanged(int from, int to); @override - void copy(covariant TextStyleBase source) { + void copy(Core source) { super.copy(source); - _fontSize = source._fontSize; - _lineHeight = source._lineHeight; - _fontAssetId = source._fontAssetId; + if (source is TextStyleBase) { + _fontSize = source._fontSize; + _lineHeight = source._lineHeight; + _letterSpacing = source._letterSpacing; + _fontAssetId = source._fontAssetId; + } } } diff --git a/lib/src/generated/text/text_style_feature_base.dart b/lib/src/generated/text/text_style_feature_base.dart index 878394d..c4f025c 100644 --- a/lib/src/generated/text/text_style_feature_base.dart +++ b/lib/src/generated/text/text_style_feature_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/text/text_style_feature_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class TextStyleFeatureBase extends Component { @@ -58,9 +59,11 @@ abstract class TextStyleFeatureBase extends Component { void featureValueChanged(int from, int to); @override - void copy(covariant TextStyleFeatureBase source) { + void copy(Core source) { super.copy(source); - _tag = source._tag; - _featureValue = source._featureValue; + if (source is TextStyleFeatureBase) { + _tag = source._tag; + _featureValue = source._featureValue; + } } } diff --git a/lib/src/generated/text/text_value_run_base.dart b/lib/src/generated/text/text_value_run_base.dart index 783dbbf..a0efdfd 100644 --- a/lib/src/generated/text/text_value_run_base.dart +++ b/lib/src/generated/text/text_value_run_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/text/text_value_run_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/rive_core/component.dart'; abstract class TextValueRunBase extends Component { @@ -60,9 +61,11 @@ abstract class TextValueRunBase extends Component { void textChanged(String from, String to); @override - void copy(covariant TextValueRunBase source) { + void copy(Core source) { super.copy(source); - _styleId = source._styleId; - _text = source._text; + if (source is TextValueRunBase) { + _styleId = source._styleId; + _text = source._text; + } } } diff --git a/lib/src/generated/text/text_variation_modifier_base.dart b/lib/src/generated/text/text_variation_modifier_base.dart index dec3c7c..5c00049 100644 --- a/lib/src/generated/text/text_variation_modifier_base.dart +++ b/lib/src/generated/text/text_variation_modifier_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/text/text_variation_modifier_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/text/text_modifier_base.dart'; import 'package:rive/src/rive_core/text/text_shape_modifier.dart'; @@ -63,9 +64,11 @@ abstract class TextVariationModifierBase extends TextShapeModifier { void axisValueChanged(double from, double to); @override - void copy(covariant TextVariationModifierBase source) { + void copy(Core source) { super.copy(source); - _axisTag = source._axisTag; - _axisValue = source._axisValue; + if (source is TextVariationModifierBase) { + _axisTag = source._axisTag; + _axisValue = source._axisValue; + } } } diff --git a/lib/src/generated/transform_component_base.dart b/lib/src/generated/transform_component_base.dart index 68d4d84..41041fe 100644 --- a/lib/src/generated/transform_component_base.dart +++ b/lib/src/generated/transform_component_base.dart @@ -2,6 +2,7 @@ // lib/src/generated/transform_component_base.dart. // Do not modify manually. +import 'package:rive/src/core/core.dart'; import 'package:rive/src/generated/component_base.dart'; import 'package:rive/src/generated/container_component_base.dart'; import 'package:rive/src/rive_core/world_transform_component.dart'; @@ -85,10 +86,12 @@ abstract class TransformComponentBase extends WorldTransformComponent { void scaleYChanged(double from, double to); @override - void copy(covariant TransformComponentBase source) { + void copy(Core source) { super.copy(source); - _rotation = source._rotation; - _scaleX = source._scaleX; - _scaleY = source._scaleY; + if (source is TransformComponentBase) { + _rotation = source._rotation; + _scaleX = source._scaleX; + _scaleY = source._scaleY; + } } } diff --git a/lib/src/generated/world_transform_component_base.dart b/lib/src/generated/world_transform_component_base.dart index e6a3ce0..490056b 100644 --- a/lib/src/generated/world_transform_component_base.dart +++ b/lib/src/generated/world_transform_component_base.dart @@ -40,8 +40,10 @@ abstract class WorldTransformComponentBase extends ContainerComponent { void opacityChanged(double from, double to); @override - void copy(covariant WorldTransformComponentBase source) { + void copy(Core source) { super.copy(source); - _opacity = source._opacity; + if (source is WorldTransformComponentBase) { + _opacity = source._opacity; + } } } diff --git a/lib/src/rive.dart b/lib/src/rive.dart index 948112f..eb5b5ea 100644 --- a/lib/src/rive.dart +++ b/lib/src/rive.dart @@ -50,9 +50,9 @@ class Rive extends LeafRenderObjectWidget { /// The mouse cursor for mouse pointers that are hovering over the region. /// - /// When a mouse enters the region, its cursor will be changed to the [cursor]. - /// When the mouse leaves the region, the cursor will be decided by the region - /// found at the new location. + /// When a mouse enters the region, its cursor will be changed to the + /// [cursor]. When the mouse leaves the region, the cursor will be decided by + /// the region found at the new location. /// /// The [cursor] defaults to [MouseCursor.defer], deferring the choice of /// cursor to the next region behind it in hit-test order. @@ -83,12 +83,14 @@ class Rive extends LeafRenderObjectWidget { RenderObject createRenderObject(BuildContext context) { // Doing this here and not in constructor so it can remain const artboard.antialiasing = antialiasing; + final tickerModeValue = TickerMode.of(context); return RiveRenderObject(artboard as RuntimeArtboard) ..fit = fit ..alignment = alignment ..artboardSize = Size(artboard.width, artboard.height) ..useArtboardSize = useArtboardSize ..clipRect = clipRect + ..tickerModeEnabled = tickerModeValue ..enableHitTests = enablePointerEvents ..cursor = cursor; } @@ -96,6 +98,7 @@ class Rive extends LeafRenderObjectWidget { @override void updateRenderObject( BuildContext context, covariant RiveRenderObject renderObject) { + final tickerModeValue = TickerMode.of(context); artboard.antialiasing = antialiasing; renderObject ..artboard = artboard @@ -104,6 +107,7 @@ class Rive extends LeafRenderObjectWidget { ..artboardSize = Size(artboard.width, artboard.height) ..useArtboardSize = useArtboardSize ..clipRect = clipRect + ..tickerModeEnabled = tickerModeValue ..enableHitTests = enablePointerEvents ..cursor = cursor; } @@ -230,8 +234,8 @@ class RiveRenderObject extends RiveRenderBox implements MouseTrackerAnnotation { @override void detach() { // It's possible that the renderObject be detached during mouse events - // dispatching, set the [MouseTrackerAnnotation.validForMouseTracker] false to prevent - // the callbacks from being called. + // dispatching, set the [MouseTrackerAnnotation.validForMouseTracker] false + // to prevent the callbacks from being called. _validForMouseTracker = false; super.detach(); } diff --git a/lib/src/rive_core/animation/listener_fire_event.dart b/lib/src/rive_core/animation/listener_fire_event.dart new file mode 100644 index 0000000..a76be82 --- /dev/null +++ b/lib/src/rive_core/animation/listener_fire_event.dart @@ -0,0 +1,37 @@ +import 'package:rive/src/core/core.dart'; +import 'package:rive/src/generated/animation/listener_fire_event_base.dart'; +import 'package:rive/src/rive_core/event.dart'; +import 'package:rive/src/rive_core/state_machine_controller.dart'; +import 'package:rive_common/math.dart'; + +export 'package:rive/src/generated/animation/listener_fire_event_base.dart'; + +class ListenerFireEvent extends ListenerFireEventBase { + Event? _event; + Event? get event => _event; + set event(Event? value) { + if (_event == value) { + return; + } + + _event = value; + + eventId = _event?.id ?? Core.missingId; + } + + @override + void eventIdChanged(int from, int to) { + event = context.resolveWithDefault(to, Event.unknown); + } + + @override + void onAddedDirty() { + super.onAddedDirty(); + event = context.resolveWithDefault(eventId, Event.unknown); + } + + @override + void perform(StateMachineController controller, Vec2D position) { + // TODO: listener.stateMachine.fireEvent() + } +} diff --git a/lib/src/rive_core/custom_property.dart b/lib/src/rive_core/custom_property.dart new file mode 100644 index 0000000..f0e742e --- /dev/null +++ b/lib/src/rive_core/custom_property.dart @@ -0,0 +1,8 @@ +import 'package:rive/src/generated/custom_property_base.dart'; +export 'package:rive/src/generated/custom_property_base.dart'; + +/// A custom property value stored in the hierarchy with a boolean value. +class CustomProperty extends CustomPropertyBase { + @override + void update(int dirt) {} +} diff --git a/lib/src/rive_core/custom_property_boolean.dart b/lib/src/rive_core/custom_property_boolean.dart index 9eb90b3..a7f0686 100644 --- a/lib/src/rive_core/custom_property_boolean.dart +++ b/lib/src/rive_core/custom_property_boolean.dart @@ -3,9 +3,6 @@ export 'package:rive/src/generated/custom_property_boolean_base.dart'; /// A custom property value stored in the hierarchy with a boolean value. class CustomPropertyBoolean extends CustomPropertyBooleanBase { - @override - void update(int dirt) {} - @override void propertyValueChanged(bool from, bool to) {} } diff --git a/lib/src/rive_core/custom_property_number.dart b/lib/src/rive_core/custom_property_number.dart index 023cb0b..d522ae4 100644 --- a/lib/src/rive_core/custom_property_number.dart +++ b/lib/src/rive_core/custom_property_number.dart @@ -3,9 +3,6 @@ export 'package:rive/src/generated/custom_property_number_base.dart'; /// A custom property value stored in the hierarchy with a numeric value. class CustomPropertyNumber extends CustomPropertyNumberBase { - @override - void update(int dirt) {} - @override void propertyValueChanged(double from, double to) {} } diff --git a/lib/src/rive_core/custom_property_string.dart b/lib/src/rive_core/custom_property_string.dart index 024da89..69b94ff 100644 --- a/lib/src/rive_core/custom_property_string.dart +++ b/lib/src/rive_core/custom_property_string.dart @@ -3,9 +3,6 @@ export 'package:rive/src/generated/custom_property_string_base.dart'; /// A custom property value stored in the hierarchy with a string value. class CustomPropertyString extends CustomPropertyStringBase { - @override - void update(int dirt) {} - @override void propertyValueChanged(String from, String to) {} } diff --git a/lib/src/rive_core/event.dart b/lib/src/rive_core/event.dart index a4db721..376b242 100644 --- a/lib/src/rive_core/event.dart +++ b/lib/src/rive_core/event.dart @@ -1,15 +1,13 @@ import 'package:rive/src/generated/event_base.dart'; import 'package:rive/src/rive_core/artboard.dart'; import 'package:rive/src/rive_core/component.dart'; -import 'package:rive/src/rive_core/custom_property_boolean.dart'; -import 'package:rive/src/rive_core/custom_property_number.dart'; -import 'package:rive/src/rive_core/custom_property_string.dart'; +import 'package:rive/src/rive_core/custom_property.dart'; import 'package:rive_common/utilities.dart'; export 'package:rive/src/generated/event_base.dart'; class Event extends EventBase { - final Set customProperties = {}; + final List customProperties = []; @override void typeChanged(String from, String to) {} @@ -25,18 +23,7 @@ class Event extends EventBase { } void _syncCustomProperties() { - var nextCustomProperties = children.where( - (child) { - switch (child.coreType) { - case CustomPropertyBooleanBase.typeKey: - case CustomPropertyStringBase.typeKey: - case CustomPropertyNumberBase.typeKey: - return true; - default: - return false; - } - }, - ).toSet(); + var nextCustomProperties = children.whereType().toSet(); if (!iterableEquals(customProperties, nextCustomProperties)) { customProperties.clear(); customProperties.addAll(nextCustomProperties); @@ -54,4 +41,8 @@ class Event extends EventBase { super.childRemoved(child); _syncCustomProperties(); } + + static final _UnknownEvent unknown = _UnknownEvent(); } + +class _UnknownEvent extends Event {} diff --git a/lib/src/rive_core/text/text.dart b/lib/src/rive_core/text/text.dart index eb02c57..6587346 100644 --- a/lib/src/rive_core/text/text.dart +++ b/lib/src/rive_core/text/text.dart @@ -104,6 +104,7 @@ class Text extends TextBase with TextStyleContainer { font: run.style?.font ?? defaultFont, fontSize: run.style?.fontSize ?? 16, lineHeight: run.style?.lineHeight ?? -1, + letterSpacing: run.style?.letterSpacing ?? 0, unicharCount: run.text.codeUnits.length, styleId: runIndex++, )); @@ -142,24 +143,6 @@ class Text extends TextBase with TextStyleContainer { return buffer.toString(); } - /// [defaultFont] will be removed when we add asset font options. - // TextShapeResult? shape(Font defaultFont) { - // if (_shape != null) { - // return _shape; - // } - // var styled = makeStyled(defaultFont); - // _shape = defaultFont.shape( - // styled.value, - // styled.runs, - // ); - // if (_modifierGroups.isNotEmpty && _shape != null) { - // _glyphLookup = GlyphLookup.fromShape(_shape!, styled.value.length); - // } else { - // _glyphLookup = null; - // } - // return _shape; - // } - void _disposeShape() { for (final shape in _cleanupShapes) { shape.dispose(); @@ -221,7 +204,6 @@ class Text extends TextBase with TextStyleContainer { return; } double y = 0; - double maxX = 0; var paragraphIndex = 0; for (final paragraphLines in lines) { @@ -237,9 +219,6 @@ class Text extends TextBase with TextStyleContainer { x += run.advanceAt(glyphInfo.index); } - if (x > maxX) { - maxX = x; - } } if (paragraphLines.isNotEmpty) { diff --git a/lib/src/rive_core/text/text_style.dart b/lib/src/rive_core/text/text_style.dart index 944e1e2..53965e5 100644 --- a/lib/src/rive_core/text/text_style.dart +++ b/lib/src/rive_core/text/text_style.dart @@ -100,6 +100,11 @@ class TextStyle extends TextStyleBase _markShapeDirty(); } + @override + void letterSpacingChanged(double from, double to) { + _markShapeDirty(); + } + void _markShapeDirty() { for (final run in _referencers) { run.markShapeDirty(); diff --git a/lib/src/rive_render_box.dart b/lib/src/rive_render_box.dart index 940afee..b52c2ed 100644 --- a/lib/src/rive_render_box.dart +++ b/lib/src/rive_render_box.dart @@ -5,20 +5,13 @@ import 'package:flutter/rendering.dart'; import 'package:flutter/scheduler.dart'; import 'package:rive_common/math.dart'; -/// This allows a value of type T or T? -/// to be treated as a value of type T?. -/// -/// We use this so that APIs that have become -/// non-nullable can still be used with `!` and `?` -/// to support older versions of the API as well. -T? _ambiguate(T? value) => value; - abstract class RiveRenderBox extends RenderBox { - final Stopwatch _stopwatch = Stopwatch(); + Ticker? _ticker; BoxFit _fit = BoxFit.none; Alignment _alignment = Alignment.center; bool _useArtboardSize = false; Rect? _clipRect; + bool _tickerModeEnabled = true; bool _enableHitTests = false; bool get useArtboardSize => _useArtboardSize; @@ -74,6 +67,20 @@ abstract class RiveRenderBox extends RenderBox { } } + bool get tickerModeEnabled => _tickerModeEnabled; + + set tickerModeEnabled(bool value) { + if (value != _tickerModeEnabled) { + _tickerModeEnabled = value; + + if (_tickerModeEnabled) { + _startTicker(); + } else { + _stopTicker(); + } + } + } + bool get enableHitTests => _enableHitTests; set enableHitTests(bool value) { @@ -178,14 +185,49 @@ abstract class RiveRenderBox extends RenderBox { @override void detach() { - _stopwatch.stop(); + _stopTicker(); + super.detach(); } + @override + void dispose() { + _ticker?.dispose(); + _ticker = null; + + super.dispose(); + } + @override void attach(PipelineOwner owner) { super.attach(owner); - _stopwatch.start(); + + _ticker = Ticker(_frameCallback); + _startTicker(); + } + + void _stopTicker() { + _elapsedSeconds = 0; + _prevTickerElapsedInSeconds = 0; + + _ticker?.stop(); + } + + void _startTicker() { + _elapsedSeconds = 0; + _prevTickerElapsedInSeconds = 0; + + // Always ensure ticker is stopped before starting + if (_ticker?.isActive ?? false) { + _ticker?.stop(); + } + _ticker?.start(); + } + + void _restartTickerIfStopped() { + if (_ticker != null && !_ticker!.isActive) { + _startTicker(); + } } /// Get the Axis Aligned Bounding Box that encompasses the world space scene @@ -197,25 +239,28 @@ abstract class RiveRenderBox extends RenderBox { void afterDraw(Canvas canvas, Offset offset) {} + /// Time between frame callbacks double _elapsedSeconds = 0; + /// The total time [_ticker] has been active in seconds + double _prevTickerElapsedInSeconds = 0; + + void _calculateElapsedSeconds(Duration duration) { + final double tickerElapsedInSeconds = + duration.inMicroseconds.toDouble() / Duration.microsecondsPerSecond; + assert(tickerElapsedInSeconds >= 0.0); + + _elapsedSeconds = tickerElapsedInSeconds - _prevTickerElapsedInSeconds; + _prevTickerElapsedInSeconds = tickerElapsedInSeconds; + } + void _frameCallback(Duration duration) { - _elapsedSeconds = _stopwatch.elapsedTicks / _stopwatch.frequency; - _stopwatch.reset(); - _stopwatch.start(); + _calculateElapsedSeconds(duration); + markNeedsPaint(); } - int _frameCallbackId = -1; - - void scheduleRepaint() { - if (_frameCallbackId != -1) { - return; - } - _frameCallbackId = _ambiguate(SchedulerBinding.instance) - ?.scheduleFrameCallback(_frameCallback) ?? - -1; - } + void scheduleRepaint() => _restartTickerIfStopped(); /// Override this if you want to do custom viewTransform alignment. This will /// be called after advancing. Return true to prevent regular paint. @@ -305,11 +350,8 @@ abstract class RiveRenderBox extends RenderBox { @protected @override void paint(PaintingContext context, Offset offset) { - _frameCallbackId = -1; - if (advance(_elapsedSeconds)) { - scheduleRepaint(); - } else { - _stopwatch.stop(); + if (!advance(_elapsedSeconds)) { + _stopTicker(); } _elapsedSeconds = 0; diff --git a/pubspec.yaml b/pubspec.yaml index 6f6f968..f09ca9b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: rive -version: 0.11.13 +version: 0.11.14 homepage: https://rive.app description: Rive 2 Flutter Runtime. This package provides runtime functionality for playing back and interacting with animations built with the Rive editor available at https://rive.app. repository: https://github.com/rive-app/rive-flutter @@ -21,7 +21,7 @@ dependencies: http: ^1.1.0 meta: ^1.3.0 plugin_platform_interface: ^2.0.2 - rive_common: 0.2.5 + rive_common: 0.2.6 dev_dependencies: flutter_test: sdk: flutter diff --git a/test/assets/cdn_image.riv b/test/assets/cdn_image.riv index ed6de3dfd1e96721cdf24c6ead460ae8a9126158..5b390ace4abe0cdf525187ebbcb7f3c376127f85 100644 GIT binary patch literal 128 zcmWN?%MrpL5CG77s-OYGpM`V-%OcFEWL(U_>h)dTMQVFLV4+Jjw-lk>cO;tr2)orKuWI(hyt8 Le&g{aVN}?Di%llA literal 206 zcmWIY40B~?SQd4L@eSiS#tV$knNBmFXJlw#U|>)MVsVDd(~PW!dIfpuXBa16VtURb z@a$mjj_;-uT>eZeZfUvyx)Z3HA;#$fknC_`U}R@t_~pz2BHl1Eu<-b$mMb_Gl_cdS z7Nszxus}>=W#DDdsc`0FP|a{Y2h=CT%B*T=X!xH&gq49o-kd8WGdDFSGcQ%akipcP qKe!~ZBvrvTF*ySwWZA{Y?vq%VS_G7~oeI=$&)_&6NI5XrF#rI$pgG0> diff --git a/test/assets/file.png b/test/assets/file.png index 6a1856efa3d346d30b698d3ecb4de8faad98be44..8a98dfa44f6fc8e7e268c195c5b30a043412d5d1 100644 GIT binary patch literal 131 zcmWN?%MHUI3;@tOQ?Nh-SbR*j0Rsi8Em2K!==9CIysLhB%#ZAA9lR^`9P9CFyxsRR zZ#3VEk4ow?VvZuYCvbiT3lJ&jMnKwPC@qFsb*VXIN2sm!Nv9hblT!qb1O<)7Xd9-I M1&?2q#zjOe{v7xyCjbBd literal 159880 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 z%0A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%0Agv997p{CLY@N&(p63fi@lKZZ%%T7x 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