event inputs importing

This commit is contained in:
Luigi Rosso
2022-03-28 19:22:19 -07:00
parent 47b84ef63f
commit f1950e0f03
3 changed files with 40 additions and 0 deletions

View File

@ -17,6 +17,7 @@ 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_transition_importer.dart';

View File

@ -0,0 +1,13 @@
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 object) {
event.context.addObject(object);
event.internalAddInputChange(object);
}
}

View File

@ -1,4 +1,7 @@
import 'package:rive/src/core/core.dart';
import 'package:rive/src/generated/animation/event_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/state_machine_controller.dart';
@ -32,4 +35,27 @@ abstract class EventInputChange extends EventInputChangeBase {
/// Make the change to the input values.
void perform(StateMachineController controller);
@override
bool import(ImportStack importStack) {
var importer = importStack
.latest<StateMachineEventImporter>(StateMachineEventBase.typeKey);
if (importer == null) {
return false;
}
importer.addInputChange(this);
var stateMachineImporter =
importStack.latest<StateMachineImporter>(StateMachineBase.typeKey);
if (stateMachineImporter == null) {
return false;
}
if (inputId >= 0 && inputId < stateMachineImporter.machine.inputs.length) {
var found = stateMachineImporter.machine.inputs[inputId];
_input = found;
inputId = found.id;
}
return super.import(importStack);
}
}