mirror of
https://github.com/rive-app/rive-flutter.git
synced 2025-06-22 23:07:49 +08:00
Adding support for align listener action.
This commit is contained in:
@ -23,7 +23,7 @@ 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';
|
||||
export 'package:rive/src/listener_actions.dart';
|
||||
export 'package:rive/src/runtime_artboard.dart';
|
||||
export 'package:rive/src/state_machine_components.dart';
|
||||
export 'package:rive/src/state_transition_conditions.dart';
|
||||
|
@ -1,14 +1,13 @@
|
||||
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/listener_action.dart';
|
||||
import 'package:rive/src/rive_core/animation/state_machine_listener.dart';
|
||||
|
||||
class StateMachineListenerImporter extends ArtboardImportStackObject {
|
||||
final StateMachineListener event;
|
||||
StateMachineListenerImporter(this.event);
|
||||
final StateMachineListener listener;
|
||||
StateMachineListenerImporter(this.listener);
|
||||
|
||||
void addInputChange(ListenerInputChange change) {
|
||||
// Other state machine importers do this, do we really need it?
|
||||
// event.context.addObject(change);
|
||||
event.internalAddInputChange(change);
|
||||
void addAction(ListenerAction change) {
|
||||
// listener.context.addObject(change);
|
||||
listener.internalAddAction(change);
|
||||
}
|
||||
}
|
||||
|
13
lib/src/generated/animation/listener_action_base.dart
Normal file
13
lib/src/generated/animation/listener_action_base.dart
Normal file
@ -0,0 +1,13 @@
|
||||
/// Core automatically generated
|
||||
/// lib/src/generated/animation/listener_action_base.dart.
|
||||
/// Do not modify manually.
|
||||
|
||||
import 'package:rive/src/core/core.dart';
|
||||
|
||||
abstract class ListenerActionBase<T extends CoreContext> extends Core<T> {
|
||||
static const int typeKey = 125;
|
||||
@override
|
||||
int get coreType => ListenerActionBase.typeKey;
|
||||
@override
|
||||
Set<int> get coreTypes => {ListenerActionBase.typeKey};
|
||||
}
|
45
lib/src/generated/animation/listener_align_target_base.dart
Normal file
45
lib/src/generated/animation/listener_align_target_base.dart
Normal file
@ -0,0 +1,45 @@
|
||||
/// Core automatically generated
|
||||
/// lib/src/generated/animation/listener_align_target_base.dart.
|
||||
/// Do not modify manually.
|
||||
|
||||
import 'package:rive/src/rive_core/animation/listener_action.dart';
|
||||
|
||||
abstract class ListenerAlignTargetBase extends ListenerAction {
|
||||
static const int typeKey = 126;
|
||||
@override
|
||||
int get coreType => ListenerAlignTargetBase.typeKey;
|
||||
@override
|
||||
Set<int> get coreTypes =>
|
||||
{ListenerAlignTargetBase.typeKey, ListenerActionBase.typeKey};
|
||||
|
||||
/// --------------------------------------------------------------------------
|
||||
/// TargetId field with key 240.
|
||||
static const int targetIdInitialValue = 0;
|
||||
int _targetId = targetIdInitialValue;
|
||||
static const int targetIdPropertyKey = 240;
|
||||
|
||||
/// Identifier used to track the object use as a target fo this listener
|
||||
/// action.
|
||||
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);
|
||||
|
||||
@override
|
||||
void copy(covariant ListenerAlignTargetBase source) {
|
||||
super.copy(source);
|
||||
_targetId = source._targetId;
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@
|
||||
/// lib/src/generated/animation/listener_bool_change_base.dart.
|
||||
/// Do not modify manually.
|
||||
|
||||
import 'package:rive/src/generated/animation/listener_action_base.dart';
|
||||
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
|
||||
|
||||
abstract class ListenerBoolChangeBase extends ListenerInputChange {
|
||||
@ -9,8 +10,11 @@ abstract class ListenerBoolChangeBase extends ListenerInputChange {
|
||||
@override
|
||||
int get coreType => ListenerBoolChangeBase.typeKey;
|
||||
@override
|
||||
Set<int> get coreTypes =>
|
||||
{ListenerBoolChangeBase.typeKey, ListenerInputChangeBase.typeKey};
|
||||
Set<int> get coreTypes => {
|
||||
ListenerBoolChangeBase.typeKey,
|
||||
ListenerInputChangeBase.typeKey,
|
||||
ListenerActionBase.typeKey
|
||||
};
|
||||
|
||||
/// --------------------------------------------------------------------------
|
||||
/// Value field with key 228.
|
||||
|
@ -2,14 +2,15 @@
|
||||
/// 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<T extends CoreContext> extends Core<T> {
|
||||
abstract class ListenerInputChangeBase extends ListenerAction {
|
||||
static const int typeKey = 116;
|
||||
@override
|
||||
int get coreType => ListenerInputChangeBase.typeKey;
|
||||
@override
|
||||
Set<int> get coreTypes => {ListenerInputChangeBase.typeKey};
|
||||
Set<int> get coreTypes =>
|
||||
{ListenerInputChangeBase.typeKey, ListenerActionBase.typeKey};
|
||||
|
||||
/// --------------------------------------------------------------------------
|
||||
/// InputId field with key 227.
|
||||
@ -37,6 +38,7 @@ abstract class ListenerInputChangeBase<T extends CoreContext> extends Core<T> {
|
||||
|
||||
@override
|
||||
void copy(covariant ListenerInputChangeBase source) {
|
||||
super.copy(source);
|
||||
_inputId = source._inputId;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
/// lib/src/generated/animation/listener_number_change_base.dart.
|
||||
/// Do not modify manually.
|
||||
|
||||
import 'package:rive/src/generated/animation/listener_action_base.dart';
|
||||
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
|
||||
|
||||
abstract class ListenerNumberChangeBase extends ListenerInputChange {
|
||||
@ -9,8 +10,11 @@ abstract class ListenerNumberChangeBase extends ListenerInputChange {
|
||||
@override
|
||||
int get coreType => ListenerNumberChangeBase.typeKey;
|
||||
@override
|
||||
Set<int> get coreTypes =>
|
||||
{ListenerNumberChangeBase.typeKey, ListenerInputChangeBase.typeKey};
|
||||
Set<int> get coreTypes => {
|
||||
ListenerNumberChangeBase.typeKey,
|
||||
ListenerInputChangeBase.typeKey,
|
||||
ListenerActionBase.typeKey
|
||||
};
|
||||
|
||||
/// --------------------------------------------------------------------------
|
||||
/// Value field with key 229.
|
||||
|
@ -2,6 +2,7 @@
|
||||
/// lib/src/generated/animation/listener_trigger_change_base.dart.
|
||||
/// Do not modify manually.
|
||||
|
||||
import 'package:rive/src/generated/animation/listener_action_base.dart';
|
||||
import 'package:rive/src/rive_core/animation/listener_input_change.dart';
|
||||
|
||||
abstract class ListenerTriggerChangeBase extends ListenerInputChange {
|
||||
@ -9,6 +10,9 @@ abstract class ListenerTriggerChangeBase extends ListenerInputChange {
|
||||
@override
|
||||
int get coreType => ListenerTriggerChangeBase.typeKey;
|
||||
@override
|
||||
Set<int> get coreTypes =>
|
||||
{ListenerTriggerChangeBase.typeKey, ListenerInputChangeBase.typeKey};
|
||||
Set<int> get coreTypes => {
|
||||
ListenerTriggerChangeBase.typeKey,
|
||||
ListenerInputChangeBase.typeKey,
|
||||
ListenerActionBase.typeKey
|
||||
};
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ 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_align_target.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';
|
||||
@ -164,6 +165,8 @@ class RiveCoreContext {
|
||||
return KeyFrameBool();
|
||||
case ListenerBoolChangeBase.typeKey:
|
||||
return ListenerBoolChange();
|
||||
case ListenerAlignTargetBase.typeKey:
|
||||
return ListenerAlignTarget();
|
||||
case TransitionNumberConditionBase.typeKey:
|
||||
return TransitionNumberCondition();
|
||||
case AnyStateBase.typeKey:
|
||||
@ -612,6 +615,11 @@ class RiveCoreContext {
|
||||
object.value = value;
|
||||
}
|
||||
break;
|
||||
case ListenerAlignTargetBase.targetIdPropertyKey:
|
||||
if (object is ListenerAlignTargetBase && value is int) {
|
||||
object.targetId = value;
|
||||
}
|
||||
break;
|
||||
case TransitionValueConditionBase.opValuePropertyKey:
|
||||
if (object is TransitionValueConditionBase && value is int) {
|
||||
object.opValue = value;
|
||||
@ -1196,6 +1204,7 @@ class RiveCoreContext {
|
||||
case KeyFrameBase.interpolatorIdPropertyKey:
|
||||
case KeyFrameIdBase.valuePropertyKey:
|
||||
case ListenerBoolChangeBase.valuePropertyKey:
|
||||
case ListenerAlignTargetBase.targetIdPropertyKey:
|
||||
case TransitionValueConditionBase.opValuePropertyKey:
|
||||
case StateTransitionBase.stateToIdPropertyKey:
|
||||
case StateTransitionBase.flagsPropertyKey:
|
||||
@ -1423,6 +1432,8 @@ class RiveCoreContext {
|
||||
return (object as KeyFrameIdBase).value;
|
||||
case ListenerBoolChangeBase.valuePropertyKey:
|
||||
return (object as ListenerBoolChangeBase).value;
|
||||
case ListenerAlignTargetBase.targetIdPropertyKey:
|
||||
return (object as ListenerAlignTargetBase).targetId;
|
||||
case TransitionValueConditionBase.opValuePropertyKey:
|
||||
return (object as TransitionValueConditionBase).opValue;
|
||||
case StateTransitionBase.stateToIdPropertyKey:
|
||||
@ -1913,6 +1924,11 @@ class RiveCoreContext {
|
||||
object.value = value;
|
||||
}
|
||||
break;
|
||||
case ListenerAlignTargetBase.targetIdPropertyKey:
|
||||
if (object is ListenerAlignTargetBase) {
|
||||
object.targetId = value;
|
||||
}
|
||||
break;
|
||||
case TransitionValueConditionBase.opValuePropertyKey:
|
||||
if (object is TransitionValueConditionBase) {
|
||||
object.opValue = value;
|
||||
|
@ -1,21 +0,0 @@
|
||||
import 'dart:collection';
|
||||
|
||||
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;
|
||||
|
||||
@override
|
||||
set length(int value) => _values.length = value;
|
||||
|
||||
@override
|
||||
ListenerInputChange operator [](int index) => _values[index]!;
|
||||
|
||||
@override
|
||||
void operator []=(int index, ListenerInputChange value) =>
|
||||
_values[index] = value;
|
||||
}
|
20
lib/src/listener_actions.dart
Normal file
20
lib/src/listener_actions.dart
Normal file
@ -0,0 +1,20 @@
|
||||
import 'dart:collection';
|
||||
|
||||
import 'package:rive/src/rive_core/animation/listener_action.dart';
|
||||
|
||||
class ListenerActions extends ListBase<ListenerAction> {
|
||||
final List<ListenerAction?> _values = [];
|
||||
List<ListenerAction> get values => _values.cast<ListenerAction>();
|
||||
|
||||
@override
|
||||
int get length => _values.length;
|
||||
|
||||
@override
|
||||
set length(int value) => _values.length = value;
|
||||
|
||||
@override
|
||||
ListenerAction operator [](int index) => _values[index]!;
|
||||
|
||||
@override
|
||||
void operator []=(int index, ListenerAction value) => _values[index] = value;
|
||||
}
|
@ -1,3 +1,5 @@
|
||||
|
||||
|
||||
abstract class Interpolator {
|
||||
int get id;
|
||||
|
||||
|
30
lib/src/rive_core/animation/listener_action.dart
Normal file
30
lib/src/rive_core/animation/listener_action.dart
Normal file
@ -0,0 +1,30 @@
|
||||
import 'package:rive/src/core/core.dart';
|
||||
import 'package:rive/src/generated/animation/listener_action_base.dart';
|
||||
import 'package:rive/src/rive_core/animation/state_machine_listener.dart';
|
||||
import 'package:rive/src/rive_core/math/vec2d.dart';
|
||||
import 'package:rive/src/rive_core/state_machine_controller.dart';
|
||||
|
||||
export 'package:rive/src/generated/animation/listener_action_base.dart';
|
||||
|
||||
abstract class ListenerAction extends ListenerActionBase {
|
||||
@override
|
||||
void onAdded() {}
|
||||
|
||||
@override
|
||||
void onAddedDirty() {}
|
||||
|
||||
/// Perform the action.
|
||||
void perform(StateMachineController controller, Vec2D position);
|
||||
|
||||
@override
|
||||
bool import(ImportStack importStack) {
|
||||
var importer = importStack
|
||||
.latest<StateMachineListenerImporter>(StateMachineListenerBase.typeKey);
|
||||
if (importer == null) {
|
||||
return false;
|
||||
}
|
||||
importer.addAction(this);
|
||||
|
||||
return super.import(importStack);
|
||||
}
|
||||
}
|
31
lib/src/rive_core/animation/listener_align_target.dart
Normal file
31
lib/src/rive_core/animation/listener_align_target.dart
Normal file
@ -0,0 +1,31 @@
|
||||
import 'package:rive/src/generated/animation/listener_align_target_base.dart';
|
||||
import 'package:rive/src/rive_core/constraints/constraint.dart';
|
||||
import 'package:rive/src/rive_core/math/mat2d.dart';
|
||||
import 'package:rive/src/rive_core/math/vec2d.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/listener_align_target_base.dart';
|
||||
|
||||
class ListenerAlignTarget extends ListenerAlignTargetBase {
|
||||
@override
|
||||
void perform(StateMachineController controller, Vec2D position) {
|
||||
Node? target = controller.core.resolve(targetId);
|
||||
|
||||
if (target == null) {
|
||||
return;
|
||||
}
|
||||
var targetParentWorld = parentWorld(target);
|
||||
var inverse = Mat2D();
|
||||
if (!Mat2D.invert(inverse, targetParentWorld)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var localPosition = inverse * position;
|
||||
target.x = localPosition.x;
|
||||
target.y = localPosition.y;
|
||||
}
|
||||
|
||||
@override
|
||||
void targetIdChanged(int from, int to) {}
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
import 'package:rive/src/generated/animation/listener_bool_change_base.dart';
|
||||
import 'package:rive/src/rive_core/math/vec2d.dart';
|
||||
import 'package:rive/src/rive_core/state_machine_controller.dart';
|
||||
|
||||
export 'package:rive/src/generated/animation/listener_bool_change_base.dart';
|
||||
@ -8,7 +9,7 @@ class ListenerBoolChange extends ListenerBoolChangeBase {
|
||||
void valueChanged(int from, int to) {}
|
||||
|
||||
@override
|
||||
void perform(StateMachineController controller) {
|
||||
void perform(StateMachineController controller, Vec2D position) {
|
||||
switch (value) {
|
||||
case 0:
|
||||
controller.setInputValue(inputId, false);
|
||||
|
@ -2,8 +2,6 @@ import 'package:rive/src/core/core.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_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/listener_input_change_base.dart';
|
||||
|
||||
@ -25,25 +23,17 @@ abstract class ListenerInputChange extends ListenerInputChangeBase {
|
||||
input = context.resolveWithDefault(to, StateMachineInput.unknown);
|
||||
}
|
||||
|
||||
@override
|
||||
void onAdded() {}
|
||||
|
||||
@override
|
||||
void onAddedDirty() {
|
||||
super.onAddedDirty();
|
||||
input = context.resolveWithDefault(inputId, StateMachineInput.unknown);
|
||||
}
|
||||
|
||||
/// Make the change to the input values.
|
||||
void perform(StateMachineController controller);
|
||||
|
||||
@override
|
||||
bool import(ImportStack importStack) {
|
||||
var importer = importStack
|
||||
.latest<StateMachineListenerImporter>(StateMachineListenerBase.typeKey);
|
||||
if (importer == null) {
|
||||
if (!super.import(importStack)) {
|
||||
return false;
|
||||
}
|
||||
importer.addInputChange(this);
|
||||
|
||||
var stateMachineImporter =
|
||||
importStack.latest<StateMachineImporter>(StateMachineBase.typeKey);
|
||||
|
@ -1,4 +1,5 @@
|
||||
import 'package:rive/src/generated/animation/listener_number_change_base.dart';
|
||||
import 'package:rive/src/rive_core/math/vec2d.dart';
|
||||
import 'package:rive/src/rive_core/state_machine_controller.dart';
|
||||
|
||||
export 'package:rive/src/generated/animation/listener_number_change_base.dart';
|
||||
@ -8,6 +9,6 @@ class ListenerNumberChange extends ListenerNumberChangeBase {
|
||||
void valueChanged(double from, double to) {}
|
||||
|
||||
@override
|
||||
void perform(StateMachineController controller) =>
|
||||
void perform(StateMachineController controller, Vec2D position) =>
|
||||
controller.setInputValue(inputId, value);
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
import 'package:rive/src/generated/animation/listener_trigger_change_base.dart';
|
||||
import 'package:rive/src/rive_core/math/vec2d.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) =>
|
||||
void perform(StateMachineController controller, Vec2D position) =>
|
||||
controller.setInputValue(inputId, true);
|
||||
}
|
||||
|
@ -2,18 +2,19 @@ import 'dart:collection';
|
||||
|
||||
import 'package:rive/src/core/core.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/listener_action.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/math/vec2d.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_listener_base.dart';
|
||||
|
||||
enum ListenerType { enter, exit, down, up }
|
||||
enum ListenerType { enter, exit, down, up, move }
|
||||
|
||||
class StateMachineListener extends StateMachineListenerBase {
|
||||
final InputChanges inputChanges = InputChanges();
|
||||
final ListenerActions actions = ListenerActions();
|
||||
|
||||
Node? _target;
|
||||
Node? get target => _target;
|
||||
@ -43,28 +44,28 @@ class StateMachineListener extends StateMachineListenerBase {
|
||||
@override
|
||||
void targetIdChanged(int from, int to) => target = context.resolve(to);
|
||||
|
||||
/// Called by rive_core to add an [ListenerInputChange] to this
|
||||
/// Called by rive_core to add an [ListenerAction] to this
|
||||
/// [StateMachineListener]. This should be @internal when it's supported.
|
||||
bool internalAddInputChange(ListenerInputChange change) {
|
||||
if (inputChanges.contains(change)) {
|
||||
bool internalAddAction(ListenerAction action) {
|
||||
if (actions.contains(action)) {
|
||||
return false;
|
||||
}
|
||||
inputChanges.add(change);
|
||||
actions.add(action);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Called by rive_core to remove an [ListenerInputChange] from this
|
||||
/// Called by rive_core to remove an [ListenerAction] from this
|
||||
/// [StateMachineListener]. This should be @internal when it's supported.
|
||||
bool internalRemoveInputChange(ListenerInputChange change) {
|
||||
var removed = inputChanges.remove(change);
|
||||
bool internalRemoveAction(ListenerAction action) {
|
||||
var removed = actions.remove(action);
|
||||
|
||||
return removed;
|
||||
}
|
||||
|
||||
void performChanges(StateMachineController controller) {
|
||||
for (final change in inputChanges) {
|
||||
change.perform(controller);
|
||||
void performChanges(StateMachineController controller, Vec2D position) {
|
||||
for (final action in actions) {
|
||||
action.perform(controller, position);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -254,8 +254,12 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
|
||||
/// The artboard that this state machine controller is manipulating.
|
||||
Artboard? get artboard => _artboard;
|
||||
|
||||
late CoreContext core;
|
||||
|
||||
@override
|
||||
bool init(CoreContext core) {
|
||||
this.core = core;
|
||||
|
||||
_clearLayerControllers();
|
||||
|
||||
for (final layer in stateMachine.layers) {
|
||||
@ -391,15 +395,15 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
|
||||
// we're trying to trigger.
|
||||
if (hoverChange) {
|
||||
if (isOver && event.listenerType == ListenerType.enter) {
|
||||
event.performChanges(this);
|
||||
event.performChanges(this, position);
|
||||
isActive = true;
|
||||
} else if (!isOver && event.listenerType == ListenerType.exit) {
|
||||
event.performChanges(this);
|
||||
event.performChanges(this, position);
|
||||
isActive = true;
|
||||
}
|
||||
}
|
||||
if (isOver && hitEvent == event.listenerType) {
|
||||
event.performChanges(this);
|
||||
event.performChanges(this, position);
|
||||
isActive = true;
|
||||
}
|
||||
}
|
||||
@ -427,7 +431,10 @@ class StateMachineController extends RiveAnimationController<CoreContext> {
|
||||
}
|
||||
}
|
||||
|
||||
void pointerMove(Vec2D position) => _processEvent(position);
|
||||
void pointerMove(Vec2D position) => _processEvent(
|
||||
position,
|
||||
hitEvent: ListenerType.move,
|
||||
);
|
||||
|
||||
void pointerDown(Vec2D position) => _processEvent(
|
||||
position,
|
||||
|
Reference in New Issue
Block a user