1use crate::{arena::NodeId, param::Param};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone)]
11pub enum Command {
12 AddNode { id: NodeId },
14
15 RemoveNode { id: NodeId },
17
18 Connect { src: NodeId, dst: NodeId, slot: usize },
20
21 Disconnect { dst: NodeId, slot: usize },
23
24 UpdateParam { node: NodeId, param_index: usize, new_param: Param },
26
27 SetOutputNode { id: NodeId },
29
30 SetMute { muted: bool },
32
33 ClearGraph,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct GraphSnapshot {
40 pub nodes: Vec<NodeSnapshot>,
41 pub edges: Vec<EdgeSnapshot>,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct NodeSnapshot {
46 pub id: u32,
47 pub generation: u32,
48 pub node_type: String,
49 pub params: Vec<f32>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
53pub struct EdgeSnapshot {
54 pub src_id: u32,
55 pub dst_id: u32,
56 pub slot: usize,
57}