this repo has no description
1import { invoke } from "@tauri-apps/api/core";
2import { Node, NodeType } from "../structs/node";
3import { OSCMessage } from "../structs/OscMessage";
4import { NodeManager } from "../Mangers/NodeManager";
5import { NodeDefinition } from "./Nodes";
6
7export let NodeOSCTrigger: NodeDefinition = {
8 isSingle: true,
9 name: 'OSC Trigger',
10 typeId: 'osctrigger',
11
12 w: 200,
13 h: 55,
14
15 statics: [
16 {
17 name: "OSC Trigger",
18 type: NodeType.OSCAddress,
19 value: null
20 },
21 {
22 name: "Parameter List",
23 type: NodeType.ParameterList,
24 value: []
25 }
26 ],
27
28 onStaticsUpdate: async ( node: Node ) => {
29 let address = node.statics[0].value;
30 let parameters = node.statics[1].value;
31
32 if(address){
33 let addresses = await invoke<OSCMessage[]>('get_addresses');
34 let msgDat = addresses.find(x => x.address == address);
35
36 if(msgDat){
37 parameters = msgDat.values.map(x => { return { type: x.key, desc: '' }});
38 node.statics[1].value = parameters;
39 }
40 }
41
42 node.outputs.map(output => {
43 output.connections.map(partner => {
44 partner.connections = partner.connections.filter(x => x != output);
45 })
46 })
47 node.outputs = [];
48
49 node.outputs.push({
50 name: 'Flow',
51 type: NodeType.Flow,
52 connections: [],
53 parent: node,
54 index: 0
55 })
56
57 parameters.forEach(( dat: any, indx: number ) => {
58 let type: NodeType | null = null;
59
60 switch(dat.type){
61 case 'Int':
62 type = NodeType.Int;
63 break;
64 case 'Float':
65 type = NodeType.Float;
66 break;
67 case 'String':
68 type = NodeType.String;
69 break;
70 case 'Boolean':
71 type = NodeType.Boolean;
72 break;
73 }
74
75 if(type){
76 node.outputs.push({
77 name: dat.desc === '' ? dat.type : dat.desc,
78 type: type,
79 connections: [],
80 parent: node,
81 index: indx + 1
82 })
83 }
84 });
85
86 node.h = 65 + (parameters.length + 1) * 30;
87 NodeManager.Instance.UpdateConfig();
88 }
89};