[{"edges":{"8dy573e":{"as":"display","from":"8dy573e","to":"out"},"args":{"as":"args","from":"args","to":"out"},"splq7ug":{"as":"value","from":"splq7ug","to":"out"},"oh2v6pq":{"as":"pred","from":"oh2v6pq","to":"splq7ug"},"vn2sh9e":{"as":"true","from":"vn2sh9e","to":"splq7ug"},"y4gwi1o":{"as":"false","from":"y4gwi1o","to":"splq7ug"},"1bqfz6p":{"as":"subscribe","from":"1bqfz6p","to":"vn2sh9e"},"ohrirfq":{"as":"args","from":"ohrirfq","to":"vn2sh9e"},"q0mclka":{"as":"value","from":"q0mclka","to":"vn2sh9e"},"a10w5r5":{"as":"_initgeo","from":"a10w5r5","to":"ohrirfq"},"vlxve1t":{"as":"value","from":"vlxve1t","to":"a10w5r5"},"8dy8qvc":{"as":"animationframe","from":"8dy8qvc","to":"1bqfz6p"},"8itq35i":{"as":"fn","from":"8itq35i","to":"8dy8qvc"},"90q41gu":{"as":"update","from":"90q41gu","to":"8itq35i"},"9sqfffy":{"as":"value","from":"9sqfffy","to":"90q41gu"},"uplws96":{"as":"recache","from":"uplws96","to":"90q41gu"},"1x4br4o":{"as":"values","from":"1x4br4o","to":"uplws96"},"c4rxcjv":{"as":"arg1","from":"c4rxcjv","to":"1x4br4o"},"wvj1p1r":{"as":"arg0","from":"wvj1p1r","to":"1x4br4o"},"k5f4hu0":{"as":"value","from":"k5f4hu0","to":"wvj1p1r"},"rd10d2x":{"as":"value","from":"rd10d2x","to":"c4rxcjv"},"8g09muv":{"as":"value","from":"8g09muv","to":"9sqfffy"},"rguemo9":{"as":"args","from":"rguemo9","to":"9sqfffy"},"3hu1ap0":{"as":"_fn","from":"3hu1ap0","to":"rguemo9"},"9xa3tmr":{"as":"_initbuffer","from":"9xa3tmr","to":"rguemo9"},"asaag3y":{"as":"_inputgeofn","from":"asaag3y","to":"rguemo9"},"fasv291":{"as":"_attributes","from":"fasv291","to":"rguemo9"},"gu5lz7s":{"as":"_lag","from":"gu5lz7s","to":"rguemo9"},"ufnr75u":{"as":"_fb","from":"ufnr75u","to":"rguemo9"},"x0s5rek":{"as":"_initgeofn","from":"x0s5rek","to":"rguemo9"},"r094qmn":{"as":"value","from":"r094qmn","to":"ufnr75u"},"vwfrg0o":{"as":"otherwise","from":"vwfrg0o","to":"ufnr75u"},"03sh3lc":{"as":"value","from":"03sh3lc","to":"r094qmn"},"uf0wi9m":{"as":"attr","from":"uf0wi9m","to":"fasv291"},"3h860a0":{"as":"value","from":"3h860a0","to":"uf0wi9m"},"jnmh0h3":{"as":"otherwise","from":"jnmh0h3","to":"uf0wi9m"},"euaw78z":{"as":"otherwise","from":"euaw78z","to":"jnmh0h3"},"qzupnpg":{"as":"value","from":"qzupnpg","to":"jnmh0h3"},"osma418":{"as":"value","from":"osma418","to":"9xa3tmr"},"1p3zq1m":{"as":"buffer","from":"1p3zq1m","to":"osma418"},"7twfyoe":{"as":"false","from":"7twfyoe","to":"3hu1ap0"},"jcuffnj":{"as":"pred","from":"jcuffnj","to":"3hu1ap0"},"k1k5w8g":{"as":"true","from":"k1k5w8g","to":"3hu1ap0"},"8ri2ijg":{"as":"fn","from":"8ri2ijg","to":"jcuffnj"},"dza658p":{"as":"runnable","from":"dza658p","to":"7twfyoe"},"l63qymv":{"as":"runnable","from":"l63qymv","to":"8g09muv"},"wwnvi83":{"as":"fn","from":"wwnvi83","to":"l63qymv"},"3w2rmuu":{"as":"lag","from":"3w2rmuu","to":"wwnvi83"},"cfg6cwi":{"as":"feedback","from":"cfg6cwi","to":"wwnvi83"},"hyvpcan":{"as":"initbuffer","from":"hyvpcan","to":"wwnvi83"},"ron9hq7":{"as":"fn","from":"ron9hq7","to":"wwnvi83"},"s61o3sv":{"as":"inputgeo","from":"s61o3sv","to":"wwnvi83"},"x210zde":{"as":"initgeo","from":"x210zde","to":"wwnvi83"},"zwgcvcc":{"as":"attributes","from":"zwgcvcc","to":"wwnvi83"},"c272oro":{"as":"values","from":"c272oro","to":"oh2v6pq"},"c2cadg0":{"as":"arg1","from":"c2cadg0","to":"c272oro"},"tc49gqg":{"as":"arg0","from":"tc49gqg","to":"c272oro"},"1huvnux":{"as":"otherwise","from":"1huvnux","to":"tc49gqg"},"v2pdw1m":{"as":"value","from":"v2pdw1m","to":"tc49gqg"},"lsmnhra":{"as":"_animframe","from":"lsmnhra","to":"args"},"st1qot0":{"as":"_feedback","from":"st1qot0","to":"args"},"ril0xrx":{"as":"children","from":"ril0xrx","to":"8dy573e"},"16s251p":{"as":"arg0","from":"16s251p","to":"ril0xrx"},"apdh5jc":{"as":"arg1","from":"apdh5jc","to":"ril0xrx"},"aygb0oi":{"as":"children","from":"aygb0oi","to":"apdh5jc"},"1tx5wnh":{"as":"arg1","from":"1tx5wnh","to":"aygb0oi"},"302jicy":{"as":"arg0","from":"302jicy","to":"aygb0oi"},"pk1bbc4":{"as":"props","from":"pk1bbc4","to":"302jicy"},"0tgg4sp":{"as":"onchange","from":"0tgg4sp","to":"pk1bbc4"},"aj17mw0":{"as":"type","from":"aj17mw0","to":"pk1bbc4"},"t9zciub":{"as":"checked","from":"t9zciub","to":"pk1bbc4"},"43bg3g9":{"as":"args","from":"43bg3g9","to":"0tgg4sp"},"5bfpjjf":{"as":"fn","from":"5bfpjjf","to":"0tgg4sp"},"nxcfe4q":{"as":"value","from":"nxcfe4q","to":"43bg3g9"},"yai4q6q":{"as":"children","from":"yai4q6q","to":"16s251p"},"ha9sbe6":{"as":"arg0","from":"ha9sbe6","to":"yai4q6q"},"y6jnnhr":{"as":"arg1","from":"y6jnnhr","to":"yai4q6q"},"1oskoai":{"as":"props","from":"1oskoai","to":"ha9sbe6"},"dtp36mu":{"as":"onchange","from":"dtp36mu","to":"1oskoai"},"qapcl0i":{"as":"type","from":"qapcl0i","to":"1oskoai"},"vkwxqas":{"as":"checked","from":"vkwxqas","to":"1oskoai"},"1eft9yl":{"as":"args","from":"1eft9yl","to":"dtp36mu"},"8uiwk65":{"as":"fn","from":"8uiwk65","to":"dtp36mu"},"mrpotq6":{"as":"value","from":"mrpotq6","to":"1eft9yl"}},"id":"@three.modify_attribute","nodes":{"out":{"id":"out","name":"@three.modify_attribute","ref":"return"},"splq7ug":{"id":"splq7ug","ref":"@flow.if"},"y4gwi1o":{"id":"y4gwi1o","ref":"arg","value":"geo"},"vn2sh9e":{"id":"vn2sh9e","ref":"return"},"q0mclka":{"id":"q0mclka","ref":"arg","value":"_initgeo"},"ohrirfq":{"id":"ohrirfq"},"a10w5r5":{"id":"a10w5r5","ref":"@memory.cache"},"vlxve1t":{"id":"vlxve1t","ref":"@js.script","value":"const geo = new _lib.THREE.BufferGeometry();\ngeo.setAttribute('position', new _lib.THREE.BufferAttribute( new Float32Array( [] ), 3));\ngeo.computeVertexNormals();\n\nreturn geo"},"1bqfz6p":{"id":"1bqfz6p"},"8dy8qvc":{"id":"8dy8qvc","ref":"@flow.runnable"},"8itq35i":{"id":"8itq35i","ref":"@js.script","value":"update();"},"90q41gu":{"id":"90q41gu","ref":"@memory.cache"},"uplws96":{"id":"uplws96","ref":"@js.script","value":"//return values[0]\nreturn !values.every(v => !v);"},"1x4br4o":{"id":"1x4br4o","ref":"@data.array"},"wvj1p1r":{"id":"wvj1p1r","ref":"@data.ischanged"},"k5f4hu0":{"id":"k5f4hu0","ref":"arg","value":"geo"},"c4rxcjv":{"id":"c4rxcjv","ref":"@data.ischanged"},"rd10d2x":{"id":"rd10d2x","ref":"arg","value":"fn"},"9sqfffy":{"id":"9sqfffy","ref":"return"},"rguemo9":{"id":"rguemo9"},"x0s5rek":{"id":"x0s5rek","ref":"arg","value":"_initgeo"},"ufnr75u":{"id":"ufnr75u","ref":"@flow.default"},"vwfrg0o":{"id":"vwfrg0o","ref":"arg","value":"_feedback.state"},"r094qmn":{"id":"r094qmn","ref":"@memory.unwrap"},"03sh3lc":{"id":"03sh3lc","ref":"arg","value":"feedback"},"gu5lz7s":{"id":"gu5lz7s","ref":"arg","value":"lag"},"fasv291":{"id":"fasv291","ref":"@js.script","value":"\nreturn typeof attr === \"string\" ? attr.split(\",\") : attr;"},"uf0wi9m":{"id":"uf0wi9m","ref":"@flow.default"},"jnmh0h3":{"id":"jnmh0h3","ref":"@flow.default"},"qzupnpg":{"id":"qzupnpg","ref":"arg","value":"__graph_value"},"euaw78z":{"id":"euaw78z","value":"position"},"3h860a0":{"id":"3h860a0","ref":"arg","value":"attribute"},"asaag3y":{"id":"asaag3y","ref":"arg","value":"geo"},"9xa3tmr":{"id":"9xa3tmr","ref":"@memory.cache"},"osma418":{"id":"osma418"},"1p3zq1m":{"id":"1p3zq1m"},"3hu1ap0":{"id":"3hu1ap0","ref":"@flow.if"},"k1k5w8g":{"id":"k1k5w8g","ref":"arg","value":"fn"},"jcuffnj":{"id":"jcuffnj","ref":"@js.script","value":"return typeof fn === \"function\";"},"8ri2ijg":{"id":"8ri2ijg","ref":"arg","value":"fn"},"7twfyoe":{"id":"7twfyoe","ref":"@js.create_fn"},"dza658p":{"id":"dza658p","ref":"arg","value":"fn"},"8g09muv":{"id":"8g09muv","ref":"@js.create_fn"},"l63qymv":{"id":"l63qymv","ref":"@flow.runnable"},"wwnvi83":{"id":"wwnvi83","ref":"@js.script","value":"const item_size = 3;\n\nconst count = inputgeo.getAttribute(\"position\").count;\n\nif(!feedback || initgeo.getAttribute(\"position\")?.count === 0) {\n  initgeo.copy(inputgeo);\n}\n\nif(!initbuffer.buffer || initbuffer.buffer.array.length !== count * item_size) {\n  initbuffer.buffer = new _lib.THREE.BufferAttribute(new Float32Array(count * item_size), item_size);\n}\n\nfor(let attribute of attributes) {\n  if((feedback ?  !initgeo.hasAttribute(attribute) : !inputgeo.hasAttribute(attribute)) || initgeo.getAttribute(attribute)?.count !== count) {\n    initgeo.setAttribute(attribute, new _lib.THREE.BufferAttribute(new Float32Array(count * item_size), item_size));\n  }\n}\n\n\nconst attrs = Object.keys(initgeo.attributes);\n\nif (feedback) {\n  attrs.forEach(attr => {\n    if (!attributes.includes(attr) && inputgeo.hasAttribute(attr)) {\n      initgeo.getAttribute(attr)\n          .copy(inputgeo.getAttribute(attr))\n    }\n  })\n}\n\nconst currentAttrs = {};\nattributes.forEach(attribute => {\n  currentAttrs[attribute] = (feedback || !inputgeo.hasAttribute(attribute) ? initgeo : inputgeo).getAttribute(attribute)\n});\nconst targetAttrs = {};\nattributes.forEach(attribute => {\n  targetAttrs[attribute] = \ninitgeo.getAttribute(attribute);\n})\nconst point_data = {};\n\n\nconst newVals = {};\nattributes.forEach(attribute => {\n  newVals[attribute] = new Float32Array(item_size).fill(0);\n});\n\nfor(let i = 0; i < count; i++){\n  attributes.forEach(attribute => {\n    newVals[attribute].set(currentAttrs[attribute].array\n    .subarray(i * item_size, (i + 1) * item_size));\n  })\n  \n  attrs.forEach(attr => {\n    point_data[attr] = attributes.includes(attr) ? newVals[attr] : initgeo.getAttribute(attr).array\n    .subarray(i * item_size, (i + 1) * item_size)\n  })\n  \n  fn({point_data, index: i})\n  \n  if(lag) {\n    attributes.forEach(attribute => {\n    if(newVals[attribute][0] !== undefined) {\n    newVals[attribute][0] *= (1 - lag)\n    newVals[attribute][0] += lag * targetAttr.getX(i);\n    }\n    if(newVal[attribute][1] !== undefined) {\n    newVals[attribute][1] *= (1 - lag)\n    newVals[attribute][1] += lag * targetAttr.getY(i);\n    }\n    if(newVals[attribute][2] !== undefined) {\n    newVals[attribute][2] *= (1 - lag)\n    newVals[attribute][2] += lag * targetAttr.getZ(i);\n    }\n    })\n  }\n  attributes.map(attribute => {\ntargetAttrs[attribute].array.set(newVals[attribute], i * item_size)\n  })\n}\nattributes.forEach(attribute => {\ntargetAttrs[attribute].needsUpdate = true;\n})\n\nreturn initgeo;"},"zwgcvcc":{"id":"zwgcvcc","ref":"arg","value":"_attributes"},"x210zde":{"id":"x210zde","ref":"arg","value":"_initgeofn"},"s61o3sv":{"id":"s61o3sv","ref":"arg","value":"_inputgeofn"},"ron9hq7":{"id":"ron9hq7","ref":"arg","value":"_fn"},"hyvpcan":{"id":"hyvpcan","ref":"arg","value":"_initbuffer"},"cfg6cwi":{"id":"cfg6cwi","ref":"arg","value":"_fb"},"3w2rmuu":{"id":"3w2rmuu","ref":"arg","value":"_lag"},"oh2v6pq":{"id":"oh2v6pq","ref":"@js.script","value":"return values.every(v => v);"},"c272oro":{"id":"c272oro","ref":"@data.array"},"tc49gqg":{"id":"tc49gqg","ref":"@flow.default"},"v2pdw1m":{"id":"v2pdw1m","ref":"arg","value":"__graph_value"},"1huvnux":{"id":"1huvnux","ref":"arg","value":"attribute"},"c2cadg0":{"id":"c2cadg0","ref":"arg","value":"fn"},"args":{"id":"args","ref":"extern","value":"extern.data"},"st1qot0":{"id":"st1qot0","ref":"@memory.state"},"lsmnhra":{"id":"lsmnhra","ref":"@memory.state"},"8dy573e":{"id":"8dy573e","ref":"@html.html_element"},"ril0xrx":{"id":"ril0xrx","ref":"@data.array"},"apdh5jc":{"id":"apdh5jc","ref":"@html.html_element"},"aygb0oi":{"id":"aygb0oi","ref":"@data.array"},"302jicy":{"id":"302jicy","ref":"@html.html_element","value":"input"},"pk1bbc4":{"id":"pk1bbc4"},"t9zciub":{"id":"t9zciub","ref":"arg","value":"_animframe.state"},"aj17mw0":{"id":"aj17mw0","value":"checkbox"},"0tgg4sp":{"id":"0tgg4sp","ref":"@flow.ap"},"5bfpjjf":{"id":"5bfpjjf","ref":"arg","value":"_animframe.set"},"43bg3g9":{"id":"43bg3g9"},"nxcfe4q":{"id":"nxcfe4q","ref":"arg","value":"event.target.checked"},"1tx5wnh":{"id":"1tx5wnh","ref":"@html.html_text","value":"update"},"16s251p":{"id":"16s251p","ref":"@html.html_element"},"yai4q6q":{"id":"yai4q6q","ref":"@data.array"},"y6jnnhr":{"id":"y6jnnhr","ref":"@html.html_text","value":"feedback"},"ha9sbe6":{"id":"ha9sbe6","ref":"@html.html_element","value":"input"},"1oskoai":{"id":"1oskoai"},"vkwxqas":{"id":"vkwxqas","ref":"arg","value":"_feedback.state"},"qapcl0i":{"id":"qapcl0i","value":"checkbox"},"dtp36mu":{"id":"dtp36mu","ref":"@flow.ap"},"8uiwk65":{"id":"8uiwk65","ref":"arg","value":"_feedback.set"},"1eft9yl":{"id":"1eft9yl"},"mrpotq6":{"id":"mrpotq6","ref":"arg","value":"event.target.checked"}},"out":"out"},{"description":"Applies an instantaneous force vector attribute to the velocity attribute. Then updates position based on velocity.","edges":{"5e0bf11":{"as":"args","from":"5e0bf11","to":"glfw0eh"},"sbvh6lz":{"as":"display","from":"sbvh6lz","to":"glfw0eh"},"vkhfnnr":{"as":"value","from":"vkhfnnr","to":"glfw0eh"},"5j0vv79":{"as":"true","from":"5j0vv79","to":"vkhfnnr"},"eml4hhq":{"as":"false","from":"eml4hhq","to":"vkhfnnr"},"wxtf2fm":{"as":"pred","from":"wxtf2fm","to":"vkhfnnr"},"rw70t8y":{"as":"geo","from":"rw70t8y","to":"wxtf2fm"},"7jocdxh":{"as":"fn","from":"7jocdxh","to":"5j0vv79"},"t01cc47":{"as":"feedback","from":"t01cc47","to":"5j0vv79"},"uirup9f":{"as":"geo","from":"uirup9f","to":"5j0vv79"},"9tvyu43":{"as":"recache","from":"9tvyu43","to":"7jocdxh"},"svoqvns":{"as":"value","from":"svoqvns","to":"7jocdxh"},"2xgt521":{"as":"value","from":"2xgt521","to":"svoqvns"},"xfqynqz":{"as":"args","from":"xfqynqz","to":"svoqvns"},"0s25fmi":{"as":"_prevpdcontainer","from":"0s25fmi","to":"xfqynqz"},"hkjxj2g":{"as":"initial","from":"hkjxj2g","to":"0s25fmi"},"0dszhup":{"as":"runnable","from":"0dszhup","to":"2xgt521"},"llnn91t":{"as":"fn","from":"llnn91t","to":"0dszhup"},"qzq5mv5":{"as":"parameters","from":"qzq5mv5","to":"0dszhup"},"9608hsp":{"as":"point_data","from":"9608hsp","to":"qzq5mv5"},"1mse9kr":{"as":"pos","from":"1mse9kr","to":"llnn91t"},"3uljew2":{"as":"v","from":"3uljew2","to":"llnn91t"},"9097yho":{"as":"forcefn","from":"9097yho","to":"llnn91t"},"ix1lvmn":{"as":"point_data","from":"ix1lvmn","to":"llnn91t"},"jydwnyg":{"as":"damp","from":"jydwnyg","to":"llnn91t"},"thc1wto":{"as":"previous_point_data","from":"thc1wto","to":"llnn91t"},"xa3wutr":{"as":"index","from":"xa3wutr","to":"llnn91t"},"yn15dgz":{"as":"force","from":"yn15dgz","to":"llnn91t"},"g4prpop":{"as":"point_data","from":"g4prpop","to":"thc1wto"},"jor67ih":{"as":"prev","from":"jor67ih","to":"thc1wto"},"l7akjm7":{"as":"container","from":"l7akjm7","to":"thc1wto"},"y0gre9d":{"as":"index","from":"y0gre9d","to":"thc1wto"},"3i4d5hh":{"as":"target","from":"3i4d5hh","to":"l7akjm7"},"5hu3q1j":{"as":"target","from":"5hu3q1j","to":"jor67ih"},"ao0tpkm":{"as":"values","from":"ao0tpkm","to":"9tvyu43"},"1ezb4fv":{"as":"arg0","from":"1ezb4fv","to":"ao0tpkm"},"fs0z6w8":{"as":"arg1","from":"fs0z6w8","to":"ao0tpkm"},"28wgjri":{"as":"value","from":"28wgjri","to":"fs0z6w8"},"1bw79k6":{"as":"value","from":"1bw79k6","to":"1ezb4fv"},"4extjs8":{"as":"props","from":"4extjs8","to":"sbvh6lz"},"qqosk8y":{"as":"children","from":"qqosk8y","to":"sbvh6lz"},"58bh5c0":{"as":"onpointerup","from":"58bh5c0","to":"4extjs8"},"gktb1wh":{"as":"onpointerdown","from":"gktb1wh","to":"4extjs8"},"e20k3gp":{"as":"fn","from":"e20k3gp","to":"gktb1wh"},"uy2lf6r":{"as":"args","from":"uy2lf6r","to":"gktb1wh"},"pc0o532":{"as":"value","from":"pc0o532","to":"uy2lf6r"},"srnm0s1":{"as":"fn","from":"srnm0s1","to":"58bh5c0"},"wli26lm":{"as":"args","from":"wli26lm","to":"58bh5c0"},"yjgf8l3":{"as":"value","from":"yjgf8l3","to":"wli26lm"},"9ibt0ds":{"as":"_position","from":"9ibt0ds","to":"5e0bf11"},"aqt67la":{"as":"_reset","from":"aqt67la","to":"5e0bf11"},"szm37b8":{"as":"publish","from":"szm37b8","to":"aqt67la"}},"id":"@three.applyForce","name":"@three.applyForce","nodes":{"glfw0eh":{"id":"glfw0eh","name":"@three.applyForce","ref":"return"},"vkhfnnr":{"id":"vkhfnnr","ref":"@flow.if"},"wxtf2fm":{"id":"wxtf2fm","ref":"@js.script","value":"return !!geo"},"rw70t8y":{"id":"rw70t8y","ref":"arg","value":"geo"},"eml4hhq":{"id":"eml4hhq","ref":"arg","value":"geo"},"5j0vv79":{"id":"5j0vv79","ref":"@three.modify_attribute","value":"force,position,velocity"},"uirup9f":{"id":"uirup9f","ref":"arg","value":"geo"},"t01cc47":{"id":"t01cc47","value":"true"},"7jocdxh":{"id":"7jocdxh","ref":"@memory.cache"},"svoqvns":{"id":"svoqvns","ref":"return"},"xfqynqz":{"id":"xfqynqz"},"0s25fmi":{"id":"0s25fmi","ref":"@memory.reference"},"hkjxj2g":{"id":"hkjxj2g","value":"{}"},"2xgt521":{"id":"2xgt521","ref":"@js.create_fn"},"0dszhup":{"id":"0dszhup","ref":"@flow.runnable"},"qzq5mv5":{"id":"qzq5mv5"},"9608hsp":{"id":"9608hsp"},"llnn91t":{"id":"llnn91t","ref":"@js.script","value":"if(forcefn) forcefn({point_data, previous_point_data, index});\n\nforce.forEach((f, i) => {\n  v[i] *= 1 - (damp ?? 0)\n  v[i] += f ?? 0;\n})\n\nv.forEach((vv, i) => pos[i] += vv)"},"yn15dgz":{"id":"yn15dgz","ref":"arg","value":"point_data.force"},"xa3wutr":{"id":"xa3wutr","ref":"arg","value":"index"},"thc1wto":{"id":"thc1wto","ref":"@js.script","value":"if(!prev || prev.attributes.position.array.length === 0) return point_data;\nconst attrs = Object.keys(prev.attributes);\nlet attr;\nfor(let name of attrs){\n  attr = prev.getAttribute(name);\n  if(!container[name] || container[name].length !== attr.array.length) {\n    container[name] = new Float32Array(attr.itemSize)\n  }\n                         container[name].set(attr.array.subarray(index * attr.itemSize, (1 + index) * attr.itemSize));\n}\n\nreturn container;"},"y0gre9d":{"id":"y0gre9d","ref":"arg","value":"index"},"l7akjm7":{"id":"l7akjm7","ref":"@data.get","value":"value"},"3i4d5hh":{"id":"3i4d5hh","ref":"arg","value":"_prevpdcontainer"},"jor67ih":{"id":"jor67ih","ref":"@data.get","value":"value"},"5hu3q1j":{"id":"5hu3q1j","ref":"arg","value":"_position"},"g4prpop":{"id":"g4prpop","ref":"arg","value":"point_data"},"jydwnyg":{"id":"jydwnyg","ref":"arg","value":"damping"},"ix1lvmn":{"id":"ix1lvmn","ref":"arg","value":"point_data"},"9097yho":{"id":"9097yho","ref":"arg","value":"forcefn"},"3uljew2":{"id":"3uljew2","ref":"arg","value":"point_data.velocity"},"1mse9kr":{"id":"1mse9kr","ref":"arg","value":"point_data.position"},"9tvyu43":{"id":"9tvyu43","ref":"@js.script","value":"return !values.every(v => !v);"},"ao0tpkm":{"id":"ao0tpkm","ref":"@data.array"},"fs0z6w8":{"id":"fs0z6w8","ref":"@data.isunchanged"},"28wgjri":{"id":"28wgjri","ref":"arg","value":"forcefn"},"1ezb4fv":{"id":"1ezb4fv","ref":"@data.isunchanged"},"1bw79k6":{"id":"1bw79k6","ref":"arg","value":"_position.value"},"sbvh6lz":{"id":"sbvh6lz","ref":"@html.html_element","value":"button"},"qqosk8y":{"id":"qqosk8y","value":"reset"},"4extjs8":{"id":"4extjs8"},"gktb1wh":{"id":"gktb1wh","ref":"@flow.ap"},"uy2lf6r":{"id":"uy2lf6r"},"pc0o532":{"id":"pc0o532","value":"true"},"e20k3gp":{"id":"e20k3gp","ref":"arg","value":"_reset.set"},"58bh5c0":{"id":"58bh5c0","ref":"@flow.ap"},"wli26lm":{"id":"wli26lm"},"yjgf8l3":{"id":"yjgf8l3","value":"false"},"srnm0s1":{"id":"srnm0s1","ref":"arg","value":"_reset.set"},"5e0bf11":{"id":"5e0bf11"},"aqt67la":{"id":"aqt67la","ref":"@memory.state"},"szm37b8":{"id":"szm37b8","value":"true"},"9ibt0ds":{"id":"9ibt0ds","ref":"@memory.reference"}},"out":"glfw0eh"},{"description":"A three.js [PerspectiveCamera](https://threejs.org/docs/?q=camera#api/en/cameras/PerspectiveCamera)","edges":{"args":{"as":"args","from":"args","to":"main/out"},"on0gkah":{"as":"lib","from":"on0gkah","to":"main/out"},"x4zdk2w":{"as":"value","from":"x4zdk2w","to":"main/out"},"11u8kd6":{"as":"height","from":"11u8kd6","to":"x4zdk2w"},"qvf3y0y":{"as":"width","from":"qvf3y0y","to":"x4zdk2w"},"dln8uxf":{"as":"THREE","from":"dln8uxf","to":"on0gkah"},"h1x8bxs":{"as":"value","from":"h1x8bxs","to":"dln8uxf"},"n79e1ca":{"as":"THREE","from":"n79e1ca","to":"args"},"vjfgmrl":{"as":"value","from":"vjfgmrl","to":"n79e1ca"}},"id":"@three.camera","nodes":{"main/out":{"__isnodysseus":true,"id":"main/out","name":"@three.camera","ref":"return"},"x4zdk2w":{"id":"x4zdk2w","ref":"@js.script","value":"return new _lib.THREE.PerspectiveCamera( 75, width / height, 0.1, 1000 );"},"qvf3y0y":{"id":"qvf3y0y","ref":"arg","value":"canvas.width"},"11u8kd6":{"id":"11u8kd6","ref":"arg","value":"canvas.height"},"on0gkah":{"id":"on0gkah","ref":"extern","value":"extern.data"},"dln8uxf":{"id":"dln8uxf","ref":"@memory.cache"},"h1x8bxs":{"id":"h1x8bxs","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/build/three.module.js"},"args":{"id":"args","ref":"extern","value":"extern.data"},"n79e1ca":{"id":"n79e1ca","ref":"@memory.cache"},"vjfgmrl":{"id":"vjfgmrl","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/build/three.module.js"}},"out":"main/out"},{"edges":{"simstt1":{"as":"value","from":"simstt1","to":"3svuiof"},"wyv8g10":{"as":"args","from":"wyv8g10","to":"3svuiof"},"59dmz8o":{"as":"target","from":"59dmz8o","to":"simstt1"},"n61vu1g":{"as":"array","from":"n61vu1g","to":"59dmz8o"},"xiyofrj":{"as":"fn","from":"xiyofrj","to":"59dmz8o"},"0y5xgcs":{"as":"fn","from":"0y5xgcs","to":"xiyofrj"},"avo907o":{"as":"parameters","from":"avo907o","to":"xiyofrj"},"20xmfge":{"as":"index","from":"20xmfge","to":"avo907o"},"ffr6feq":{"as":"obj","from":"ffr6feq","to":"0y5xgcs"},"tzc105q":{"as":"grp","from":"tzc105q","to":"0y5xgcs"},"f9wcb4r":{"as":"value","from":"f9wcb4r","to":"tzc105q"},"0y9nyxp":{"as":"run","from":"0y9nyxp","to":"ffr6feq"},"v4amk2b":{"as":"args","from":"v4amk2b","to":"ffr6feq"},"yl6mpwh":{"as":"fn","from":"yl6mpwh","to":"ffr6feq"},"edgtusk":{"as":"object","from":"edgtusk","to":"v4amk2b"},"syiu3dv":{"as":"index","from":"syiu3dv","to":"v4amk2b"},"r4zrusw":{"as":"obj","from":"r4zrusw","to":"edgtusk"},"ure02v3":{"as":"index","from":"ure02v3","to":"edgtusk"},"w20inzg":{"as":"graphid","from":"w20inzg","to":"edgtusk"},"447wkkn":{"as":"count","from":"447wkkn","to":"n61vu1g"}},"id":"@three.copyObject","name":"@three.copyObject","nodes":{"3svuiof":{"id":"3svuiof","name":"@three.copyObject","ref":"return"},"wyv8g10":{"id":"wyv8g10"},"simstt1":{"id":"simstt1","ref":"@data.get","value":"0"},"59dmz8o":{"id":"59dmz8o","ref":"@data.map"},"xiyofrj":{"id":"xiyofrj","ref":"@flow.runnable"},"avo907o":{"id":"avo907o"},"20xmfge":{"id":"20xmfge"},"0y5xgcs":{"id":"0y5xgcs","ref":"@js.script","value":"grp.add(obj)\nreturn grp"},"tzc105q":{"id":"tzc105q","ref":"@memory.graphchangecache"},"f9wcb4r":{"id":"f9wcb4r","ref":"@js.new","value":"THREE.Group"},"ffr6feq":{"id":"ffr6feq","ref":"@flow.ap"},"yl6mpwh":{"id":"yl6mpwh","ref":"arg","value":"transform"},"v4amk2b":{"id":"v4amk2b"},"syiu3dv":{"id":"syiu3dv","ref":"arg","value":"index"},"edgtusk":{"id":"edgtusk","ref":"@js.script","value":"const cloned = obj.clone();\ncloned.name = `${graphid}-${index}`\nreturn cloned;"},"w20inzg":{"id":"w20inzg","ref":"arg","value":"__graphid"},"ure02v3":{"id":"ure02v3","ref":"arg","value":"index"},"r4zrusw":{"id":"r4zrusw","ref":"arg","value":"object"},"0y9nyxp":{"id":"0y9nyxp","value":"true"},"n61vu1g":{"id":"n61vu1g","ref":"@js.script","value":"return new Array(count).fill(0)"},"447wkkn":{"id":"447wkkn","ref":"arg","value":"count"}},"out":"3svuiof"},{"description":"Extrudes a geometry using THREE.ExtrudeGeometry","edges":{"e08m3vg":{"as":"args","from":"e08m3vg","to":"out"},"output_val":{"as":"value","from":"output_val","to":"out"},"j819k9c":{"as":"_geometry","from":"j819k9c","to":"e08m3vg"},"7jw4lsu":{"as":"options","from":"7jw4lsu","to":"j819k9c"},"ka77yfe":{"as":"shape","from":"ka77yfe","to":"j819k9c"},"8w8gfzn":{"as":"target","from":"8w8gfzn","to":"7jw4lsu"},"mrevz1i":{"as":"arg0","from":"mrevz1i","to":"7jw4lsu"}},"id":"@three.extrude","nodes":{"out":{"id":"out","name":"@three.extrude","ref":"return"},"output_val":{"id":"output_val","ref":"arg","value":"_geometry"},"e08m3vg":{"id":"e08m3vg"},"j819k9c":{"id":"j819k9c","ref":"@js.script","value":"\nreturn new _lib.THREE.ExtrudeGeometry(shape, options);"},"ka77yfe":{"id":"ka77yfe","ref":"arg","value":"shapes"},"7jw4lsu":{"id":"7jw4lsu","ref":"@data.merge_objects_mutable"},"mrevz1i":{"id":"mrevz1i","ref":"arg","value":"_args"},"8w8gfzn":{"id":"8w8gfzn","value":"{}"}},"out":"out"},{"description":"Import an EffectPass from three.js [postprocessing directory](https://github.com/mrdoob/three.js/tree/master/examples/jsm/postprocessing)","edges":{"cknmtsk":{"as":"value","from":"cknmtsk","to":"t2wl30j"},"q4tskdl":{"as":"args","from":"q4tskdl","to":"t2wl30j"},"d4kcr9g":{"as":"name","from":"d4kcr9g","to":"q4tskdl"},"20oh4kr":{"as":"value","from":"20oh4kr","to":"d4kcr9g"},"ji51v7a":{"as":"otherwise","from":"ji51v7a","to":"d4kcr9g"},"id8jixz":{"as":"value","from":"id8jixz","to":"cknmtsk"},"k02afe9":{"as":"args","from":"k02afe9","to":"id8jixz"},"stp926h":{"as":"Pass","from":"stp926h","to":"id8jixz"},"2tffpiq":{"as":"path","from":"2tffpiq","to":"stp926h"},"r5a95d2":{"as":"target","from":"r5a95d2","to":"stp926h"},"y6p5j3a":{"as":"url","from":"y6p5j3a","to":"r5a95d2"},"wonswm4":{"as":"name","from":"wonswm4","to":"y6p5j3a"},"gp1qalc":{"as":"otherwise","from":"gp1qalc","to":"k02afe9"},"ztsrxfz":{"as":"value","from":"ztsrxfz","to":"k02afe9"}},"id":"@three.fx_pass","name":"FxPass","nodes":{"t2wl30j":{"id":"t2wl30j","name":"@three.fx_pass","ref":"return"},"q4tskdl":{"id":"q4tskdl"},"d4kcr9g":{"id":"d4kcr9g","ref":"@flow.default"},"ji51v7a":{"id":"ji51v7a","ref":"arg","value":"__graph_value"},"20oh4kr":{"id":"20oh4kr","ref":"arg","value":"name"},"cknmtsk":{"id":"cknmtsk","ref":"@memory.graphchangecache"},"id8jixz":{"id":"id8jixz","ref":"@js.script","value":"return new Pass(...args);"},"stp926h":{"id":"stp926h","ref":"@data.get"},"r5a95d2":{"id":"r5a95d2","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/postprocessing/AfterimagePass.js"},"y6p5j3a":{"id":"y6p5j3a","ref":"@js.script","value":"return `https://cdn.jsdelivr.net/npm/three/examples/jsm/postprocessing/${name}.js`"},"wonswm4":{"id":"wonswm4","ref":"arg","value":"name"},"2tffpiq":{"id":"2tffpiq","ref":"arg","value":"name"},"k02afe9":{"id":"k02afe9","ref":"@flow.default"},"ztsrxfz":{"id":"ztsrxfz","ref":"arg","value":"args"},"gp1qalc":{"id":"gp1qalc","value":"[]"}},"out":"t2wl30j"},{"description":"Use a fragment shader as a three.js shader pass.","edges":{"020skie":{"as":"value","from":"020skie","to":"t2wl30j"},"q4tskdl":{"as":"args","from":"q4tskdl","to":"t2wl30j"},"d4kcr9g":{"as":"name","from":"d4kcr9g","to":"q4tskdl"},"20oh4kr":{"as":"value","from":"20oh4kr","to":"d4kcr9g"},"ji51v7a":{"as":"otherwise","from":"ji51v7a","to":"d4kcr9g"},"7a8p5tc":{"as":"value","from":"7a8p5tc","to":"020skie"},"p5ybna1":{"as":"subscribe","from":"p5ybna1","to":"020skie"},"qq4228z":{"as":"args","from":"qq4228z","to":"020skie"},"vhc6af0":{"as":"shader","from":"vhc6af0","to":"qq4228z"},"id8jixz":{"as":"value","from":"id8jixz","to":"vhc6af0"},"na3d3gk":{"as":"shader","from":"na3d3gk","to":"id8jixz"},"q3dfbvj":{"as":"Pass","from":"q3dfbvj","to":"id8jixz"},"stp926h":{"as":"value","from":"stp926h","to":"q3dfbvj"},"r5a95d2":{"as":"target","from":"r5a95d2","to":"stp926h"},"y6p5j3a":{"as":"url","from":"y6p5j3a","to":"r5a95d2"},"wonswm4":{"as":"name","from":"wonswm4","to":"y6p5j3a"},"k02afe9":{"as":"value","from":"k02afe9","to":"na3d3gk"},"lbnpwro":{"as":"uniforms","from":"lbnpwro","to":"k02afe9"},"pkc7ahm":{"as":"vertexShader","from":"pkc7ahm","to":"k02afe9"},"w21kxjr":{"as":"fragmentShader","from":"w21kxjr","to":"k02afe9"},"j6vdmp8":{"as":"otherwise","from":"j6vdmp8","to":"pkc7ahm"},"ztsrxfz":{"as":"value","from":"ztsrxfz","to":"pkc7ahm"},"8ku3swe":{"as":"uniforms","from":"8ku3swe","to":"lbnpwro"},"nzl1k7m":{"as":"animationframe","from":"nzl1k7m","to":"p5ybna1"},"wpipqoa":{"as":"fn","from":"wpipqoa","to":"nzl1k7m"},"csbvqhk":{"as":"arguniforms","from":"csbvqhk","to":"wpipqoa"},"xz1by66":{"as":"shaderuniforms","from":"xz1by66","to":"wpipqoa"},"ubre7xk":{"as":"value","from":"ubre7xk","to":"xz1by66"}},"id":"@three.fx_shader_pass","name":"FxPass","nodes":{"t2wl30j":{"id":"t2wl30j","name":"@three.fx_shader_pass","ref":"return"},"q4tskdl":{"id":"q4tskdl"},"d4kcr9g":{"id":"d4kcr9g","ref":"@flow.default"},"ji51v7a":{"id":"ji51v7a","ref":"arg","value":"__graph_value"},"20oh4kr":{"id":"20oh4kr","ref":"arg","value":"name"},"020skie":{"id":"020skie","ref":"return"},"qq4228z":{"id":"qq4228z"},"vhc6af0":{"id":"vhc6af0","ref":"@memory.graphchangecache"},"id8jixz":{"id":"id8jixz","ref":"@js.script","value":"return new Pass(shader);"},"q3dfbvj":{"id":"q3dfbvj","ref":"@memory.cache"},"stp926h":{"id":"stp926h","ref":"@data.get","value":"ShaderPass"},"r5a95d2":{"id":"r5a95d2","ref":"@js.import_module"},"y6p5j3a":{"id":"y6p5j3a","ref":"@js.script","value":"return `https://cdn.jsdelivr.net/npm/three/examples/jsm/postprocessing/${name}.js`"},"wonswm4":{"id":"wonswm4","value":"ShaderPass"},"na3d3gk":{"id":"na3d3gk","ref":"@debug.log","value":"shaderval"},"k02afe9":{"id":"k02afe9"},"w21kxjr":{"id":"w21kxjr","ref":"arg","value":"fragmentShader"},"pkc7ahm":{"id":"pkc7ahm","ref":"@flow.default"},"ztsrxfz":{"id":"ztsrxfz","ref":"arg","value":"vertexShader"},"j6vdmp8":{"id":"j6vdmp8","ref":"@js.script","value":"return `\n\t\t\tattribute vec4 color;\n\n   varying vec2 vUv;\n\n\n\t\t\tvoid main()\t{\n\n\tvUv = uv;\n    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t\t}\n\n`"},"lbnpwro":{"id":"lbnpwro","ref":"@js.script","value":"console.log(uniforms);\nconst ret =  Object.fromEntries(Object.entries(uniforms ?? {}).map(e => [e[0], typeof e[1] === \"object\" && Object.hasOwn(e[1], \"value\") ? e[1] : {value: e[1]}]))\nconsole.log(ret);\nreturn ret;"},"8ku3swe":{"id":"8ku3swe","ref":"arg","value":"uniforms"},"p5ybna1":{"id":"p5ybna1"},"nzl1k7m":{"id":"nzl1k7m","ref":"@flow.runnable"},"wpipqoa":{"id":"wpipqoa","ref":"@js.script","value":"arguniforms && shaderuniforms && Object.keys(arguniforms).forEach(k => shaderuniforms[k].value = typeof  arguniforms[k] === \"object\" && Object.hasOwn(arguniforms[k], \"value\") ? arguniforms[k].value : arguniforms[k]);"},"xz1by66":{"id":"xz1by66","ref":"@memory.graphchangecache"},"ubre7xk":{"id":"ubre7xk","ref":"arg","value":"shader.uniforms"},"csbvqhk":{"id":"csbvqhk","ref":"arg","value":"uniforms"},"7a8p5tc":{"id":"7a8p5tc","ref":"arg","value":"shader"}},"out":"t2wl30j"},{"description":"Creates a BufferGeometry using the specified constructor and input nodes as arguments.","edges":{"7vhuixq":{"as":"metadata","from":"7vhuixq","to":"out"},"e08m3vg":{"as":"args","from":"e08m3vg","to":"out"},"output_val":{"as":"value","from":"output_val","to":"out"},"wl24jbc":{"as":"lib","from":"wl24jbc","to":"out"},"tsd4zz1":{"as":"THREE","from":"tsd4zz1","to":"wl24jbc"},"kphtl0m":{"as":"_geometry","from":"kphtl0m","to":"e08m3vg"},"j819k9c":{"as":"true","from":"j819k9c","to":"kphtl0m"},"z82dq3u":{"as":"pred","from":"z82dq3u","to":"kphtl0m"},"7jw4lsu":{"as":"args","from":"7jw4lsu","to":"j819k9c"},"g2xpahw":{"as":"name","from":"g2xpahw","to":"j819k9c"},"8w8gfzn":{"as":"target","from":"8w8gfzn","to":"7jw4lsu"},"mrevz1i":{"as":"arg0","from":"mrevz1i","to":"7jw4lsu"},"4or2htn":{"as":"values","from":"4or2htn","to":"7vhuixq"},"ccmvwyl":{"as":"parameters","from":"ccmvwyl","to":"7vhuixq"},"a3ljk0v":{"as":"true","from":"a3ljk0v","to":"ccmvwyl"},"es3j1s8":{"as":"pred","from":"es3j1s8","to":"ccmvwyl"},"r8fus3z":{"as":"geometry","from":"r8fus3z","to":"a3ljk0v"},"gl3wugl":{"as":"value","from":"gl3wugl","to":"r8fus3z"},"nyv9f1b":{"as":"recache","from":"nyv9f1b","to":"r8fus3z"},"86qm2fw":{"as":"value","from":"86qm2fw","to":"nyv9f1b"}},"id":"@three.geometry","nodes":{"out":{"id":"out","name":"@three.geometry","ref":"return"},"wl24jbc":{"id":"wl24jbc"},"tsd4zz1":{"id":"tsd4zz1","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/build/three.module.js"},"output_val":{"id":"output_val","ref":"arg","value":"_geometry"},"e08m3vg":{"id":"e08m3vg"},"kphtl0m":{"id":"kphtl0m","ref":"@flow.if"},"z82dq3u":{"id":"z82dq3u","ref":"arg","value":"__graph_value"},"j819k9c":{"id":"j819k9c","ref":"@js.script","value":"return _lib.THREE[name].fromJSON?.(args ?? {}) ?? new _lib.THREE[name](Object.values(args ?? {}));"},"g2xpahw":{"id":"g2xpahw","ref":"arg","value":"__graph_value"},"7jw4lsu":{"id":"7jw4lsu","ref":"@data.merge_objects_mutable"},"mrevz1i":{"id":"mrevz1i","ref":"arg","value":"_args"},"8w8gfzn":{"id":"8w8gfzn","value":"{}"},"7vhuixq":{"id":"7vhuixq"},"ccmvwyl":{"id":"ccmvwyl","ref":"@flow.if"},"es3j1s8":{"id":"es3j1s8","ref":"arg","value":"__graph_value"},"a3ljk0v":{"id":"a3ljk0v","ref":"@js.script","value":"const keys = Array.from(Object.keys(geometry.parameters))\nreturn Object.fromEntries(keys.map(k => [k, \"any\"]));"},"r8fus3z":{"id":"r8fus3z","ref":"@memory.cache"},"nyv9f1b":{"id":"nyv9f1b","ref":"@data.ischanged"},"86qm2fw":{"id":"86qm2fw","ref":"arg","value":"__graph_value"},"gl3wugl":{"id":"gl3wugl","ref":"arg","value":"_geometry"},"4or2htn":{"id":"4or2htn","ref":"@js.script","value":"return _lib.THREE && Object.keys(_lib.THREE).filter(k => k.endsWith(\"Geometry\"))"}},"out":"out"},{"edges":{"df314cg":{"as":"args","from":"df314cg","to":"ze9loi5"},"rlaff85":{"as":"value","from":"rlaff85","to":"ze9loi5"},"50dxh0h":{"as":"geometry","from":"50dxh0h","to":"rlaff85"}},"id":"@three.geometryShape","name":"@three.geometryShape","nodes":{"ze9loi5":{"id":"ze9loi5","name":"@three.geometryShape","ref":"return"},"rlaff85":{"id":"rlaff85","ref":"@js.script","value":"const points = [];\nconst pos = geometry.getAttribute(\"position\");\nfor(let i = 0; i < pos.count; i++) {\n  points[i] = new _lib.THREE.Vector2();\n  points[i].fromArray(pos.array, i * 3)\n}\n\nreturn new _lib.THREE.Shape(points)"},"50dxh0h":{"id":"50dxh0h","ref":"arg","value":"geometry"},"df314cg":{"id":"df314cg"}},"out":"ze9loi5"},{"description":"Save and load assets such as geometry, images, etc.","edges":{"6owogjm":{"as":"value","from":"6owogjm","to":"r3wy7qr"},"8ug5ygt":{"as":"display","from":"8ug5ygt","to":"r3wy7qr"},"py60aki":{"as":"args","from":"py60aki","to":"r3wy7qr"},"v4zu63j":{"as":"_manager","from":"v4zu63j","to":"py60aki"},"z9cjc2k":{"as":"_assetstate","from":"z9cjc2k","to":"py60aki"},"pdbinbg":{"as":"assetname","from":"pdbinbg","to":"v4zu63j"},"0xucdak":{"as":"value","from":"0xucdak","to":"6owogjm"},"cmrjgyv":{"as":"args","from":"cmrjgyv","to":"6owogjm"},"78983lz":{"as":"file","from":"78983lz","to":"cmrjgyv"},"kfyzav1":{"as":"file","from":"kfyzav1","to":"78983lz"},"ju0gq9n":{"as":"target","from":"ju0gq9n","to":"kfyzav1"},"b9wjaqz":{"as":"pred","from":"b9wjaqz","to":"0xucdak"},"ddhuoh2":{"as":"true","from":"ddhuoh2","to":"0xucdak"},"cgya4cs":{"as":"input","from":"cgya4cs","to":"ddhuoh2"},"mtjltoq":{"as":"buffergeo","from":"mtjltoq","to":"ddhuoh2"},"nzdbmwo":{"as":"gltf","from":"nzdbmwo","to":"ddhuoh2"},"6mnggoe":{"as":"file","from":"6mnggoe","to":"nzdbmwo"},"n3lcnwc":{"as":"gltfLoader","from":"n3lcnwc","to":"nzdbmwo"},"xmyi1yi":{"as":"value","from":"xmyi1yi","to":"n3lcnwc"},"65bdnhk":{"as":"GLTFLoader","from":"65bdnhk","to":"xmyi1yi"},"rxalntn":{"as":"target","from":"rxalntn","to":"65bdnhk"},"ckl1s1u":{"as":"file","from":"ckl1s1u","to":"mtjltoq"},"cnqbqcm":{"as":"buffergeoLoader","from":"cnqbqcm","to":"mtjltoq"},"aqxr41s":{"as":"file","from":"aqxr41s","to":"cgya4cs"}},"id":"@three.geometry_loader","name":"@three.geometry_loader","nodes":{"r3wy7qr":{"id":"r3wy7qr","name":"@three.geometry_loader","ref":"return"},"py60aki":{"id":"py60aki"},"z9cjc2k":{"id":"z9cjc2k","ref":"@memory.state"},"v4zu63j":{"id":"v4zu63j","ref":"@memory.assetmanager"},"pdbinbg":{"id":"pdbinbg","ref":"arg","value":"assetname"},"8ug5ygt":{"id":"8ug5ygt","ref":"arg","value":"_manager"},"6owogjm":{"id":"6owogjm","ref":"return"},"cmrjgyv":{"id":"cmrjgyv"},"78983lz":{"id":"78983lz","ref":"@js.script","value":"return !file ? false : (file.type === \"application/json\" ? file.text() : file.arrayBuffer()).then(data => ({data, name: file.name, type: file.type}));"},"kfyzav1":{"id":"kfyzav1","ref":"@data.get","value":"file"},"ju0gq9n":{"id":"ju0gq9n","ref":"arg","value":"_manager"},"0xucdak":{"id":"0xucdak","ref":"@flow.if"},"ddhuoh2":{"id":"ddhuoh2","ref":"@flow.switch"},"nzdbmwo":{"id":"nzdbmwo","ref":"@js.script","value":"return new Promise((res, rej) =>  gltfLoader.parse(file.data, \"\", l => res(l.scene.children), e => rej(e)));"},"n3lcnwc":{"id":"n3lcnwc","ref":"@memory.cache"},"xmyi1yi":{"id":"xmyi1yi","ref":"@js.script","value":"return new GLTFLoader();"},"65bdnhk":{"id":"65bdnhk","ref":"@data.get","value":"GLTFLoader"},"rxalntn":{"id":"rxalntn","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/loaders/GLTFLoader.js"},"6mnggoe":{"id":"6mnggoe","ref":"arg","value":"file"},"mtjltoq":{"id":"mtjltoq","ref":"@js.script","value":"const geo  = buffergeoLoader.parse(JSON.parse(file.data));\n\ngeo.computeVertexNormals();\nreturn geo;"},"cnqbqcm":{"id":"cnqbqcm","ref":"@js.new","value":"THREE.BufferGeometryLoader"},"ckl1s1u":{"id":"ckl1s1u","ref":"arg","value":"file"},"cgya4cs":{"id":"cgya4cs","ref":"@js.script","value":"return file.type === \"application/json\" ? \"buffergeo\" : file.name.endsWith(\"glb\") ? \"gltf\" : undefined;"},"aqxr41s":{"id":"aqxr41s","ref":"arg","value":"file"},"b9wjaqz":{"id":"b9wjaqz","ref":"arg","value":"file"}},"out":"r3wy7qr"},{"description":"Create a THREE.Color from hue, saturation, and lightness values.","edges":{"74cf180":{"as":"value","from":"74cf180","to":"out"},"8dy573e":{"as":"display","from":"8dy573e","to":"out"},"args":{"as":"args","from":"args","to":"out"},"ra6vf6a":{"as":"_hsl","from":"ra6vf6a","to":"args"},"c1dvldn":{"as":"children","from":"c1dvldn","to":"8dy573e"},"e3cf0y2":{"as":"value","from":"e3cf0y2","to":"8dy573e"},"iw4e6c2":{"as":"arg0","from":"iw4e6c2","to":"c1dvldn"},"pg12g2d":{"as":"arg1","from":"pg12g2d","to":"c1dvldn"},"emu0880":{"as":"props","from":"emu0880","to":"pg12g2d"},"7ea5jgx":{"as":"style","from":"7ea5jgx","to":"emu0880"},"at9191c":{"as":"height","from":"at9191c","to":"7ea5jgx"},"rw9u87w":{"as":"width","from":"rw9u87w","to":"7ea5jgx"},"ylzx8qo":{"as":"backgroundColor","from":"ylzx8qo","to":"7ea5jgx"},"81ujf8j":{"as":"hue","from":"81ujf8j","to":"ylzx8qo"},"8odywaq":{"as":"saturation","from":"8odywaq","to":"ylzx8qo"},"t08jw63":{"as":"lightness","from":"t08jw63","to":"ylzx8qo"},"omunkbu":{"as":"children","from":"omunkbu","to":"iw4e6c2"},"hqg5vir":{"as":"arg2","from":"hqg5vir","to":"omunkbu"},"kpyuy53":{"as":"arg1","from":"kpyuy53","to":"omunkbu"},"w86v20w":{"as":"arg0","from":"w86v20w","to":"omunkbu"},"4xncneb":{"as":"label","from":"4xncneb","to":"w86v20w"},"pdxnxt8":{"as":"oninput","from":"pdxnxt8","to":"w86v20w"},"aph70wf":{"as":"fn","from":"aph70wf","to":"pdxnxt8"},"xdaowcs":{"as":"args","from":"xdaowcs","to":"pdxnxt8"},"fqrnpby":{"as":"value","from":"fqrnpby","to":"xdaowcs"},"t75wi18":{"as":"arg0","from":"t75wi18","to":"aph70wf"},"u0e41te":{"as":"arg1","from":"u0e41te","to":"aph70wf"},"30cyatd":{"as":"args","from":"30cyatd","to":"u0e41te"},"jxmwo4d":{"as":"fn","from":"jxmwo4d","to":"u0e41te"},"rlgdflv":{"as":"value","from":"rlgdflv","to":"30cyatd"},"aerb29c":{"as":"fn","from":"aerb29c","to":"t75wi18"},"jzmwx97":{"as":"args","from":"jzmwx97","to":"t75wi18"},"gyagyco":{"as":"value","from":"gyagyco","to":"jzmwx97"},"bw3pisc":{"as":"target","from":"bw3pisc","to":"gyagyco"},"kmas7e1":{"as":"value","from":"kmas7e1","to":"gyagyco"},"cuc1ej8":{"as":"label","from":"cuc1ej8","to":"kpyuy53"},"hulvghk":{"as":"oninput","from":"hulvghk","to":"kpyuy53"},"j98njyt":{"as":"fn","from":"j98njyt","to":"hulvghk"},"vk8axwx":{"as":"args","from":"vk8axwx","to":"hulvghk"},"ji48x6d":{"as":"value","from":"ji48x6d","to":"vk8axwx"},"ejqrswg":{"as":"arg1","from":"ejqrswg","to":"j98njyt"},"l7b87re":{"as":"arg0","from":"l7b87re","to":"j98njyt"},"dgjskzi":{"as":"fn","from":"dgjskzi","to":"l7b87re"},"vme9fb1":{"as":"args","from":"vme9fb1","to":"l7b87re"},"75i11sr":{"as":"value","from":"75i11sr","to":"vme9fb1"},"2bfvr5l":{"as":"value","from":"2bfvr5l","to":"75i11sr"},"ssbwghd":{"as":"target","from":"ssbwghd","to":"75i11sr"},"cyz42is":{"as":"args","from":"cyz42is","to":"ejqrswg"},"ig6y3zd":{"as":"fn","from":"ig6y3zd","to":"ejqrswg"},"x3ga548":{"as":"value","from":"x3ga548","to":"cyz42is"},"69anwc1":{"as":"oninput","from":"69anwc1","to":"hqg5vir"},"f3crhnx":{"as":"label","from":"f3crhnx","to":"hqg5vir"},"4xemugi":{"as":"args","from":"4xemugi","to":"69anwc1"},"tsx0nxa":{"as":"fn","from":"tsx0nxa","to":"69anwc1"},"7213y6o":{"as":"arg0","from":"7213y6o","to":"tsx0nxa"},"cpgoj68":{"as":"arg1","from":"cpgoj68","to":"tsx0nxa"},"8anrcgd":{"as":"fn","from":"8anrcgd","to":"cpgoj68"},"kaf9jnh":{"as":"args","from":"kaf9jnh","to":"cpgoj68"},"9p76jo8":{"as":"value","from":"9p76jo8","to":"kaf9jnh"},"3b75109":{"as":"args","from":"3b75109","to":"7213y6o"},"leyos8o":{"as":"fn","from":"leyos8o","to":"7213y6o"},"zr406fh":{"as":"value","from":"zr406fh","to":"3b75109"},"cl3mg4a":{"as":"target","from":"cl3mg4a","to":"zr406fh"},"yvtcxp1":{"as":"value","from":"yvtcxp1","to":"zr406fh"},"s66b66h":{"as":"value","from":"s66b66h","to":"4xemugi"},"hf7kwe4":{"as":"color","from":"hf7kwe4","to":"74cf180"},"owmjxju":{"as":"hsl","from":"owmjxju","to":"74cf180"},"fybv1nj":{"as":"value","from":"fybv1nj","to":"hf7kwe4"}},"id":"@three.hsl","name":"test123","nodes":{"out":{"id":"out","name":"@three.hsl","ref":"return"},"args":{"id":"args","ref":"extern","value":"extern.data"},"ra6vf6a":{"id":"ra6vf6a","ref":"@memory.reference"},"8dy573e":{"id":"8dy573e","ref":"@html.html_element"},"e3cf0y2":{"id":"e3cf0y2","ref":"arg","value":"_hsl"},"c1dvldn":{"id":"c1dvldn","ref":"@data.array"},"pg12g2d":{"id":"pg12g2d","ref":"@html.html_element"},"emu0880":{"id":"emu0880"},"7ea5jgx":{"id":"7ea5jgx"},"ylzx8qo":{"id":"ylzx8qo","ref":"@js.script","value":"return `hsl(${hue * 360}, ${saturation * 100}%, ${lightness * 100}%)`"},"t08jw63":{"id":"t08jw63","ref":"arg","value":"_hsl.value.lightness"},"8odywaq":{"id":"8odywaq","ref":"arg","value":"_hsl.value.saturation"},"81ujf8j":{"id":"81ujf8j","ref":"arg","value":"_hsl.value.hue"},"rw9u87w":{"id":"rw9u87w","value":"32px"},"at9191c":{"id":"at9191c","value":"32px"},"iw4e6c2":{"id":"iw4e6c2","ref":"@html.html_element"},"omunkbu":{"id":"omunkbu","ref":"@data.array"},"w86v20w":{"id":"w86v20w","ref":"@html.slider"},"pdxnxt8":{"id":"pdxnxt8","ref":"@flow.ap"},"xdaowcs":{"id":"xdaowcs"},"fqrnpby":{"id":"fqrnpby","ref":"arg","value":"value"},"aph70wf":{"id":"aph70wf","ref":"@data.array"},"u0e41te":{"id":"u0e41te","ref":"@flow.ap"},"jxmwo4d":{"id":"jxmwo4d","ref":"arg","value":"onchange"},"30cyatd":{"id":"30cyatd"},"rlgdflv":{"id":"rlgdflv","ref":"arg","value":"_hsl"},"t75wi18":{"id":"t75wi18","ref":"@flow.ap"},"jzmwx97":{"id":"jzmwx97"},"gyagyco":{"id":"gyagyco","ref":"@data.set","value":"hue"},"kmas7e1":{"id":"kmas7e1","ref":"arg","value":"value"},"bw3pisc":{"id":"bw3pisc","ref":"arg","value":"_hsl.value"},"aerb29c":{"id":"aerb29c","ref":"arg","value":"_hsl.set"},"4xncneb":{"id":"4xncneb","value":"Hue"},"kpyuy53":{"id":"kpyuy53","ref":"@html.slider"},"hulvghk":{"id":"hulvghk","ref":"@flow.ap"},"vk8axwx":{"id":"vk8axwx"},"ji48x6d":{"id":"ji48x6d","ref":"arg","value":"value"},"j98njyt":{"id":"j98njyt","ref":"@data.array"},"l7b87re":{"id":"l7b87re","ref":"@flow.ap"},"vme9fb1":{"id":"vme9fb1"},"75i11sr":{"id":"75i11sr","ref":"@data.set","value":"saturation"},"ssbwghd":{"id":"ssbwghd","ref":"arg","value":"_hsl.value"},"2bfvr5l":{"id":"2bfvr5l","ref":"arg","value":"value"},"dgjskzi":{"id":"dgjskzi","ref":"arg","value":"_hsl.set"},"ejqrswg":{"id":"ejqrswg","ref":"@flow.ap"},"ig6y3zd":{"id":"ig6y3zd","ref":"arg","value":"onchange"},"cyz42is":{"id":"cyz42is"},"x3ga548":{"id":"x3ga548","ref":"arg","value":"_hsl"},"cuc1ej8":{"id":"cuc1ej8","value":"Saturation"},"hqg5vir":{"id":"hqg5vir","ref":"@html.slider"},"f3crhnx":{"id":"f3crhnx","value":"Lightness"},"69anwc1":{"id":"69anwc1","ref":"@flow.ap"},"tsx0nxa":{"id":"tsx0nxa","ref":"@data.array"},"cpgoj68":{"id":"cpgoj68","ref":"@flow.ap"},"kaf9jnh":{"id":"kaf9jnh"},"9p76jo8":{"id":"9p76jo8","ref":"arg","value":"_hsl"},"8anrcgd":{"id":"8anrcgd","ref":"arg","value":"onchange"},"7213y6o":{"id":"7213y6o","ref":"@flow.ap"},"leyos8o":{"id":"leyos8o","ref":"arg","value":"_hsl.set"},"3b75109":{"id":"3b75109"},"zr406fh":{"id":"zr406fh","ref":"@data.set","value":"lightness"},"yvtcxp1":{"id":"yvtcxp1","ref":"arg","value":"value"},"cl3mg4a":{"id":"cl3mg4a","ref":"arg","value":"_hsl.value"},"4xemugi":{"id":"4xemugi"},"s66b66h":{"id":"s66b66h","ref":"arg","value":"value"},"74cf180":{"id":"74cf180","ref":"@js.script","value":"if(hsl){\n color.setHSL(hsl.hue, hsl.saturation, hsl.lightness)\n}\nreturn color;"},"owmjxju":{"id":"owmjxju","ref":"arg","value":"_hsl.value"},"hf7kwe4":{"id":"hf7kwe4","ref":"@memory.cache"},"fybv1nj":{"id":"fybv1nj","ref":"@js.new","value":"THREE.Color"}},"out":"out"},{"description":"Create an [InstancedMesh](https://threejs.org/docs/?q=insta#api/en/objects/InstancedMesh) templating the `geometry` input, using the `material` input, and with position, scale, rotation, and color taken from the corresponding attributes in the `points_geometry` input.","edges":{"args":{"as":"args","from":"args","to":"out"},"output_val":{"as":"value","from":"output_val","to":"out"},"01519ne":{"as":"pred","from":"01519ne","to":"output_val"},"eupgmhq":{"as":"true","from":"eupgmhq","to":"output_val"},"6eoi6m8":{"as":"value","from":"6eoi6m8","to":"eupgmhq"},"igjfrk8":{"as":"args","from":"igjfrk8","to":"eupgmhq"},"tikoz6d":{"as":"subscribe","from":"tikoz6d","to":"eupgmhq"},"8tspg8g":{"as":"animationframe","from":"8tspg8g","to":"tikoz6d"},"xhfqi8j":{"as":"fn","from":"xhfqi8j","to":"8tspg8g"},"30rflcf":{"as":"instancedMesh","from":"30rflcf","to":"xhfqi8j"},"gx1pkou":{"as":"pointGeo","from":"gx1pkou","to":"xhfqi8j"},"oth92z1":{"as":"c","from":"oth92z1","to":"xhfqi8j"},"sfdqg0s":{"as":"r","from":"sfdqg0s","to":"xhfqi8j"},"uoktt66":{"as":"m","from":"uoktt66","to":"xhfqi8j"},"hy04icp":{"as":"value","from":"hy04icp","to":"uoktt66"},"53bzipt":{"as":"value","from":"53bzipt","to":"sfdqg0s"},"il8qvek":{"as":"value","from":"il8qvek","to":"oth92z1"},"9xjhsf2":{"as":"_instancedMesh","from":"9xjhsf2","to":"igjfrk8"},"vqnjrq1":{"as":"value","from":"vqnjrq1","to":"9xjhsf2"},"u4bko6w":{"as":"args","from":"u4bko6w","to":"vqnjrq1"},"bq7aqpk":{"as":"arg0","from":"bq7aqpk","to":"u4bko6w"},"dp2azrs":{"as":"arg2","from":"dp2azrs","to":"u4bko6w"},"w9ba3wm":{"as":"arg1","from":"w9ba3wm","to":"u4bko6w"},"smi1t6k":{"as":"target","from":"smi1t6k","to":"dp2azrs"},"63aq975":{"as":"args","from":"63aq975","to":"smi1t6k"},"auq55xm":{"as":"self","from":"auq55xm","to":"smi1t6k"},"9fi1zj6":{"as":"arg0","from":"9fi1zj6","to":"63aq975"},"euzoog2":{"as":"geo","from":"euzoog2","to":"01519ne"},"pnvtdew":{"as":"pgeo","from":"pnvtdew","to":"01519ne"}},"id":"@three.instanced_mesh","nodes":{"out":{"id":"out","name":"@three.instanced_mesh","ref":"return"},"output_val":{"id":"output_val","ref":"@flow.if"},"eupgmhq":{"id":"eupgmhq","ref":"return"},"tikoz6d":{"id":"tikoz6d"},"8tspg8g":{"id":"8tspg8g","ref":"@flow.runnable"},"xhfqi8j":{"id":"xhfqi8j","ref":"@js.script","value":"\nconst position = pointGeo.getAttribute(\"position\");\nconst scale = pointGeo.getAttribute(\"scale\");\nconst rotation = pointGeo.getAttribute(\"rotation\");\nconst color = pointGeo.getAttribute(\"color\");\n\n\nconst p = new _lib.THREE.Vector3();\nconst s = new _lib.THREE.Vector3(1, 1, 1);\nconst e = new _lib.THREE.Euler();\n\nfor(let i = 0; i < position.count; i++) {\n  p.fromBufferAttribute(position, i)\n  if(scale) {\n    if(scale.itemSize === 3) {\n      if(scale.getY(i) === 0 && scale.getZ(i) === 0) {\n        s.set(scale.getX(i), scale.getX(i), scale.getX(i));\n      } else {\n        s.fromBufferAttribute(scale, i);\n      }\n    } else if (scale.itemSize === 1) {\n      s.set(scale.getX(i), scale.getX(i), scale.getX(i));\n    }\n  }\n\n  if (rotation) {\n    if(rotation.itemSize === 3) {\n      e.set(rotation.getX(i), rotation.getY(i), rotation.getZ(i), 'XYZ');\n      r.setFromEuler(e)\n    } else if(rotation.itemSize === 4) {\n      r.fromBufferAttribute(rotation, i);\n    }\n  }\n  \n  m.compose(p, r, s);\n  instancedMesh.setMatrixAt(i, m);\n\n  if(color) {\n    c.setHSL(color.getX(i), color.getY(i), color.getZ(i));\n    instancedMesh.setColorAt(i, c);\n    instancedMesh.instanceColor.needsUpdate = true;\n  }\n}\n\ninstancedMesh.instanceMatrix.needsUpdate = true;\n\n\nreturn instancedMesh;"},"uoktt66":{"id":"uoktt66","ref":"@memory.cache"},"hy04icp":{"id":"hy04icp","ref":"@js.new","value":"THREE.Matrix4"},"sfdqg0s":{"id":"sfdqg0s","ref":"@memory.cache"},"53bzipt":{"id":"53bzipt","ref":"@js.new","value":"THREE.Quaternion"},"oth92z1":{"id":"oth92z1","ref":"@memory.cache"},"il8qvek":{"id":"il8qvek","ref":"@js.new","value":"THREE.Color"},"gx1pkou":{"id":"gx1pkou","ref":"arg","value":"points_geometry"},"30rflcf":{"id":"30rflcf","ref":"arg","value":"_instancedMesh"},"igjfrk8":{"id":"igjfrk8"},"9xjhsf2":{"id":"9xjhsf2","ref":"@memory.cache"},"vqnjrq1":{"id":"vqnjrq1","ref":"@js.new","value":"THREE.InstancedMesh"},"u4bko6w":{"id":"u4bko6w","ref":"@data.array"},"w9ba3wm":{"id":"w9ba3wm","ref":"arg","value":"material"},"dp2azrs":{"id":"dp2azrs","ref":"@data.get","value":"count"},"smi1t6k":{"id":"smi1t6k","ref":"@js.call","value":"getAttribute"},"auq55xm":{"id":"auq55xm","ref":"arg","value":"points_geometry"},"63aq975":{"id":"63aq975","ref":"@data.array"},"9fi1zj6":{"id":"9fi1zj6","value":"position"},"bq7aqpk":{"id":"bq7aqpk","ref":"arg","value":"geometry"},"6eoi6m8":{"id":"6eoi6m8","ref":"arg","value":"_instancedMesh"},"01519ne":{"id":"01519ne","ref":"@js.script","value":"//return !!geo && !!pgeo\nreturn geo && pgeo?.getAttribute(\"position\")?.count > 0"},"pnvtdew":{"id":"pnvtdew","ref":"arg","value":"points_geometry"},"euzoog2":{"id":"euzoog2","ref":"arg","value":"geometry"},"args":{"id":"args","ref":"extern","value":"extern.data"}},"out":"out"},{"description":"Create a [Light](https://threejs.org/docs/?q=light#api/en/lights/Light) of the type specified in the dropdown. The `intensity` input is the light's intensity","edges":{"38zagsq":{"as":"metadata","from":"38zagsq","to":"out"},"output_val":{"as":"value","from":"output_val","to":"out"},"rgpu8gc":{"as":"lib","from":"rgpu8gc","to":"out"},"dn5axhu":{"as":"THREE","from":"dn5axhu","to":"rgpu8gc"},"6c3y90j":{"as":"args","from":"6c3y90j","to":"output_val"},"urjyf2e":{"as":"intensity","from":"urjyf2e","to":"output_val"},"vhuv19u":{"as":"selected","from":"vhuv19u","to":"output_val"},"vgloog2":{"as":"values","from":"vgloog2","to":"38zagsq"}},"id":"@three.light","nodes":{"out":{"id":"out","name":"@three.light","ref":"return"},"rgpu8gc":{"id":"rgpu8gc"},"dn5axhu":{"id":"dn5axhu","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/build/three.module.js"},"output_val":{"id":"output_val","ref":"@js.script","value":"args = args ?? [];\nconst light = selected && new _lib.THREE[selected](...args);\nif(light) {\n  if(intensity) light.intensity = intensity;\n}\n\nreturn light"},"vhuv19u":{"id":"vhuv19u","ref":"arg","value":"__graph_value"},"urjyf2e":{"id":"urjyf2e","ref":"arg","value":"intensity"},"6c3y90j":{"id":"6c3y90j","ref":"arg","value":"args"},"38zagsq":{"id":"38zagsq"},"vgloog2":{"id":"vgloog2","ref":"@js.script","value":"console.log(\"threelib\", _lib.THREE)\nreturn _lib.THREE ? Object.keys(_lib.THREE).filter(k => k.endsWith(\"Light\")) : []"}},"out":"out"},{"edges":{"6owogjm":{"as":"value","from":"6owogjm","to":"r3wy7qr"},"8ug5ygt":{"as":"display","from":"8ug5ygt","to":"r3wy7qr"},"py60aki":{"as":"args","from":"py60aki","to":"r3wy7qr"},"v4zu63j":{"as":"_manager","from":"v4zu63j","to":"py60aki"},"z9cjc2k":{"as":"_assetstate","from":"z9cjc2k","to":"py60aki"},"pdbinbg":{"as":"assetname","from":"pdbinbg","to":"v4zu63j"},"0xucdak":{"as":"value","from":"0xucdak","to":"6owogjm"},"cmrjgyv":{"as":"args","from":"cmrjgyv","to":"6owogjm"},"78983lz":{"as":"file","from":"78983lz","to":"cmrjgyv"},"kfyzav1":{"as":"file","from":"kfyzav1","to":"78983lz"},"ju0gq9n":{"as":"target","from":"ju0gq9n","to":"kfyzav1"},"b9wjaqz":{"as":"pred","from":"b9wjaqz","to":"0xucdak"},"ddhuoh2":{"as":"true","from":"ddhuoh2","to":"0xucdak"},"cgya4cs":{"as":"input","from":"cgya4cs","to":"ddhuoh2"},"mtjltoq":{"as":"buffergeo","from":"mtjltoq","to":"ddhuoh2"},"nzdbmwo":{"as":"gltf","from":"nzdbmwo","to":"ddhuoh2"},"6mnggoe":{"as":"file","from":"6mnggoe","to":"nzdbmwo"},"n3lcnwc":{"as":"gltfLoader","from":"n3lcnwc","to":"nzdbmwo"},"xmyi1yi":{"as":"value","from":"xmyi1yi","to":"n3lcnwc"},"65bdnhk":{"as":"GLTFLoader","from":"65bdnhk","to":"xmyi1yi"},"rxalntn":{"as":"target","from":"rxalntn","to":"65bdnhk"},"ckl1s1u":{"as":"file","from":"ckl1s1u","to":"mtjltoq"},"cnqbqcm":{"as":"buffergeoLoader","from":"cnqbqcm","to":"mtjltoq"},"aqxr41s":{"as":"file","from":"aqxr41s","to":"cgya4cs"}},"id":"@three.loader","name":"@three.loader","nodes":{"r3wy7qr":{"id":"r3wy7qr","name":"@three.loader","ref":"return"},"py60aki":{"id":"py60aki"},"z9cjc2k":{"id":"z9cjc2k","ref":"@memory.state"},"v4zu63j":{"id":"v4zu63j","ref":"@memory.assetmanager"},"pdbinbg":{"id":"pdbinbg","ref":"arg","value":"assetname"},"8ug5ygt":{"id":"8ug5ygt","ref":"arg","value":"_manager"},"6owogjm":{"id":"6owogjm","ref":"return"},"cmrjgyv":{"id":"cmrjgyv"},"78983lz":{"id":"78983lz","ref":"@js.script","value":"return !file ? false : (file.type === \"application/json\" ? file.text() : file.arrayBuffer()).then(data => ({data, name: file.name, type: file.type}));"},"kfyzav1":{"id":"kfyzav1","ref":"@data.get","value":"file"},"ju0gq9n":{"id":"ju0gq9n","ref":"arg","value":"_manager"},"0xucdak":{"id":"0xucdak","ref":"@flow.if"},"ddhuoh2":{"id":"ddhuoh2","ref":"@flow.switch"},"nzdbmwo":{"id":"nzdbmwo","ref":"@js.script","value":"return new Promise((res, rej) =>  gltfLoader.parse(file.data, \"\", l => res(l.scene.children), e => rej(e)));"},"n3lcnwc":{"id":"n3lcnwc","ref":"@memory.cache"},"xmyi1yi":{"id":"xmyi1yi","ref":"@js.script","value":"return new GLTFLoader();"},"65bdnhk":{"id":"65bdnhk","ref":"@data.get","value":"GLTFLoader"},"rxalntn":{"id":"rxalntn","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/loaders/GLTFLoader.js"},"6mnggoe":{"id":"6mnggoe","ref":"arg","value":"file"},"mtjltoq":{"id":"mtjltoq","ref":"@js.script","value":"const geo  = buffergeoLoader.parse(JSON.parse(file.data));\n\ngeo.computeVertexNormals();\nreturn geo;"},"cnqbqcm":{"id":"cnqbqcm","ref":"@js.new","value":"THREE.BufferGeometryLoader"},"ckl1s1u":{"id":"ckl1s1u","ref":"arg","value":"file"},"cgya4cs":{"id":"cgya4cs","ref":"@js.script","value":"return file.type === \"application/json\" ? \"buffergeo\" : file.name.endsWith(\"glb\") ? \"gltf\" : undefined;"},"aqxr41s":{"id":"aqxr41s","ref":"arg","value":"file"},"b9wjaqz":{"id":"b9wjaqz","ref":"arg","value":"file"}},"out":"r3wy7qr"},{"description":"Creates a mesh with the `geometry` and `material` inputs","edges":{"6mh34xg":{"as":"metadata","from":"6mh34xg","to":"out"},"args":{"as":"args","from":"args","to":"out"},"output_val":{"as":"value","from":"output_val","to":"out"},"5nudo40":{"as":"true","from":"5nudo40","to":"output_val"},"euzoog2":{"as":"pred","from":"euzoog2","to":"output_val"},"h9a5ot3":{"as":"args","from":"h9a5ot3","to":"5nudo40"},"r9ngnn4":{"as":"arg0","from":"r9ngnn4","to":"h9a5ot3"},"xuoy9bd":{"as":"arg1","from":"xuoy9bd","to":"h9a5ot3"},"0pm0fel":{"as":"parameters","from":"0pm0fel","to":"6mh34xg"},"bf9pe5s":{"as":"geometry","from":"bf9pe5s","to":"0pm0fel"},"yp7zxat":{"as":"material","from":"yp7zxat","to":"0pm0fel"}},"id":"@three.mesh","nodes":{"out":{"id":"out","name":"@three.mesh","ref":"return"},"output_val":{"id":"output_val","ref":"@flow.if"},"euzoog2":{"id":"euzoog2","ref":"arg","value":"geometry"},"5nudo40":{"id":"5nudo40","ref":"@js.new","value":"THREE.Mesh"},"h9a5ot3":{"id":"h9a5ot3","ref":"@data.array"},"xuoy9bd":{"id":"xuoy9bd","ref":"arg","value":"material"},"r9ngnn4":{"id":"r9ngnn4","ref":"arg","value":"geometry"},"args":{"id":"args","ref":"extern","value":"extern.data"},"6mh34xg":{"id":"6mh34xg"},"0pm0fel":{"id":"0pm0fel"},"yp7zxat":{"id":"yp7zxat","value":"@three.node"},"bf9pe5s":{"id":"bf9pe5s","value":"@three.geometry"}},"out":"out"},{"edges":{"q4hk4bw":{"as":"value","from":"q4hk4bw","to":"t2wl30j"},"q4tskdl":{"as":"args","from":"q4tskdl","to":"t2wl30j"},"r1c4ero":{"as":"metadata","from":"r1c4ero","to":"t2wl30j"},"0e52p8o":{"as":"values","from":"0e52p8o","to":"r1c4ero"},"1twurrd":{"as":"parameters","from":"1twurrd","to":"r1c4ero"},"gj47dqe":{"as":"false","from":"gj47dqe","to":"1twurrd"},"ra5i4nx":{"as":"true","from":"ra5i4nx","to":"1twurrd"},"vu259vf":{"as":"pred","from":"vu259vf","to":"1twurrd"},"cib8xiy":{"as":"path","from":"cib8xiy","to":"vu259vf"},"e1fmps2":{"as":"nodes","from":"e1fmps2","to":"vu259vf"},"3rdanfa":{"as":"node","from":"3rdanfa","to":"ra5i4nx"},"4rmlryt":{"as":"fnparms","from":"4rmlryt","to":"ra5i4nx"},"g8i9gix":{"as":"name","from":"g8i9gix","to":"ra5i4nx"},"qdvndwx":{"as":"nodes","from":"qdvndwx","to":"ra5i4nx"},"595ceg1":{"as":"fn","from":"595ceg1","to":"4rmlryt"},"60htowa":{"as":"path","from":"60htowa","to":"595ceg1"},"tc71fq0":{"as":"target","from":"tc71fq0","to":"595ceg1"},"mbjab0h":{"as":"nodes","from":"mbjab0h","to":"0e52p8o"},"hafko00":{"as":"_threenode","from":"hafko00","to":"q4tskdl"},"o5sgysd":{"as":"_nodes","from":"o5sgysd","to":"q4tskdl"},"m77x5cf":{"as":"url","from":"m77x5cf","to":"o5sgysd"},"63itvqs":{"as":"value","from":"63itvqs","to":"hafko00"},"wkm9i8b":{"as":"args","from":"wkm9i8b","to":"hafko00"},"3gnkfqm":{"as":"_name","from":"3gnkfqm","to":"wkm9i8b"},"6mna45b":{"as":"value","from":"6mna45b","to":"63itvqs"},"eac03sk":{"as":"true","from":"eac03sk","to":"6mna45b"},"tjn10xk":{"as":"pred","from":"tjn10xk","to":"6mna45b"},"cb8yguh":{"as":"value","from":"cb8yguh","to":"eac03sk"},"e4rdngl":{"as":"args","from":"e4rdngl","to":"eac03sk"},"4skly0x":{"as":"_nodeinstance","from":"4skly0x","to":"e4rdngl"},"cxmm7kf":{"as":"nodeArgs","from":"cxmm7kf","to":"4skly0x"},"ey5xe1p":{"as":"nodes","from":"ey5xe1p","to":"4skly0x"},"f1wqp7p":{"as":"args","from":"f1wqp7p","to":"4skly0x"},"qc5yhrk":{"as":"Node","from":"qc5yhrk","to":"4skly0x"},"t90v2ws":{"as":"returnFn","from":"t90v2ws","to":"4skly0x"},"tj0ue40":{"as":"name","from":"tj0ue40","to":"4skly0x"},"xntibr1":{"as":"fnparms","from":"xntibr1","to":"4skly0x"},"l31buvo":{"as":"fn","from":"l31buvo","to":"xntibr1"},"asa6egn":{"as":"path","from":"asa6egn","to":"l31buvo"},"m4euspc":{"as":"target","from":"m4euspc","to":"l31buvo"},"zg12st9":{"as":"url","from":"zg12st9","to":"m4euspc"},"6dpj05t":{"as":"path","from":"6dpj05t","to":"qc5yhrk"},"fzpv502":{"as":"target","from":"fzpv502","to":"qc5yhrk"},"20zj22n":{"as":"url","from":"20zj22n","to":"fzpv502"},"1vdqyt6":{"as":"value","from":"1vdqyt6","to":"f1wqp7p"},"wm6hu13":{"as":"otherwise","from":"wm6hu13","to":"f1wqp7p"},"qbshzkl":{"as":"url","from":"qbshzkl","to":"ey5xe1p"},"g2ai982":{"as":"arg0","from":"g2ai982","to":"cxmm7kf"},"g7jjpiy":{"as":"target","from":"g7jjpiy","to":"cxmm7kf"},"68j6hjq":{"as":"true","from":"68j6hjq","to":"cb8yguh"},"txmw3pd":{"as":"pred","from":"txmw3pd","to":"cb8yguh"},"an8n9z9":{"as":"arg0","from":"an8n9z9","to":"68j6hjq"},"homn2x7":{"as":"target","from":"homn2x7","to":"68j6hjq"},"okhx7t6":{"as":"fnparms","from":"okhx7t6","to":"an8n9z9"},"xsnh3pb":{"as":"args","from":"xsnh3pb","to":"an8n9z9"},"uobnyvk":{"as":"fn","from":"uobnyvk","to":"okhx7t6"},"m4yoq67":{"as":"target","from":"m4yoq67","to":"uobnyvk"},"pw73t77":{"as":"path","from":"pw73t77","to":"uobnyvk"},"t9olptl":{"as":"url","from":"t9olptl","to":"m4yoq67"}},"id":"@three.node","name":"@three.node","nodes":{"t2wl30j":{"id":"t2wl30j","name":"@three.node","ref":"return"},"r1c4ero":{"id":"r1c4ero"},"1twurrd":{"id":"1twurrd","ref":"@flow.if"},"vu259vf":{"id":"vu259vf","ref":"@js.script","value":"return path && nodes && nodes[path];"},"e1fmps2":{"id":"e1fmps2","ref":"arg","value":"_nodes"},"cib8xiy":{"id":"cib8xiy","ref":"arg","value":"__graph_value"},"ra5i4nx":{"id":"ra5i4nx","ref":"@js.script","value":"const nodeKeys = node && Array.from(Object.keys(node)).filter(k => !k.startsWith(\"_\") && !k.startsWith(\"is\") && k.endsWith(\"Node\"));\nconst parms =  Object.fromEntries(nodeKeys.map(k => [k, {type: \"@three.node\"}])\n                                  .concat(fnparms?.filter(p => p !== 'params' && p !== 'parameters').map(p => [p, {type: 'any'}]) ?? [])\n.concat(name && nodes[name].toString() === nodes.float.toString() ? [['value', {type: 'any'}]] : [] ));\n\nreturn parms;"},"qdvndwx":{"id":"qdvndwx","ref":"arg","value":"_nodes"},"g8i9gix":{"id":"g8i9gix","ref":"arg","value":"__graph_value"},"4rmlryt":{"id":"4rmlryt","ref":"extern","value":"extern.functionParameters"},"595ceg1":{"id":"595ceg1","ref":"@data.get"},"tc71fq0":{"id":"tc71fq0","ref":"arg","value":"_nodes"},"60htowa":{"id":"60htowa","ref":"arg","value":"__graph_value"},"3rdanfa":{"id":"3rdanfa","ref":"arg","value":"_threenode"},"gj47dqe":{"id":"gj47dqe","value":"[]"},"0e52p8o":{"id":"0e52p8o","ref":"@js.script","value":"return Object.keys(nodes);"},"mbjab0h":{"id":"mbjab0h","ref":"arg","value":"_nodes"},"q4tskdl":{"id":"q4tskdl"},"o5sgysd":{"hafko00":"8f5duig","id":"o5sgysd","ref":"@js.import_module"},"m77x5cf":{"id":"m77x5cf","ref":"@js.script","value":"\nreturn `https://cdn.jsdelivr.net/npm/three/examples/jsm/nodes/Nodes.js`"},"hafko00":{"id":"hafko00","ref":"return"},"wkm9i8b":{"id":"wkm9i8b","ref":"extern","value":"extern.data"},"3gnkfqm":{"id":"3gnkfqm","ref":"arg","value":"__graph_value"},"63itvqs":{"id":"63itvqs","ref":"@memory.graphchangecache"},"6mna45b":{"id":"6mna45b","ref":"@flow.if"},"tjn10xk":{"id":"tjn10xk","ref":"arg","value":"_name"},"eac03sk":{"id":"eac03sk","ref":"return"},"e4rdngl":{"id":"e4rdngl","ref":"extern","value":"extern.data"},"4skly0x":{"id":"4skly0x","ref":"@js.script","value":"if(returnFn) return Node;\n\nlet created;\n\nconst isConst = Node.toString() == nodes.float.toString();\nif(isConst) {\n  const parms = nodeArgs[\"value\"] ?? args;\n  return Node(...(Array.isArray(parms) ? parms : [parms]));\n}\nconst argArr = [];\nfnparms?.forEach(p => p !== 'params' && p !== 'parameters' && argArr.push(nodeArgs[p]));\n(Array.isArray(args) ? args : [args]).forEach(v => argArr.push(v));\n\ntry {\n  created = new Node(...argArr)\n}catch(e){\n  created = typeof Node === \"function\" ?  Node(...argArr) : Node;\n}\n\nreturn created"},"xntibr1":{"id":"xntibr1","ref":"extern","value":"extern.functionParameters"},"l31buvo":{"id":"l31buvo","ref":"@data.get"},"m4euspc":{"hafko00":"8f5duig","id":"m4euspc","ref":"@js.import_module"},"zg12st9":{"id":"zg12st9","ref":"@js.script","value":"\nreturn `https://cdn.jsdelivr.net/npm/three/examples/jsm/nodes/Nodes.js`"},"asa6egn":{"id":"asa6egn","ref":"arg","value":"_name"},"tj0ue40":{"id":"tj0ue40","ref":"arg","value":"__graph_value"},"t90v2ws":{"id":"t90v2ws","ref":"arg","value":"returnFn"},"qc5yhrk":{"id":"qc5yhrk","ref":"@data.get"},"fzpv502":{"hafko00":"8f5duig","id":"fzpv502","ref":"@js.import_module"},"20zj22n":{"id":"20zj22n","ref":"@js.script","value":"\nreturn `https://cdn.jsdelivr.net/npm/three/examples/jsm/nodes/Nodes.js`"},"6dpj05t":{"id":"6dpj05t","ref":"arg","value":"_name"},"f1wqp7p":{"id":"f1wqp7p","ref":"@flow.default"},"wm6hu13":{"id":"wm6hu13","value":"[]"},"1vdqyt6":{"id":"1vdqyt6","ref":"arg","value":"args"},"ey5xe1p":{"hafko00":"8f5duig","id":"ey5xe1p","ref":"@js.import_module"},"qbshzkl":{"id":"qbshzkl","ref":"@js.script","value":"\nreturn `https://cdn.jsdelivr.net/npm/three/examples/jsm/nodes/Nodes.js`"},"cxmm7kf":{"id":"cxmm7kf","ref":"@data.merge_objects_mutable"},"g7jjpiy":{"id":"g7jjpiy","value":"{}"},"g2ai982":{"id":"g2ai982","ref":"arg","value":"_args"},"cb8yguh":{"id":"cb8yguh","ref":"@flow.if"},"txmw3pd":{"id":"txmw3pd","ref":"arg","value":"_nodeinstance"},"68j6hjq":{"id":"68j6hjq","ref":"@data.merge_objects_mutable"},"homn2x7":{"id":"homn2x7","ref":"arg","value":"_nodeinstance"},"an8n9z9":{"id":"an8n9z9","ref":"@js.script","value":"for(let parm of fnparms) {\n  args.delete(parm)\n}\nargs.delete(\"args\");\nreturn args;"},"xsnh3pb":{"id":"xsnh3pb","ref":"arg","value":"_args"},"okhx7t6":{"id":"okhx7t6","ref":"extern","value":"extern.functionParameters"},"uobnyvk":{"id":"uobnyvk","ref":"@data.get"},"pw73t77":{"id":"pw73t77","ref":"arg","value":"_name"},"m4yoq67":{"hafko00":"8f5duig","id":"m4yoq67","ref":"@js.import_module"},"t9olptl":{"id":"t9olptl","ref":"@js.script","value":"\nreturn `https://cdn.jsdelivr.net/npm/three/examples/jsm/nodes/Nodes.js`"},"q4hk4bw":{"id":"q4hk4bw","ref":"arg","value":"_threenode"}},"out":"t2wl30j"},{"edges":{"d6mitl5":{"as":"args","from":"d6mitl5","to":"syby7ze"},"fcen8hd":{"as":"value","from":"fcen8hd","to":"syby7ze"},"js4cfe3":{"as":"args","from":"js4cfe3","to":"fcen8hd"},"xt3gta9":{"as":"self","from":"xt3gta9","to":"fcen8hd"},"6rrrrrm":{"as":"arg0","from":"6rrrrrm","to":"js4cfe3"},"wlzn1yd":{"as":"arg1","from":"wlzn1yd","to":"js4cfe3"},"6dihura":{"as":"args","from":"6dihura","to":"wlzn1yd"},"0kxre2r":{"as":"arg0","from":"0kxre2r","to":"6dihura"},"na38nz4":{"as":"arg1","from":"na38nz4","to":"6dihura"},"bi8tc8g":{"as":"true","from":"bi8tc8g","to":"0kxre2r"},"moy0qly":{"as":"pred","from":"moy0qly","to":"0kxre2r"},"vn94dlh":{"as":"false","from":"vn94dlh","to":"0kxre2r"},"5icpvna":{"as":"count","from":"5icpvna","to":"vn94dlh"},"wfzykmf":{"as":"rand","from":"wfzykmf","to":"vn94dlh"},"gxyxjkk":{"as":"seed","from":"gxyxjkk","to":"wfzykmf"},"iwgr69a":{"as":"count","from":"iwgr69a","to":"bi8tc8g"},"ot5qmfg":{"as":"rand","from":"ot5qmfg","to":"bi8tc8g"},"z43up47":{"as":"surface","from":"z43up47","to":"bi8tc8g"},"moqcovn":{"as":"seed","from":"moqcovn","to":"ot5qmfg"}},"id":"@three.pointsGeometry","name":"@three.pointsGeometry","nodes":{"syby7ze":{"id":"syby7ze","name":"@three.pointsGeometry","ref":"return"},"fcen8hd":{"id":"fcen8hd","ref":"@js.call","value":"setAttribute"},"xt3gta9":{"id":"xt3gta9","ref":"@js.new","value":"THREE.BufferGeometry"},"js4cfe3":{"id":"js4cfe3","ref":"@data.array"},"wlzn1yd":{"id":"wlzn1yd","ref":"@js.new","value":"THREE.BufferAttribute"},"6dihura":{"id":"6dihura","ref":"@data.array"},"na38nz4":{"id":"na38nz4","value":"3"},"0kxre2r":{"id":"0kxre2r","ref":"@flow.if"},"vn94dlh":{"id":"vn94dlh","ref":"@js.script","value":"return new Float32Array(count * 3).fill(0)\n  .map(v => rand())"},"wfzykmf":{"id":"wfzykmf","ref":"@math.random"},"gxyxjkk":{"id":"gxyxjkk","ref":"arg","value":"seed"},"5icpvna":{"id":"5icpvna","ref":"arg","value":"count"},"moy0qly":{"id":"moy0qly","ref":"arg","value":"surface"},"bi8tc8g":{"id":"bi8tc8g","name":"tri points1","ref":"@js.script","value":"const pos = surface.getAttribute('position');\nconst idx = surface.index;\nconst vtxCount = idx?.count ?? pos.count;\nconst arr = new Float32Array(count * 3).fill(0);\nlet tri = new _lib.THREE.Triangle()\nlet pt = new _lib.THREE.Vector3()\nlet coord = new _lib.THREE.Vector3()\nlet sum;\nfor(let i = 0; i < count; i++){\n  let ti = Math.floor(rand() * vtxCount);\n  tri.setFromAttributeAndIndices(pos, idx?.array[ti] ?? ti, idx?.array[ti + 1] ?? (ti + 1), idx?.array[ti + 2] ?? (ti + 2));\n  coord.set(rand(), rand(), rand())\n  sum = coord.x + coord.y + coord.z;\n  coord.multiplyScalar(1 / sum);\n  \n  pt.set(0,0,0);\n  pt.addScaledVector(tri.a, coord.x)\n  pt.addScaledVector(tri.b, coord.y)\n  pt.addScaledVector(tri.c, coord.z)\n  \n  arr.set(pt.toArray(), 3 * i)\n}\n\nreturn arr"},"z43up47":{"id":"z43up47","ref":"arg","value":"surface"},"ot5qmfg":{"id":"ot5qmfg","ref":"@math.random"},"moqcovn":{"id":"moqcovn","ref":"arg","value":"seed"},"iwgr69a":{"id":"iwgr69a","ref":"arg","value":"count"},"6rrrrrm":{"id":"6rrrrrm","value":"position"},"d6mitl5":{"id":"d6mitl5"}},"out":"syby7ze"},{"edges":{"7h0jtuu":{"as":"args","from":"7h0jtuu","to":"ojnm60e"},"zqoy0ns":{"as":"value","from":"zqoy0ns","to":"ojnm60e"},"7p23im9":{"as":"lag","from":"7p23im9","to":"zqoy0ns"},"8w4dr8z":{"as":"geo","from":"8w4dr8z","to":"zqoy0ns"},"it2r6xy":{"as":"feedback","from":"it2r6xy","to":"zqoy0ns"},"jmrf097":{"as":"fn","from":"jmrf097","to":"zqoy0ns"},"ka9kj3m":{"as":"attribute","from":"ka9kj3m","to":"zqoy0ns"},"77oy5ui":{"as":"value","from":"77oy5ui","to":"jmrf097"},"gga6vxe":{"as":"args","from":"gga6vxe","to":"jmrf097"},"aei1g0u":{"as":"_attr","from":"aei1g0u","to":"gga6vxe"},"hlpaehv":{"as":"_rand","from":"hlpaehv","to":"gga6vxe"},"7nv64y5":{"as":"seed","from":"7nv64y5","to":"hlpaehv"},"fumqk1i":{"as":"runnable","from":"fumqk1i","to":"77oy5ui"},"j7h7k36":{"as":"fn","from":"j7h7k36","to":"fumqk1i"},"speyvvr":{"as":"parameters","from":"speyvvr","to":"fumqk1i"},"7f9x6vd":{"as":"point_data","from":"7f9x6vd","to":"speyvvr"},"4u70a4f":{"as":"pd","from":"4u70a4f","to":"j7h7k36"},"tfcak1h":{"as":"attribute","from":"tfcak1h","to":"j7h7k36"},"xdx395l":{"as":"rand","from":"xdx395l","to":"j7h7k36"},"tu2qo0y":{"as":"_attribute","from":"tu2qo0y","to":"7h0jtuu"},"au6fgxu":{"as":"value","from":"au6fgxu","to":"tu2qo0y"},"t1a0zc0":{"as":"otherwise","from":"t1a0zc0","to":"tu2qo0y"},"0h50cp9":{"as":"otherwise","from":"0h50cp9","to":"t1a0zc0"},"gvyw0za":{"as":"value","from":"gvyw0za","to":"t1a0zc0"}},"id":"@three.randomizeAttribute","name":"@three.randomizeAttribute","nodes":{"ojnm60e":{"id":"ojnm60e","name":"@three.randomizeAttribute","ref":"return"},"zqoy0ns":{"id":"zqoy0ns","ref":"@three.modify_attribute"},"ka9kj3m":{"id":"ka9kj3m","ref":"arg","value":"_attribute"},"jmrf097":{"id":"jmrf097","ref":"return"},"gga6vxe":{"id":"gga6vxe"},"hlpaehv":{"id":"hlpaehv","ref":"@math.random"},"7nv64y5":{"id":"7nv64y5","ref":"arg","value":"seed"},"aei1g0u":{"id":"aei1g0u","ref":"arg","value":"_attribute"},"77oy5ui":{"id":"77oy5ui","ref":"@js.create_fn"},"fumqk1i":{"id":"fumqk1i","ref":"@flow.runnable"},"speyvvr":{"id":"speyvvr"},"7f9x6vd":{"id":"7f9x6vd"},"j7h7k36":{"id":"j7h7k36","ref":"@js.script","value":"if(pd[attribute]){\n  pd[attribute][0] = rand();\n}"},"xdx395l":{"id":"xdx395l","ref":"arg","value":"_rand"},"tfcak1h":{"id":"tfcak1h","ref":"arg","value":"_attr"},"4u70a4f":{"id":"4u70a4f","ref":"arg","value":"point_data"},"it2r6xy":{"id":"it2r6xy","ref":"arg","value":"lag"},"8w4dr8z":{"id":"8w4dr8z","ref":"arg","value":"geo"},"7p23im9":{"id":"7p23im9","ref":"arg","value":"lag"},"7h0jtuu":{"id":"7h0jtuu"},"tu2qo0y":{"id":"tu2qo0y","ref":"@flow.default"},"t1a0zc0":{"id":"t1a0zc0","ref":"@flow.default"},"gvyw0za":{"id":"gvyw0za","ref":"arg","value":"__graph_value"},"0h50cp9":{"id":"0h50cp9","value":"position"},"au6fgxu":{"id":"au6fgxu","ref":"arg","value":"attribute"}},"out":"ojnm60e"},{"edges":{"lihjkfp":{"as":"value","from":"lihjkfp","to":"main/out"},"x4zdk2w":{"as":"true","from":"x4zdk2w","to":"lihjkfp"},"xsjuu4i":{"as":"pred","from":"xsjuu4i","to":"lihjkfp"},"eyftv46":{"as":"canvas","from":"eyftv46","to":"xsjuu4i"},"cwl59lh":{"as":"canvas","from":"cwl59lh","to":"x4zdk2w"}},"id":"@three.renderer","nodes":{"main/out":{"__isnodysseus":true,"id":"main/out","name":"@three.renderer","ref":"return"},"lihjkfp":{"id":"lihjkfp","ref":"@flow.if"},"xsjuu4i":{"id":"xsjuu4i","ref":"@js.script","value":"return _lib.THREE && canvas;"},"eyftv46":{"id":"eyftv46","ref":"arg","value":"canvas"},"x4zdk2w":{"id":"x4zdk2w","ref":"@js.script","value":"const renderer = new _lib.THREE.WebGLRenderer({canvas});\nreturn renderer"},"cwl59lh":{"id":"cwl59lh","name":"","ref":"arg","value":"canvas"}},"out":"main/out"},{"edges":{"83lkbju":{"as":"args","from":"83lkbju","to":"frntsqg"},"gvu1q6y":{"as":"value","from":"gvu1q6y","to":"frntsqg"},"x2lykkd":{"as":"lib","from":"x2lykkd","to":"frntsqg"},"dm0bpnv":{"as":"rapier","from":"dm0bpnv","to":"x2lykkd"},"vx1ylwk":{"as":"value","from":"vx1ylwk","to":"dm0bpnv"},"o3by05u":{"as":"value","from":"o3by05u","to":"vx1ylwk"},"y733ovp":{"as":"args","from":"y733ovp","to":"vx1ylwk"},"bjuwpqu":{"as":"rapier","from":"bjuwpqu","to":"y733ovp"},"dw4b19c":{"as":"rapier","from":"dw4b19c","to":"o3by05u"},"fd863ix":{"as":"arg0","from":"fd863ix","to":"o3by05u"},"dywjp8t":{"as":"rapier","from":"dywjp8t","to":"fd863ix"},"6hi7rw0":{"as":"args","from":"6hi7rw0","to":"gvu1q6y"},"mwc8rm0":{"as":"value","from":"mwc8rm0","to":"gvu1q6y"},"ozhnlv4":{"as":"subscribe","from":"ozhnlv4","to":"gvu1q6y"},"ao5fl0s":{"as":"animationframe","from":"ao5fl0s","to":"ozhnlv4"},"1i4pnz3":{"as":"fn","from":"1i4pnz3","to":"ao5fl0s"},"8bs2khl":{"as":"arg3","from":"8bs2khl","to":"1i4pnz3"},"s5oytwl":{"as":"arg1","from":"s5oytwl","to":"1i4pnz3"},"21wgox5":{"as":"fn","from":"21wgox5","to":"s5oytwl"},"rlibzs1":{"as":"self","from":"rlibzs1","to":"21wgox5"},"anh8wqs":{"as":"fn","from":"anh8wqs","to":"8bs2khl"},"d4ucj9i":{"as":"parameters","from":"d4ucj9i","to":"8bs2khl"},"dngwpkm":{"as":"objects","from":"dngwpkm","to":"d4ucj9i"},"jw9pl8x":{"as":"array","from":"jw9pl8x","to":"anh8wqs"},"ot9c6mz":{"as":"fn","from":"ot9c6mz","to":"anh8wqs"},"5po9uvs":{"as":"parameters","from":"5po9uvs","to":"ot9c6mz"},"ixzjghn":{"as":"fn","from":"ixzjghn","to":"ot9c6mz"},"5ko6kz5":{"as":"crb","from":"5ko6kz5","to":"ixzjghn"},"bgtr7ba":{"as":"force","from":"bgtr7ba","to":"ixzjghn"},"omfoh9h":{"as":"world","from":"omfoh9h","to":"ixzjghn"},"83hzvsj":{"as":"run","from":"83hzvsj","to":"bgtr7ba"},"gzxbs76":{"as":"fn","from":"gzxbs76","to":"bgtr7ba"},"i01a19a":{"as":"args","from":"i01a19a","to":"bgtr7ba"},"5sy92ah":{"as":"rigidbody","from":"5sy92ah","to":"i01a19a"},"iuggec5":{"as":"object3d","from":"iuggec5","to":"i01a19a"},"ay63j9f":{"as":"element","from":"ay63j9f","to":"5po9uvs"},"c8a4hfm":{"as":"rbs","from":"c8a4hfm","to":"jw9pl8x"},"jzjdu4d":{"as":"objects","from":"jzjdu4d","to":"jw9pl8x"},"7pjdjwe":{"as":"value","from":"7pjdjwe","to":"6hi7rw0"},"zeduey1":{"as":"args","from":"zeduey1","to":"6hi7rw0"},"ywzlpf4":{"as":"world","from":"ywzlpf4","to":"zeduey1"},"lh6scy9":{"as":"value","from":"lh6scy9","to":"ywzlpf4"},"w3zhyyl":{"as":"world","from":"w3zhyyl","to":"lh6scy9"},"4wzidla":{"as":"args","from":"4wzidla","to":"w3zhyyl"},"03ns8ge":{"as":"y","from":"03ns8ge","to":"4wzidla"},"qt6lu54":{"as":"z","from":"qt6lu54","to":"4wzidla"},"u0a24rg":{"as":"x","from":"u0a24rg","to":"4wzidla"},"owjqtfn":{"as":"rbs","from":"owjqtfn","to":"7pjdjwe"},"sjiatdj":{"as":"world","from":"sjiatdj","to":"7pjdjwe"},"69hpngq":{"as":"array","from":"69hpngq","to":"owjqtfn"},"8djx49x":{"as":"fn","from":"8djx49x","to":"owjqtfn"},"0fgeyce":{"as":"fn","from":"0fgeyce","to":"8djx49x"},"vqn95sa":{"as":"parameters","from":"vqn95sa","to":"8djx49x"},"qy3jq77":{"as":"element","from":"qy3jq77","to":"vqn95sa"},"7ov8tko":{"as":"true","from":"7ov8tko","to":"0fgeyce"},"nru6wao":{"as":"pred","from":"nru6wao","to":"0fgeyce"},"sfuqrow":{"as":"false","from":"sfuqrow","to":"0fgeyce"},"3zm5bbp":{"as":"collider","from":"3zm5bbp","to":"sfuqrow"},"54em49h":{"as":"geometry","from":"54em49h","to":"sfuqrow"},"blrtm8w":{"as":"world","from":"blrtm8w","to":"sfuqrow"},"73h3umc":{"as":"mass","from":"73h3umc","to":"3zm5bbp"},"8pky31m":{"as":"colliderParmMap","from":"8pky31m","to":"3zm5bbp"},"e35ur0l":{"as":"geoType","from":"e35ur0l","to":"3zm5bbp"},"enazdqb":{"as":"colliderTypeMap","from":"enazdqb","to":"3zm5bbp"},"t76ww4p":{"as":"geo","from":"t76ww4p","to":"3zm5bbp"},"6cpx2wx":{"as":"SphereGeometry","from":"6cpx2wx","to":"enazdqb"},"9ll3fkp":{"as":"BoxGeometry","from":"9ll3fkp","to":"enazdqb"},"e1j2ta4":{"as":"ConeGeometry","from":"e1j2ta4","to":"enazdqb"},"fkv7ias":{"as":"SphereGeometry","from":"fkv7ias","to":"8pky31m"},"ip2bi2m":{"as":"BoxGeometry","from":"ip2bi2m","to":"8pky31m"},"qf3uf1n":{"as":"ConeGeometry","from":"qf3uf1n","to":"8pky31m"},"qg0st8d":{"as":"parms","from":"qg0st8d","to":"qf3uf1n"},"g54m47e":{"as":"parms","from":"g54m47e","to":"ip2bi2m"},"q106l34":{"as":"parms","from":"q106l34","to":"fkv7ias"},"fts63kg":{"as":"world","from":"fts63kg","to":"7ov8tko"},"g57d43u":{"as":"rbhandle","from":"g57d43u","to":"7ov8tko"}},"id":"@three.rigidbodysimulation","name":"@three.rigidbodysimulation","nodes":{"frntsqg":{"id":"frntsqg","name":"@three.rigidbodysimulation","ref":"return"},"x2lykkd":{"id":"x2lykkd"},"dm0bpnv":{"id":"dm0bpnv","ref":"@memory.cache"},"vx1ylwk":{"id":"vx1ylwk","ref":"return"},"y733ovp":{"id":"y733ovp"},"bjuwpqu":{"id":"bjuwpqu","ref":"@js.import_module","value":"https://cdn.skypack.dev/@dimforge/rapier3d-compat"},"o3by05u":{"id":"o3by05u","ref":"@js.script","value":"\nreturn rapier"},"fd863ix":{"id":"fd863ix","ref":"@js.script","value":"return rapier.init();"},"dywjp8t":{"id":"dywjp8t","ref":"arg","value":"rapier"},"dw4b19c":{"id":"dw4b19c","ref":"arg","value":"rapier"},"gvu1q6y":{"id":"gvu1q6y","ref":"return"},"ozhnlv4":{"id":"ozhnlv4"},"ao5fl0s":{"id":"ao5fl0s","ref":"@flow.ap"},"1i4pnz3":{"id":"1i4pnz3","ref":"@data.array"},"s5oytwl":{"id":"s5oytwl","ref":"@flow.runnable"},"21wgox5":{"id":"21wgox5","ref":"@js.call","value":"step"},"rlibzs1":{"id":"rlibzs1","ref":"arg","value":"world"},"8bs2khl":{"id":"8bs2khl","ref":"@flow.runnable"},"d4ucj9i":{"id":"d4ucj9i"},"dngwpkm":{"id":"dngwpkm"},"anh8wqs":{"id":"anh8wqs","ref":"@data.map"},"ot9c6mz":{"id":"ot9c6mz","ref":"@flow.runnable"},"ixzjghn":{"id":"ixzjghn","ref":"@js.script","value":"const cube = crb[0]\nconst rb = crb[1]\n\nif(cube.userData.kinematic){  rb.setNextKinematicTranslation(cube.position);\n  rb.setNextKinematicRotation(cube.rotation);\n} else {\n  const pos = {...rb.translation()};\ncube.position.copy(pos);\n  cube.quaternion.copy(rb.rotation());\n\nrb.resetForces(true);\n\nif(force) {\nrb.addForce(force, true)\n}\n}\n "},"omfoh9h":{"id":"omfoh9h","ref":"arg","value":"world"},"bgtr7ba":{"id":"bgtr7ba","ref":"@flow.ap"},"i01a19a":{"id":"i01a19a"},"iuggec5":{"id":"iuggec5","ref":"arg","value":"element.0"},"5sy92ah":{"id":"5sy92ah","ref":"arg","value":"element.1"},"gzxbs76":{"id":"gzxbs76","ref":"arg","value":"updateForce"},"83hzvsj":{"id":"83hzvsj","value":"true"},"5ko6kz5":{"id":"5ko6kz5","ref":"arg","value":"element"},"5po9uvs":{"id":"5po9uvs"},"ay63j9f":{"id":"ay63j9f"},"jw9pl8x":{"id":"jw9pl8x","ref":"@js.script","value":"return objects.map((obj, i) => [obj, rbs[i]])"},"jzjdu4d":{"id":"jzjdu4d","ref":"arg","value":"geometry"},"c8a4hfm":{"id":"c8a4hfm","ref":"arg","value":"rbs"},"mwc8rm0":{"id":"mwc8rm0","ref":"arg","value":"geometry"},"6hi7rw0":{"id":"6hi7rw0","ref":"return"},"zeduey1":{"id":"zeduey1"},"ywzlpf4":{"id":"ywzlpf4","ref":"@memory.cache"},"lh6scy9":{"id":"lh6scy9","ref":"@js.script","value":"let groundColliderDesc = _lib.rapier.ColliderDesc.cuboid(10.0, 0, 10.0);\n\nworld.createCollider(groundColliderDesc);\n\nreturn world;"},"w3zhyyl":{"id":"w3zhyyl","ref":"@js.script","value":"return new _lib.rapier.World(args);"},"4wzidla":{"id":"4wzidla"},"u0a24rg":{"id":"u0a24rg","value":"0"},"qt6lu54":{"id":"qt6lu54","value":"0"},"03ns8ge":{"id":"03ns8ge","value":"-9.81"},"7pjdjwe":{"id":"7pjdjwe"},"sjiatdj":{"id":"sjiatdj","ref":"arg","value":"world"},"owjqtfn":{"id":"owjqtfn","ref":"@data.map"},"8djx49x":{"id":"8djx49x","ref":"@flow.runnable"},"vqn95sa":{"id":"vqn95sa"},"qy3jq77":{"id":"qy3jq77"},"0fgeyce":{"id":"0fgeyce","ref":"@flow.if"},"sfuqrow":{"id":"sfuqrow","ref":"@js.script","value":"if(geometry){\nconst body =  geometry.userData?.kinematic ? _lib.rapier.RigidBodyDesc.kinematicPositionBased() :  _lib.rapier.RigidBodyDesc.dynamic()\n  .setLinearDamping(0.2);\nconst rb = world.createRigidBody(body);\nrb.setTranslation(geometry.position);\n\n  world.createCollider(collider, rb);\ngeometry.userData.rigidbodyHandle = rb.handle;\nreturn rb\n}"},"blrtm8w":{"id":"blrtm8w","ref":"arg","value":"world"},"54em49h":{"id":"54em49h","ref":"arg","value":"element"},"3zm5bbp":{"id":"3zm5bbp","ref":"@js.script","value":"const name = geoType.constructor.name;\nif(name && colliderTypeMap[name] && colliderParmMap[name]) {\nreturn _lib.rapier.ColliderDesc[colliderTypeMap[name]](...colliderParmMap[name]).setMass(mass);\n} else {\n  const pos = geo.getAttribute(\"position\");\n  const points = new Array(pos.count).fill(0).map((_, idx) => (new _lib.THREE.Vector3()).fromBufferAttribute(pos, idx));\n  return _lib.rapier.ColliderDesc. convexHull(pos.array).setMass(mass)\n}"},"t76ww4p":{"id":"t76ww4p","ref":"arg","value":"element.geometry"},"enazdqb":{"id":"enazdqb"},"e1j2ta4":{"id":"e1j2ta4","value":"cone"},"9ll3fkp":{"id":"9ll3fkp","value":"cuboid"},"6cpx2wx":{"id":"6cpx2wx","value":"ball"},"e35ur0l":{"id":"e35ur0l","ref":"arg","value":"element.geometry"},"8pky31m":{"id":"8pky31m"},"qf3uf1n":{"id":"qf3uf1n","ref":"@js.script","value":"if(parms){\nreturn [parms.height * 0.5, parms.radius];\n}"},"qg0st8d":{"id":"qg0st8d","ref":"arg","value":"element.geometry.parameters"},"ip2bi2m":{"id":"ip2bi2m","ref":"@js.script","value":"if(parms){\nreturn [parms.width * 0.5, parms.height * 0.5, parms.depth * 0.5];\n}"},"g54m47e":{"id":"g54m47e","ref":"arg","value":"element.geometry.parameters"},"fkv7ias":{"id":"fkv7ias","ref":"@data.array"},"q106l34":{"id":"q106l34","ref":"arg","value":"element.geometry.parameters.radius"},"73h3umc":{"id":"73h3umc","value":"0.05"},"nru6wao":{"id":"nru6wao","ref":"arg","value":"element.userData.rigidbodyHandle"},"7ov8tko":{"id":"7ov8tko","ref":"@js.script","value":"return world.getRigidBody(rbhandle);"},"g57d43u":{"id":"g57d43u","ref":"arg","value":"element.userData.rigidbodyHandle"},"fts63kg":{"id":"fts63kg","ref":"arg","value":"world"},"69hpngq":{"id":"69hpngq","ref":"arg","value":"geometry"},"83lkbju":{"id":"83lkbju"}},"out":"frntsqg"},{"edges":{"x4zdk2w":{"as":"value","from":"x4zdk2w","to":"main/out"}},"id":"@three.scene","nodes":{"main/out":{"__isnodysseus":true,"id":"main/out","name":"@three.scene","ref":"return"},"x4zdk2w":{"id":"x4zdk2w","ref":"@js.new","value":"THREE.Scene"}},"out":"main/out"},{"edges":{"4n3yk4e":{"as":"value","from":"4n3yk4e","to":"tkxqh5a"},"zlyzyjv":{"as":"args","from":"zlyzyjv","to":"tkxqh5a"},"a23wspb":{"as":"parent","from":"a23wspb","to":"4n3yk4e"},"pnszphc":{"as":"argobjnames","from":"pnszphc","to":"4n3yk4e"},"1kzsgi4":{"as":"array","from":"1kzsgi4","to":"pnszphc"},"grsb8qa":{"as":"fn","from":"grsb8qa","to":"pnszphc"},"49o12hh":{"as":"fn","from":"49o12hh","to":"grsb8qa"},"5ljysw7":{"as":"parameters","from":"5ljysw7","to":"grsb8qa"},"0zs05z2":{"as":"element","from":"0zs05z2","to":"5ljysw7"},"ad6qpuc":{"as":"parent","from":"ad6qpuc","to":"49o12hh"},"b3j4v9i":{"as":"obj","from":"b3j4v9i","to":"49o12hh"},"qjadhr5":{"as":"children","from":"qjadhr5","to":"1kzsgi4"}},"id":"@three.update_children","name":"@three.update_children","nodes":{"tkxqh5a":{"id":"tkxqh5a","name":"@three.update_children","ref":"return"},"zlyzyjv":{"id":"zlyzyjv"},"4n3yk4e":{"id":"4n3yk4e","ref":"@js.script","value":"parent.children.forEach(c => {\n  if(!argobjnames.includes(c.name)){\n    parent.remove(c);\n  }\n})\n\nreturn parent;"},"pnszphc":{"id":"pnszphc","ref":"@data.map"},"grsb8qa":{"id":"grsb8qa","ref":"@flow.runnable"},"5ljysw7":{"id":"5ljysw7","ref":"extern","value":"extern.data"},"0zs05z2":{"id":"0zs05z2"},"49o12hh":{"id":"49o12hh","name":"","ref":"@js.script","value":"const existingObj = parent.getObjectByName(obj.name);\nif(obj && existingObj !== obj){\n  if(existingObj) {\n    parent.remove(existingObj);\n    existingObj.geometry?.dispose();\n    existingObj.material?.dispose();\n  }\n  parent.add(obj); \n}\nreturn obj.name;"},"b3j4v9i":{"id":"b3j4v9i","ref":"arg","value":"element"},"ad6qpuc":{"id":"ad6qpuc","ref":"arg","value":"parent"},"1kzsgi4":{"id":"1kzsgi4","ref":"@js.script","value":"return children.flat()"},"qjadhr5":{"id":"qjadhr5","ref":"arg","value":"children"},"a23wspb":{"id":"a23wspb","ref":"arg","value":"parent"}},"out":"tkxqh5a"},{"description":"Creates a basic three.js scene with a camera, renderer, and scene. The `objects` input has the objects of the scene, evaluated every frame - make sure to cache. The `onupdate` input is a runnable with parameters `objects`, `camera`, and `scene` which is run every frame - keep. The `fx` input has effects for an EffectComposer.","edges":{"8m5muxn/39ivise":{"as":"args","from":"8m5muxn/39ivise","to":"8m5muxn/8m5muxn"},"8m5muxn/njzfcz8":{"as":"value","from":"8m5muxn/njzfcz8","to":"8m5muxn/8m5muxn"},"qioaglu":{"as":"lib","from":"qioaglu","to":"8m5muxn/8m5muxn"},"kipwn58":{"as":"EffectComposer","from":"kipwn58","to":"qioaglu"},"vl4foaa":{"as":"RenderPass","from":"vl4foaa","to":"qioaglu"},"yt5ewda":{"as":"nodeFrame","from":"yt5ewda","to":"qioaglu"},"dt9q1m5":{"as":"value","from":"dt9q1m5","to":"yt5ewda"},"bqpkucx":{"as":"target","from":"bqpkucx","to":"dt9q1m5"},"7peak26":{"as":"value","from":"7peak26","to":"vl4foaa"},"slle0cq":{"as":"target","from":"slle0cq","to":"7peak26"},"4a9zo9a":{"as":"value","from":"4a9zo9a","to":"kipwn58"},"i39y0i3":{"as":"target","from":"i39y0i3","to":"4a9zo9a"},"8m5muxn/hlqmo48":{"as":"args","from":"8m5muxn/hlqmo48","to":"8m5muxn/njzfcz8"},"8m5muxn/vyr07ts":{"as":"subscribe","from":"8m5muxn/vyr07ts","to":"8m5muxn/njzfcz8"},"jiobf52":{"as":"value","from":"jiobf52","to":"8m5muxn/njzfcz8"},"f7krd8u":{"as":"objects","from":"f7krd8u","to":"jiobf52"},"slwyovm":{"as":"renderer","from":"slwyovm","to":"jiobf52"},"ptak9t2":{"as":"animationframe","from":"ptak9t2","to":"8m5muxn/vyr07ts"},"c6eig78":{"as":"fn","from":"c6eig78","to":"ptak9t2"},"7c7zppx":{"as":"arg2","from":"7c7zppx","to":"c6eig78"},"o9mcda1":{"as":"arg1","from":"o9mcda1","to":"c6eig78"},"rmqxb31":{"as":"arg4","from":"rmqxb31","to":"c6eig78"},"z552097":{"as":"arg5","from":"z552097","to":"c6eig78"},"dyst9ju":{"as":"fn","from":"dyst9ju","to":"z552097"},"1js087x":{"as":"camera","from":"1js087x","to":"dyst9ju"},"cha35wd":{"as":"scene","from":"cha35wd","to":"dyst9ju"},"cvop6x9":{"as":"renderer","from":"cvop6x9","to":"dyst9ju"},"e9d6mmx":{"as":"otherwise","from":"e9d6mmx","to":"cvop6x9"},"zs7iowa":{"as":"value","from":"zs7iowa","to":"cvop6x9"},"0wp18c9":{"as":"args","from":"0wp18c9","to":"e9d6mmx"},"7xukyuz":{"as":"fn","from":"7xukyuz","to":"e9d6mmx"},"cwrlosg":{"as":"run","from":"cwrlosg","to":"e9d6mmx"},"jjmvxjj":{"as":"target","from":"jjmvxjj","to":"7xukyuz"},"vc0quhz":{"as":"value","from":"vc0quhz","to":"0wp18c9"},"lugpx4o":{"as":"value","from":"lugpx4o","to":"vc0quhz"},"6s18wo7":{"as":"camera","from":"6s18wo7","to":"lugpx4o"},"eamyj81":{"as":"scene","from":"eamyj81","to":"lugpx4o"},"svcshll":{"as":"canvas","from":"svcshll","to":"lugpx4o"},"tgacxe5":{"as":"renderer","from":"tgacxe5","to":"lugpx4o"},"vwa13pj":{"as":"fx","from":"vwa13pj","to":"lugpx4o"},"vzmvbqh":{"as":"MotionBlur","from":"vzmvbqh","to":"lugpx4o"},"23ppkmp":{"as":"pred","from":"23ppkmp","to":"vzmvbqh"},"3876w2f":{"as":"true","from":"3876w2f","to":"vzmvbqh"},"ya36a1r":{"as":"module","from":"ya36a1r","to":"3876w2f"},"fzf3k5e":{"as":"RenderPass","from":"fzf3k5e","to":"vwa13pj"},"gap7au7":{"as":"EffectComposer","from":"gap7au7","to":"vwa13pj"},"hsytqp3":{"as":"value","from":"hsytqp3","to":"tgacxe5"},"1j95u16":{"as":"canvas","from":"1j95u16","to":"hsytqp3"},"b2z2580":{"as":"true","from":"b2z2580","to":"rmqxb31"},"mh5ikoc":{"as":"pred","from":"mh5ikoc","to":"rmqxb31"},"m291v0o":{"as":"args","from":"m291v0o","to":"b2z2580"},"wcnk2sw":{"as":"fn","from":"wcnk2sw","to":"b2z2580"},"2veqlq1":{"as":"scene","from":"2veqlq1","to":"m291v0o"},"xgl6r05":{"as":"objects","from":"xgl6r05","to":"m291v0o"},"y2f8gog":{"as":"camera","from":"y2f8gog","to":"m291v0o"},"lsf5igz":{"as":"fn","from":"lsf5igz","to":"o9mcda1"},"ploozds":{"as":"pred","from":"ploozds","to":"lsf5igz"},"tkxqh5a":{"as":"true","from":"tkxqh5a","to":"lsf5igz"},"z51c26o":{"as":"children","from":"z51c26o","to":"tkxqh5a"},"zz2yk2z":{"as":"parent","from":"zz2yk2z","to":"tkxqh5a"},"5gt2zai":{"as":"fn","from":"5gt2zai","to":"z51c26o"},"na6fxum":{"as":"array","from":"na6fxum","to":"z51c26o"},"7ubaa60":{"as":"true","from":"7ubaa60","to":"na6fxum"},"8ivgw9u":{"as":"false","from":"8ivgw9u","to":"na6fxum"},"f288n1z":{"as":"pred","from":"f288n1z","to":"na6fxum"},"5wfilvv":{"as":"pred","from":"5wfilvv","to":"7ubaa60"},"d8w679k":{"as":"false","from":"d8w679k","to":"7ubaa60"},"t94hhq8":{"as":"true","from":"t94hhq8","to":"7ubaa60"},"8rbp2e7":{"as":"obj","from":"8rbp2e7","to":"t94hhq8"},"reop6t4":{"as":"entries","from":"reop6t4","to":"d8w679k"},"bgi56zl":{"as":"object","from":"bgi56zl","to":"reop6t4"},"by4m1fr":{"as":"value","from":"by4m1fr","to":"bgi56zl"},"u0f4b37":{"as":"otherwise","from":"u0f4b37","to":"bgi56zl"},"shvo342":{"as":"objs","from":"shvo342","to":"5wfilvv"},"ryjjzqr":{"as":"runnable","from":"ryjjzqr","to":"5gt2zai"},"4j2wgr9":{"as":"fn","from":"4j2wgr9","to":"ryjjzqr"},"sfzzxee":{"as":"parameters","from":"sfzzxee","to":"ryjjzqr"},"wgn4yl2":{"as":"element","from":"wgn4yl2","to":"sfzzxee"},"ek93m5o":{"as":"target","from":"ek93m5o","to":"4j2wgr9"},"l98p3to":{"as":"value","from":"l98p3to","to":"4j2wgr9"},"s208cfn":{"as":"target","from":"s208cfn","to":"l98p3to"},"dq4u9ji":{"as":"target","from":"dq4u9ji","to":"ek93m5o"},"aqfc51v":{"as":"fn","from":"aqfc51v","to":"7c7zppx"},"5m99dxg":{"as":"true","from":"5m99dxg","to":"aqfc51v"},"x638fhv":{"as":"pred","from":"x638fhv","to":"aqfc51v"},"xel6go6":{"as":"arg0","from":"xel6go6","to":"x638fhv"},"xmd2fqb":{"as":"arg1","from":"xmd2fqb","to":"x638fhv"},"4fxcgml":{"as":"renderer","from":"4fxcgml","to":"5m99dxg"},"fznso76":{"as":"fx","from":"fznso76","to":"5m99dxg"},"8m5muxn/7in78pu":{"as":"_camera","from":"8m5muxn/7in78pu","to":"8m5muxn/hlqmo48"},"8m5muxn/inq87j9":{"as":"_scene","from":"8m5muxn/inq87j9","to":"8m5muxn/hlqmo48"},"8m5muxn/gwavfrm":{"as":"value","from":"8m5muxn/gwavfrm","to":"8m5muxn/inq87j9"},"8m5muxn/33kmaec":{"as":"target","from":"8m5muxn/33kmaec","to":"8m5muxn/7in78pu"},"8m5muxn/v1nqvl7":{"as":"value","from":"8m5muxn/v1nqvl7","to":"8m5muxn/7in78pu"},"8m5muxn/zci8apj":{"as":"value","from":"8m5muxn/zci8apj","to":"8m5muxn/33kmaec"},"t8adnxm":{"as":"canvas","from":"t8adnxm","to":"8m5muxn/zci8apj"},"40aw44l":{"as":"_renderer","from":"40aw44l","to":"8m5muxn/39ivise"}},"id":"@three.setup","name":"three.setup","nodes":{"8m5muxn/8m5muxn":{"id":"8m5muxn/8m5muxn","name":"@three.setup","ref":"return"},"qioaglu":{"id":"qioaglu"},"yt5ewda":{"id":"yt5ewda","ref":"@memory.cache"},"dt9q1m5":{"id":"dt9q1m5","ref":"@data.get","value":"nodeFrame"},"bqpkucx":{"id":"bqpkucx","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/renderers/webgl/nodes/WebGLNodes.js"},"vl4foaa":{"id":"vl4foaa","ref":"@memory.cache"},"7peak26":{"id":"7peak26","ref":"@data.get","value":"RenderPass"},"slle0cq":{"id":"slle0cq","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/postprocessing/RenderPass.js"},"kipwn58":{"id":"kipwn58","ref":"@memory.cache"},"4a9zo9a":{"id":"4a9zo9a","ref":"@data.get","value":"EffectComposer"},"i39y0i3":{"id":"i39y0i3","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/postprocessing/EffectComposer.js"},"8m5muxn/njzfcz8":{"id":"8m5muxn/njzfcz8","name":"","ref":"return"},"jiobf52":{"id":"jiobf52"},"slwyovm":{"id":"slwyovm","ref":"arg","value":"_renderer.value"},"f7krd8u":{"id":"f7krd8u","ref":"arg","value":"objects"},"8m5muxn/vyr07ts":{"id":"8m5muxn/vyr07ts","name":""},"ptak9t2":{"id":"ptak9t2","name":"","ref":"@flow.ap"},"c6eig78":{"id":"c6eig78","ref":"@data.array"},"z552097":{"id":"z552097","ref":"@flow.runnable"},"dyst9ju":{"id":"dyst9ju","ref":"@js.script","value":"if(renderer) {\n  //renderer.render(scene, camera);\n  _lib.nodeFrame.update();\n  renderer.render();\n}"},"cvop6x9":{"id":"cvop6x9","ref":"@flow.default"},"zs7iowa":{"id":"zs7iowa","ref":"arg","value":"_renderer.value"},"e9d6mmx":{"id":"e9d6mmx","ref":"@flow.ap"},"cwrlosg":{"id":"cwrlosg","value":"true"},"7xukyuz":{"id":"7xukyuz","ref":"@data.get","value":"set"},"jjmvxjj":{"id":"jjmvxjj","ref":"arg","value":"_renderer"},"0wp18c9":{"id":"0wp18c9"},"vc0quhz":{"id":"vc0quhz","ref":"@memory.cache"},"lugpx4o":{"id":"lugpx4o","ref":"@js.script","value":"if(!renderer){\n  return;\n}\nconst fxcomposer = new fx.EffectComposer(renderer)\nconst renderpass = new fx.RenderPass(scene, camera);\nfxcomposer.setSize(canvas.width, canvas.height);\nfxcomposer.addPass(renderpass);\nif(MotionBlur) {\n  const pass = new MotionBlur(scene, camera, { samples: 32, expandgeometry: 0.4 });\n  fxcomposer.addPass(pass);\n  pass.renderToScreen = true;\n}\nreturn fxcomposer;"},"vzmvbqh":{"id":"vzmvbqh","ref":"@flow.if"},"3876w2f":{"id":"3876w2f","ref":"@js.script","value":"return module.MotionBlurPass;"},"ya36a1r":{"id":"ya36a1r","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/gh/ulyssesdotcodes/threejs-sandbox@94c68f4/motionBlurPass/src/MotionBlurPass.js"},"23ppkmp":{"id":"23ppkmp","ref":"arg","value":"motionBlur"},"vwa13pj":{"id":"vwa13pj"},"gap7au7":{"id":"gap7au7","ref":"arg","value":"_lib.EffectComposer"},"fzf3k5e":{"id":"fzf3k5e","ref":"arg","value":"_lib.RenderPass"},"tgacxe5":{"id":"tgacxe5","ref":"@memory.cache"},"hsytqp3":{"id":"hsytqp3","name":"","ref":"@three.renderer"},"1j95u16":{"id":"1j95u16","ref":"arg","value":"canvas"},"svcshll":{"id":"svcshll","ref":"arg","value":"canvas"},"eamyj81":{"id":"eamyj81","ref":"arg","value":"_scene: internal"},"6s18wo7":{"id":"6s18wo7","ref":"arg","value":"_camera: internal"},"cha35wd":{"id":"cha35wd","ref":"arg","value":"_scene: internal"},"1js087x":{"id":"1js087x","ref":"arg","value":"_camera: internal"},"rmqxb31":{"id":"rmqxb31","ref":"@flow.if"},"mh5ikoc":{"id":"mh5ikoc","ref":"arg","value":"onupdate"},"b2z2580":{"id":"b2z2580","ref":"@flow.ap"},"wcnk2sw":{"id":"wcnk2sw","ref":"arg","value":"onupdate"},"m291v0o":{"id":"m291v0o"},"y2f8gog":{"id":"y2f8gog","ref":"arg","value":"_camera: internal"},"xgl6r05":{"id":"xgl6r05","ref":"arg","value":"objects: internal"},"2veqlq1":{"id":"2veqlq1","ref":"arg","value":"_scene"},"o9mcda1":{"id":"o9mcda1","ref":"@flow.runnable"},"lsf5igz":{"id":"lsf5igz","ref":"@flow.if"},"tkxqh5a":{"id":"tkxqh5a","ref":"@three.update_children"},"zz2yk2z":{"id":"zz2yk2z","ref":"arg","value":"_scene"},"z51c26o":{"id":"z51c26o","ref":"@data.map"},"na6fxum":{"id":"na6fxum","ref":"@flow.if"},"f288n1z":{"id":"f288n1z","ref":"arg","value":"objects"},"8ivgw9u":{"id":"8ivgw9u","ref":"@data.array"},"7ubaa60":{"id":"7ubaa60","ref":"@flow.if"},"t94hhq8":{"id":"t94hhq8","ref":"@js.script","value":"// compensate for automatic passthrough\nreturn [[\"arg0\", obj]]"},"8rbp2e7":{"id":"8rbp2e7","ref":"arg","value":"objects"},"d8w679k":{"id":"d8w679k","ref":"@js.script","value":"return entries.flatMap(e => e?.[1] && Array.isArray(e[1]) ? e[1].map((c, i) => [e[0] + i, c]) : [e]).filter(e => e[1]);"},"reop6t4":{"id":"reop6t4","ref":"@data.object_entries"},"bgi56zl":{"id":"bgi56zl","ref":"@flow.default"},"u0f4b37":{"id":"u0f4b37","value":"{}"},"by4m1fr":{"id":"by4m1fr","ref":"arg","value":"objects"},"5wfilvv":{"id":"5wfilvv","ref":"@js.script","value":"return objs instanceof _lib.THREE.Object3D"},"shvo342":{"id":"shvo342","ref":"arg","value":"objects"},"5gt2zai":{"id":"5gt2zai","ref":"@js.create_fn"},"ryjjzqr":{"id":"ryjjzqr","ref":"@flow.runnable"},"sfzzxee":{"id":"sfzzxee"},"wgn4yl2":{"id":"wgn4yl2"},"4j2wgr9":{"id":"4j2wgr9","ref":"@data.set_mutable","value":"name"},"l98p3to":{"id":"l98p3to","ref":"@data.get","value":"0"},"s208cfn":{"id":"s208cfn","ref":"arg","value":"element"},"ek93m5o":{"id":"ek93m5o","ref":"@data.get","value":"1"},"dq4u9ji":{"id":"dq4u9ji","ref":"arg","value":"element"},"ploozds":{"id":"ploozds","ref":"arg","value":"_scene"},"7c7zppx":{"id":"7c7zppx","ref":"@flow.runnable"},"aqfc51v":{"id":"aqfc51v","ref":"@flow.if"},"x638fhv":{"id":"x638fhv","ref":"@js.script","value":"\nreturn arg1 && arg0"},"xmd2fqb":{"id":"xmd2fqb","ref":"arg","value":"fx"},"xel6go6":{"id":"xel6go6","ref":"arg","value":"_renderer.value"},"5m99dxg":{"id":"5m99dxg","ref":"@js.script","value":"fx?.forEach((pass, idx) => {\n  // +1 for renderpass\n  if(renderer.passes[idx + 1] !== pass) {\n    if(renderer.passes.length > idx + 1) {\n      console.log(\"removing\", idx)  \n      renderer.removePass(renderer.passes[idx + 1]);\n    }\n    console.log(\"adding fx \", pass)\n    renderer.insertPass(pass, idx + 1);\n  }\n});\n\nif(fx && renderer.passes.length > fx?.length + 1) {\n  renderer.passes.splice(fx.length, renderer.passes.length)\n}"},"fznso76":{"id":"fznso76","ref":"arg","value":"fx"},"4fxcgml":{"id":"4fxcgml","ref":"arg","value":"_renderer.value"},"8m5muxn/hlqmo48":{"id":"8m5muxn/hlqmo48"},"8m5muxn/inq87j9":{"id":"8m5muxn/inq87j9","name":"","ref":"@memory.cache"},"8m5muxn/gwavfrm":{"__isnodysseus":true,"id":"8m5muxn/gwavfrm","ref":"@three.scene","value":""},"8m5muxn/7in78pu":{"id":"8m5muxn/7in78pu","ref":"@data.set_mutable","value":"position.z"},"8m5muxn/v1nqvl7":{"id":"8m5muxn/v1nqvl7","value":"5"},"8m5muxn/33kmaec":{"id":"8m5muxn/33kmaec","ref":"@memory.cache"},"8m5muxn/zci8apj":{"__isnodysseus":true,"id":"8m5muxn/zci8apj","ref":"@three.camera","value":""},"t8adnxm":{"id":"t8adnxm","ref":"arg","value":"canvas"},"8m5muxn/39ivise":{"id":"8m5muxn/39ivise"},"40aw44l":{"id":"40aw44l","ref":"@memory.reference"}},"out":"8m5muxn/8m5muxn"},{"edges":{"lihjkfp":{"as":"value","from":"lihjkfp","to":"main/out"},"zo305fs":{"as":"lib","from":"zo305fs","to":"main/out"},"tvnjxr9":{"as":"webgpurenderer","from":"tvnjxr9","to":"zo305fs"},"fdgum4l":{"as":"pred","from":"fdgum4l","to":"lihjkfp"},"x4zdk2w":{"as":"true","from":"x4zdk2w","to":"lihjkfp"},"cwl59lh":{"as":"canvas","from":"cwl59lh","to":"x4zdk2w"},"eyftv46":{"as":"canvas","from":"eyftv46","to":"fdgum4l"},"56eh38m":{"as":"value","from":"56eh38m","to":"tvnjxr9"}},"id":"@three.webgpuRenderer","nodes":{"main/out":{"__isnodysseus":true,"id":"main/out","name":"@three.webgpuRenderer","ref":"return"},"zo305fs":{"id":"zo305fs"},"tvnjxr9":{"id":"tvnjxr9","ref":"@memory.cache"},"56eh38m":{"id":"56eh38m","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/renderers/webgpu/WebGPURenderer.js"},"lihjkfp":{"id":"lihjkfp","ref":"@flow.if"},"x4zdk2w":{"id":"x4zdk2w","ref":"@js.script","value":"canvas = canvas\nconst renderer = new _lib.webgpurenderer({canvas});\nrenderer.setPixelRatio( window.devicePixelRatio );\nrenderer.setSize(canvas.width, canvas.height)\nreturn renderer"},"cwl59lh":{"id":"cwl59lh","name":"","ref":"arg","value":"canvas"},"fdgum4l":{"id":"fdgum4l","ref":"@js.script","value":"return canvas && _lib.webgpurenderer"},"eyftv46":{"id":"eyftv46","ref":"arg","value":"canvas"}},"out":"main/out"},{"description":"Creates a basic three.js scene with a camera, webGPU renderer, and scene. The `objects` input has the objects of the scene, evaluated every frame - make sure to cache. The `onupdate` input is a runnable with parameters `objects`, `camera`, and `scene` which is run every frame - keep. The `fx` input has effects for an EffectComposer.","edges":{"8m5muxn/39ivise":{"as":"args","from":"8m5muxn/39ivise","to":"8m5muxn/8m5muxn"},"8m5muxn/njzfcz8":{"as":"value","from":"8m5muxn/njzfcz8","to":"8m5muxn/8m5muxn"},"qioaglu":{"as":"lib","from":"qioaglu","to":"8m5muxn/8m5muxn"},"kipwn58":{"as":"EffectComposer","from":"kipwn58","to":"qioaglu"},"vl4foaa":{"as":"RenderPass","from":"vl4foaa","to":"qioaglu"},"yt5ewda":{"as":"nodeFrame","from":"yt5ewda","to":"qioaglu"},"dt9q1m5":{"as":"value","from":"dt9q1m5","to":"yt5ewda"},"bqpkucx":{"as":"target","from":"bqpkucx","to":"dt9q1m5"},"7peak26":{"as":"value","from":"7peak26","to":"vl4foaa"},"slle0cq":{"as":"target","from":"slle0cq","to":"7peak26"},"4a9zo9a":{"as":"value","from":"4a9zo9a","to":"kipwn58"},"i39y0i3":{"as":"target","from":"i39y0i3","to":"4a9zo9a"},"8m5muxn/hlqmo48":{"as":"args","from":"8m5muxn/hlqmo48","to":"8m5muxn/njzfcz8"},"8m5muxn/vyr07ts":{"as":"subscribe","from":"8m5muxn/vyr07ts","to":"8m5muxn/njzfcz8"},"jiobf52":{"as":"value","from":"jiobf52","to":"8m5muxn/njzfcz8"},"f7krd8u":{"as":"objects","from":"f7krd8u","to":"jiobf52"},"slwyovm":{"as":"renderer","from":"slwyovm","to":"jiobf52"},"ptak9t2":{"as":"animationframe","from":"ptak9t2","to":"8m5muxn/vyr07ts"},"c6eig78":{"as":"fn","from":"c6eig78","to":"ptak9t2"},"7c7zppx":{"as":"arg2","from":"7c7zppx","to":"c6eig78"},"o9mcda1":{"as":"arg1","from":"o9mcda1","to":"c6eig78"},"rmqxb31":{"as":"arg4","from":"rmqxb31","to":"c6eig78"},"thz0uma":{"as":"arg5","from":"thz0uma","to":"c6eig78"},"z552097":{"as":"arg6","from":"z552097","to":"c6eig78"},"clc5p25":{"as":"fn","from":"clc5p25","to":"z552097"},"dyst9ju":{"as":"value","from":"dyst9ju","to":"clc5p25"},"1js087x":{"as":"camera","from":"1js087x","to":"dyst9ju"},"8mgsspt":{"as":"computeNode","from":"8mgsspt","to":"dyst9ju"},"cha35wd":{"as":"scene","from":"cha35wd","to":"dyst9ju"},"cvop6x9":{"as":"renderer","from":"cvop6x9","to":"dyst9ju"},"e9d6mmx":{"as":"otherwise","from":"e9d6mmx","to":"cvop6x9"},"zs7iowa":{"as":"value","from":"zs7iowa","to":"cvop6x9"},"0wp18c9":{"as":"args","from":"0wp18c9","to":"e9d6mmx"},"cwrlosg":{"as":"run","from":"cwrlosg","to":"e9d6mmx"},"jjmvxjj":{"as":"fn","from":"jjmvxjj","to":"e9d6mmx"},"vc0quhz":{"as":"value","from":"vc0quhz","to":"0wp18c9"},"lugpx4o":{"as":"value","from":"lugpx4o","to":"vc0quhz"},"6s18wo7":{"as":"camera","from":"6s18wo7","to":"lugpx4o"},"eamyj81":{"as":"scene","from":"eamyj81","to":"lugpx4o"},"svcshll":{"as":"canvas","from":"svcshll","to":"lugpx4o"},"tgacxe5":{"as":"renderer","from":"tgacxe5","to":"lugpx4o"},"vwa13pj":{"as":"fx","from":"vwa13pj","to":"lugpx4o"},"vzmvbqh":{"as":"MotionBlur","from":"vzmvbqh","to":"lugpx4o"},"23ppkmp":{"as":"pred","from":"23ppkmp","to":"vzmvbqh"},"3876w2f":{"as":"true","from":"3876w2f","to":"vzmvbqh"},"ya36a1r":{"as":"module","from":"ya36a1r","to":"3876w2f"},"fzf3k5e":{"as":"RenderPass","from":"fzf3k5e","to":"vwa13pj"},"gap7au7":{"as":"EffectComposer","from":"gap7au7","to":"vwa13pj"},"hsytqp3":{"as":"value","from":"hsytqp3","to":"tgacxe5"},"1j95u16":{"as":"canvas","from":"1j95u16","to":"hsytqp3"},"zzxmk3w":{"as":"fn","from":"zzxmk3w","to":"thz0uma"},"ijd124m":{"as":"_computeNode","from":"ijd124m","to":"zzxmk3w"},"iu537bz":{"as":"computeNode","from":"iu537bz","to":"zzxmk3w"},"b2z2580":{"as":"true","from":"b2z2580","to":"rmqxb31"},"mh5ikoc":{"as":"pred","from":"mh5ikoc","to":"rmqxb31"},"m291v0o":{"as":"args","from":"m291v0o","to":"b2z2580"},"wcnk2sw":{"as":"fn","from":"wcnk2sw","to":"b2z2580"},"2veqlq1":{"as":"scene","from":"2veqlq1","to":"m291v0o"},"xgl6r05":{"as":"objects","from":"xgl6r05","to":"m291v0o"},"y2f8gog":{"as":"camera","from":"y2f8gog","to":"m291v0o"},"lsf5igz":{"as":"fn","from":"lsf5igz","to":"o9mcda1"},"ploozds":{"as":"pred","from":"ploozds","to":"lsf5igz"},"tkxqh5a":{"as":"true","from":"tkxqh5a","to":"lsf5igz"},"z51c26o":{"as":"children","from":"z51c26o","to":"tkxqh5a"},"zz2yk2z":{"as":"parent","from":"zz2yk2z","to":"tkxqh5a"},"5gt2zai":{"as":"fn","from":"5gt2zai","to":"z51c26o"},"na6fxum":{"as":"array","from":"na6fxum","to":"z51c26o"},"8ivgw9u":{"as":"false","from":"8ivgw9u","to":"na6fxum"},"d8w679k":{"as":"true","from":"d8w679k","to":"na6fxum"},"f288n1z":{"as":"pred","from":"f288n1z","to":"na6fxum"},"reop6t4":{"as":"entries","from":"reop6t4","to":"d8w679k"},"bgi56zl":{"as":"object","from":"bgi56zl","to":"reop6t4"},"by4m1fr":{"as":"value","from":"by4m1fr","to":"bgi56zl"},"u0f4b37":{"as":"otherwise","from":"u0f4b37","to":"bgi56zl"},"ryjjzqr":{"as":"runnable","from":"ryjjzqr","to":"5gt2zai"},"4j2wgr9":{"as":"fn","from":"4j2wgr9","to":"ryjjzqr"},"sfzzxee":{"as":"parameters","from":"sfzzxee","to":"ryjjzqr"},"wgn4yl2":{"as":"element","from":"wgn4yl2","to":"sfzzxee"},"ek93m5o":{"as":"target","from":"ek93m5o","to":"4j2wgr9"},"l98p3to":{"as":"value","from":"l98p3to","to":"4j2wgr9"},"s208cfn":{"as":"target","from":"s208cfn","to":"l98p3to"},"dq4u9ji":{"as":"target","from":"dq4u9ji","to":"ek93m5o"},"aqfc51v":{"as":"fn","from":"aqfc51v","to":"7c7zppx"},"5m99dxg":{"as":"true","from":"5m99dxg","to":"aqfc51v"},"x638fhv":{"as":"pred","from":"x638fhv","to":"aqfc51v"},"xel6go6":{"as":"arg0","from":"xel6go6","to":"x638fhv"},"xmd2fqb":{"as":"arg1","from":"xmd2fqb","to":"x638fhv"},"4fxcgml":{"as":"renderer","from":"4fxcgml","to":"5m99dxg"},"fznso76":{"as":"fx","from":"fznso76","to":"5m99dxg"},"8m5muxn/7in78pu":{"as":"_camera","from":"8m5muxn/7in78pu","to":"8m5muxn/hlqmo48"},"8m5muxn/inq87j9":{"as":"_scene","from":"8m5muxn/inq87j9","to":"8m5muxn/hlqmo48"},"8m5muxn/gwavfrm":{"as":"value","from":"8m5muxn/gwavfrm","to":"8m5muxn/inq87j9"},"8m5muxn/33kmaec":{"as":"target","from":"8m5muxn/33kmaec","to":"8m5muxn/7in78pu"},"8m5muxn/v1nqvl7":{"as":"value","from":"8m5muxn/v1nqvl7","to":"8m5muxn/7in78pu"},"8m5muxn/zci8apj":{"as":"value","from":"8m5muxn/zci8apj","to":"8m5muxn/33kmaec"},"t8adnxm":{"as":"canvas","from":"t8adnxm","to":"8m5muxn/zci8apj"},"40aw44l":{"as":"_renderer","from":"40aw44l","to":"8m5muxn/39ivise"},"y3r5oh9":{"as":"_computeNode","from":"y3r5oh9","to":"8m5muxn/39ivise"},"a0fmzg4":{"as":"initial","from":"a0fmzg4","to":"y3r5oh9"}},"id":"@three.setupWebGPU","name":"three.setup","nodes":{"8m5muxn/8m5muxn":{"id":"8m5muxn/8m5muxn","name":"@three.setupWebGPU","ref":"return"},"qioaglu":{"id":"qioaglu"},"yt5ewda":{"id":"yt5ewda","ref":"@memory.cache"},"dt9q1m5":{"id":"dt9q1m5","ref":"@data.get","value":"nodeFrame"},"bqpkucx":{"id":"bqpkucx","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/renderers/webgl/nodes/WebGLNodes.js"},"vl4foaa":{"id":"vl4foaa","ref":"@memory.cache"},"7peak26":{"id":"7peak26","ref":"@data.get","value":"RenderPass"},"slle0cq":{"id":"slle0cq","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/postprocessing/RenderPass.js"},"kipwn58":{"id":"kipwn58","ref":"@memory.cache"},"4a9zo9a":{"id":"4a9zo9a","ref":"@data.get","value":"EffectComposer"},"i39y0i3":{"id":"i39y0i3","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/npm/three/examples/jsm/postprocessing/EffectComposer.js"},"8m5muxn/njzfcz8":{"id":"8m5muxn/njzfcz8","name":"","ref":"return"},"jiobf52":{"id":"jiobf52"},"slwyovm":{"id":"slwyovm","ref":"arg","value":"_renderer.state"},"f7krd8u":{"id":"f7krd8u","ref":"arg","value":"objects"},"8m5muxn/vyr07ts":{"id":"8m5muxn/vyr07ts","ref":"extern","value":"extern.data"},"ptak9t2":{"id":"ptak9t2","name":"","ref":"@flow.ap"},"c6eig78":{"id":"c6eig78","ref":"@data.array"},"z552097":{"id":"z552097","ref":"@flow.runnable"},"clc5p25":{"id":"clc5p25","ref":"@memory.cache"},"dyst9ju":{"id":"dyst9ju","ref":"@js.script","value":"if(renderer && scene && camera) {\n\n  //_lib.nodeFrame.update();\n  const animate = () => {\n    if(computeNode.value) {\n      renderer.compute(computeNode.value)\n    }\n    renderer.render(scene, camera);\n  }\n  // renderer.render();\n  renderer.setAnimationLoop(animate);\n\n  return true;\n}"},"cvop6x9":{"id":"cvop6x9","ref":"@flow.default"},"zs7iowa":{"id":"zs7iowa","ref":"arg","value":"_renderer.state"},"e9d6mmx":{"id":"e9d6mmx","ref":"@flow.ap"},"jjmvxjj":{"id":"jjmvxjj","ref":"arg","value":"_renderer.set"},"cwrlosg":{"id":"cwrlosg","value":"true"},"0wp18c9":{"id":"0wp18c9"},"vc0quhz":{"id":"vc0quhz","ref":"@memory.cache"},"lugpx4o":{"id":"lugpx4o","ref":"@js.script","value":"\nif(!renderer){\n  return;\n}\n//renderer.setPixelRatio( window.devicePixelRatio );\n//renderer.setSize(canvas.width, canvas.height)\nreturn renderer\nconst fxcomposer = new fx.EffectComposer(renderer)\nconst renderpass = new fx.RenderPass(scene, camera);\nfxcomposer.setSize(canvas.width, canvas.height);\nfxcomposer.addPass(renderpass);\nif(MotionBlur) {\n  const pass = new MotionBlur(scene, camera, { samples: 32, expandgeometry: 0.4 });\n  fxcomposer.addPass(pass);\n  pass.renderToScreen = true;\n}\nreturn fxcomposer;"},"vzmvbqh":{"id":"vzmvbqh","ref":"@flow.if"},"3876w2f":{"id":"3876w2f","ref":"@js.script","value":"return module.MotionBlurPass;"},"ya36a1r":{"id":"ya36a1r","ref":"@js.import_module","value":"https://cdn.jsdelivr.net/gh/ulyssesdotcodes/threejs-sandbox@94c68f4/motionBlurPass/src/MotionBlurPass.js"},"23ppkmp":{"id":"23ppkmp","ref":"arg","value":"motionBlur"},"vwa13pj":{"id":"vwa13pj"},"gap7au7":{"id":"gap7au7","ref":"arg","value":"_lib.EffectComposer"},"fzf3k5e":{"id":"fzf3k5e","ref":"arg","value":"_lib.RenderPass"},"tgacxe5":{"id":"tgacxe5","ref":"@memory.cache"},"hsytqp3":{"id":"hsytqp3","name":"","ref":"@three.webgpuRenderer"},"1j95u16":{"id":"1j95u16","ref":"arg","value":"canvas"},"svcshll":{"id":"svcshll","ref":"arg","value":"canvas"},"eamyj81":{"id":"eamyj81","ref":"arg","value":"_scene: internal"},"6s18wo7":{"id":"6s18wo7","ref":"arg","value":"_camera: internal"},"cha35wd":{"id":"cha35wd","ref":"arg","value":"_scene: internal"},"8mgsspt":{"id":"8mgsspt","ref":"arg","value":"_computeNode"},"1js087x":{"id":"1js087x","ref":"arg","value":"_camera: internal"},"thz0uma":{"id":"thz0uma","ref":"@flow.runnable"},"zzxmk3w":{"id":"zzxmk3w","ref":"@js.script","value":"_computeNode.value = computeNode;"},"iu537bz":{"id":"iu537bz","ref":"arg","value":"computeNode"},"ijd124m":{"id":"ijd124m","ref":"arg","value":"_computeNode"},"rmqxb31":{"id":"rmqxb31","ref":"@flow.if"},"mh5ikoc":{"id":"mh5ikoc","ref":"arg","value":"onupdate"},"b2z2580":{"id":"b2z2580","ref":"@flow.ap"},"wcnk2sw":{"id":"wcnk2sw","ref":"arg","value":"onupdate"},"m291v0o":{"id":"m291v0o"},"y2f8gog":{"id":"y2f8gog","ref":"arg","value":"_camera: internal"},"xgl6r05":{"id":"xgl6r05","ref":"arg","value":"objects: internal"},"2veqlq1":{"id":"2veqlq1","ref":"arg","value":"_scene"},"o9mcda1":{"id":"o9mcda1","ref":"@flow.runnable"},"lsf5igz":{"id":"lsf5igz","ref":"@flow.if"},"tkxqh5a":{"id":"tkxqh5a","ref":"@three.update_children"},"zz2yk2z":{"id":"zz2yk2z","ref":"arg","value":"_scene"},"z51c26o":{"id":"z51c26o","ref":"@data.map"},"na6fxum":{"id":"na6fxum","ref":"@flow.if"},"f288n1z":{"id":"f288n1z","ref":"arg","value":"objects"},"d8w679k":{"id":"d8w679k","ref":"@js.script","value":"return entries.filter(e => e[1])"},"reop6t4":{"id":"reop6t4","ref":"@data.object_entries"},"bgi56zl":{"id":"bgi56zl","ref":"@flow.default"},"u0f4b37":{"id":"u0f4b37","value":"{}"},"by4m1fr":{"id":"by4m1fr","ref":"arg","value":"objects"},"8ivgw9u":{"id":"8ivgw9u","ref":"@data.array"},"5gt2zai":{"id":"5gt2zai","ref":"@js.create_fn"},"ryjjzqr":{"id":"ryjjzqr","ref":"@flow.runnable"},"sfzzxee":{"id":"sfzzxee"},"wgn4yl2":{"id":"wgn4yl2"},"4j2wgr9":{"id":"4j2wgr9","ref":"@data.set_mutable","value":"name"},"l98p3to":{"id":"l98p3to","ref":"@data.get","value":"0"},"s208cfn":{"id":"s208cfn","ref":"arg","value":"element"},"ek93m5o":{"id":"ek93m5o","ref":"@data.get","value":"1"},"dq4u9ji":{"id":"dq4u9ji","ref":"arg","value":"element"},"ploozds":{"id":"ploozds","ref":"arg","value":"_scene"},"7c7zppx":{"id":"7c7zppx","ref":"@flow.runnable"},"aqfc51v":{"id":"aqfc51v","ref":"@flow.if"},"x638fhv":{"id":"x638fhv","ref":"@math.and"},"xmd2fqb":{"id":"xmd2fqb","ref":"arg","value":"fx"},"xel6go6":{"id":"xel6go6","ref":"arg","value":"_renderer.state"},"5m99dxg":{"id":"5m99dxg","ref":"@js.script","value":"return false;\nfx?.forEach((pass, idx) => {\n  // +1 for renderpass\n  if(renderer.passes[idx + 1] !== pass) {\n    if(renderer.passes.length > idx + 1) {\n      console.log(\"removing\", idx)  \n      renderer.removePass(renderer.passes[idx + 1]);\n    }\n    console.log(\"adding fx \", pass)\n    renderer.insertPass(pass, idx + 1);\n  }\n});\n\nif(fx && renderer.passes.length > fx?.length + 1) {\n  renderer.passes.splice(fx.length, renderer.passes.length)\n}"},"fznso76":{"id":"fznso76","ref":"arg","value":"fx"},"4fxcgml":{"id":"4fxcgml","ref":"arg","value":"_renderer.state"},"8m5muxn/hlqmo48":{"id":"8m5muxn/hlqmo48"},"8m5muxn/inq87j9":{"id":"8m5muxn/inq87j9","name":"","ref":"@memory.cache"},"8m5muxn/gwavfrm":{"__isnodysseus":true,"id":"8m5muxn/gwavfrm","ref":"@three.scene","value":""},"8m5muxn/7in78pu":{"id":"8m5muxn/7in78pu","ref":"@data.set_mutable","value":"position.z"},"8m5muxn/v1nqvl7":{"id":"8m5muxn/v1nqvl7","value":"5"},"8m5muxn/33kmaec":{"id":"8m5muxn/33kmaec","ref":"@memory.cache"},"8m5muxn/zci8apj":{"__isnodysseus":true,"id":"8m5muxn/zci8apj","ref":"@three.camera","value":""},"t8adnxm":{"id":"t8adnxm","ref":"arg","value":"canvas"},"8m5muxn/39ivise":{"id":"8m5muxn/39ivise"},"y3r5oh9":{"id":"y3r5oh9","ref":"@memory.reference"},"a0fmzg4":{"id":"a0fmzg4","ref":"arg","value":"computeNode"},"40aw44l":{"id":"40aw44l","ref":"@memory.state"}},"out":"8m5muxn/8m5muxn"},{"description":"Import an EffectPass from three.js [postprocessing directory](https://github.com/mrdoob/three.js/tree/master/examples/jsm/postprocessing)","edges":{"k7u4my3":{"as":"display","from":"k7u4my3","to":"t2wl30j"},"of41u1j":{"as":"value","from":"of41u1j","to":"t2wl30j"},"q4tskdl":{"as":"args","from":"q4tskdl","to":"t2wl30j"},"pvev9ga":{"as":"_slider","from":"pvev9ga","to":"q4tskdl"},"63hqrno":{"as":"min","from":"63hqrno","to":"pvev9ga"},"7nill36":{"as":"step","from":"7nill36","to":"pvev9ga"},"tjcoj8q":{"as":"max","from":"tjcoj8q","to":"pvev9ga"},"glg2kyh":{"as":"otherwise","from":"glg2kyh","to":"tjcoj8q"},"vzjormm":{"as":"value","from":"vzjormm","to":"tjcoj8q"},"2wkwis5":{"as":"value","from":"2wkwis5","to":"of41u1j"},"nt0kpaj":{"as":"name","from":"nt0kpaj","to":"2wkwis5"},"un4g6vb":{"as":"object","from":"un4g6vb","to":"2wkwis5"},"vcwv107":{"as":"type","from":"vcwv107","to":"2wkwis5"},"zokku7t":{"as":"value","from":"zokku7t","to":"un4g6vb"},"pr5ek2n":{"as":"target","from":"pr5ek2n","to":"zokku7t"}},"id":"@three.sliderNode","name":"FxPass","nodes":{"t2wl30j":{"id":"t2wl30j","name":"@three.sliderNode","ref":"return"},"q4tskdl":{"id":"q4tskdl"},"pvev9ga":{"id":"pvev9ga","ref":"@html.slider"},"tjcoj8q":{"id":"tjcoj8q","ref":"@flow.default"},"vzjormm":{"id":"vzjormm","ref":"arg","value":"max"},"glg2kyh":{"id":"glg2kyh","ref":"arg","value":"__graph_value"},"7nill36":{"id":"7nill36","ref":"arg","value":"step"},"63hqrno":{"id":"63hqrno","ref":"arg","value":"min"},"of41u1j":{"id":"of41u1j","ref":"@debug.log","value":"refnode"},"2wkwis5":{"id":"2wkwis5","ref":"@three.node","value":"reference"},"vcwv107":{"id":"vcwv107","value":"float"},"un4g6vb":{"id":"un4g6vb","ref":"@debug.log","value":"val"},"zokku7t":{"id":"zokku7t","ref":"@data.get","value":"value"},"pr5ek2n":{"id":"pr5ek2n","ref":"arg","value":"_slider"},"nt0kpaj":{"id":"nt0kpaj","value":"value"},"k7u4my3":{"id":"k7u4my3","ref":"arg","value":"_slider"}},"out":"t2wl30j"},{"edges":{"args":{"as":"args","from":"args","to":"out"},"u41ekks":{"as":"value","from":"u41ekks","to":"out"},"4bxn62i":{"as":"false","from":"4bxn62i","to":"u41ekks"},"6nb9csb":{"as":"pred","from":"6nb9csb","to":"u41ekks"},"vn2sh9e":{"as":"true","from":"vn2sh9e","to":"u41ekks"},"1bqfz6p":{"as":"subscribe","from":"1bqfz6p","to":"vn2sh9e"},"ohrirfq":{"as":"args","from":"ohrirfq","to":"vn2sh9e"},"q0mclka":{"as":"value","from":"q0mclka","to":"vn2sh9e"},"a10w5r5":{"as":"_initgeo","from":"a10w5r5","to":"ohrirfq"},"vlxve1t":{"as":"value","from":"vlxve1t","to":"a10w5r5"},"8dy8qvc":{"as":"animationframe","from":"8dy8qvc","to":"1bqfz6p"},"atydp8q":{"as":"fn","from":"atydp8q","to":"8dy8qvc"},"bp5douv":{"as":"update","from":"bp5douv","to":"atydp8q"},"jxfl45g":{"as":"recache","from":"jxfl45g","to":"bp5douv"},"keikzdc":{"as":"value","from":"keikzdc","to":"bp5douv"},"8z68nb0":{"as":"value","from":"8z68nb0","to":"keikzdc"},"9jx6qne":{"as":"args","from":"9jx6qne","to":"keikzdc"},"7wxm2ed":{"as":"_length","from":"7wxm2ed","to":"9jx6qne"},"8ko69y2":{"as":"_start","from":"8ko69y2","to":"9jx6qne"},"bpgcslp":{"as":"_initgeofn","from":"bpgcslp","to":"9jx6qne"},"er5ast6":{"as":"_offset","from":"er5ast6","to":"9jx6qne"},"gryixka":{"as":"_inputgeofn","from":"gryixka","to":"9jx6qne"},"9c6kw1t":{"as":"value","from":"9c6kw1t","to":"er5ast6"},"vq7nrhj":{"as":"value","from":"vq7nrhj","to":"9c6kw1t"},"pagi2lc":{"as":"value","from":"pagi2lc","to":"8ko69y2"},"hpf94oh":{"as":"value","from":"hpf94oh","to":"pagi2lc"},"hueqrpa":{"as":"otherwise","from":"hueqrpa","to":"7wxm2ed"},"ofk68p4":{"as":"value","from":"ofk68p4","to":"7wxm2ed"},"h1svwe3":{"as":"graphvalue","from":"h1svwe3","to":"hueqrpa"},"181rx1y":{"as":"runnable","from":"181rx1y","to":"8z68nb0"},"2a3e12z":{"as":"fn","from":"2a3e12z","to":"181rx1y"},"31qgv2o":{"as":"length","from":"31qgv2o","to":"2a3e12z"},"8r9pxsz":{"as":"start","from":"8r9pxsz","to":"2a3e12z"},"9zsc4ld":{"as":"inputgeo","from":"9zsc4ld","to":"2a3e12z"},"fovvogu":{"as":"initgeo","from":"fovvogu","to":"2a3e12z"},"gwhbx7f":{"as":"offset","from":"gwhbx7f","to":"2a3e12z"},"nb2tup9":{"as":"attribute","from":"nb2tup9","to":"2a3e12z"},"m22uzk2":{"as":"values","from":"m22uzk2","to":"jxfl45g"},"ee1op5b":{"as":"arg1","from":"ee1op5b","to":"m22uzk2"},"npr0bse":{"as":"arg2","from":"npr0bse","to":"m22uzk2"},"tt21f6z":{"as":"arg0","from":"tt21f6z","to":"m22uzk2"},"jmyelqq":{"as":"value","from":"jmyelqq","to":"tt21f6z"},"d5miekb":{"as":"value","from":"d5miekb","to":"npr0bse"},"bot08g0":{"as":"value","from":"bot08g0","to":"ee1op5b"},"lsmnhra":{"as":"_animframe","from":"lsmnhra","to":"args"},"st1qot0":{"as":"_feedback","from":"st1qot0","to":"args"}},"id":"@three.trail","nodes":{"out":{"id":"out","name":"@three.trail","ref":"return"},"u41ekks":{"id":"u41ekks","ref":"@flow.if"},"vn2sh9e":{"id":"vn2sh9e","ref":"return"},"q0mclka":{"id":"q0mclka","ref":"arg","value":"_initgeo"},"ohrirfq":{"id":"ohrirfq"},"a10w5r5":{"id":"a10w5r5","ref":"@memory.cache"},"vlxve1t":{"id":"vlxve1t","ref":"@js.script","value":"const geo = new _lib.THREE.BufferGeometry();\ngeo.setAttribute('position', new _lib.THREE.BufferAttribute( new Float32Array( [] ), 3));\n\nreturn geo"},"1bqfz6p":{"id":"1bqfz6p"},"8dy8qvc":{"id":"8dy8qvc","ref":"@flow.runnable"},"atydp8q":{"id":"atydp8q","ref":"@js.script","value":"update();"},"bp5douv":{"id":"bp5douv","ref":"@memory.cache"},"keikzdc":{"id":"keikzdc","ref":"return"},"9jx6qne":{"id":"9jx6qne"},"gryixka":{"id":"gryixka","ref":"arg","value":"geo"},"er5ast6":{"id":"er5ast6","ref":"@memory.cache"},"9c6kw1t":{"id":"9c6kw1t"},"vq7nrhj":{"id":"vq7nrhj","value":"0"},"bpgcslp":{"id":"bpgcslp","ref":"arg","value":"_initgeo"},"8ko69y2":{"id":"8ko69y2","ref":"@memory.cache"},"pagi2lc":{"id":"pagi2lc"},"hpf94oh":{"id":"hpf94oh","value":"0"},"7wxm2ed":{"id":"7wxm2ed","ref":"@flow.default"},"ofk68p4":{"id":"ofk68p4","ref":"arg","value":"length"},"hueqrpa":{"id":"hueqrpa","ref":"@js.script","value":"try {\nreturn parseInt(graphvalue);\n} catch(e) {\n  return 5;\n}"},"h1svwe3":{"id":"h1svwe3","ref":"arg","value":"__graph_value"},"8z68nb0":{"id":"8z68nb0","ref":"@js.create_fn"},"181rx1y":{"id":"181rx1y","ref":"@flow.runnable"},"2a3e12z":{"id":"2a3e12z","ref":"@js.script","value":"const item_size = 3;\nconst inputcount = inputgeo.getAttribute(\"position\").count;\nconst count = inputcount * length;\nconst initpos = initgeo.getAttribute(\"position\")\n\nconst currentlength = initpos.count / inputcount;\n\nstart.value = 0;\n\ninitgeo.setDrawRange(start.value * inputcount, count);\n\nconst attrs = Object.keys(inputgeo.attributes);\n\nattrs.forEach(attr => {\n    if (!initgeo.hasAttribute(attr) || initgeo.getAttribute(attr).count < count) {\n      initgeo.setAttribute(\n        attr, \n        new _lib.THREE.BufferAttribute(new Float32Array(count * item_size), item_size)\n)\n    }\n\n  const initbuffer = initgeo.getAttribute(attr);\n  const inputbuffer = inputgeo.getAttribute(attr);\n  offset.value %= length;\n  const offsetamt = (offset.value + start.value) * inputcount * item_size;\n  offset.value += 1;\n  initbuffer.array.set(inputbuffer.array, offsetamt);\n  \n  initbuffer.needsUpdate = true;\n})\n\nreturn initgeo;"},"nb2tup9":{"id":"nb2tup9","ref":"arg","value":"_attribute"},"gwhbx7f":{"id":"gwhbx7f","ref":"arg","value":"_offset"},"fovvogu":{"id":"fovvogu","ref":"arg","value":"_initgeofn"},"9zsc4ld":{"id":"9zsc4ld","ref":"arg","value":"_inputgeofn"},"8r9pxsz":{"id":"8r9pxsz","ref":"arg","value":"_start"},"31qgv2o":{"id":"31qgv2o","ref":"arg","value":"_length"},"jxfl45g":{"id":"jxfl45g","ref":"@js.script","value":"return !values.every(v => !v);"},"m22uzk2":{"id":"m22uzk2","ref":"@data.array"},"tt21f6z":{"id":"tt21f6z","ref":"@data.ischanged"},"jmyelqq":{"id":"jmyelqq","ref":"arg","value":"geo"},"npr0bse":{"id":"npr0bse","ref":"@data.ischanged"},"d5miekb":{"id":"d5miekb","ref":"arg","value":"length"},"ee1op5b":{"id":"ee1op5b","ref":"@data.ischanged"},"bot08g0":{"id":"bot08g0","ref":"arg","value":"__graph_value"},"6nb9csb":{"id":"6nb9csb","ref":"arg","value":"geo"},"4bxn62i":{"id":"4bxn62i","ref":"arg","value":"_initgeo"},"args":{"id":"args"},"st1qot0":{"id":"st1qot0","ref":"@memory.state"},"lsmnhra":{"id":"lsmnhra","ref":"@memory.state"}},"out":"out"},{"edges":{"pu6r1wt":{"as":"args","from":"pu6r1wt","to":"85ca6kk"},"t2oo2w2":{"as":"value","from":"t2oo2w2","to":"85ca6kk"},"5xsve23":{"as":"geo","from":"5xsve23","to":"t2oo2w2"},"lqp7o13":{"as":"fn","from":"lqp7o13","to":"t2oo2w2"},"uqnka6f":{"as":"feedback","from":"uqnka6f","to":"t2oo2w2"},"56vngd9":{"as":"fn","from":"56vngd9","to":"lqp7o13"},"yww2wir":{"as":"parameters","from":"yww2wir","to":"lqp7o13"},"gv4m9ja":{"as":"point_data","from":"gv4m9ja","to":"yww2wir"},"iq70jau":{"as":"pd","from":"iq70jau","to":"56vngd9"}},"id":"@three.update_position","name":"@three.update_position","nodes":{"85ca6kk":{"id":"85ca6kk","name":"@three.update_position","ref":"return"},"t2oo2w2":{"id":"t2oo2w2","ref":"@three.modify_attribute","value":"position"},"uqnka6f":{"id":"uqnka6f","value":"true"},"lqp7o13":{"id":"lqp7o13","ref":"@flow.runnable"},"yww2wir":{"id":"yww2wir"},"gv4m9ja":{"id":"gv4m9ja"},"56vngd9":{"id":"56vngd9","ref":"@js.script","value":"pd.position[0] += pd.velocity[0];\npd.position[1] += pd.velocity[1];\npd.position[2] += pd.velocity[2];"},"iq70jau":{"id":"iq70jau","ref":"arg","value":"point_data"},"5xsve23":{"id":"5xsve23","ref":"arg","value":"geo"},"pu6r1wt":{"id":"pu6r1wt"}},"out":"85ca6kk"},{"description":"Use a background worker to run the runnable. The canvas will no longer be usable from the main thread.","edges":{"cmxhqcs":{"as":"args","from":"cmxhqcs","to":"2gl9npa"},"lv74cei":{"as":"value","from":"lv74cei","to":"2gl9npa"},"53ej613":{"as":"canvas","from":"53ej613","to":"lv74cei"},"n6ayfvr":{"as":"graphid","from":"n6ayfvr","to":"lv74cei"},"rti7mja":{"as":"worker","from":"rti7mja","to":"lv74cei"},"yc7v57r":{"as":"runnable","from":"yc7v57r","to":"lv74cei"}},"id":"@three.worker","name":"@three.worker","nodes":{"2gl9npa":{"id":"2gl9npa","name":"@three.worker","ref":"return"},"lv74cei":{"id":"lv74cei","ref":"@js.script","value":"if(canvas && worker && canvas.width > 0) {\n  _lib.workerPostMessage(runnable, new Map([['__graphid', {value: graphid}], canvas.width > 0 && [ 'canvas', canvas]].filter(v => v)), canvas.width > 0 ? [canvas] : [])\n}\n\nreturn true"},"yc7v57r":{"id":"yc7v57r","ref":"arg","value":"runnable"},"rti7mja":{"id":"rti7mja","ref":"@js.script","value":"return _lib.worker();"},"n6ayfvr":{"id":"n6ayfvr","ref":"arg","value":"graphid"},"53ej613":{"id":"53ej613","ref":"arg","value":"canvas"},"cmxhqcs":{"id":"cmxhqcs"}},"out":"2gl9npa"}]
