Rename events to listeners.

This commit is contained in:
Luigi Rosso
2022-05-30 17:05:48 -07:00
committed by Luigi Rosso
parent a2dabd6c41
commit 4a5a49bae3
22 changed files with 276 additions and 216 deletions

View File

@ -17,9 +17,9 @@ export 'package:rive/src/core/importers/keyed_object_importer.dart';
export 'package:rive/src/core/importers/keyed_property_importer.dart';
export 'package:rive/src/core/importers/layer_state_importer.dart';
export 'package:rive/src/core/importers/linear_animation_importer.dart';
export 'package:rive/src/core/importers/state_machine_event_importer.dart';
export 'package:rive/src/core/importers/state_machine_importer.dart';
export 'package:rive/src/core/importers/state_machine_layer_importer.dart';
export 'package:rive/src/core/importers/state_machine_listener_importer.dart';
export 'package:rive/src/core/importers/state_transition_importer.dart';
export 'package:rive/src/generated/rive_core_context.dart';
export 'package:rive/src/input_changes.dart';

View File

@ -1,14 +0,0 @@
import 'package:rive/src/core/importers/artboard_import_stack_object.dart';
import 'package:rive/src/rive_core/animation/event_input_change.dart';
import 'package:rive/src/rive_core/animation/state_machine_event.dart';
class StateMachineEventImporter extends ArtboardImportStackObject {
final StateMachineEvent event;
StateMachineEventImporter(this.event);
void addInputChange(EventInputChange change) {
// Other state machine importers do this, do we really need it?
// event.context.addObject(change);
event.internalAddInputChange(change);
}
}

View File

@ -0,0 +1,14 @@
import 'package:rive/src/core/importers/artboard_import_stack_object.dart';
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
import 'package:rive/src/rive_core/animation/state_machine_listener.dart';
class StateMachineListenerImporter extends ArtboardImportStackObject {
final StateMachineListener event;
StateMachineListenerImporter(this.event);
void addInputChange(ListenerInputChange change) {
// Other state machine importers do this, do we really need it?
// event.context.addObject(change);
event.internalAddInputChange(change);
}
}

View File

@ -1,14 +0,0 @@
/// Core automatically generated
/// lib/src/generated/animation/event_trigger_change_base.dart.
/// Do not modify manually.
import 'package:rive/src/rive_core/animation/event_input_change.dart';
abstract class EventTriggerChangeBase extends EventInputChange {
static const int typeKey = 115;
@override
int get coreType => EventTriggerChangeBase.typeKey;
@override
Set<int> get coreTypes =>
{EventTriggerChangeBase.typeKey, EventInputChangeBase.typeKey};
}

View File

@ -1,16 +1,16 @@
/// Core automatically generated
/// lib/src/generated/animation/event_bool_change_base.dart.
/// lib/src/generated/animation/listener_bool_change_base.dart.
/// Do not modify manually.
import 'package:rive/src/rive_core/animation/event_input_change.dart';
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
abstract class EventBoolChangeBase extends EventInputChange {
abstract class ListenerBoolChangeBase extends ListenerInputChange {
static const int typeKey = 117;
@override
int get coreType => EventBoolChangeBase.typeKey;
int get coreType => ListenerBoolChangeBase.typeKey;
@override
Set<int> get coreTypes =>
{EventBoolChangeBase.typeKey, EventInputChangeBase.typeKey};
{ListenerBoolChangeBase.typeKey, ListenerInputChangeBase.typeKey};
/// --------------------------------------------------------------------------
/// Value field with key 228.
@ -18,7 +18,7 @@ abstract class EventBoolChangeBase extends EventInputChange {
int _value = valueInitialValue;
static const int valuePropertyKey = 228;
/// Value to set the input to when the event occurs.
/// Value to set the input to when the listener occurs.
int get value => _value;
/// Change the [_value] field value.
@ -37,7 +37,7 @@ abstract class EventBoolChangeBase extends EventInputChange {
void valueChanged(int from, int to);
@override
void copy(covariant EventBoolChangeBase source) {
void copy(covariant ListenerBoolChangeBase source) {
super.copy(source);
_value = source._value;
}

View File

@ -1,15 +1,15 @@
/// Core automatically generated
/// lib/src/generated/animation/event_input_change_base.dart.
/// lib/src/generated/animation/listener_input_change_base.dart.
/// Do not modify manually.
import 'package:rive/src/core/core.dart';
abstract class EventInputChangeBase<T extends CoreContext> extends Core<T> {
abstract class ListenerInputChangeBase<T extends CoreContext> extends Core<T> {
static const int typeKey = 116;
@override
int get coreType => EventInputChangeBase.typeKey;
int get coreType => ListenerInputChangeBase.typeKey;
@override
Set<int> get coreTypes => {EventInputChangeBase.typeKey};
Set<int> get coreTypes => {ListenerInputChangeBase.typeKey};
/// --------------------------------------------------------------------------
/// InputId field with key 227.
@ -36,7 +36,7 @@ abstract class EventInputChangeBase<T extends CoreContext> extends Core<T> {
void inputIdChanged(int from, int to);
@override
void copy(covariant EventInputChangeBase source) {
void copy(covariant ListenerInputChangeBase source) {
_inputId = source._inputId;
}
}

View File

@ -1,16 +1,16 @@
/// Core automatically generated
/// lib/src/generated/animation/event_number_change_base.dart.
/// lib/src/generated/animation/listener_number_change_base.dart.
/// Do not modify manually.
import 'package:rive/src/rive_core/animation/event_input_change.dart';
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
abstract class EventNumberChangeBase extends EventInputChange {
abstract class ListenerNumberChangeBase extends ListenerInputChange {
static const int typeKey = 118;
@override
int get coreType => EventNumberChangeBase.typeKey;
int get coreType => ListenerNumberChangeBase.typeKey;
@override
Set<int> get coreTypes =>
{EventNumberChangeBase.typeKey, EventInputChangeBase.typeKey};
{ListenerNumberChangeBase.typeKey, ListenerInputChangeBase.typeKey};
/// --------------------------------------------------------------------------
/// Value field with key 229.
@ -18,7 +18,7 @@ abstract class EventNumberChangeBase extends EventInputChange {
double _value = valueInitialValue;
static const int valuePropertyKey = 229;
/// Value to set the input to when the event occurs.
/// Value to set the input to when the listener occurs.
double get value => _value;
/// Change the [_value] field value.
@ -37,7 +37,7 @@ abstract class EventNumberChangeBase extends EventInputChange {
void valueChanged(double from, double to);
@override
void copy(covariant EventNumberChangeBase source) {
void copy(covariant ListenerNumberChangeBase source) {
super.copy(source);
_value = source._value;
}

View File

@ -0,0 +1,14 @@
/// Core automatically generated
/// lib/src/generated/animation/listener_trigger_change_base.dart.
/// Do not modify manually.
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
abstract class ListenerTriggerChangeBase extends ListenerInputChange {
static const int typeKey = 115;
@override
int get coreType => ListenerTriggerChangeBase.typeKey;
@override
Set<int> get coreTypes =>
{ListenerTriggerChangeBase.typeKey, ListenerInputChangeBase.typeKey};
}

View File

@ -0,0 +1,70 @@
/// Core automatically generated
/// lib/src/generated/animation/state_machine_listener_base.dart.
/// Do not modify manually.
import 'package:rive/src/rive_core/animation/state_machine_component.dart';
abstract class StateMachineListenerBase extends StateMachineComponent {
static const int typeKey = 114;
@override
int get coreType => StateMachineListenerBase.typeKey;
@override
Set<int> get coreTypes =>
{StateMachineListenerBase.typeKey, StateMachineComponentBase.typeKey};
/// --------------------------------------------------------------------------
/// TargetId field with key 224.
static const int targetIdInitialValue = 0;
int _targetId = targetIdInitialValue;
static const int targetIdPropertyKey = 224;
/// Identifier used to track the object use as a target fo this listener.
int get targetId => _targetId;
/// Change the [_targetId] field value.
/// [targetIdChanged] will be invoked only if the field's value has changed.
set targetId(int value) {
if (_targetId == value) {
return;
}
int from = _targetId;
_targetId = value;
if (hasValidated) {
targetIdChanged(from, value);
}
}
void targetIdChanged(int from, int to);
/// --------------------------------------------------------------------------
/// ListenerTypeValue field with key 225.
static const int listenerTypeValueInitialValue = 0;
int _listenerTypeValue = listenerTypeValueInitialValue;
static const int listenerTypeValuePropertyKey = 225;
/// Listener type (hover, click, etc).
int get listenerTypeValue => _listenerTypeValue;
/// Change the [_listenerTypeValue] field value.
/// [listenerTypeValueChanged] will be invoked only if the field's value has
/// changed.
set listenerTypeValue(int value) {
if (_listenerTypeValue == value) {
return;
}
int from = _listenerTypeValue;
_listenerTypeValue = value;
if (hasValidated) {
listenerTypeValueChanged(from, value);
}
}
void listenerTypeValueChanged(int from, int to);
@override
void copy(covariant StateMachineListenerBase source) {
super.copy(source);
_targetId = source._targetId;
_listenerTypeValue = source._listenerTypeValue;
}
}

View File

@ -8,8 +8,8 @@ import 'package:rive/src/core/field_types/core_string_type.dart';
import 'package:rive/src/core/field_types/core_uint_type.dart';
import 'package:rive/src/generated/animation/blend_animation_base.dart';
import 'package:rive/src/generated/animation/cubic_interpolator_base.dart';
import 'package:rive/src/generated/animation/event_input_change_base.dart';
import 'package:rive/src/generated/animation/keyframe_base.dart';
import 'package:rive/src/generated/animation/listener_input_change_base.dart';
import 'package:rive/src/generated/animation/nested_linear_animation_base.dart';
import 'package:rive/src/generated/animation/state_machine_component_base.dart';
import 'package:rive/src/generated/animation/transition_condition_base.dart';
@ -41,9 +41,6 @@ import 'package:rive/src/rive_core/animation/blend_state_direct.dart';
import 'package:rive/src/rive_core/animation/blend_state_transition.dart';
import 'package:rive/src/rive_core/animation/cubic_interpolator.dart';
import 'package:rive/src/rive_core/animation/entry_state.dart';
import 'package:rive/src/rive_core/animation/event_bool_change.dart';
import 'package:rive/src/rive_core/animation/event_number_change.dart';
import 'package:rive/src/rive_core/animation/event_trigger_change.dart';
import 'package:rive/src/rive_core/animation/exit_state.dart';
import 'package:rive/src/rive_core/animation/keyed_object.dart';
import 'package:rive/src/rive_core/animation/keyed_property.dart';
@ -52,13 +49,16 @@ import 'package:rive/src/rive_core/animation/keyframe_color.dart';
import 'package:rive/src/rive_core/animation/keyframe_double.dart';
import 'package:rive/src/rive_core/animation/keyframe_id.dart';
import 'package:rive/src/rive_core/animation/linear_animation.dart';
import 'package:rive/src/rive_core/animation/listener_bool_change.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_remap_animation.dart';
import 'package:rive/src/rive_core/animation/nested_simple_animation.dart';
import 'package:rive/src/rive_core/animation/nested_state_machine.dart';
import 'package:rive/src/rive_core/animation/state_machine.dart';
import 'package:rive/src/rive_core/animation/state_machine_bool.dart';
import 'package:rive/src/rive_core/animation/state_machine_event.dart';
import 'package:rive/src/rive_core/animation/state_machine_layer.dart';
import 'package:rive/src/rive_core/animation/state_machine_listener.dart';
import 'package:rive/src/rive_core/animation/state_machine_number.dart';
import 'package:rive/src/rive_core/animation/state_machine_trigger.dart';
import 'package:rive/src/rive_core/animation/state_transition.dart';
@ -132,8 +132,6 @@ class RiveCoreContext {
return Node();
case NestedArtboardBase.typeKey:
return NestedArtboard();
case EventNumberChangeBase.typeKey:
return EventNumberChange();
case AnimationBase.typeKey:
return Animation();
case LinearAnimationBase.typeKey:
@ -142,8 +140,6 @@ class RiveCoreContext {
return NestedSimpleAnimation();
case AnimationStateBase.typeKey:
return AnimationState();
case StateMachineEventBase.typeKey:
return StateMachineEvent();
case KeyedObjectBase.typeKey:
return KeyedObject();
case BlendAnimationDirectBase.typeKey:
@ -154,20 +150,22 @@ class RiveCoreContext {
return TransitionTriggerCondition();
case KeyedPropertyBase.typeKey:
return KeyedProperty();
case StateMachineListenerBase.typeKey:
return StateMachineListener();
case KeyFrameIdBase.typeKey:
return KeyFrameId();
case KeyFrameBoolBase.typeKey:
return KeyFrameBool();
case ListenerBoolChangeBase.typeKey:
return ListenerBoolChange();
case TransitionNumberConditionBase.typeKey:
return TransitionNumberCondition();
case EventBoolChangeBase.typeKey:
return EventBoolChange();
case AnyStateBase.typeKey:
return AnyState();
case EventTriggerChangeBase.typeKey:
return EventTriggerChange();
case StateMachineLayerBase.typeKey:
return StateMachineLayer();
case ListenerNumberChangeBase.typeKey:
return ListenerNumberChange();
case CubicInterpolatorBase.typeKey:
return CubicInterpolator();
case StateTransitionBase.typeKey:
@ -182,6 +180,8 @@ class RiveCoreContext {
return EntryState();
case StateMachineTriggerBase.typeKey:
return StateMachineTrigger();
case ListenerTriggerChangeBase.typeKey:
return ListenerTriggerChange();
case BlendStateDirectBase.typeKey:
return BlendStateDirect();
case NestedStateMachineBase.typeKey:
@ -457,16 +457,6 @@ class RiveCoreContext {
object.animationId = value;
}
break;
case EventInputChangeBase.inputIdPropertyKey:
if (object is EventInputChangeBase && value is int) {
object.inputId = value;
}
break;
case EventNumberChangeBase.valuePropertyKey:
if (object is EventNumberChangeBase && value is double) {
object.value = value;
}
break;
case AnimationBase.namePropertyKey:
if (object is AnimationBase && value is String) {
object.name = value;
@ -522,26 +512,16 @@ class RiveCoreContext {
object.isPlaying = value;
}
break;
case ListenerInputChangeBase.inputIdPropertyKey:
if (object is ListenerInputChangeBase && value is int) {
object.inputId = value;
}
break;
case AnimationStateBase.animationIdPropertyKey:
if (object is AnimationStateBase && value is int) {
object.animationId = value;
}
break;
case StateMachineComponentBase.namePropertyKey:
if (object is StateMachineComponentBase && value is String) {
object.name = value;
}
break;
case StateMachineEventBase.targetIdPropertyKey:
if (object is StateMachineEventBase && value is int) {
object.targetId = value;
}
break;
case StateMachineEventBase.eventTypeValuePropertyKey:
if (object is StateMachineEventBase && value is int) {
object.eventTypeValue = value;
}
break;
case KeyedObjectBase.objectIdPropertyKey:
if (object is KeyedObjectBase && value is int) {
object.objectId = value;
@ -557,6 +537,11 @@ class RiveCoreContext {
object.inputId = value;
}
break;
case StateMachineComponentBase.namePropertyKey:
if (object is StateMachineComponentBase && value is String) {
object.name = value;
}
break;
case StateMachineNumberBase.valuePropertyKey:
if (object is StateMachineNumberBase && value is double) {
object.value = value;
@ -572,6 +557,16 @@ class RiveCoreContext {
object.propertyKey = value;
}
break;
case StateMachineListenerBase.targetIdPropertyKey:
if (object is StateMachineListenerBase && value is int) {
object.targetId = value;
}
break;
case StateMachineListenerBase.listenerTypeValuePropertyKey:
if (object is StateMachineListenerBase && value is int) {
object.listenerTypeValue = value;
}
break;
case KeyFrameBase.framePropertyKey:
if (object is KeyFrameBase && value is int) {
object.frame = value;
@ -597,6 +592,11 @@ class RiveCoreContext {
object.value = value;
}
break;
case ListenerBoolChangeBase.valuePropertyKey:
if (object is ListenerBoolChangeBase && value is int) {
object.value = value;
}
break;
case TransitionValueConditionBase.opValuePropertyKey:
if (object is TransitionValueConditionBase && value is int) {
object.opValue = value;
@ -607,8 +607,8 @@ class RiveCoreContext {
object.value = value;
}
break;
case EventBoolChangeBase.valuePropertyKey:
if (object is EventBoolChangeBase && value is int) {
case ListenerNumberChangeBase.valuePropertyKey:
if (object is ListenerNumberChangeBase && value is double) {
object.value = value;
}
break;
@ -1151,26 +1151,26 @@ class RiveCoreContext {
case DrawableBase.drawableFlagsPropertyKey:
case NestedArtboardBase.artboardIdPropertyKey:
case NestedAnimationBase.animationIdPropertyKey:
case EventInputChangeBase.inputIdPropertyKey:
case LinearAnimationBase.fpsPropertyKey:
case LinearAnimationBase.durationPropertyKey:
case LinearAnimationBase.loopValuePropertyKey:
case LinearAnimationBase.workStartPropertyKey:
case LinearAnimationBase.workEndPropertyKey:
case ListenerInputChangeBase.inputIdPropertyKey:
case AnimationStateBase.animationIdPropertyKey:
case StateMachineEventBase.targetIdPropertyKey:
case StateMachineEventBase.eventTypeValuePropertyKey:
case KeyedObjectBase.objectIdPropertyKey:
case BlendAnimationBase.animationIdPropertyKey:
case BlendAnimationDirectBase.inputIdPropertyKey:
case TransitionConditionBase.inputIdPropertyKey:
case KeyedPropertyBase.propertyKeyPropertyKey:
case StateMachineListenerBase.targetIdPropertyKey:
case StateMachineListenerBase.listenerTypeValuePropertyKey:
case KeyFrameBase.framePropertyKey:
case KeyFrameBase.interpolationTypePropertyKey:
case KeyFrameBase.interpolatorIdPropertyKey:
case KeyFrameIdBase.valuePropertyKey:
case ListenerBoolChangeBase.valuePropertyKey:
case TransitionValueConditionBase.opValuePropertyKey:
case EventBoolChangeBase.valuePropertyKey:
case StateTransitionBase.stateToIdPropertyKey:
case StateTransitionBase.flagsPropertyKey:
case StateTransitionBase.durationPropertyKey:
@ -1211,12 +1211,12 @@ class RiveCoreContext {
case TransformComponentBase.scaleYPropertyKey:
case NodeBase.xPropertyKey:
case NodeBase.yPropertyKey:
case EventNumberChangeBase.valuePropertyKey:
case LinearAnimationBase.speedPropertyKey:
case NestedLinearAnimationBase.mixPropertyKey:
case NestedSimpleAnimationBase.speedPropertyKey:
case StateMachineNumberBase.valuePropertyKey:
case TransitionNumberConditionBase.valuePropertyKey:
case ListenerNumberChangeBase.valuePropertyKey:
case CubicInterpolatorBase.x1PropertyKey:
case CubicInterpolatorBase.y1PropertyKey:
case CubicInterpolatorBase.x2PropertyKey:
@ -1355,8 +1355,6 @@ class RiveCoreContext {
return (object as NestedArtboardBase).artboardId;
case NestedAnimationBase.animationIdPropertyKey:
return (object as NestedAnimationBase).animationId;
case EventInputChangeBase.inputIdPropertyKey:
return (object as EventInputChangeBase).inputId;
case LinearAnimationBase.fpsPropertyKey:
return (object as LinearAnimationBase).fps;
case LinearAnimationBase.durationPropertyKey:
@ -1367,12 +1365,10 @@ class RiveCoreContext {
return (object as LinearAnimationBase).workStart;
case LinearAnimationBase.workEndPropertyKey:
return (object as LinearAnimationBase).workEnd;
case ListenerInputChangeBase.inputIdPropertyKey:
return (object as ListenerInputChangeBase).inputId;
case AnimationStateBase.animationIdPropertyKey:
return (object as AnimationStateBase).animationId;
case StateMachineEventBase.targetIdPropertyKey:
return (object as StateMachineEventBase).targetId;
case StateMachineEventBase.eventTypeValuePropertyKey:
return (object as StateMachineEventBase).eventTypeValue;
case KeyedObjectBase.objectIdPropertyKey:
return (object as KeyedObjectBase).objectId;
case BlendAnimationBase.animationIdPropertyKey:
@ -1383,6 +1379,10 @@ class RiveCoreContext {
return (object as TransitionConditionBase).inputId;
case KeyedPropertyBase.propertyKeyPropertyKey:
return (object as KeyedPropertyBase).propertyKey;
case StateMachineListenerBase.targetIdPropertyKey:
return (object as StateMachineListenerBase).targetId;
case StateMachineListenerBase.listenerTypeValuePropertyKey:
return (object as StateMachineListenerBase).listenerTypeValue;
case KeyFrameBase.framePropertyKey:
return (object as KeyFrameBase).frame;
case KeyFrameBase.interpolationTypePropertyKey:
@ -1391,10 +1391,10 @@ class RiveCoreContext {
return (object as KeyFrameBase).interpolatorId;
case KeyFrameIdBase.valuePropertyKey:
return (object as KeyFrameIdBase).value;
case ListenerBoolChangeBase.valuePropertyKey:
return (object as ListenerBoolChangeBase).value;
case TransitionValueConditionBase.opValuePropertyKey:
return (object as TransitionValueConditionBase).opValue;
case EventBoolChangeBase.valuePropertyKey:
return (object as EventBoolChangeBase).value;
case StateTransitionBase.stateToIdPropertyKey:
return (object as StateTransitionBase).stateToId;
case StateTransitionBase.flagsPropertyKey:
@ -1479,8 +1479,6 @@ class RiveCoreContext {
return (object as NodeBase).x;
case NodeBase.yPropertyKey:
return (object as NodeBase).y;
case EventNumberChangeBase.valuePropertyKey:
return (object as EventNumberChangeBase).value;
case LinearAnimationBase.speedPropertyKey:
return (object as LinearAnimationBase).speed;
case NestedLinearAnimationBase.mixPropertyKey:
@ -1491,6 +1489,8 @@ class RiveCoreContext {
return (object as StateMachineNumberBase).value;
case TransitionNumberConditionBase.valuePropertyKey:
return (object as TransitionNumberConditionBase).value;
case ListenerNumberChangeBase.valuePropertyKey:
return (object as ListenerNumberChangeBase).value;
case CubicInterpolatorBase.x1PropertyKey:
return (object as CubicInterpolatorBase).x1;
case CubicInterpolatorBase.y1PropertyKey:
@ -1779,11 +1779,6 @@ class RiveCoreContext {
object.animationId = value;
}
break;
case EventInputChangeBase.inputIdPropertyKey:
if (object is EventInputChangeBase) {
object.inputId = value;
}
break;
case LinearAnimationBase.fpsPropertyKey:
if (object is LinearAnimationBase) {
object.fps = value;
@ -1809,21 +1804,16 @@ class RiveCoreContext {
object.workEnd = value;
}
break;
case ListenerInputChangeBase.inputIdPropertyKey:
if (object is ListenerInputChangeBase) {
object.inputId = value;
}
break;
case AnimationStateBase.animationIdPropertyKey:
if (object is AnimationStateBase) {
object.animationId = value;
}
break;
case StateMachineEventBase.targetIdPropertyKey:
if (object is StateMachineEventBase) {
object.targetId = value;
}
break;
case StateMachineEventBase.eventTypeValuePropertyKey:
if (object is StateMachineEventBase) {
object.eventTypeValue = value;
}
break;
case KeyedObjectBase.objectIdPropertyKey:
if (object is KeyedObjectBase) {
object.objectId = value;
@ -1849,6 +1839,16 @@ class RiveCoreContext {
object.propertyKey = value;
}
break;
case StateMachineListenerBase.targetIdPropertyKey:
if (object is StateMachineListenerBase) {
object.targetId = value;
}
break;
case StateMachineListenerBase.listenerTypeValuePropertyKey:
if (object is StateMachineListenerBase) {
object.listenerTypeValue = value;
}
break;
case KeyFrameBase.framePropertyKey:
if (object is KeyFrameBase) {
object.frame = value;
@ -1869,16 +1869,16 @@ class RiveCoreContext {
object.value = value;
}
break;
case ListenerBoolChangeBase.valuePropertyKey:
if (object is ListenerBoolChangeBase) {
object.value = value;
}
break;
case TransitionValueConditionBase.opValuePropertyKey:
if (object is TransitionValueConditionBase) {
object.opValue = value;
}
break;
case EventBoolChangeBase.valuePropertyKey:
if (object is EventBoolChangeBase) {
object.value = value;
}
break;
case StateTransitionBase.stateToIdPropertyKey:
if (object is StateTransitionBase) {
object.stateToId = value;
@ -2079,11 +2079,6 @@ class RiveCoreContext {
object.y = value;
}
break;
case EventNumberChangeBase.valuePropertyKey:
if (object is EventNumberChangeBase) {
object.value = value;
}
break;
case LinearAnimationBase.speedPropertyKey:
if (object is LinearAnimationBase) {
object.speed = value;
@ -2109,6 +2104,11 @@ class RiveCoreContext {
object.value = value;
}
break;
case ListenerNumberChangeBase.valuePropertyKey:
if (object is ListenerNumberChangeBase) {
object.value = value;
}
break;
case CubicInterpolatorBase.x1PropertyKey:
if (object is CubicInterpolatorBase) {
object.x1 = value;

View File

@ -1,9 +1,10 @@
import 'dart:collection';
import 'package:rive/src/rive_core/animation/event_input_change.dart';
class InputChanges extends ListBase<EventInputChange> {
final List<EventInputChange?> _values = [];
List<EventInputChange> get values => _values.cast<EventInputChange>();
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
class InputChanges extends ListBase<ListenerInputChange> {
final List<ListenerInputChange?> _values = [];
List<ListenerInputChange> get values => _values.cast<ListenerInputChange>();
@override
int get length => _values.length;
@ -12,9 +13,9 @@ class InputChanges extends ListBase<EventInputChange> {
set length(int value) => _values.length = value;
@override
EventInputChange operator [](int index) => _values[index]!;
ListenerInputChange operator [](int index) => _values[index]!;
@override
void operator []=(int index, EventInputChange value) =>
void operator []=(int index, ListenerInputChange value) =>
_values[index] = value;
}

View File

@ -1,10 +0,0 @@
import 'package:rive/src/generated/animation/event_trigger_change_base.dart';
import 'package:rive/src/rive_core/state_machine_controller.dart';
export 'package:rive/src/generated/animation/event_trigger_change_base.dart';
class EventTriggerChange extends EventTriggerChangeBase {
@override
void perform(StateMachineController controller) =>
controller.setInputValue(inputId, true);
}

View File

@ -1,9 +1,9 @@
import 'package:rive/src/generated/animation/event_bool_change_base.dart';
import 'package:rive/src/generated/animation/listener_bool_change_base.dart';
import 'package:rive/src/rive_core/state_machine_controller.dart';
export 'package:rive/src/generated/animation/event_bool_change_base.dart';
export 'package:rive/src/generated/animation/listener_bool_change_base.dart';
class EventBoolChange extends EventBoolChangeBase {
class ListenerBoolChange extends ListenerBoolChangeBase {
@override
void valueChanged(int from, int to) {}

View File

@ -1,13 +1,13 @@
import 'package:rive/src/core/core.dart';
import 'package:rive/src/generated/animation/event_input_change_base.dart';
import 'package:rive/src/generated/animation/listener_input_change_base.dart';
import 'package:rive/src/rive_core/animation/state_machine.dart';
import 'package:rive/src/rive_core/animation/state_machine_event.dart';
import 'package:rive/src/rive_core/animation/state_machine_input.dart';
import 'package:rive/src/rive_core/animation/state_machine_listener.dart';
import 'package:rive/src/rive_core/state_machine_controller.dart';
export 'package:rive/src/generated/animation/event_input_change_base.dart';
export 'package:rive/src/generated/animation/listener_input_change_base.dart';
abstract class EventInputChange extends EventInputChangeBase {
abstract class ListenerInputChange extends ListenerInputChangeBase {
StateMachineInput _input = StateMachineInput.unknown;
StateMachineInput get input => _input;
set input(StateMachineInput value) {
@ -39,7 +39,7 @@ abstract class EventInputChange extends EventInputChangeBase {
@override
bool import(ImportStack importStack) {
var importer = importStack
.latest<StateMachineEventImporter>(StateMachineEventBase.typeKey);
.latest<StateMachineListenerImporter>(StateMachineListenerBase.typeKey);
if (importer == null) {
return false;
}

View File

@ -1,9 +1,9 @@
import 'package:rive/src/generated/animation/event_number_change_base.dart';
import 'package:rive/src/generated/animation/listener_number_change_base.dart';
import 'package:rive/src/rive_core/state_machine_controller.dart';
export 'package:rive/src/generated/animation/event_number_change_base.dart';
export 'package:rive/src/generated/animation/listener_number_change_base.dart';
class EventNumberChange extends EventNumberChangeBase {
class ListenerNumberChange extends ListenerNumberChangeBase {
@override
void valueChanged(double from, double to) {}

View File

@ -0,0 +1,10 @@
import 'package:rive/src/generated/animation/listener_trigger_change_base.dart';
import 'package:rive/src/rive_core/state_machine_controller.dart';
export 'package:rive/src/generated/animation/listener_trigger_change_base.dart';
class ListenerTriggerChange extends ListenerTriggerChangeBase {
@override
void perform(StateMachineController controller) =>
controller.setInputValue(inputId, true);
}

View File

@ -1,8 +1,8 @@
import 'package:rive/src/core/core.dart';
import 'package:rive/src/generated/animation/state_machine_base.dart';
import 'package:rive/src/rive_core/animation/state_machine_event.dart';
import 'package:rive/src/rive_core/animation/state_machine_input.dart';
import 'package:rive/src/rive_core/animation/state_machine_layer.dart';
import 'package:rive/src/rive_core/animation/state_machine_listener.dart';
import 'package:rive/src/rive_core/artboard.dart';
export 'package:rive/src/generated/animation/state_machine_base.dart';
@ -12,8 +12,8 @@ class StateMachine extends StateMachineBase {
StateMachineComponents<StateMachineInput>();
final StateMachineComponents<StateMachineLayer> layers =
StateMachineComponents<StateMachineLayer>();
final StateMachineComponents<StateMachineEvent> events =
StateMachineComponents<StateMachineEvent>();
final StateMachineComponents<StateMachineListener> listeners =
StateMachineComponents<StateMachineListener>();
@override
bool import(ImportStack stack) {

View File

@ -1,18 +1,18 @@
import 'dart:collection';
import 'package:rive/src/core/core.dart';
import 'package:rive/src/generated/animation/state_machine_event_base.dart';
import 'package:rive/src/rive_core/animation/event_input_change.dart';
import 'package:rive/src/generated/animation/state_machine_listener_base.dart';
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
import 'package:rive/src/rive_core/animation/state_machine.dart';
import 'package:rive/src/rive_core/animation/state_machine_component.dart';
import 'package:rive/src/rive_core/node.dart';
import 'package:rive/src/rive_core/state_machine_controller.dart';
export 'package:rive/src/generated/animation/state_machine_event_base.dart';
export 'package:rive/src/generated/animation/state_machine_listener_base.dart';
enum EventType { enter, exit, down, up }
enum ListenerType { enter, exit, down, up }
class StateMachineEvent extends StateMachineEventBase {
class StateMachineListener extends StateMachineListenerBase {
final InputChanges inputChanges = InputChanges();
Node? _target;
@ -29,23 +29,23 @@ class StateMachineEvent extends StateMachineEventBase {
@override
String get name =>
super.name.isEmpty ? (_target?.name ?? 'Event') : super.name;
super.name.isEmpty ? (_target?.name ?? 'Listener') : super.name;
@override
void eventTypeValueChanged(int from, int to) {}
void listenerTypeValueChanged(int from, int to) {}
EventType get eventType => EventType.values[eventTypeValue];
set eventType(EventType value) => eventTypeValue = value.index;
ListenerType get listenerType => ListenerType.values[listenerTypeValue];
set listenerType(ListenerType value) => listenerTypeValue = value.index;
@override
ListBase<StateMachineComponent> machineComponentList(StateMachine machine) =>
machine.events;
machine.listeners;
@override
void targetIdChanged(int from, int to) => target = context.resolve(to);
/// Called by rive_core to add an [EventInputChange] to this
/// [StateMachineEvent]. This should be @internal when it's supported.
bool internalAddInputChange(EventInputChange change) {
/// Called by rive_core to add an [ListenerInputChange] to this
/// [StateMachineListener]. This should be @internal when it's supported.
bool internalAddInputChange(ListenerInputChange change) {
if (inputChanges.contains(change)) {
return false;
}
@ -54,9 +54,9 @@ class StateMachineEvent extends StateMachineEventBase {
return true;
}
/// Called by rive_core to remove an [EventInputChange] from this
/// [StateMachineEvent]. This should be @internal when it's supported.
bool internalRemoveInputChange(EventInputChange change) {
/// Called by rive_core to remove an [ListenerInputChange] from this
/// [StateMachineListener]. This should be @internal when it's supported.
bool internalRemoveInputChange(ListenerInputChange change) {
var removed = inputChanges.remove(change);
return removed;

View File

@ -12,23 +12,16 @@ class ImageAsset extends ImageAssetBase {
ui.Image? _image;
ui.Image? get image => _image;
/// A list of Images that need to know when the underlying bytes have been
/// successfully decoded.
List<Image>? _decodeListeners;
ImageAsset();
@visibleForTesting
ImageAsset.fromTestImage(this._image);
@visibleForTesting
set image(ui.Image? image) {
_image = image;
if (_image == image) {
return;
}
/// Registers [asset] to know when these image bytes have been decoded.
void addDecodeListener(Image asset) {
(_decodeListeners ??= []).add(asset);
_image = image;
}
@override
@ -37,11 +30,6 @@ class ImageAsset extends ImageAssetBase {
ui.decodeImageFromList(bytes, (value) {
_image = value;
completer.complete();
// Tell listeners that the image is ready to be drawn: mark them dirty.
_decodeListeners
?..forEach((e) => e.context.markNeedsAdvance())
..clear();
});
return completer.future;
}

View File

@ -37,7 +37,7 @@ class Image extends ImageBase
@override
void draw(ui.Canvas canvas) {
final uiImage = asset?.image;
var uiImage = asset?.image;
if (uiImage == null) {
return;
}
@ -84,6 +84,7 @@ class Image extends ImageBase
}
}
@override
int get assetIdPropertyKey => ImageBase.assetIdPropertyKey;
@ -99,9 +100,6 @@ class Image extends ImageBase
void copy(covariant Image source) {
super.copy(source);
asset = source.asset;
if (asset?.image == null) {
asset?.addDecodeListener(this);
}
}
@override

View File

@ -12,8 +12,8 @@ import 'package:rive/src/rive_core/animation/linear_animation.dart';
import 'package:rive/src/rive_core/animation/nested_state_machine.dart';
import 'package:rive/src/rive_core/animation/state_instance.dart';
import 'package:rive/src/rive_core/animation/state_machine.dart';
import 'package:rive/src/rive_core/animation/state_machine_event.dart';
import 'package:rive/src/rive_core/animation/state_machine_layer.dart';
import 'package:rive/src/rive_core/animation/state_machine_listener.dart';
import 'package:rive/src/rive_core/animation/state_machine_trigger.dart';
import 'package:rive/src/rive_core/animation/state_transition.dart';
import 'package:rive/src/rive_core/artboard.dart';
@ -25,7 +25,7 @@ import 'package:rive/src/rive_core/node.dart';
import 'package:rive/src/rive_core/rive_animation_controller.dart';
import 'package:rive/src/rive_core/shapes/shape.dart';
/// Callback signature for state machine state changes
/// Callback signature for satate machine state changes
typedef OnStateChange = void Function(String, String);
/// Callback signature for layer state changes
@ -209,14 +209,6 @@ class LayerController {
}
}
/// 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>(T? value) => value;
class StateMachineController extends RiveAnimationController<CoreContext> {
final StateMachine stateMachine;
final _inputValues = HashMap<int, dynamic>();
@ -237,6 +229,8 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
/// Handles state change callbacks
void _onStateChange(LayerState layerState) =>
/// See https://github.com/flutter/flutter/issues/103561#issuecomment-1129356149
_ambiguate(SchedulerBinding.instance)?.addPostFrameCallback((_) {
String stateName = 'unknown';
if (layerState is AnimationState && layerState.animation != null) {
@ -278,7 +272,7 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
// Initialize all events.
HashMap<Shape, _HitShape> hitShapeLookup = HashMap<Shape, _HitShape>();
for (final event in stateMachine.events) {
for (final event in stateMachine.listeners) {
// Resolve target on this artboard instance.
var node = core.resolve<Node>(event.targetId);
if (node == null) {
@ -346,7 +340,7 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
isActive = keepGoing;
}
void _processEvent(Vec2D position, {EventType? hitEvent}) {
void _processEvent(Vec2D position, {ListenerType? hitEvent}) {
var artboard = this.artboard;
if (artboard == null) {
return;
@ -396,15 +390,15 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
// Always update hover states regardless of which specific event type
// we're trying to trigger.
if (hoverChange) {
if (isOver && event.eventType == EventType.enter) {
if (isOver && event.listenerType == ListenerType.enter) {
event.performChanges(this);
isActive = true;
} else if (!isOver && event.eventType == EventType.exit) {
} else if (!isOver && event.listenerType == ListenerType.exit) {
event.performChanges(this);
isActive = true;
}
}
if (isOver && hitEvent == event.eventType) {
if (isOver && hitEvent == event.listenerType) {
event.performChanges(this);
isActive = true;
}
@ -419,10 +413,10 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
for (final nestedStateMachine
in nestedArtboard.animations.whereType<NestedStateMachine>()) {
switch (hitEvent) {
case EventType.down:
case ListenerType.down:
nestedStateMachine.pointerDown(nestedPosition);
break;
case EventType.up:
case ListenerType.up:
nestedStateMachine.pointerUp(nestedPosition);
break;
default:
@ -437,12 +431,12 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
void pointerDown(Vec2D position) => _processEvent(
position,
hitEvent: EventType.down,
hitEvent: ListenerType.down,
);
void pointerUp(Vec2D position) => _processEvent(
position,
hitEvent: EventType.up,
hitEvent: ListenerType.up,
);
}
@ -452,6 +446,14 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
class _HitShape {
Shape shape;
bool isHovered = false;
List<StateMachineEvent> events = [];
List<StateMachineListener> events = [];
_HitShape(this.shape);
}
/// 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>(T? value) => value;

View File

@ -20,8 +20,8 @@ import 'package:rive/src/rive_core/animation/keyed_property.dart';
import 'package:rive/src/rive_core/animation/layer_state.dart';
import 'package:rive/src/rive_core/animation/linear_animation.dart';
import 'package:rive/src/rive_core/animation/state_machine.dart';
import 'package:rive/src/rive_core/animation/state_machine_event.dart';
import 'package:rive/src/rive_core/animation/state_machine_layer.dart';
import 'package:rive/src/rive_core/animation/state_machine_listener.dart';
import 'package:rive/src/rive_core/animation/state_transition.dart';
import 'package:rive/src/rive_core/artboard.dart';
import 'package:rive/src/rive_core/assets/file_asset.dart';
@ -159,8 +159,9 @@ class RiveFile {
case StateMachineLayerBase.typeKey:
stackObject = StateMachineLayerImporter(object as StateMachineLayer);
break;
case StateMachineEventBase.typeKey:
stackObject = StateMachineEventImporter(object as StateMachineEvent);
case StateMachineListenerBase.typeKey:
stackObject =
StateMachineListenerImporter(object as StateMachineListener);
break;
case EntryStateBase.typeKey:
case AnyStateBase.typeKey: