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 os: 'any',
9
10 isSingle: true,
11 name: 'OSC Trigger',
12 typeId: 'osctrigger',
13
14 w: 200,
15
16 statics: [
17 {
18 name: "OSC Trigger",
19 type: NodeType.OSCAddress,
20 value: null
21 },
22 {
23 name: "Parameter List",
24 type: NodeType.ParameterList,
25 value: []
26 }
27 ],
28
29 onStaticsUpdate: async ( node: Node ) => {
30 let address = node.statics[0].value;
31 let parameters = node.statics[1].value;
32
33 if(address){
34 let addresses = await invoke<OSCMessage[]>('get_addresses');
35 let msgDat = addresses.find(x => x.address == address);
36
37 if(msgDat){
38 parameters = msgDat.values.map(x => { return { type: x.key, desc: '' }});
39 node.statics[1].value = parameters;
40 }
41 }
42
43 let tempOutputs = [];
44
45 tempOutputs.push({
46 name: 'Flow',
47 type: NodeType.Flow,
48 connections: [],
49 parent: node,
50 index: 0
51 })
52
53 parameters.forEach(( dat: any, indx: number ) => {
54 let type: NodeType | null = null;
55
56 switch(dat.type){
57 case 'Int':
58 type = NodeType.Int;
59 break;
60 case 'Float':
61 type = NodeType.Float;
62 break;
63 case 'String':
64 type = NodeType.String;
65 break;
66 case 'Boolean':
67 type = NodeType.Boolean;
68 break;
69 }
70
71 if(type){
72 tempOutputs.push({
73 name: dat.desc === '' ? dat.type : dat.desc,
74 type: type,
75 connections: [],
76 parent: node,
77 index: indx + 1
78 })
79 }
80 });
81
82 let hasChanged = false;
83
84 for(let i in tempOutputs){
85 if(
86 node.outputs[i] === undefined ||
87 tempOutputs[i].type != node.outputs[i].type
88 ){
89 hasChanged = true;
90 }
91 }
92
93 if(hasChanged){
94 node.outputs.map(output => {
95 output.connections.map(partner => {
96 partner.connections = partner.connections.filter(x => x != output);
97 })
98 })
99
100 node.outputs = tempOutputs;
101 node.updateSize();
102 }
103
104 NodeManager.Instance.UpdateConfig();
105 }
106};