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: 50, 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 = 60 + (parameters.length + 1) * 30; 87 NodeManager.Instance.UpdateConfig(); 88 } 89};