this repo has no description
at main 2.4 kB view raw
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};