Skip to content

Commit 88df891

Browse files
committed
feat(nodes/sequencer): add go- and allow adding/removing of sequencer nodes
1 parent 33f0a8c commit 88df891

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

crates/runtime/pipeline/nodes/sequencer/src/lib.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use mizer_node::*;
55
use mizer_sequencer::Sequencer;
66

77
const GO_FORWARD: &str = "Go+";
8+
const GO_BACKWARD: &str = "Go-";
89
const PLAYBACK: &str = "Playback";
910
const TOGGLE_PLAYBACK: &str = "Playback Toggle";
1011
const STOP: &str = "Stop";
@@ -32,7 +33,13 @@ impl ConfigurableNode for SequencerNode {
3233
})
3334
.collect();
3435

35-
vec![setting!(id SEQUENCE_SETTING, self.sequence_id, sequences).disabled()]
36+
vec![setting!(id SEQUENCE_SETTING, self.sequence_id, sequences)]
37+
}
38+
39+
fn update_setting(&mut self, setting: NodeSetting) -> anyhow::Result<()> {
40+
update!(id setting, SEQUENCE_SETTING, self.sequence_id);
41+
42+
update_fallback!(setting)
3643
}
3744
}
3845

@@ -41,7 +48,7 @@ impl PipelineNode for SequencerNode {
4148
NodeDetails {
4249
node_type_name: "Sequencer".into(),
4350
preview_type: PreviewType::None,
44-
category: NodeCategory::None,
51+
category: NodeCategory::Fixtures,
4552
}
4653
}
4754

@@ -59,6 +66,7 @@ impl PipelineNode for SequencerNode {
5966
fn list_ports(&self, _injector: &Injector) -> Vec<(PortId, PortMetadata)> {
6067
vec![
6168
input_port!(GO_FORWARD, PortType::Single),
69+
input_port!(GO_BACKWARD, PortType::Single),
6270
input_port!(PLAYBACK, PortType::Single),
6371
input_port!(TOGGLE_PLAYBACK, PortType::Single),
6472
input_port!(STOP, PortType::Single),
@@ -94,6 +102,11 @@ impl ProcessingNode for SequencerNode {
94102
sequencer.sequence_go_forward(self.sequence_id);
95103
}
96104
}
105+
if let Some(value) = context.read_port(GO_BACKWARD) {
106+
if let Some(true) = state.go_backward.update(value) {
107+
sequencer.sequence_go_backward(self.sequence_id);
108+
}
109+
}
97110
if let Some(value) = context.read_port(STOP) {
98111
if let Some(true) = state.stop.update(value) {
99112
sequencer.sequence_stop(self.sequence_id);
@@ -141,6 +154,7 @@ impl ProcessingNode for SequencerNode {
141154
pub struct SequencerState {
142155
playback: f64,
143156
go_forward: Edge,
157+
go_backward: Edge,
144158
stop: Edge,
145159
playback_toggle: Edge,
146160
}

crates/ui/lib/views/nodes/widgets/node/base_node.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,14 +240,13 @@ const NON_DUPLICATABLE_NODE_TYPES = [
240240
"programmer",
241241
"transport",
242242
"fixture",
243-
"sequencer",
244243
"group",
245244
"container"
246245
];
247246

248247
const NON_RENAMEABLE_NODE_TYPES = ["programmer", "transport"];
249248

250-
const UNDELETABLE_NODE_TYPES = ["programmer", "transport", "fixture", "sequencer", "group"];
249+
const UNDELETABLE_NODE_TYPES = ["programmer", "transport", "fixture", "group"];
251250

252251
extension NodeOptionExtensions on Node {
253252
bool get canRename {

0 commit comments

Comments
 (0)