nadesiko3 3.7.2 → 3.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/batch/command.txt +472 -469
  2. package/batch/pickup_command.nako3 +1 -1
  3. package/core/.eslintrc.cjs +10 -3
  4. package/core/package-lock.json +1184 -645
  5. package/core/package.json +4 -5
  6. package/core/src/nako3.mjs +8 -6
  7. package/core/src/nako3.mts +19 -16
  8. package/core/src/nako_ast.mts +2 -3
  9. package/core/src/nako_core_version.mjs +2 -2
  10. package/core/src/nako_core_version.mts +2 -2
  11. package/core/src/nako_csv.mjs +1 -0
  12. package/core/src/nako_csv.mts +3 -2
  13. package/core/src/nako_from_dncl.mjs +1 -1
  14. package/core/src/nako_from_dncl.mts +1 -1
  15. package/core/src/nako_from_dncl2.mjs +1 -1
  16. package/core/src/nako_from_dncl2.mts +2 -2
  17. package/core/src/nako_gen.mjs +37 -35
  18. package/core/src/nako_gen.mts +70 -67
  19. package/core/src/nako_global.mjs +3 -2
  20. package/core/src/nako_global.mts +3 -2
  21. package/core/src/nako_lexer.mjs +3 -3
  22. package/core/src/nako_lexer.mts +3 -3
  23. package/core/src/nako_logger.mjs +1 -1
  24. package/core/src/nako_logger.mts +2 -2
  25. package/core/src/nako_parser3.mjs +67 -59
  26. package/core/src/nako_parser3.mts +96 -90
  27. package/core/src/nako_parser_base.mts +3 -3
  28. package/core/src/nako_prepare.mjs +1 -1
  29. package/core/src/nako_prepare.mts +1 -1
  30. package/core/src/nako_source_mapping.mts +0 -1
  31. package/core/src/nako_token.mts +8 -8
  32. package/core/src/nako_types.mts +1 -1
  33. package/core/src/plugin_api.mts +1 -1
  34. package/core/src/plugin_csv.mjs +1 -0
  35. package/core/src/plugin_csv.mts +2 -1
  36. package/core/src/plugin_math.mjs +2 -2
  37. package/core/src/plugin_math.mts +3 -3
  38. package/core/src/plugin_promise.mjs +1 -1
  39. package/core/src/plugin_promise.mts +1 -1
  40. package/core/src/plugin_system.mjs +117 -40
  41. package/core/src/plugin_system.mts +132 -58
  42. package/core/src/plugin_test.mjs +3 -1
  43. package/core/src/plugin_test.mts +3 -1
  44. package/core/test/basic_test.mjs +16 -0
  45. package/core/test/calc_test.mjs +7 -0
  46. package/core/test/plugin_system_test.mjs +33 -0
  47. package/doc/files.md +4 -4
  48. package/doc/plugins.md +1 -1
  49. package/package.json +9 -9
  50. package/release/_hash.txt +36 -121
  51. package/release/_script-tags.txt +16 -33
  52. package/release/command.json +1 -1
  53. package/release/command.json.js +1 -1
  54. package/release/command_cnako3.json +1 -1
  55. package/release/command_list.json +1 -1
  56. package/release/edit_main.js +3 -3
  57. package/release/edit_main.js.map +2 -2
  58. package/release/editor.js +3 -3
  59. package/release/plugin_markup.js +53 -53
  60. package/release/plugin_markup.js.map +3 -3
  61. package/release/plugin_weykturtle3d.js +1 -1
  62. package/release/plugin_weykturtle3d.js.map +4 -4
  63. package/release/version.js +3 -3
  64. package/release/version_main.js +3 -3
  65. package/release/version_main.js.map +2 -2
  66. package/release/wnako3.js +66 -66
  67. package/release/wnako3.js.map +3 -3
  68. package/release/wnako3webworker.js +58 -58
  69. package/release/wnako3webworker.js.map +3 -3
  70. package/src/browsers.txt +30 -20
  71. package/src/cnako3mod.mjs +19 -18
  72. package/src/cnako3mod.mts +17 -16
  73. package/src/deno_wrapper.mjs +6 -6
  74. package/src/deno_wrapper.mts +11 -11
  75. package/src/nako_version.mjs +2 -2
  76. package/src/nako_version.mts +2 -2
  77. package/src/plugin_browser.mjs +2 -2
  78. package/src/plugin_browser.mts +5 -5
  79. package/src/plugin_browser_ajax.mjs +2 -2
  80. package/src/plugin_browser_ajax.mts +2 -2
  81. package/src/plugin_browser_api.mts +0 -1
  82. package/src/plugin_browser_crypto.mjs +8 -8
  83. package/src/plugin_browser_crypto.mts +13 -13
  84. package/src/plugin_browser_dom_basic.mjs +3 -3
  85. package/src/plugin_browser_dom_basic.mts +5 -7
  86. package/src/plugin_browser_dom_event.mjs +1 -1
  87. package/src/plugin_browser_dom_event.mts +2 -1
  88. package/src/plugin_browser_dom_parts.mjs +33 -18
  89. package/src/plugin_browser_dom_parts.mts +60 -59
  90. package/src/plugin_browser_speech.mjs +1 -1
  91. package/src/plugin_browser_speech.mts +1 -1
  92. package/src/plugin_node.mjs +5 -3
  93. package/src/plugin_node.mts +6 -4
  94. package/src/plugin_weykturtle3d.mjs +38 -15
  95. package/src/plugin_weykturtle3d.mts +279 -240
  96. package/src/plugin_weykturtle3d_three.mjs +3 -0
  97. package/src/plugin_weykturtle3d_three.mts +214 -0
  98. package/src/plugin_weykturtle3d_threeutil.mjs +28 -0
  99. package/src/plugin_weykturtle3d_threeutil.mts +31 -0
  100. package/src/wnako3.mjs +1 -0
  101. package/src/wnako3.mts +1 -0
  102. package/src/wnako3mod.mjs +5 -2
  103. package/src/wnako3mod.mts +6 -3
  104. package/batch/command_nakopad.txt +0 -1177
  105. package/core/__report.txt +0 -617
  106. package/core/command/plugin_snako.mjs +0 -112
  107. package/core/command/snako.mjs +0 -108
  108. package/release/core_src_nako_josi_list_mjs.js +0 -3
  109. package/release/core_src_nako_josi_list_mjs.js.LICENSE.txt +0 -3
  110. package/release/core_src_nako_josi_list_mjs.js.map +0 -1
  111. package/release/core_src_nako_reserved_words_mjs.js +0 -3
  112. package/release/core_src_nako_reserved_words_mjs.js.LICENSE.txt +0 -3
  113. package/release/core_src_nako_reserved_words_mjs.js.map +0 -1
  114. package/release/editor/edit_main.js +0 -48
  115. package/release/editor/edit_main.js.map +0 -7
  116. package/release/editor/version_main.js +0 -44
  117. package/release/editor/version_main.js.map +0 -7
  118. package/release/editor.js.LICENSE.txt +0 -91
  119. package/release/editor.js.map +0 -1
  120. package/release/nako_gen_async.js +0 -2
  121. package/release/nako_gen_async.js.LICENSE.txt +0 -21
  122. package/release/nako_gen_async.js.map +0 -1
  123. package/release/plugin_caniuse.js.LICENSE.txt +0 -15
  124. package/release/plugin_datetime.js.LICENSE.txt +0 -21
  125. package/release/plugin_kansuji.js.LICENSE.txt +0 -3
  126. package/release/plugin_markup.js.LICENSE.txt +0 -15
  127. package/release/plugin_toml.js +0 -295
  128. package/release/plugin_toml.js.map +0 -7
  129. package/release/plugin_turtle.js.LICENSE.txt +0 -9
  130. package/release/plugin_webworker.js.LICENSE.txt +0 -3
  131. package/release/plugin_weykturtle3d.js.LICENSE.txt +0 -3
  132. package/release/src/plugin_caniuse.js +0 -2
  133. package/release/src/plugin_caniuse.js.map +0 -7
  134. package/release/src/plugin_datetime.js +0 -2
  135. package/release/src/plugin_datetime.js.map +0 -7
  136. package/release/src/plugin_kansuji.js +0 -2
  137. package/release/src/plugin_kansuji.js.map +0 -7
  138. package/release/src/plugin_keigo.js +0 -2
  139. package/release/src/plugin_keigo.js.map +0 -7
  140. package/release/src/plugin_markup.js +0 -64
  141. package/release/src/plugin_markup.js.map +0 -7
  142. package/release/src/plugin_three.js +0 -2
  143. package/release/src/plugin_three.js.map +0 -7
  144. package/release/src/plugin_turtle.js +0 -2
  145. package/release/src/plugin_turtle.js.map +0 -7
  146. package/release/src/plugin_webworker.js +0 -4
  147. package/release/src/plugin_webworker.js.map +0 -7
  148. package/release/src/plugin_weykturtle3d.js +0 -2
  149. package/release/src/plugin_weykturtle3d.js.map +0 -7
  150. package/release/src/wnako3.js +0 -482
  151. package/release/src/wnako3.js.map +0 -7
  152. package/release/src/wnako3webworker.js +0 -428
  153. package/release/src/wnako3webworker.js.map +0 -7
  154. package/release/stats.json +0 -1
  155. package/release/version.js.LICENSE.txt +0 -65
  156. package/release/version.js.map +0 -1
  157. package/release/wnako3.js.LICENSE.txt +0 -341
  158. package/release/wnako3webworker.js.LICENSE.txt +0 -209
  159. package/src/plugin_three.mts +0 -240
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/plugin_three.mjs", "../src/plugin_weykturtle3d.mts"],
4
- "sourcesContent": ["export class ThreeUtil {\n static isDisporsal(obj) {\n return 'dispose' in obj && typeof obj['dispose'] === 'function';\n }\n static isMesh(obj) {\n return 'isMesh' in obj && obj['isMesh'] === true;\n }\n static disposeChildObject(obj) {\n while (obj.children.length > 0) {\n this.disposeChildObject(obj.children[0]);\n obj.remove(obj.children[0]);\n }\n if (ThreeUtil.isMesh(obj)) {\n if (obj.geometry) {\n obj.geometry.dispose();\n }\n if (obj.material) {\n for (const propKey of Object.keys(obj.material)) {\n const prop = obj.material[propKey];\n if (ThreeUtil.isDisporsal(prop)) {\n prop.dispose();\n }\n }\n obj.material.dispose();\n }\n }\n }\n}\n", "/**\n * PluginWeykTurtle3D\n * 3d turtle graphics plugin\n */\n\nimport type { NakoSystem as NakoSystemBase } from '../core/src/plugin_api.mjs'\n\nimport { ThreeUtil } from './plugin_three.mjs' \nimport type { THREENS } from './plugin_three.mjs'\n\ndeclare global {\n interface Navigator {\n nako3: { addPluginObject: (name: string, obj: object) => {} }\n }\n interface Window {\n THREE?: THREENS.THREE\n }\n}\n\ninterface NakoSystem extends NakoSystemBase {\n tags: { weykturtle3d?: WeykTurtle3DSystem }\n}\n\ntype CallbackType<T> = (a:T) => void\ntype NumericArray3 = [ number, number, number ]\ntype NakoRumtimeName = 'wnako'|'cnako'\ninterface NakoVariables {\n type: 'const'|'var'\n value: any\n}\ninterface NakoFunction {\n type: 'func'\n josi: []|string[][]\n asyncFn?: boolean\n pure?: boolean\n fn: any\n return_none?: boolean\n}\ninterface NakoMeta {\n type: 'const'\n value: {\n pluginName: string\n description: string\n pluginVersion: string\n nakoRuntime: NakoRumtimeName[]\n nakoVersion: string\n }\n}\ninterface NakoPluginObject {\n [ index: string]: NakoVariables|NakoFunction|NakoMeta\n}\n\nclass DrawLineEventArgs {\n v1: THREENS.Vector3\n v2: THREENS.Vector3\n width: number\n color: THREENS.Color\n constructor (v1: THREENS.Vector3, v2: THREENS.Vector3, width: number, color: THREENS.Color) {\n this.v1 = v1\n this.v2 = v2\n this.width = width\n this.color = color\n }\n}\n\ninterface Turtle3DEventMap {\n modelChanged: CustomEvent<void>\n drawLine: CustomEvent<DrawLineEventArgs>\n}\n\ninterface Turtle3D extends EventTarget {\n addEventListener<K extends keyof Turtle3DEventMap>(\n type: K,\n listener: ((this: Turtle3D, evt: Turtle3DEventMap[K]) => any) | null,\n options?: boolean | EventListenerOptions,): void\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void\n dispatchEvent<K extends keyof Turtle3DEventMap>(evt: Turtle3DEventMap[K]): boolean\n removeListener<K extends keyof Turtle3DEventMap>(\n type: K,\n listener: (this: Turtle3D, evt: Turtle3DEventMap[K]) => any,\n options?: boolean | EventListenerOptions,): void\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void\n}\nclass CommandPromise {\n resolve: (result:any) => void\n reject: (err:Error) => void\n command: Command\n constructor (command: Command, resolve: (result: any) => void, reject: (err: Error) => void) {\n this.command = command\n this.resolve = resolve\n this.reject = reject\n }\n}\nclass Command {\n \n}\nclass CommandHome extends Command {\n cmd: string = 'home'\n mode: 'set'|'jump'\n constructor (mode: 'set'|'jump') {\n super()\n this.mode = mode\n }\n}\nclass CommandJump extends Command {\n cmd: string = 'jump'\n v: THREENS.Vector3\n constructor (v: THREENS.Vector3) {\n super()\n this.v = v\n }\n}\nclass CommandMoveAbsolute extends Command {\n cmd: string = 'move'\n v: THREENS.Vector3\n constructor (v: THREENS.Vector3) {\n super()\n this.v = v\n }\n}\nclass CommandAngle extends Command {\n cmd: string = 'angle'\n angle: THREENS.EulerArray\n constructor (angle: THREENS.EulerArray) {\n super()\n this.angle = angle\n }\n}\ntype MoveDirection = 'f'|'b'|'u'|'d'|'l'|'r'\ntype RotateDirection = 'u'|'d'|'l'|'r'\ntype RollDirection = 'l'|'r'\nclass CommandMoveDirection extends Command {\n cmd: string = 'slide'\n direction: MoveDirection\n length: number\n constructor (dir: MoveDirection, l: number) {\n super()\n this.direction = dir\n this.length = l\n }\n}\nclass CommandRotate extends Command {\n cmd: string = 'rotate'\n direction: RotateDirection\n angle: number\n constructor (dir: RotateDirection, a: number) {\n super()\n this.direction = dir\n this.angle = a\n }\n}\nclass CommandRoll extends Command {\n cmd: string = 'roll'\n direction: RollDirection\n angle: number\n constructor (dir: RollDirection, a: number) {\n super()\n this.direction = dir\n this.angle = a\n }\n}\nclass CommandPenEnable extends Command {\n cmd: string = 'pen'\n subcmd: string = 'enable'\n enable: boolean\n constructor (enable: boolean) {\n super()\n this.enable = enable\n }\n}\nclass CommandPenColor extends Command {\n cmd: string = 'pen'\n subcmd: string = 'color'\n color: THREENS.Color\n constructor (color: THREENS.Color) {\n super()\n this.color = color\n }\n}\nclass CommandPenWidth extends Command {\n cmd: string = 'pen'\n subcmd: string = 'width'\n width: number\n constructor (width: number) {\n super()\n this.width = width\n }\n}\nclass CommandVisible extends Command {\n cmd: string = 'attr'\n subcmd: string = 'visible'\n visible: boolean\n constructor (visible: boolean) {\n super()\n this.visible = visible\n }\n}\nclass CommandModel extends Command {\n cmd: string = 'attr'\n subcmd: string = 'model'\n model: any\n constructor (model: any) {\n super()\n this.model = model\n }\n}\n\nclass Turtle3D extends EventTarget {\n private three: THREENS.THREE\n id: number\n obj: THREENS.Object3D\n disposal: boolean\n home: { position: THREENS.Vector3, quaternion: THREENS.Quaternion }\n color: THREENS.Color\n lineWidth: number\n flagDown: boolean\n flagLoaded: boolean\n f_visible: boolean\n macros: CommandPromise[]\n\n constructor(three: THREENS.THREE, id: number) {\n super()\n this.three = three\n this.id = id\n const modelBase = new three.Group()\n this.obj = modelBase\n this.home = {\n position: new three.Vector3(0, 0, 0),\n quaternion: new three.Quaternion()\n }\n this.color = new three.Color(0xffffff)\n this.disposal = false\n this.lineWidth = 4\n this.flagDown = true\n this.flagLoaded = false\n this.f_visible = true\n this.macros = []\n\n this.home.position.copy(modelBase.position)\n this.home.quaternion.copy(modelBase.quaternion)\n }\n\n clear (): void {\n // \u672A\u5B9F\u884C\u30B8\u30E7\u30D6\u306EPromise\u3092\u5168\u3066\u5B8C\u4E86\u306B\u3059\u308B\n for (const job of this.macros) {\n job.resolve(0)\n }\n this.macros = [] // \u30B8\u30E7\u30D6\u3092\u30AF\u30EA\u30A2\n // \u304B\u3081\u306E\u30E2\u30C7\u30EB\u3092\u30AB\u30E1\u304B\u3089\u524A\u9664\n this.discardModel()\n this.f_visible = true\n this.obj.visible = true\n }\n discardModel (): void {\n if (this.disposal) {\n ThreeUtil.disposeChildObject(this.obj)\n this.disposal = false\n } else {\n this.obj.remove(this.obj.children[0])\n }\n this.flagLoaded = false\n }\n loadTurtle (model: THREENS.Object3D|string) {\n if (this.isObject3D(model)) {\n this.discardModel()\n this.obj.add(model)\n this.disposal = false\n this.flagLoaded = true\n this.raiseModelChanged()\n return\n }\n const url = model\n if (url.length === 0) {\n this.discardModel()\n this.obj.add(this.createDefaultTurtle())\n this.disposal = true\n this.flagLoaded = true\n this.raiseModelChanged()\n return\n }\n const loader = new this.three.ObjectLoader()\n loader.load(url, (obj: THREENS.Object3D) => {\n this.discardModel()\n this.obj.add(obj)\n this.disposal = true\n this.flagLoaded = true\n this.raiseModelChanged()\n }, (xhr: XMLHttpRequest) => {\n // nothing\n }, (xhr: XMLHttpRequest) => {\n this.discardModel()\n this.f_visible = false\n this.obj.visible = false\n this.raiseModelChanged()\n })\n }\n\n doMacro (noWait: boolean): boolean {\n if (!this.flagLoaded && !noWait) {\n return true\n }\n const que = this.macros.shift()\n if (typeof que === 'undefined') { return false }\n const m = que instanceof CommandPromise ? que.command : que\n if (m instanceof CommandJump) {\n // \u8D77\u70B9\u3092\u79FB\u52D5\u3059\u308B\n this.obj.position.copy(m.v)\n } else\n if (m instanceof CommandMoveAbsolute) {\n const v1 = this.obj.position.clone()\n const v2 = m.v\n // \u7DDA\u3092\u5F15\u304F\n this.line(v1, v2)\n // \u30AB\u30E1\u306E\u89D2\u5EA6\u3092\u5909\u66F4\n this.obj.lookAt(v2)\n const headup90 = new this.three.Quaternion()\n const axisX = new this.three.Vector3(1, 0, 0)\n headup90.setFromAxisAngle(axisX, Math.PI / 2)\n this.obj.quaternion.multiply(headup90)\n // \u30AB\u30E1\u3092\u79FB\u52D5\n this.obj.position.copy(v2)\n } else\n if (m instanceof CommandMoveDirection) {\n const dir = m.direction\n const l = m.length * ((dir === 'b') ? -1 : 1)\n const v1 = this.obj.position.clone()\n const v2 =new this.three.Vector3(0, l, 0) \n if (dir === 'f' || dir === 'b') {\n v2.applyQuaternion(this.obj.quaternion)\n } else {\n // u\n const modifier = new this.three.Quaternion()\n const target = this.obj.quaternion.clone()\n if (dir === 'u' || dir === 'd') {\n const axis = new this.three.Vector3(1, 0, 0)\n if (dir === 'u') {\n modifier.setFromAxisAngle(axis, (-90) * Math.PI / 180)\n } else { // dir === 'd'\n modifier.setFromAxisAngle(axis, 90 * Math.PI / 180)\n }\n } else { // dir === 'l' || dir === 'r'\n const axis = new this.three.Vector3(0, 0, 1)\n if (dir === 'l') {\n modifier.setFromAxisAngle(axis, 90 * Math.PI / 180)\n } else { // dir === 'r'\n modifier.setFromAxisAngle(axis, (-90) * Math.PI / 180)\n }\n }\n target.multiply(modifier)\n v2.applyQuaternion(target)\n }\n v2.add(v1)\n this.line(v1, v2)\n this.obj.position.copy(v2)\n } else\n if (m instanceof CommandHome) {\n const mode = m.mode\n switch (mode) {\n case 'set':\n this.home.position.copy(this.obj.position)\n this.home.quaternion.copy(this.obj.quaternion)\n break\n case 'jump':\n this.obj.position.copy(this.home.position)\n this.obj.quaternion.copy(this.home.quaternion)\n break\n }\n } else\n if (m instanceof CommandRotate) {\n const dir = m.direction\n const rv = m.angle * (dir === 'l' || dir === 'd' ? 1 : -1)\n const target = new this.three.Quaternion()\n let axis:THREENS.Vector3\n if (dir === 'l' || dir === 'r') {\n axis = new this.three.Vector3(0, 0, 1)\n } else {\n axis = new this.three.Vector3(1, 0, 0)\n }\n target.setFromAxisAngle(axis, (rv % 360) * Math.PI / 180)\n this.obj.quaternion.multiply(target)\n } else\n if (m instanceof CommandRoll) {\n const dir = m.direction\n const rv = m.angle * (dir === 'r' ? 1 : -1)\n const axis = new this.three.Vector3(0, 1, 0)\n const target = new this.three.Quaternion()\n target.setFromAxisAngle(axis, (rv % 360) * Math.PI / 180)\n this.obj.quaternion.multiply(target)\n } else\n if (m instanceof CommandPenColor) {\n this.color = m.color\n } else\n if (m instanceof CommandPenWidth) {\n this.lineWidth = m.width\n } else\n if (m instanceof CommandPenEnable) {\n this.flagDown = m.enable\n } else\n if (m instanceof CommandVisible) {\n this.f_visible = m.visible\n if (this.f_visible) {\n this.obj.visible = true\n } else {\n this.obj.visible = false\n }\n } else\n if (m instanceof CommandModel) {\n this.flagLoaded = false\n this.loadTurtle(m.model)\n } else\n if (m instanceof CommandAngle) {\n const euler = new this.three.Euler()\n euler.fromArray(m.angle)\n // eslint-disable-next-line no-unused-vars\n const dir = new this.three.Quaternion()\n this.obj.quaternion.setFromEuler(euler)\n }\n if (que instanceof CommandPromise) {\n que.resolve(0)\n }\n return (this.macros.length > 0)\n }\n\n private createDefaultTurtle (): THREENS.Object3D {\n const vertices = new Float32Array([\n 0.0, 1.0, 0.0,\n -0.6, -1.0, 0.0,\n 0.0, -0.5, 0.0,\n 0.6, -1.0, 0.0,\n\n 0.0, 0.0, 0.5,\n 0.0, 1.0, 0.0,\n -0.6, -1.0, 0.0,\n 0.0, -0.5, 0.0,\n 0.6, -1.0, 0.0,\n\n 0.0, 0.0, -0.5,\n 0.0, 1.0, 0.0,\n -0.6, -1.0, 0.0,\n 0.0, -0.5, 0.0,\n 0.6, -1.0, 0.0\n ])\n\n const colors = new Float32Array([\n 0.0, 1.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 1.0, 0.0,\n\n 1.0, 0.0, 0.0,\n 1.0, 0.0, 0.0,\n 1.0, 0.0, 0.0,\n 1.0, 0.0, 0.0,\n 1.0, 0.0, 0.0,\n\n 0.0, 0.0, 1.0,\n 0.0, 0.0, 1.0,\n 0.0, 0.0, 1.0,\n 0.0, 0.0, 1.0,\n 0.0, 0.0, 1.0\n ])\n\n const indices = [\n 0, 1, 1, 2, 2, 3, 3, 0,\n 4, 5, 4, 6, 4, 7, 4, 8,\n 9, 10, 9, 11, 9, 12, 9, 13\n ]\n\n const obj = new this.three.Group()\n const material = new this.three.LineBasicMaterial({ vertexColors: true })\n const geometry = new this.three.BufferGeometry()\n geometry.setIndex(indices)\n geometry.setAttribute('position', new this.three.BufferAttribute(vertices, 3))\n geometry.setAttribute('color', new this.three.BufferAttribute(colors, 3))\n geometry.computeBoundingSphere()\n\n const lineSegments = new this.three.LineSegments(geometry, material)\n lineSegments.scale.set(30.0, 30.0, 30.0)\n\n obj.add(lineSegments)\n return obj\n }\n\n private raiseModelChanged (): void {\n const evt = new CustomEvent<void>('modelChanged')\n this.dispatchEvent(evt)\n }\n\n private raiseDrawLine(v1: THREENS.Vector3, v2: THREENS.Vector3, width: number, color: THREENS.Color) : void {\n const args = new DrawLineEventArgs(v1, v2, width, color)\n const evt = new CustomEvent<DrawLineEventArgs>('drawLine', { detail: args })\n this.dispatchEvent(evt)\n }\n\n private line (v1: THREENS.Vector3, v2: THREENS.Vector3) {\n if (!this.flagDown) { return }\n this.raiseDrawLine(v1, v2, this.lineWidth, this.color)\n }\n\n private isObject3D (obj: any): obj is THREENS.Object3D {\n return obj instanceof this.three.Object3D\n }\n}\n\nclass WeykTurtle3DSystem {\n private static instance: WeykTurtle3DSystem\n private instanceCount: number\n sys: NakoSystem\n three: null|THREENS.THREE\n containerid: string\n camera: number\n target: number\n _renderer: THREENS.Renderer|null\n _scene: THREENS.Scene|null\n _lines: THREENS.Line|null\n _camera: THREENS.Camera|null\n _controls: THREENS.Controls|null\n _camerahelper: THREENS.CameraHelper|null\n _axishelper: THREENS.AxesHelper|null\n turtles: Turtle3D[]\n flagSetTimer: boolean\n _prevUpdatedTime: number\n\n static getInstance(sys: NakoSystem) {\n if (WeykTurtle3DSystem.instance === undefined) {\n WeykTurtle3DSystem.instance = new WeykTurtle3DSystem(sys);\n }\n const i = WeykTurtle3DSystem.instance;\n i.instanceCount += 1;\n return WeykTurtle3DSystem.instance;\n }\n\n constructor(sys: NakoSystem) {\n this.instanceCount = 0\n this.three = null\n this.sys = sys\n this.containerid = ''\n this.camera = -1\n this.target = -1\n this._renderer = null\n this._scene = null\n this._lines = null\n this._camera = null\n this._controls = null\n this._camerahelper = null\n this._axishelper = null\n this.turtles = []\n this.flagSetTimer = false\n this._prevUpdatedTime = 0\n }\n\n clearAll () {\n this.disposeAllTurtle()\n this.disposeAllLine()\n const scene = this._scene\n if (scene && this._lines) {\n scene.remove(this._lines)\n scene.add(this._lines)\n if (this._camerahelper !== null) {\n this._camerahelper.visible = false\n scene.remove(this._camerahelper)\n scene.add(this._camerahelper)\n }\n if (this._axishelper !== null) {\n this._axishelper.visible = false\n scene.remove(this._axishelper)\n scene.add(this._axishelper)\n }\n this.initTurtle()\n }\n }\n disposeAllTurtle () {\n // \u30AB\u30E1\u3092\u30AF\u30EA\u30A2\n for (const tt of this.turtles) {\n tt.clear()\n }\n this.turtles = []\n this.target = -1\n this.camera = -1\n this.flagSetTimer = false\n }\n disposeAllLine () {\n // \u5F15\u3044\u305F\u7DDA\u3092\u7DDA\u7528\u306E\u30D0\u30C3\u30D5\u30A1\u304B\u3089\u30AF\u30EA\u30A2\n if (this._lines !== null) {\n ThreeUtil.disposeChildObject(this._lines)\n }\n }\n private getThree(): THREENS.THREE {\n if (!this.three) {\n throw new Error('ThreeJS\u306E\u6E96\u5099\u3055\u308C\u308B\u524D\u306B\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F')\n }\n return this.three\n }\n createTurtle (modelUrl: string): number {\n // \u30AB\u30E1\u306E\u60C5\u5831\u3092 sys._turtle \u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\n const three = this.getThree()\n const id = this.turtles.length\n const tt = new Turtle3D(three, id)\n tt.addEventListener('modelChanged', (e) => {\n const redraw = !!this.sys.__getSysVar('T3D\u81EA\u52D5\u63CF\u753B')\n if (redraw) {\n this.doDraw(true)\n }\n })\n tt.addEventListener('drawLine', (e) => {\n this.drawLine(e.detail.v1, e.detail.v2, e.detail.width, e.detail.color)\n })\n this.turtles.push(tt)\n this.target = id\n tt.loadTurtle(modelUrl)\n const scene = this.getScene()\n scene.add(tt.obj)\n return id\n }\n initTurtle (): void {\n if (this.turtles.length === 0) {\n if (this._renderer === null) {\n this.initRenderer()\n }\n const three = this.getThree()\n // \u30AB\u30E1\u3092\uFF11\u3064\u751F\u6210\u3059\u308B\n const index = this.createTurtle('')\n // \u751F\u6210\u3057\u305F\u30AB\u30E1\u3092\u30AB\u30E1\u30E9\u7528\u30AB\u30E1\u3068\u3057\u3066\u8A2D\u5B9A\u3059\u308B\n const tt = this.turtles[index]\n tt.obj.position.set(0, 0, 1000)\n const axis = new three.Vector3(0, 0, -1).normalize()\n const angle = 0\n tt.obj.quaternion.setFromAxisAngle(axis, angle)\n tt.home.position.copy(tt.obj.position)\n tt.home.quaternion.copy(tt.obj.quaternion)\n tt.f_visible = false\n tt.obj.visible = false\n this.camera = index\n this.target = -1\n }\n }\n getCur (): Turtle3D {\n if (this.turtles.length === 0) {\n throw Error('\u6700\u521D\u306B\u300ET3D\u30AB\u30E1\u4F5C\u6210\u300F\u547D\u4EE4\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002')\n }\n if (this.target < 0 || this.target >= this.turtles.length) {\n throw Error('\u6307\u5B9A\u3055\u308C\u305F\u756A\u53F7\u306E\u30AB\u30E1\u306F\u3044\u307E\u305B\u3093\u3002')\n }\n return this.turtles[this.target]\n }\n queCurrentTurtle (cmd: Command): Promise<number> {\n const tt = this.getCur()\n const promise = new Promise<number>((resolve,reject) => {\n const que = new CommandPromise(cmd, resolve, reject)\n tt.macros.push(que)\n this.animationStart()\n })\n return promise\n }\n doDraw (beforeClear: boolean) {\n if (this.camera === -1) { return }\n if (!this._scene) { return }\n this.getRenderer()\n if (!this._renderer) { return }\n this.getCamera()\n if (!this._camera) { return }\n const camera = this.turtles[this.camera]\n if (this._controls === null) {\n this._camera.position.copy(camera.obj.position)\n this._camera.quaternion.copy(camera.obj.quaternion)\n }\n if (this._camerahelper !== null) {\n this._camerahelper.update()\n }\n if (this._controls !== null) {\n this._controls.update()\n camera.obj.position.copy(this._camera.position)\n camera.obj.quaternion.copy(this._camera.quaternion)\n }\n if (beforeClear) {\n this._renderer.clear()\n }\n this._renderer.render(this._scene, this._camera)\n }\n setCameraHelper (flag: boolean) {\n const three = this.getThree()\n if (flag) {\n if (this._camerahelper === null) {\n if (this._scene && this._camera) {\n if (typeof three.CameraHelper === 'undefined') {\n throw Error('\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u306E\u6A5F\u80FD\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n const cameraHelper = new three.CameraHelper(this._camera)\n this._camerahelper = cameraHelper\n this._scene.add(cameraHelper)\n }\n }\n this._camerahelper!.visible = true\n } else {\n if (this._camerahelper !== null) {\n this._camerahelper.visible = false\n }\n }\n }\n setAxisHelper (flag: boolean) {\n const three = this.getThree()\n if (flag) {\n if (this._axishelper === null) {\n if (this._scene) {\n if (typeof three.AxisHelper === 'undefined') {\n throw Error('AXIS\u30D8\u30EB\u30D1\u306E\u6A5F\u80FD\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n const axisHelper = new three.AxisHelper(1000)\n this._axishelper = axisHelper\n this._scene.add(axisHelper)\n }\n }\n this._axishelper!.visible = true\n } else {\n if (this._axishelper !== null) {\n this._axishelper.visible = false\n }\n }\n }\n getScene (): THREENS.Scene {\n const three = this.getThree()\n if (this._scene === null) {\n this._scene = new three.Scene()\n }\n return this._scene\n }\n getCamera (): THREENS.Camera {\n const three = this.getThree()\n if (this._camera === null) {\n const camera = new three.PerspectiveCamera(60, 1.0, 1, 65000)\n this.resetCamera(camera)\n this._camera = camera\n }\n return this._camera\n }\n resetCamera (camera: THREENS.Camera):void {\n const three = this.getThree()\n camera.position.set(0, 0, 1000)\n if (this._renderer !== null) {\n const rect = new three.Vector2()\n this._renderer.getSize(rect)\n if ('aspect' in camera) {\n camera.aspect = rect.width / rect.height\n }\n }\n camera.up = new three.Vector3(0, 1, 0)\n camera.lookAt(new three.Vector3(0, 0, 0))\n }\n initTrutle3dEnv (renderer: THREENS.WebGLRenderer) {\n renderer.setClearColor(0x000000, 1.0)\n renderer.autoClear = false\n\n const scene = this.getScene()\n // eslint-disable-next-line no-unused-vars\n const camera = this.getCamera()\n\n if (scene && this._lines) {\n scene.add(this._lines)\n if (this.turtles.length === 0) {\n this.initTurtle()\n }\n }\n }\n initRenderer ():THREENS.WebGLRenderer {\n // \u63CF\u753B\u5148\u3092\u30BB\u30C3\u30C8\u3059\u308B\n let to = this.sys.__getSysVar('T3D\u30AB\u30E1\u63CF\u753B\u5148')\n if (typeof to === 'string') { to = document.querySelector(to) || document.getElementById(to) }\n if (!to) {\n throw new Error('[ERROR] T3D\u30AB\u30E1\u63CF\u753B\u5148\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n const renderer = this.setRenderer(to)\n this.setupRenderer()\n return renderer\n }\n setRenderer (to: Element|HTMLCanvasElement|THREENS.WebGLRenderer):THREENS.WebGLRenderer {\n const three = this.getThree()\n let renderer: null|THREENS.WebGLRenderer = null\n if (to instanceof three.WebGLRenderer) {\n renderer = to\n } else\n if (to instanceof HTMLCanvasElement) {\n renderer = new three.WebGLRenderer({ antialias: false, alpha: true, canvas:to })\n if (renderer === null) {\n throw new Error('\u30EC\u30F3\u30C0\u30E9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093')\n }\n renderer.setSize( to.width, to.height )\n } else\n if (to instanceof Element) {\n renderer = new three.WebGLRenderer({ antialias: false, alpha: true })\n if (renderer === null) {\n throw new Error('\u30EC\u30F3\u30C0\u30E9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093')\n }\n renderer.setSize(to.clientWidth, to.clientHeight );\n to.appendChild(renderer.domElement)\n } else [\n // never\n ]\n renderer!.setPixelRatio(window.devicePixelRatio)\n this._renderer = renderer\n return this._renderer!\n }\n clearRenderer () {\n this._renderer = null\n if (this._controls) {\n this._controls.enabled = false\n this._controls = null\n }\n }\n setupRenderer () {\n if (this._renderer) {\n this.initTrutle3dEnv(this._renderer)\n }\n }\n getRenderer (): THREENS.Renderer {\n if (this._renderer === null) {\n this.initRenderer()\n }\n return this._renderer!\n }\n setupControl (controlConstrucor: THREENS.Controls): THREENS.Controls {\n if (typeof controlConstrucor === 'undefined') {\n throw new Error('\u6307\u5B9A\u3055\u308C\u305F\u30B3\u30F3\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n if (this._controls !== null) {\n if (this._controls instanceof controlConstrucor) {\n return this._controls\n } else {\n throw new Error('\u65E2\u306B\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u9069\u7528\u3057\u3066\u3044\u307E\u3059\u3002\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u306E\u5909\u66F4\u306F\u3067\u304D\u307E\u305B\u3093\u3002')\n }\n }\n const renderer = this.getRenderer()\n const camera = this.getCamera()\n // eslint-disable-next-line new-cap\n const controls = new controlConstrucor(camera, renderer.domElement)\n controls.enabled = true\n this._controls = controls\n return this._controls\n }\n drawLine (v1: THREENS.Vector3, v2: THREENS.Vector3, width: number, color: THREENS.Color):void {\n const three = this.getThree()\n const geometry = new three.BufferGeometry()\n const vertices = new three.Float32BufferAttribute(6, 3)\n vertices.copyArray([v1.x, v1.y, v1.z, v2.x, v2.y, v2.z])\n const material = new three.LineBasicMaterial({ color: color, linewidth: width })\n geometry.setAttribute('position', vertices)\n const line = new three.Line(geometry, material)\n if (this._lines) {\n this._lines.add(line)\n }\n }\n doMacroAllTurtles (): boolean {\n let hasNext = false\n for (const tt of this.turtles) {\n if (tt.doMacro(this.isNoWait())) { hasNext = true }\n }\n return hasNext\n }\n animationStart ():void {\n const wait = this.getWait()\n const macrorun = !!this.sys.__getSysVar('T3D\u81EA\u52D5\u5B9F\u884C')\n if (!macrorun) {\n return\n }\n if (this.isNoWait()) {\n this.animation()\n return\n }\n if (this.flagSetTimer) { return }\n this.flagSetTimer = true\n this.animationFrame(() => this.animation())\n }\n getWait (): number {\n return this.sys.__getSysVar('T3D\u30AB\u30E1\u901F\u5EA6')\n }\n isNoWait (): boolean {\n return this.sys.__getSysVar('T3D\u30AB\u30E1\u901F\u5EA6') === 0\n }\n animation () {\n const redraw = !!this.sys.__getSysVar('T3D\u81EA\u52D5\u63CF\u753B')\n const macrorun = !!this.sys.__getSysVar('T3D\u81EA\u52D5\u5B9F\u884C')\n const hasNext = this.animationTick()\n if (redraw) {\n this.doDraw(true)\n }\n if ((hasNext || this._controls !== null) && macrorun) {\n this.animationFrame(() => this.animation())\n } else {\n this.flagSetTimer = false\n }\n }\n animationTick () {\n const now = Date.now()\n const noWait = this.isNoWait()\n // \u30CE\u30FC\u30A6\u30A8\u30A4\u30C8\u3067\u306F\u306A\u3044\u5834\u5408\u306E\u6642\u9593\u5F85\u3061\u51E6\u7406\n if (!noWait) {\n const elapsedMs = now - this._prevUpdatedTime\n const wait = this.getWait()\n if (wait > 0 && elapsedMs < wait) {\n return true\n }\n }\n this._prevUpdatedTime = now\n let hasNext:boolean\n if (noWait) {\n while (this.doMacroAllTurtles()) {\n // no-op\n }\n hasNext = false\n } else {\n hasNext = this.doMacroAllTurtles()\n } \n return hasNext\n }\n animationFrame (callback: () => void, element?: Element) {\n window.setTimeout(callback, 1000 / 60)\n }\n ck (): THREENS.THREE {\n if (this.three === null) {\n if (this.sys.__getSysVar('THREE') !== null) {\n this.three = this.sys.__getSysVar('THREE')\n } else\n if (typeof window.THREE !== 'undefined') {\n this.three = window.THREE\n }\n }\n if (this.three === null) {\n throw new Error('three.module.js\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u307E\u305B\u3093')\n }\n if (this.sys.__getSysVar('THREE') === null) {\n this.sys.__setSysVar('THREE', this.three)\n }\n if (this._lines === null) {\n this._lines = new this.three.Group()\n }\n return this.three\n }\n static getTurtle3D(sys: NakoSystem): WeykTurtle3DSystem {\n if (!sys.tags.weykturtle3d) {\n throw new Error('\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u521D\u671F\u5316\u304C\u884C\u308F\u308C\u3066\u3044\u307E\u305B\u3093')\n }\n return sys.tags.weykturtle3d\n }\n static getEnv(sys: NakoSystem):[ WeykTurtle3DSystem, THREENS.THREE ] {\n const turtle3d = WeykTurtle3DSystem.getTurtle3D(sys)\n const three = turtle3d.ck()\n return [turtle3d, three]\n }\n}\n\nconst PluginWeykTurtle3D: NakoPluginObject = {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_weykturtle3d', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: '3D\u3067\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u63CF\u753B\u30D7\u30E9\u30B0\u30A4\u30F3', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAC\u660E\n pluginVersion: '3.6.0', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\n nakoRuntime: ['wnako'], // \u5BFE\u8C61\u30E9\u30F3\u30BF\u30A4\u30E0\n nakoVersion: '3.6.0' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n if (sys.tags.weykturtle3d) { return }\n const turtle3dSystem = WeykTurtle3DSystem.getInstance(sys)\n sys.tags.weykturtle3d = turtle3dSystem\n\n // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u521D\u671F\u5316\n sys.__setSysVar('THREE', null)\n }\n },\n // @3D\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u3068\u30D7\u30E9\u30B0\u30A4\u30F3\n 'THREE': {type: 'const', value: ''}, // @THREE\n 'T3D\u30D9\u30FC\u30B9URL': {type: 'var', value: 'https://cdn.jsdelivr.net/npm/three@0.127.0'}, // @T3D\u3079\u30FC\u3059URL\n 'T3D\u30E9\u30A4\u30D6\u30E9\u30EA\u8AAD\u8FBC': { // @ThreeJS\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u52D5\u7684\u306B\u8AAD\u307F\u8FBC\u3080 // @T3D\u3089\u3044\u3076\u3089\u308A\u3088\u307F\u3053\u3080\n type: 'func',\n josi: [],\n asyncFn: true,\n pure: true,\n fn: async function (sys: NakoSystem): Promise<boolean> {\n const turtle3d = WeykTurtle3DSystem.getTurtle3D(sys)\n if (turtle3d.three === null && sys.__getSysVar('THREE') === null) {\n const baseUrl = sys.__getSysVar('T3D\u30D9\u30FC\u30B9URL')\n const moduleUrl = baseUrl === '' ? 'three' : ( baseUrl + '/build/three.module.js' )\n const promise = import(/* webpackIgnore: true */ moduleUrl)\n promise.then(module => {\n turtle3d.three = Object.assign({}, module)\n turtle3d.ck()\n return true\n })\n promise.catch(err => {\n return false\n })\n return await promise\n } else {\n turtle3d.ck()\n return true\n }\n },\n return_none: false\n },\n 'T3D\u30E9\u30A4\u30D6\u30E9\u30EA\u8AAD\u8FBC\u5F8C': { // @ThreeJS\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u52D5\u7684\u306B\u8AAD\u307F\u8FBC\u3080 // @T3D\u3089\u3044\u3076\u3089\u308A\u3088\u307F\u3053\u307F\u3054\n type: 'func',\n josi: [['\u306B']],\n pure: true,\n fn: function (callback: CallbackType<boolean>, sys: NakoSystem):void {\n const turtle3d = WeykTurtle3DSystem.getTurtle3D(sys)\n if (turtle3d.three === null && sys.__getSysVar('THREE') === null) {\n const baseUrl = sys.__getSysVar('T3D\u30D9\u30FC\u30B9URL')\n const moduleUrl = baseUrl === '' ? 'three' : ( baseUrl + '/build/three.module.js' )\n const promise = import(/* webpackIgnore: true */ moduleUrl)\n promise.then(module => {\n turtle3d.three = Object.assign({}, module)\n turtle3d.ck()\n callback(true)\n })\n promise.catch(err => {\n callback(false)\n })\n } else {\n turtle3d.ck()\n callback(true)\n }\n },\n return_none: true\n },\n 'T3D\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAD\u8FBC': { // @ThreeJS\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u52D5\u7684\u306B\u8AAD\u307F\u8FBC\u3080 // @T3D\u3077\u3089\u3050\u3044\u3093\u3088\u307F\u3053\u3080\n type: 'func',\n josi: [['\u3092']],\n asyncFn: true,\n pure: true,\n fn: async function (plugins: string[], sys: NakoSystem):Promise<void> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n const l = plugins.length\n if (l === 0) {\n return\n }\n const baseUrl = sys.__getSysVar('T3D\u30D9\u30FC\u30B9URL')\n const totalPromise = new Promise<void> ((resolve, reject) => {\n const callbacks = (function (total) {\n let countTotal = 0\n let countSuccess = 0\n return function (success: boolean) {\n countTotal += 1\n if (success) {\n countSuccess += 1\n }\n if (countTotal === total) {\n if (countTotal === countSuccess) {\n resolve()\n } else {\n reject()\n }\n }\n }\n })(l)\n for (const name of plugins) {\n const pluginUrl = baseUrl === '' ? name : ( baseUrl + '/examples/jsm/' + name )\n const promise = import(/* webpackIgnore: true */ pluginUrl)\n promise.then(module => {\n Object.assign<THREENS.THREE, any>(three, module)\n callbacks(true)\n })\n promise.catch(err => {\n callbacks(false)\n })\n }\n })\n return totalPromise\n },\n return_none: true\n },\n 'T3D\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAD\u8FBC\u5F8C': { // @ThreeJS\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u52D5\u7684\u306B\u8AAD\u307F\u8FBC\u3080 // @T3D\u3077\u3089\u3050\u3044\u3093\u3088\u307F\u3053\u307F\u3054\n type: 'func',\n josi: [['\u306B'], ['\u3092']],\n pure: true,\n fn: function (callback: CallbackType<void> , plugins: string[], sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n const l = plugins.length\n if (l === 0) {\n callback()\n return\n }\n const baseUrl = sys.__getSysVar('T3D\u30D9\u30FC\u30B9URL')\n const callbacks = (function (callback, total) {\n let count = 0\n return function (success: boolean) {\n count+=1\n if (count === total) {\n callback()\n }\n }\n })(callback, l)\n for (let i=0;i < l;i++) {\n const name = plugins[i]\n const pluginUrl = baseUrl === '' ? name : ( baseUrl + '/examples/jsm/' + name )\n const promise = import(/* webpackIgnore: true */ pluginUrl)\n promise.then(module => {\n Object.assign<THREENS.THREE, any>(three, module)\n callbacks(true)\n })\n promise.catch(err => {\n callbacks(false)\n })\n }\n },\n return_none: true\n },\n // @3D\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u30AB\u30E1\u64CD\u4F5C\n 'T3D\u30AB\u30E1\u4F5C\u6210': { // @\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u958B\u59CB\u3057\u3066\u30AB\u30E1\u306EID\u3092\u8FD4\u3059 // @T3D\u304B\u3081\u3055\u304F\u305B\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): number {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.initTurtle()\n const modelUrl = sys.__getSysVar('T3D\u30AB\u30E1\u30E2\u30C7\u30EBURL')\n const id = turtle3d.createTurtle(modelUrl)\n return id\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u64CD\u4F5C\u5BFE\u8C61\u8A2D\u5B9A': { // @ID\u3092\u6307\u5B9A\u3057\u3066\u64CD\u4F5C\u5BFE\u8C61\u3068\u306A\u308B\u30AB\u30E1\u3092\u5909\u66F4\u3059\u308B // @T3D\u304B\u3081\u305D\u3046\u3055\u305F\u3044\u3057\u3087\u3046\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078', '\u306E']],\n pure: true,\n fn: function (id: number, sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.target = id\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u63CF\u753B\u5148': { type: 'var', value: 'turtle3d_div' }, // @T3D\u304B\u3081\u3073\u3087\u3046\u304C\u3055\u304D\n 'T3D\u30AB\u30E1\u30E2\u30C7\u30EBURL': { type: 'var', value: '' }, // @T3D\u304B\u3081\u3082\u3067\u308BURL\n 'T3D\u30AB\u30E1\u30E2\u30C7\u30EB\u5909\u66F4': { // @\u30AB\u30E1\u306E\u30E2\u30C7\u30EB\u3092URL\u306B\u5909\u66F4\u3059\u308B // @T3D\u304B\u3081\u3082\u3067\u308B\u3078\u3093\u3053\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (url: string, sys: NakoSystem):Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandModel(url))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u901F\u5EA6': { type: 'const', value: 100 }, // @T3D\u304B\u3081\u305D\u304F\u3069\n 'T3D\u30AB\u30E1\u901F\u5EA6\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u52D5\u4F5C\u901F\u5EA6V\u306B\u8A2D\u5B9A(\u5927\u304D\u3044\u307B\u3069\u9045\u3044) // @T3D\u304B\u3081\u305D\u304F\u3069\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (v: number, sys: NakoSystem):void {\n sys.__setSysVar('T3D\u30AB\u30E1\u901F\u5EA6', v)\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092[x,y,z]\u3078\u79FB\u52D5\u3059\u308B // @T3D\u304B\u3081\u3044\u3069\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (xyz: NumericArray3, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveAbsolute(new three.Vector3(xyz[0], xyz[1], xyz[2])))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u539F\u70B9\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u539F\u70B9\u3092\u73FE\u5728\u306E\u4F4D\u7F6E\u30FB\u5411\u304D\u306B\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u3052\u3093\u3066\u3093\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandHome('set'))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u539F\u70B9\u79FB\u52D5': { // @\u30AB\u30E1\u3092\u539F\u70B9\u306E\u4F4D\u7F6E\u30FB\u5411\u304D\u306B\u79FB\u52D5\u3059\u308B(\u63CF\u753B\u306F\u3057\u306A\u3044) // @T3D\u304B\u3081\u3052\u3093\u3066\u3093\u3044\u3069\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandHome('jump'))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u8D77\u70B9\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u63CF\u753B\u8D77\u70B9\u4F4D\u7F6E\u3092[x,y,z]\u3078\u79FB\u52D5\u3059\u308B // @T3D\u304B\u3081\u304D\u3066\u3093\u3044\u3069\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (xyz: NumericArray3, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandJump(new three.Vector3(xyz[0], xyz[1], xyz[2])))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u9032': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092L\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3059\u3059\u3080\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('f', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u623B': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092L\u3060\u3051\u623B\u3059 // @T3D\u304B\u3081\u3082\u3069\u308B\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('b', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u4E0A\u5E73\u884C\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u4E0A\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3046\u3048\u3078\u3044\u3053\u3046\u3044\u3069\u3046\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('u', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u4E0B\u5E73\u884C\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u4E0B\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3057\u305F\u3078\u3044\u3053\u3046\u3044\u3069\u3046\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('d', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u5DE6\u5E73\u884C\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u5DE6\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3072\u3060\u308A\u3078\u3044\u3053\u3046\u3044\u3069\u3046\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('l', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u53F3\u5E73\u884C\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u53F3\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u307F\u304E\u3078\u3044\u3053\u3046\u3044\u3069\u3046\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('r', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092DIR\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3046\u3054\u304F\n type: 'func',\n josi: [['\u3078', '\u306B'], ['\u3060\u3051']],\n pure: true,\n fn: function (dir:string, l: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n let cmd:MoveDirection\n if (dir === '\u524D' || dir === 'FORWARD' || dir === '\u307E\u3048') {\n cmd = 'f'\n } else\n if (dir === '\u5F8C' || dir === 'BACK' || dir === '\u3046\u3057\u308D' || dir === 'BACKWARD' || dir === '\u3042\u3068') {\n cmd = 'b'\n } else\n if (dir === '\u4E0A' || dir === 'UP' || dir === '\u3046\u3048') {\n cmd = 'u'\n } else\n if (dir === '\u4E0B' || dir === 'DOWN' || dir === '\u3057\u305F') {\n cmd = 'd'\n } else\n if (dir === '\u53F3' || dir === 'RIGHT' || dir === '\u307F\u304E') {\n cmd = 'r'\n } else\n if (dir === '\u5DE6' || dir === 'LEFT' || dir === '\u3072\u3060\u308A') {\n cmd = 'l'\n } else {\n throw Error('\u65B9\u5411\u306E\u6307\u5B9A\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u524D\u5F8C\u4E0A\u4E0B\u5DE6\u53F3\u306E\u3044\u305A\u308C\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')\n }\n return turtle3d.queCurrentTurtle(new CommandMoveDirection(cmd, l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u89D2\u5EA6\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092\u30AA\u30A4\u30E9\u30FC([x,y,z,XYZ])\u306B\u3066\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u304B\u304F\u3069\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078', '\u306E']],\n pure: true,\n fn: function (angle: THREENS.EulerArray, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandAngle(angle))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u53F3\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051\u53F3\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u307F\u304E\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRotate('r', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u5DE6\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051\u5DE6\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u3072\u3060\u308A\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRotate('l', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u4E0A\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051\u4E0A\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u3046\u3048\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRotate('u', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u4E0B\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051\u4E0B\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u3057\u305F\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRotate('d', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051DIR\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3078', '\u306B'], ['\u3060\u3051']],\n pure: true,\n fn: function (dir: string, a: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n let cmd:RotateDirection\n if (dir === '\u4E0A' || dir === 'UP' || dir === '\u3046\u3048') {\n cmd = 'u'\n } else\n if (dir === '\u4E0B' || dir === 'DOWN' || dir === '\u3057\u305F') {\n cmd = 'd'\n } else\n if (dir === '\u53F3' || dir === 'RIGHT' || dir === '\u307F\u304E') {\n cmd = 'r'\n } else\n if (dir === '\u5DE6' || dir === 'LEFT' || dir === '\u3072\u3060\u308A') {\n cmd = 'l'\n } else {\n throw Error('\u65B9\u5411\u306E\u6307\u5B9A\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u4E0A\u4E0B\u5DE6\u53F3\u306E\u3044\u305A\u308C\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')\n }\n return turtle3d.queCurrentTurtle(new CommandRotate(cmd, a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u53F3\u30ED\u30FC\u30EB': { // @\u30AB\u30E1\u3092A\u3060\u3051\u53F3\u306B\u50BE\u3051\u308B // @T3D\u304B\u3081\u307F\u304E\u308D\u30FC\u308B\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRoll('r', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u5DE6\u30ED\u30FC\u30EB': { // @\u30AB\u30E1\u306EA\u3060\u3051\u5DE6\u306B\u50BE\u3051\u308B // @T3D\u304B\u3081\u3072\u3060\u308A\u308D\u30FC\u308B\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRoll('l', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u50BE': { // @\u30AB\u30E1\u3092A\u3060\u3051DIR\u306B\u50BE\u3051\u308B // @T3D\u304B\u3081\u304B\u305F\u3080\u3051\u308B\n type: 'func',\n josi: [['\u306B', '\u3078'], ['\u3060\u3051']],\n pure: true,\n fn: function (dir: string, a: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n let cmd:RollDirection\n if (dir === '\u53F3' || dir === 'RIGHT' || dir === '\u307F\u304E') {\n cmd = 'r'\n } else\n if (dir === '\u5DE6' || dir === 'LEFT' || dir === '\u3072\u3060\u308A') {\n cmd = 'l'\n } else {\n throw Error('\u5411\u304D\u306E\u6307\u5B9A\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u5DE6\u53F3\u306E\u3069\u3061\u3089\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')\n }\n return turtle3d.queCurrentTurtle(new CommandRoll(cmd, a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u30DA\u30F3\u8272\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u30DA\u30F3\u63CF\u753B\u8272\u3092C\u306B\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u307A\u3093\u3044\u308D\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (c: number|THREENS.Color, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n if (typeof c === 'number') { c = new three.Color(c) }\n return turtle3d.queCurrentTurtle(new CommandPenColor(c))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u30DA\u30F3\u30B5\u30A4\u30BA\u8A2D\u5B9A': { // @\u30AB\u30E1\u30DA\u30F3\u306E\u30B5\u30A4\u30BA\u3092W\u306B\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u307A\u3093\u3055\u3044\u305A\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (w: number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandPenWidth(w))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u30DA\u30F3\u8A2D\u5B9A': { // @\u30AB\u30E1\u30DA\u30F3\u3092\u4F7F\u3046\u304B\u3069\u3046\u304B\u3092V(\u30AA\u30F3/\u30AA\u30D5)\u306B\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u307A\u3093\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (w: boolean|number, sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandPenEnable(!!w))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u5168\u6D88\u53BB': { // @\u8868\u793A\u3057\u3066\u3044\u308B\u30AB\u30E1\u3068\u63CF\u753B\u5185\u5BB9\u3092\u5168\u90E8\u6D88\u53BB\u3059\u308B // @T3D\u304B\u3081\u305C\u3093\u3057\u3087\u3046\u304D\u3087\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.clearAll()\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u975E\u8868\u793A': { // @\u30AB\u30E1\u306E\u30E2\u30C7\u30EB\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u3002\u63CF\u753B\u306B\u5F71\u97FF\u3057\u306A\u3044\u3002 // @T3D\u304B\u3081\u3072\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandVisible(false))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u8868\u793A': { // @\u975E\u8868\u793A\u306B\u3057\u305F\u30AB\u30E1\u306E\u30E2\u30C7\u30EB\u3092\u8868\u793A\u3059\u308B\u3002 // @T3D\u304B\u3081\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): Promise<number> {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandVisible(true))\n },\n return_none: false\n },\n 'T3D\u8996\u70B9\u30AB\u30E1\u8A2D\u5B9A': { // @\u6307\u5B9A\u3057\u305F\u30AB\u30E1\u3092\u8996\u70B9\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B // @T3D\u3057\u3066\u3093\u304B\u3081\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (n: number, sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n if (n < 0 || n >= turtle3d.turtles.length) {\n throw Error('\u6307\u5B9A\u3055\u308C\u305F\u756A\u53F7\u306E\u30AB\u30E1\u306F\u3044\u307E\u305B\u3093\u3002')\n }\n turtle3d.camera = n\n turtle3d.animationStart()\n },\n return_none: true\n },\n // @3D\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u57FA\u672C\u6A5F\u80FD\n 'T3D\u81EA\u52D5\u63CF\u753B': {type: 'var', value: true}, // @T3D\u3058\u3069\u3046\u3073\u3087\u3046\u304C\n 'T3D\u81EA\u52D5\u5B9F\u884C': {type: 'var', value: true}, // @T3D\u3058\u3069\u3046\u3058\u3063\u3053\u3046\n 'T3D\u63CF\u753B\u6E96\u5099': { // @\u6307\u5B9A\u3057\u305FDOM\u306EID\u306B\u5BFE\u3059\u308B\u63CF\u753B\u3092\u6E96\u5099\u3057\u3001\u63CF\u753B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FD4\u3059 // @T3D\u3073\u3087\u3046\u304C\u3058\u3085\u3093\u3073\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (to: string|Element|null, sys: NakoSystem):THREENS.WebGLRenderer {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n\n if (typeof to === 'string') { to = document.querySelector(to) || document.getElementById(to) }\n if (!to) { throw new Error('T3D\u63CF\u753B\u6E96\u5099\u306B\u6307\u5B9A\u3057\u305F\u63CF\u753B\u5148\u306B\u8AA4\u308A\u304C\u3042\u308A\u307E\u3059') }\n\n const renderer = turtle3d.setRenderer(to)\n turtle3d.setupRenderer()\n return renderer\n },\n return_none: false\n },\n 'T3D\u63CF\u753B': { // @\u73FE\u5728\u306E\u72B6\u614B\u3092\u63CF\u753B\u3059\u308B // @T3D\u3073\u3087\u3046\u304C\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.doDraw(true)\n },\n return_none: true\n },\n 'T3D\u4E0A\u66F8\u63CF\u753B': { // @\u73FE\u5728\u306E\u72B6\u614B\u3092\u5143\u30A4\u30E1\u30FC\u30B8\u3092\u30AF\u30EA\u30A2\u305B\u305A\u306B\u63CF\u753B\u3059\u308B // @T3D\u3046\u308F\u304C\u304D\u3073\u3087\u3046\u304C\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.doDraw(false)\n },\n return_none: true\n },\n 'T3D\u5B9F\u884C': { // @\u5404\u30AB\u30E1\u306E\u52D5\u304D\u3092\u7D4C\u904E\u6642\u9593\u7B49\u306B\u5F93\u3044\u5B9F\u884C\u3059\u308B // @T3D\u3058\u3063\u3053\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.animationTick()\n },\n return_none: true\n },\n 'T3D\u80CC\u666F\u8272\u8A2D\u5B9A': { // @canvas\u3092\u30AF\u30EA\u30A2\u3059\u308B\u969B\u306E\u80CC\u666F\u8272\u3092\u8A2D\u5B9A\u3059\u308B // @T3D\u306F\u3044\u3051\u3044\u3057\u3087\u304F\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (c: number, sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n const renderer = turtle3d.getRenderer()\n renderer.setClearColor(c)\n turtle3d.animationStart()\n },\n return_none: true\n },\n 'T3D\u80CC\u666F\u900F\u904E\u8A2D\u5B9A': { // @canvas\u3092\u30AF\u30EA\u30A2\u3059\u308B\u969B\u306E\u80CC\u666F\u306E\u30A2\u30EB\u30D5\u30A1\u5024\u3092\u8A2D\u5B9A\u3059\u308B // @T3D\u306F\u3044\u3051\u3044\u3068\u3046\u304B\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (a: number, sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n const renderer = turtle3d.getRenderer()\n renderer.setClearAlpha(a)\n turtle3d.animationStart()\n },\n return_none: true\n },\n 'T3DJSON\u53D6\u5F97': { // @\u63CF\u753B\u3057\u305F\u7DDA\u306EJSON\u5F62\u5F0F\u3067\u53D6\u5F97\u3059\u308B // @T3DJSON\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): null|string {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n if (!turtle3d._lines) { return null }\n return JSON.stringify(turtle3d._lines.toJSON())\n },\n return_none: false\n },\n 'T3D\u30EC\u30F3\u30C0\u30E9\u7834\u68C4': { // @\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u3044\u308B\u30EC\u30F3\u30C0\u30E9\u3092\u6368\u3066\u308B // @T3D\u308C\u3093\u3060\u3089\u306F\u304D\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.clearRenderer()\n },\n return_none: true\n },\n 'T3D\u5185\u90E8\u30EC\u30F3\u30C0\u30E9\u53D6\u5F97': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u3044\u308B\u30EC\u30F3\u30C0\u30E9\u3092\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u308C\u3093\u3060\u3089\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): THREENS.WebGLRenderer {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.getRenderer()\n },\n return_none: false\n },\n 'T3D\u5185\u90E8\u30B7\u30FC\u30F3\u53D6\u5F97': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u3044\u308B\u30B7\u30FC\u30F3\u3092\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u3057\u30FC\u3093\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): THREENS.Scene {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.getScene()\n },\n return_none: false\n },\n 'T3D\u5185\u90E8\u30AB\u30E1\u30E9\u53D6\u5F97': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u3044\u308B\u30AB\u30E1\u30E9\u3092\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u304B\u3081\u3089\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): THREENS.Camera {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.getCamera()\n },\n return_none: false\n },\n 'T3D\u5185\u90E8\u7DDA\u63CF\u753B\u53C2\u7167\u53D6\u5F97': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4FDD\u6301\u3057\u3066\u3044\u308B\u63CF\u3044\u305F\u7DDA\u306E\u30C7\u30FC\u30BF\u306E\u53C2\u7167\u3092\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u305B\u3093\u3073\u3087\u3046\u304C\u3055\u3093\u3057\u3087\u3046\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): null|THREENS.Group {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d._lines\n },\n return_none: false\n },\n 'T3D\u5185\u90E8\u7DDA\u63CF\u753B\u53D6\u51FA': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4FDD\u6301\u3057\u3066\u3044\u308B\u63CF\u3044\u305F\u7DDA\u306E\u30C7\u30FC\u30BF\u3092\u53D6\u308A\u51FA\u3057\u3066\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u305B\u3093\u3073\u3087\u3046\u304C\u3068\u308A\u3060\u3057\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): null|THREENS.Group {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n const lines = turtle3d._lines\n turtle3d._lines = new three.Group()\n turtle3d.animationStart()\n return lines\n },\n return_none: false\n },\n 'T3D\u5F85': { // @Promise\u306E\u7D42\u4E86\u3092\u5F85\u3063\u3066\u7D50\u679C\u3092\u8FD4\u3059 // @T3D\u307E\u3064\n type: 'func',\n josi: [['\u3092']],\n asyncFn: true,\n pure: true,\n fn: function (p: Promise<any>, sys: NakoSystem): Promise<any> {\n return p\n },\n return_none: false\n },\n // @3D\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u30D8\u30EB\u30D1\u6A5F\u80FD\n 'T3D\u30AA\u30FC\u30D3\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A': { // \u30AA\u30FC\u30D3\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u7D44\u307F\u8FBC\u3080 // @T3D\u304A\u30FC\u3073\u3063\u3068\u3053\u3093\u3068\u308D\u30FC\u308B\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): null|THREENS.OrbitControls {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n if (typeof three.OrbitControls !== 'undefined') {\n return turtle3d.setupControl(three.OrbitControls) as THREENS.OrbitControls\n }\n return null\n },\n return_none: false\n },\n 'T3D\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u6709\u52B9': { // @\u7D44\u307F\u8FBC\u3093\u3060\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B // @T3D\u3053\u3093\u3068\u308D\u30FC\u308B\u3086\u3046\u3053\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n if (turtle3d._controls) {\n turtle3d._controls.enabled = true\n }\n },\n return_none: true\n },\n 'T3D\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7121\u52B9': { // @\u7D44\u307F\u8FBC\u3093\u3060\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u7121\u52B9\u306B\u3059\u308B // @T3D\u3053\u3093\u3068\u308D\u30FC\u308B\u3080\u3053\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n if (turtle3d._controls) {\n turtle3d._controls.enabled = false\n }\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u8868\u793A': { // @\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u30FC\u3092\u8868\u793A\u3059\u308B // @T3D\u304B\u3081\u3089\u3078\u308B\u3071\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.setCameraHelper(true)\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u975E\u8868\u793A': { // @\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B // @T3D\u304B\u3081\u3089\u3078\u308B\u3071\u3072\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.setCameraHelper(false)\n },\n return_none: true\n },\n 'T3D\u8EF8\u7DDA\u30D8\u30EB\u30D1\u8868\u793A': { // @\u5EA7\u6A19\u8EF8\u30D8\u30EB\u30D1\u30FC\u3092\u8868\u793A\u3059\u308B // @T3D\u3058\u304F\u305B\u3093\u3078\u308B\u3071\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.setAxisHelper(true)\n },\n return_none: true\n },\n 'T3D\u8EF8\u7DDA\u30D8\u30EB\u30D1\u975E\u8868\u793A': { // @\u5EA7\u6A19\u8EF8\u30D8\u30EB\u30D1\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B // @T3D\u3058\u304F\u305B\u3093\u3078\u308B\u3071\u3072\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [ turtle3d, three ] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.setAxisHelper(false)\n },\n return_none: true\n }\n}\n\nexport default PluginWeykTurtle3D\n\n// \u30D6\u30E9\u30A6\u30B6\u304B\u3089script\u30BF\u30B0\u3067\u53D6\u308A\u8FBC\u3093\u3060\u6642\u3001\u81EA\u52D5\u3067\u767B\u9332\u3059\u308B\nif (typeof navigator === 'object') {\n navigator.nako3.addPluginObject('PluginWeykTurtle3D', PluginWeykTurtle3D)\n}\n"],
5
- "mappings": "mBAAO,IAAMA,EAAN,MAAMC,CAAU,CACnB,OAAO,YAAYC,EAAK,CACpB,MAAO,YAAaA,GAAO,OAAOA,EAAI,SAAe,UACzD,CACA,OAAO,OAAOA,EAAK,CACf,MAAO,WAAYA,GAAOA,EAAI,SAAc,EAChD,CACA,OAAO,mBAAmBA,EAAK,CAC3B,KAAOA,EAAI,SAAS,OAAS,GACzB,KAAK,mBAAmBA,EAAI,SAAS,CAAC,CAAC,EACvCA,EAAI,OAAOA,EAAI,SAAS,CAAC,CAAC,EAE9B,GAAID,EAAU,OAAOC,CAAG,IAChBA,EAAI,UACJA,EAAI,SAAS,QAAQ,EAErBA,EAAI,UAAU,CACd,QAAWC,KAAW,OAAO,KAAKD,EAAI,QAAQ,EAAG,CAC7C,IAAME,EAAOF,EAAI,SAASC,CAAO,EAC7BF,EAAU,YAAYG,CAAI,GAC1BA,EAAK,QAAQ,CAErB,CACAF,EAAI,SAAS,QAAQ,CACzB,CAER,CACJ,ECyBA,IAAMG,EAAN,KAAwB,CAKtB,YAAaC,EAAqBC,EAAqBC,EAAeC,EAAsB,CAC1F,KAAK,GAAKH,EACV,KAAK,GAAKC,EACV,KAAK,MAAQC,EACb,KAAK,MAAQC,CACf,CACF,EAoBMC,EAAN,KAAqB,CAInB,YAAaC,EAAkBC,EAAgCC,EAA8B,CAC3F,KAAK,QAAUF,EACf,KAAK,QAAUC,EACf,KAAK,OAASC,CAChB,CACF,EACMC,EAAN,KAAc,CAEd,EACMC,EAAN,cAA0BD,CAAQ,CAGhC,YAAaE,EAAoB,CAC/B,MAAM,EAHR,SAAc,OAIZ,KAAK,KAAOA,CACd,CACF,EACMC,EAAN,cAA0BH,CAAQ,CAGhC,YAAaI,EAAoB,CAC/B,MAAM,EAHR,SAAc,OAIZ,KAAK,EAAIA,CACX,CACF,EACMC,EAAN,cAAkCL,CAAQ,CAGxC,YAAaI,EAAoB,CAC/B,MAAM,EAHR,SAAc,OAIZ,KAAK,EAAIA,CACX,CACF,EACME,EAAN,cAA2BN,CAAQ,CAGjC,YAAaO,EAA2B,CACtC,MAAM,EAHR,SAAc,QAIZ,KAAK,MAAQA,CACf,CACF,EAIMC,EAAN,cAAmCR,CAAQ,CAIzC,YAAaS,EAAoBC,EAAW,CAC1C,MAAM,EAJR,SAAc,QAKZ,KAAK,UAAYD,EACjB,KAAK,OAASC,CAChB,CACF,EACMC,EAAN,cAA4BX,CAAQ,CAIlC,YAAaS,EAAsBG,EAAW,CAC5C,MAAM,EAJR,SAAc,SAKZ,KAAK,UAAYH,EACjB,KAAK,MAAQG,CACf,CACF,EACMC,EAAN,cAA0Bb,CAAQ,CAIhC,YAAaS,EAAoBG,EAAW,CAC1C,MAAM,EAJR,SAAc,OAKZ,KAAK,UAAYH,EACjB,KAAK,MAAQG,CACf,CACF,EACME,EAAN,cAA+Bd,CAAQ,CAIrC,YAAae,EAAiB,CAC5B,MAAM,EAJR,SAAc,MACd,YAAiB,SAIf,KAAK,OAASA,CAChB,CACF,EACMC,EAAN,cAA8BhB,CAAQ,CAIpC,YAAaL,EAAsB,CACjC,MAAM,EAJR,SAAc,MACd,YAAiB,QAIf,KAAK,MAAQA,CACf,CACF,EACMsB,EAAN,cAA8BjB,CAAQ,CAIpC,YAAaN,EAAe,CAC1B,MAAM,EAJR,SAAc,MACd,YAAiB,QAIf,KAAK,MAAQA,CACf,CACF,EACMwB,EAAN,cAA6BlB,CAAQ,CAInC,YAAamB,EAAkB,CAC7B,MAAM,EAJR,SAAc,OACd,YAAiB,UAIf,KAAK,QAAUA,CACjB,CACF,EACMC,EAAN,cAA2BpB,CAAQ,CAIjC,YAAaqB,EAAY,CACvB,MAAM,EAJR,SAAc,OACd,YAAiB,QAIf,KAAK,MAAQA,CACf,CACF,EAEMC,EAAN,cAAuB,WAAY,CAajC,YAAYC,EAAsBC,EAAY,CAC5C,MAAM,EACN,KAAK,MAAQD,EACb,KAAK,GAAKC,EACV,IAAMC,EAAY,IAAIF,EAAM,MAC5B,KAAK,IAAME,EACX,KAAK,KAAO,CACV,SAAU,IAAIF,EAAM,QAAQ,EAAG,EAAG,CAAC,EACnC,WAAY,IAAIA,EAAM,UACxB,EACA,KAAK,MAAQ,IAAIA,EAAM,MAAM,QAAQ,EACrC,KAAK,SAAW,GAChB,KAAK,UAAY,EACjB,KAAK,SAAW,GAChB,KAAK,WAAa,GAClB,KAAK,UAAY,GACjB,KAAK,OAAS,CAAC,EAEf,KAAK,KAAK,SAAS,KAAKE,EAAU,QAAQ,EAC1C,KAAK,KAAK,WAAW,KAAKA,EAAU,UAAU,CAChD,CAEA,OAAe,CAEb,QAAWC,KAAO,KAAK,OACrBA,EAAI,QAAQ,CAAC,EAEf,KAAK,OAAS,CAAC,EAEf,KAAK,aAAa,EAClB,KAAK,UAAY,GACjB,KAAK,IAAI,QAAU,EACrB,CACA,cAAsB,CAChB,KAAK,UACPC,EAAU,mBAAmB,KAAK,GAAG,EACrC,KAAK,SAAW,IAEhB,KAAK,IAAI,OAAO,KAAK,IAAI,SAAS,CAAC,CAAC,EAEtC,KAAK,WAAa,EACpB,CACA,WAAYN,EAAgC,CAC1C,GAAI,KAAK,WAAWA,CAAK,EAAG,CAC1B,KAAK,aAAa,EAClB,KAAK,IAAI,IAAIA,CAAK,EAClB,KAAK,SAAW,GAChB,KAAK,WAAa,GAClB,KAAK,kBAAkB,EACvB,MACF,CACA,IAAMO,EAAMP,EACZ,GAAIO,EAAI,SAAW,EAAG,CACpB,KAAK,aAAa,EAClB,KAAK,IAAI,IAAI,KAAK,oBAAoB,CAAC,EACvC,KAAK,SAAW,GAChB,KAAK,WAAa,GAClB,KAAK,kBAAkB,EACvB,MACF,CACe,IAAI,KAAK,MAAM,aAAa,EACpC,KAAKA,EAAMC,GAA0B,CAC1C,KAAK,aAAa,EAClB,KAAK,IAAI,IAAIA,CAAG,EAChB,KAAK,SAAW,GAChB,KAAK,WAAa,GAClB,KAAK,kBAAkB,CACzB,EAAIC,GAAwB,CAE5B,EAAIA,GAAwB,CAC1B,KAAK,aAAa,EAClB,KAAK,UAAY,GACjB,KAAK,IAAI,QAAU,GACnB,KAAK,kBAAkB,CACzB,CAAC,CACH,CAEA,QAASC,EAA0B,CACjC,GAAI,CAAC,KAAK,YAAc,CAACA,EACvB,MAAO,GAET,IAAMC,EAAM,KAAK,OAAO,MAAM,EAC9B,GAAI,OAAOA,EAAQ,IAAe,MAAO,GACzC,IAAMC,EAAID,aAAepC,EAAiBoC,EAAI,QAAUA,EACtD,GAAIC,aAAa9B,EAEf,KAAK,IAAI,SAAS,KAAK8B,EAAE,CAAC,UAExBA,aAAa5B,EAAqB,CACpC,IAAMb,EAAK,KAAK,IAAI,SAAS,MAAM,EAC7BC,EAAKwC,EAAE,EAEb,KAAK,KAAKzC,EAAIC,CAAE,EAEhB,KAAK,IAAI,OAAOA,CAAE,EAClB,IAAMyC,EAAW,IAAI,KAAK,MAAM,WAC1BC,EAAQ,IAAI,KAAK,MAAM,QAAQ,EAAG,EAAG,CAAC,EAC5CD,EAAS,iBAAiBC,EAAO,KAAK,GAAK,CAAC,EAC5C,KAAK,IAAI,WAAW,SAASD,CAAQ,EAErC,KAAK,IAAI,SAAS,KAAKzC,CAAE,CAC3B,SACIwC,aAAazB,EAAsB,CACrC,IAAMC,EAAMwB,EAAE,UACRvB,EAAIuB,EAAE,QAAWxB,IAAQ,IAAO,GAAK,GACrCjB,EAAK,KAAK,IAAI,SAAS,MAAM,EAC7BC,EAAI,IAAI,KAAK,MAAM,QAAQ,EAAGiB,EAAG,CAAC,EACxC,GAAID,IAAQ,KAAOA,IAAQ,IACzBhB,EAAG,gBAAgB,KAAK,IAAI,UAAU,MACjC,CAEL,IAAM2C,EAAW,IAAI,KAAK,MAAM,WAC1BC,EAAS,KAAK,IAAI,WAAW,MAAM,EACzC,GAAI5B,IAAQ,KAAOA,IAAQ,IAAK,CAC9B,IAAM6B,EAAO,IAAI,KAAK,MAAM,QAAQ,EAAG,EAAG,CAAC,EACvC7B,IAAQ,IACV2B,EAAS,iBAAiBE,EAAO,IAAO,KAAK,GAAK,GAAG,EAErDF,EAAS,iBAAiBE,EAAM,GAAK,KAAK,GAAK,GAAG,CAEtD,KAAO,CACL,IAAMA,EAAO,IAAI,KAAK,MAAM,QAAQ,EAAG,EAAG,CAAC,EACvC7B,IAAQ,IACV2B,EAAS,iBAAiBE,EAAM,GAAK,KAAK,GAAK,GAAG,EAElDF,EAAS,iBAAiBE,EAAO,IAAO,KAAK,GAAK,GAAG,CAEzD,CACAD,EAAO,SAASD,CAAQ,EACxB3C,EAAG,gBAAgB4C,CAAM,CAC3B,CACA5C,EAAG,IAAID,CAAE,EACT,KAAK,KAAKA,EAAIC,CAAE,EAChB,KAAK,IAAI,SAAS,KAAKA,CAAE,CAC3B,SACIwC,aAAahC,EAEf,OADagC,EAAE,KACD,CACZ,IAAK,MACH,KAAK,KAAK,SAAS,KAAK,KAAK,IAAI,QAAQ,EACzC,KAAK,KAAK,WAAW,KAAK,KAAK,IAAI,UAAU,EAC7C,MACF,IAAK,OACH,KAAK,IAAI,SAAS,KAAK,KAAK,KAAK,QAAQ,EACzC,KAAK,IAAI,WAAW,KAAK,KAAK,KAAK,UAAU,EAC7C,KACJ,SAEEA,aAAatB,EAAe,CAC9B,IAAMF,EAAMwB,EAAE,UACRM,EAAKN,EAAE,OAASxB,IAAQ,KAAOA,IAAQ,IAAM,EAAI,IACjD4B,EAAS,IAAI,KAAK,MAAM,WAC1BC,EACA7B,IAAQ,KAAOA,IAAQ,IACzB6B,EAAQ,IAAI,KAAK,MAAM,QAAQ,EAAG,EAAG,CAAC,EAEtCA,EAAO,IAAI,KAAK,MAAM,QAAQ,EAAG,EAAG,CAAC,EAEvCD,EAAO,iBAAiBC,EAAOC,EAAK,IAAO,KAAK,GAAK,GAAG,EACxD,KAAK,IAAI,WAAW,SAASF,CAAM,CACrC,SACIJ,aAAapB,EAAa,CAC5B,IAAMJ,EAAMwB,EAAE,UACRM,EAAKN,EAAE,OAASxB,IAAQ,IAAM,EAAI,IAClC6B,EAAO,IAAI,KAAK,MAAM,QAAQ,EAAG,EAAG,CAAC,EACrCD,EAAS,IAAI,KAAK,MAAM,WAC9BA,EAAO,iBAAiBC,EAAOC,EAAK,IAAO,KAAK,GAAK,GAAG,EACxD,KAAK,IAAI,WAAW,SAASF,CAAM,CACrC,SACIJ,aAAajB,EACf,KAAK,MAAQiB,EAAE,cAEbA,aAAahB,EACf,KAAK,UAAYgB,EAAE,cAEjBA,aAAanB,EACf,KAAK,SAAWmB,EAAE,eAEhBA,aAAaf,EACf,KAAK,UAAYe,EAAE,QACf,KAAK,UACP,KAAK,IAAI,QAAU,GAEnB,KAAK,IAAI,QAAU,WAGnBA,aAAab,EACf,KAAK,WAAa,GAClB,KAAK,WAAWa,EAAE,KAAK,UAErBA,aAAa3B,EAAc,CAC7B,IAAMkC,EAAQ,IAAI,KAAK,MAAM,MAC7BA,EAAM,UAAUP,EAAE,KAAK,EAEvB,IAAMxB,EAAM,IAAI,KAAK,MAAM,WAC3B,KAAK,IAAI,WAAW,aAAa+B,CAAK,CACxC,CACF,OAAIR,aAAepC,GACjBoC,EAAI,QAAQ,CAAC,EAEP,KAAK,OAAO,OAAS,CAC/B,CAEQ,qBAAyC,CAC/C,IAAMS,EAAW,IAAI,aAAa,CAChC,EAAK,EAAK,EACV,IAAM,GAAM,EACZ,EAAK,IAAM,EACX,GAAK,GAAM,EAEX,EAAK,EAAK,GACV,EAAK,EAAK,EACV,IAAM,GAAM,EACZ,EAAK,IAAM,EACX,GAAK,GAAM,EAEX,EAAK,EAAK,IACV,EAAK,EAAK,EACV,IAAM,GAAM,EACZ,EAAK,IAAM,EACX,GAAK,GAAM,CACb,CAAC,EAEKC,EAAS,IAAI,aAAa,CAC9B,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EAEV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EAEV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,CACZ,CAAC,EAEKC,EAAU,CACd,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACrB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACrB,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAC1B,EAEMd,EAAM,IAAI,KAAK,MAAM,MACrBe,EAAW,IAAI,KAAK,MAAM,kBAAkB,CAAE,aAAc,EAAK,CAAC,EAClEC,EAAW,IAAI,KAAK,MAAM,eAChCA,EAAS,SAASF,CAAO,EACzBE,EAAS,aAAa,WAAY,IAAI,KAAK,MAAM,gBAAgBJ,EAAU,CAAC,CAAC,EAC7EI,EAAS,aAAa,QAAS,IAAI,KAAK,MAAM,gBAAgBH,EAAQ,CAAC,CAAC,EACxEG,EAAS,sBAAsB,EAE/B,IAAMC,EAAe,IAAI,KAAK,MAAM,aAAaD,EAAUD,CAAQ,EACnE,OAAAE,EAAa,MAAM,IAAI,GAAM,GAAM,EAAI,EAEvCjB,EAAI,IAAIiB,CAAY,EACbjB,CACT,CAEQ,mBAA2B,CACjC,IAAMkB,EAAM,IAAI,YAAkB,cAAc,EAChD,KAAK,cAAcA,CAAG,CACxB,CAEQ,cAAcvD,EAAqBC,EAAqBC,EAAeC,EAA6B,CAC1G,IAAMqD,EAAO,IAAIzD,EAAkBC,EAAIC,EAAIC,EAAOC,CAAK,EACjDoD,EAAM,IAAI,YAA+B,WAAY,CAAE,OAAQC,CAAK,CAAC,EAC3E,KAAK,cAAcD,CAAG,CACxB,CAEQ,KAAMvD,EAAqBC,EAAqB,CACjD,KAAK,UACV,KAAK,cAAcD,EAAIC,EAAI,KAAK,UAAW,KAAK,KAAK,CACvD,CAEQ,WAAYoC,EAAmC,CACrD,OAAOA,aAAe,KAAK,MAAM,QACnC,CACF,EAEMoB,EAAN,MAAMC,CAAmB,CAmBvB,OAAO,YAAYC,EAAiB,CAC9BD,EAAmB,WAAa,SAClCA,EAAmB,SAAW,IAAIA,EAAmBC,CAAG,GAE1D,IAAMC,EAAIF,EAAmB,SAC7B,OAAAE,EAAE,eAAiB,EACZF,EAAmB,QAC5B,CAEA,YAAYC,EAAiB,CAC3B,KAAK,cAAgB,EACrB,KAAK,MAAQ,KACb,KAAK,IAAMA,EACX,KAAK,YAAc,GACnB,KAAK,OAAS,GACd,KAAK,OAAS,GACd,KAAK,UAAY,KACjB,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,QAAU,KACf,KAAK,UAAY,KACjB,KAAK,cAAgB,KACrB,KAAK,YAAc,KACnB,KAAK,QAAU,CAAC,EAChB,KAAK,aAAe,GACpB,KAAK,iBAAmB,CAC1B,CAEA,UAAY,CACV,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,IAAME,EAAQ,KAAK,OACfA,GAAS,KAAK,SAChBA,EAAM,OAAO,KAAK,MAAM,EACxBA,EAAM,IAAI,KAAK,MAAM,EACjB,KAAK,gBAAkB,OACzB,KAAK,cAAc,QAAU,GAC7BA,EAAM,OAAO,KAAK,aAAa,EAC/BA,EAAM,IAAI,KAAK,aAAa,GAE1B,KAAK,cAAgB,OACvB,KAAK,YAAY,QAAU,GAC3BA,EAAM,OAAO,KAAK,WAAW,EAC7BA,EAAM,IAAI,KAAK,WAAW,GAE5B,KAAK,WAAW,EAEpB,CACA,kBAAoB,CAElB,QAAWC,KAAM,KAAK,QACpBA,EAAG,MAAM,EAEX,KAAK,QAAU,CAAC,EAChB,KAAK,OAAS,GACd,KAAK,OAAS,GACd,KAAK,aAAe,EACtB,CACA,gBAAkB,CAEZ,KAAK,SAAW,MAClB3B,EAAU,mBAAmB,KAAK,MAAM,CAE5C,CACQ,UAA0B,CAChC,GAAI,CAAC,KAAK,MACR,MAAM,IAAI,MAAM,qHAA2B,EAE7C,OAAO,KAAK,KACd,CACA,aAAc4B,EAA0B,CAEtC,IAAMhC,EAAQ,KAAK,SAAS,EACtBC,EAAK,KAAK,QAAQ,OAClB8B,EAAK,IAAIhC,EAASC,EAAOC,CAAE,EACjC,OAAA8B,EAAG,iBAAiB,eAAiBE,GAAM,CAC1B,CAAC,CAAC,KAAK,IAAI,YAAY,6BAAS,GAE7C,KAAK,OAAO,EAAI,CAEpB,CAAC,EACDF,EAAG,iBAAiB,WAAaE,GAAM,CACrC,KAAK,SAASA,EAAE,OAAO,GAAIA,EAAE,OAAO,GAAIA,EAAE,OAAO,MAAOA,EAAE,OAAO,KAAK,CACxE,CAAC,EACD,KAAK,QAAQ,KAAKF,CAAE,EACpB,KAAK,OAAS9B,EACd8B,EAAG,WAAWC,CAAQ,EACR,KAAK,SAAS,EACtB,IAAID,EAAG,GAAG,EACT9B,CACT,CACA,YAAoB,CAClB,GAAI,KAAK,QAAQ,SAAW,EAAG,CACzB,KAAK,YAAc,MACrB,KAAK,aAAa,EAEpB,IAAMD,EAAQ,KAAK,SAAS,EAEtBkC,EAAQ,KAAK,aAAa,EAAE,EAE5BH,EAAK,KAAK,QAAQG,CAAK,EAC7BH,EAAG,IAAI,SAAS,IAAI,EAAG,EAAG,GAAI,EAC9B,IAAMhB,EAAO,IAAIf,EAAM,QAAQ,EAAG,EAAG,EAAE,EAAE,UAAU,EAEnD+B,EAAG,IAAI,WAAW,iBAAiBhB,EADrB,CACgC,EAC9CgB,EAAG,KAAK,SAAS,KAAKA,EAAG,IAAI,QAAQ,EACrCA,EAAG,KAAK,WAAW,KAAKA,EAAG,IAAI,UAAU,EACzCA,EAAG,UAAY,GACfA,EAAG,IAAI,QAAU,GACjB,KAAK,OAASG,EACd,KAAK,OAAS,EAChB,CACF,CACA,QAAoB,CAClB,GAAI,KAAK,QAAQ,SAAW,EAC1B,MAAM,MAAM,yIAA2B,EAEzC,GAAI,KAAK,OAAS,GAAK,KAAK,QAAU,KAAK,QAAQ,OACjD,MAAM,MAAM,kGAAkB,EAEhC,OAAO,KAAK,QAAQ,KAAK,MAAM,CACjC,CACA,iBAAkBC,EAA+B,CAC/C,IAAMJ,EAAK,KAAK,OAAO,EAMvB,OALgB,IAAI,QAAgB,CAACxD,EAAQC,IAAW,CACtD,IAAMiC,EAAM,IAAIpC,EAAe8D,EAAK5D,EAASC,CAAM,EACnDuD,EAAG,OAAO,KAAKtB,CAAG,EAClB,KAAK,eAAe,CACtB,CAAC,CAEH,CACA,OAAQ2B,EAAsB,CAM5B,GALI,KAAK,SAAW,IAChB,CAAC,KAAK,SACV,KAAK,YAAY,EACb,CAAC,KAAK,aACV,KAAK,UAAU,EACX,CAAC,KAAK,SAAW,OACrB,IAAMC,EAAS,KAAK,QAAQ,KAAK,MAAM,EACnC,KAAK,YAAc,OACrB,KAAK,QAAQ,SAAS,KAAKA,EAAO,IAAI,QAAQ,EAC9C,KAAK,QAAQ,WAAW,KAAKA,EAAO,IAAI,UAAU,GAEhD,KAAK,gBAAkB,MACzB,KAAK,cAAc,OAAO,EAExB,KAAK,YAAc,OACrB,KAAK,UAAU,OAAO,EACtBA,EAAO,IAAI,SAAS,KAAK,KAAK,QAAQ,QAAQ,EAC9CA,EAAO,IAAI,WAAW,KAAK,KAAK,QAAQ,UAAU,GAEhDD,GACF,KAAK,UAAU,MAAM,EAEvB,KAAK,UAAU,OAAO,KAAK,OAAQ,KAAK,OAAO,CACjD,CACA,gBAAiBE,EAAe,CAC9B,IAAMtC,EAAQ,KAAK,SAAS,EAC5B,GAAIsC,EAAM,CACR,GAAI,KAAK,gBAAkB,MACrB,KAAK,QAAU,KAAK,QAAS,CAC/B,GAAI,OAAOtC,EAAM,aAAiB,IAChC,MAAM,MAAM,8GAAoB,EAElC,IAAMuC,EAAe,IAAIvC,EAAM,aAAa,KAAK,OAAO,EACxD,KAAK,cAAgBuC,EACrB,KAAK,OAAO,IAAIA,CAAY,CAC9B,CAEF,KAAK,cAAe,QAAU,EAChC,MACM,KAAK,gBAAkB,OACzB,KAAK,cAAc,QAAU,GAGnC,CACA,cAAeD,EAAe,CAC5B,IAAMtC,EAAQ,KAAK,SAAS,EAC5B,GAAIsC,EAAM,CACR,GAAI,KAAK,cAAgB,MACnB,KAAK,OAAQ,CACf,GAAI,OAAOtC,EAAM,WAAe,IAC9B,MAAM,MAAM,gGAAqB,EAEnC,IAAMwC,EAAa,IAAIxC,EAAM,WAAW,GAAI,EAC5C,KAAK,YAAcwC,EACnB,KAAK,OAAO,IAAIA,CAAU,CAC5B,CAEF,KAAK,YAAa,QAAU,EAC9B,MACM,KAAK,cAAgB,OACvB,KAAK,YAAY,QAAU,GAGjC,CACA,UAA2B,CACzB,IAAMxC,EAAQ,KAAK,SAAS,EAC5B,OAAI,KAAK,SAAW,OAClB,KAAK,OAAS,IAAIA,EAAM,OAEnB,KAAK,MACd,CACA,WAA6B,CAC3B,IAAMA,EAAQ,KAAK,SAAS,EAC5B,GAAI,KAAK,UAAY,KAAM,CACzB,IAAMqC,EAAS,IAAIrC,EAAM,kBAAkB,GAAI,EAAK,EAAG,IAAK,EAC5D,KAAK,YAAYqC,CAAM,EACvB,KAAK,QAAUA,CACjB,CACA,OAAO,KAAK,OACd,CACA,YAAaA,EAA6B,CACxC,IAAMrC,EAAQ,KAAK,SAAS,EAE5B,GADAqC,EAAO,SAAS,IAAI,EAAG,EAAG,GAAI,EAC1B,KAAK,YAAc,KAAM,CAC3B,IAAMI,EAAO,IAAIzC,EAAM,QACvB,KAAK,UAAU,QAAQyC,CAAI,EACvB,WAAYJ,IACdA,EAAO,OAASI,EAAK,MAAQA,EAAK,OAEtC,CACAJ,EAAO,GAAK,IAAIrC,EAAM,QAAQ,EAAG,EAAG,CAAC,EACrCqC,EAAO,OAAO,IAAIrC,EAAM,QAAQ,EAAG,EAAG,CAAC,CAAC,CAC1C,CACA,gBAAiB0C,EAAiC,CAChDA,EAAS,cAAc,EAAU,CAAG,EACpCA,EAAS,UAAY,GAErB,IAAMZ,EAAQ,KAAK,SAAS,EAEtBO,EAAS,KAAK,UAAU,EAE1BP,GAAS,KAAK,SAChBA,EAAM,IAAI,KAAK,MAAM,EACjB,KAAK,QAAQ,SAAW,GAC1B,KAAK,WAAW,EAGtB,CACA,cAAsC,CAEpC,IAAIa,EAAK,KAAK,IAAI,YAAY,mCAAU,EAExC,GADI,OAAOA,GAAO,WAAYA,EAAK,SAAS,cAAcA,CAAE,GAAK,SAAS,eAAeA,CAAE,GACvF,CAACA,EACH,MAAM,IAAI,MAAM,iGAA2B,EAE7C,IAAMD,EAAW,KAAK,YAAYC,CAAE,EACpC,YAAK,cAAc,EACZD,CACT,CACA,YAAaC,EAA2E,CACtF,IAAM3C,EAAQ,KAAK,SAAS,EACxB0C,EAAuC,KAC3C,GAAIC,aAAc3C,EAAM,cACtB0C,EAAWC,UAETA,aAAc,kBAAmB,CAEnC,GADAD,EAAW,IAAI1C,EAAM,cAAc,CAAE,UAAW,GAAO,MAAO,GAAM,OAAO2C,CAAG,CAAC,EAC3ED,IAAa,KACf,MAAM,IAAI,MAAM,0EAAc,EAEhCA,EAAS,QAASC,EAAG,MAAOA,EAAG,MAAO,CACxC,SACIA,aAAc,QAAS,CAEzB,GADAD,EAAW,IAAI1C,EAAM,cAAc,CAAE,UAAW,GAAO,MAAO,EAAK,CAAC,EAChE0C,IAAa,KACf,MAAM,IAAI,MAAM,0EAAc,EAEhCA,EAAS,QAAQC,EAAG,YAAaA,EAAG,YAAa,EACjDA,EAAG,YAAYD,EAAS,UAAU,CACpC,CAGA,OAAAA,EAAU,cAAc,OAAO,gBAAgB,EAC/C,KAAK,UAAYA,EACV,KAAK,SACd,CACA,eAAiB,CACf,KAAK,UAAY,KACb,KAAK,YACP,KAAK,UAAU,QAAU,GACzB,KAAK,UAAY,KAErB,CACA,eAAiB,CACX,KAAK,WACP,KAAK,gBAAgB,KAAK,SAAS,CAEvC,CACA,aAAiC,CAC/B,OAAI,KAAK,YAAc,MACrB,KAAK,aAAa,EAEb,KAAK,SACd,CACA,aAAcE,EAAuD,CACnE,GAAI,OAAOA,EAAsB,IAC/B,MAAM,IAAI,MAAM,sIAAwB,EAE1C,GAAI,KAAK,YAAc,KAAM,CAC3B,GAAI,KAAK,qBAAqBA,EAC5B,OAAO,KAAK,UAEZ,MAAM,IAAI,MAAM,wMAAmC,CAEvD,CACA,IAAMF,EAAW,KAAK,YAAY,EAC5BL,EAAS,KAAK,UAAU,EAExBQ,EAAW,IAAID,EAAkBP,EAAQK,EAAS,UAAU,EAClE,OAAAG,EAAS,QAAU,GACnB,KAAK,UAAYA,EACV,KAAK,SACd,CACA,SAAU5E,EAAqBC,EAAqBC,EAAeC,EAA2B,CAC5F,IAAM4B,EAAQ,KAAK,SAAS,EACtBsB,EAAW,IAAItB,EAAM,eACrBkB,EAAW,IAAIlB,EAAM,uBAAuB,EAAG,CAAC,EACtDkB,EAAS,UAAU,CAACjD,EAAG,EAAGA,EAAG,EAAGA,EAAG,EAAGC,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,CAAC,EACvD,IAAMmD,EAAW,IAAIrB,EAAM,kBAAkB,CAAE,MAAO5B,EAAO,UAAWD,CAAM,CAAC,EAC/EmD,EAAS,aAAa,WAAYJ,CAAQ,EAC1C,IAAM4B,EAAO,IAAI9C,EAAM,KAAKsB,EAAUD,CAAQ,EAC1C,KAAK,QACP,KAAK,OAAO,IAAIyB,CAAI,CAExB,CACA,mBAA8B,CAC5B,IAAIC,EAAU,GACd,QAAWhB,KAAM,KAAK,QAChBA,EAAG,QAAQ,KAAK,SAAS,CAAC,IAAKgB,EAAU,IAE/C,OAAOA,CACT,CACA,gBAAuB,CACrB,IAAMC,EAAO,KAAK,QAAQ,EAE1B,GADmB,KAAK,IAAI,YAAY,6BAAS,EAIjD,IAAI,KAAK,SAAS,EAAG,CACnB,KAAK,UAAU,EACf,MACF,CACI,KAAK,eACT,KAAK,aAAe,GACpB,KAAK,eAAe,IAAM,KAAK,UAAU,CAAC,GAC5C,CACA,SAAmB,CACjB,OAAO,KAAK,IAAI,YAAY,6BAAS,CACvC,CACA,UAAqB,CACnB,OAAO,KAAK,IAAI,YAAY,6BAAS,IAAM,CAC7C,CACA,WAAa,CACX,IAAMC,EAAS,CAAC,CAAC,KAAK,IAAI,YAAY,6BAAS,EACzCC,EAAW,CAAC,CAAC,KAAK,IAAI,YAAY,6BAAS,EAC3CH,EAAU,KAAK,cAAc,EAChCE,GACD,KAAK,OAAO,EAAI,GAEbF,GAAW,KAAK,YAAc,OAASG,EAC1C,KAAK,eAAe,IAAM,KAAK,UAAU,CAAC,EAE1C,KAAK,aAAe,EAExB,CACA,eAAiB,CACf,IAAMC,EAAM,KAAK,IAAI,EACf3C,EAAS,KAAK,SAAS,EAE7B,GAAI,CAACA,EAAQ,CACX,IAAM4C,EAAYD,EAAM,KAAK,iBACvBH,EAAO,KAAK,QAAQ,EAC1B,GAAIA,EAAO,GAAKI,EAAYJ,EAC1B,MAAO,EAEX,CACA,KAAK,iBAAmBG,EACxB,IAAIJ,EACJ,GAAIvC,EAAQ,CACV,KAAO,KAAK,kBAAkB,GAAG,CAGjCuC,EAAU,EACZ,MACEA,EAAU,KAAK,kBAAkB,EAEnC,OAAOA,CACT,CACA,eAAgBM,EAAsBC,EAAmB,CACvD,OAAO,WAAWD,EAAU,IAAO,EAAE,CACvC,CACA,IAAqB,CASnB,GARI,KAAK,QAAU,OACb,KAAK,IAAI,YAAY,OAAO,IAAM,KACpC,KAAK,MAAQ,KAAK,IAAI,YAAY,OAAO,EAEvC,OAAO,OAAO,MAAU,MAC1B,KAAK,MAAQ,OAAO,QAGpB,KAAK,QAAU,KACjB,MAAM,IAAI,MAAM,mFAA4B,EAE9C,OAAI,KAAK,IAAI,YAAY,OAAO,IAAM,MACpC,KAAK,IAAI,YAAY,QAAS,KAAK,KAAK,EAEtC,KAAK,SAAW,OAClB,KAAK,OAAS,IAAI,KAAK,MAAM,OAExB,KAAK,KACd,CACA,OAAO,YAAYzB,EAAqC,CACtD,GAAI,CAACA,EAAI,KAAK,aACZ,MAAM,IAAI,MAAM,8GAAoB,EAEtC,OAAOA,EAAI,KAAK,YAClB,CACA,OAAO,OAAOA,EAAuD,CACnE,IAAM2B,EAAW5B,EAAmB,YAAYC,CAAG,EAC7C5B,EAAQuD,EAAS,GAAG,EAC1B,MAAO,CAACA,EAAUvD,CAAK,CACzB,CACF,EAEMwD,EAAuC,CAC3C,KAAQ,CACN,KAAM,QACN,MAAO,CACL,WAAY,sBACZ,YAAa,uHACb,cAAe,QACf,YAAa,CAAC,OAAO,EACrB,YAAa,OACf,CACF,EACA,mBAAO,CACL,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU5B,EAAsB,CAClC,GAAIA,EAAI,KAAK,aAAgB,OAC7B,IAAM6B,EAAiB/B,EAAmB,YAAYE,CAAG,EACzDA,EAAI,KAAK,aAAe6B,EAGxB7B,EAAI,YAAY,QAAS,IAAI,CAC/B,CACF,EAEA,MAAS,CAAC,KAAM,QAAS,MAAO,EAAE,EAClC,yBAAa,CAAC,KAAM,MAAO,MAAO,4CAA4C,EAC9E,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,EACP,QAAS,GACT,KAAM,GACN,GAAI,eAAgBA,EAAmC,CACrD,IAAM2B,EAAW7B,EAAmB,YAAYE,CAAG,EACnD,GAAI2B,EAAS,QAAU,MAAQ3B,EAAI,YAAY,OAAO,IAAM,KAAM,CAChE,IAAM8B,EAAU9B,EAAI,YAAY,0BAAW,EAErC+B,EAAU,OADED,IAAY,GAAK,QAAYA,EAAU,0BAEzD,OAAAC,EAAQ,KAAKC,IACXL,EAAS,MAAQ,OAAO,OAAO,CAAC,EAAGK,CAAM,EACzCL,EAAS,GAAG,EACL,GACR,EACDI,EAAQ,MAAME,GACL,EACR,EACM,MAAMF,CACf,KACE,QAAAJ,EAAS,GAAG,EACL,EAEX,EACA,YAAa,EACf,EACA,oDAAe,CACb,KAAM,OACN,KAAM,CAAC,CAAC,QAAG,CAAC,EACZ,KAAM,GACN,GAAI,SAAUF,EAAiCzB,EAAsB,CACnE,IAAM2B,EAAW7B,EAAmB,YAAYE,CAAG,EACnD,GAAI2B,EAAS,QAAU,MAAQ3B,EAAI,YAAY,OAAO,IAAM,KAAM,CAChE,IAAM8B,EAAU9B,EAAI,YAAY,0BAAW,EAErC+B,EAAU,OADED,IAAY,GAAK,QAAYA,EAAU,0BAEzDC,EAAQ,KAAKC,GAAU,CACrBL,EAAS,MAAQ,OAAO,OAAO,CAAC,EAAGK,CAAM,EACzCL,EAAS,GAAG,EACZF,EAAS,EAAI,CACf,CAAC,EACDM,EAAQ,MAAME,GAAO,CACnBR,EAAS,EAAK,CAChB,CAAC,CACH,MACEE,EAAS,GAAG,EACZF,EAAS,EAAI,CAEjB,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,CAAC,QAAG,CAAC,EACZ,QAAS,GACT,KAAM,GACN,GAAI,eAAgBS,EAAmBlC,EAA+B,CACpE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACnDzC,EAAI2E,EAAQ,OAClB,GAAI3E,IAAM,EACR,OAEF,IAAMuE,EAAU9B,EAAI,YAAY,0BAAW,EA+B3C,OA9BqB,IAAI,QAAe,CAACrD,EAASC,IAAW,CAC3D,IAAMuF,EAAa,SAAUC,EAAO,CAClC,IAAIC,EAAa,EACbC,EAAe,EACnB,OAAO,SAAUC,EAAkB,CACjCF,GAAc,EACVE,IACFD,GAAgB,GAEdD,IAAeD,IACbC,IAAeC,EACjB3F,EAAQ,EAERC,EAAO,EAGb,CACF,EAAGW,CAAC,EACJ,QAAWiF,KAAQN,EAAS,CAE1B,IAAMH,EAAU,OADED,IAAY,GAAKU,EAASV,EAAU,iBAAmBU,GAEzET,EAAQ,KAAKC,GAAU,CACrB,OAAO,OAA2B5D,EAAO4D,CAAM,EAC/CG,EAAU,EAAI,CAChB,CAAC,EACDJ,EAAQ,MAAME,GAAO,CACnBE,EAAU,EAAK,CACjB,CAAC,CACH,CACF,CAAC,CAEH,EACA,YAAa,EACf,EACA,oDAAe,CACb,KAAM,OACN,KAAM,CAAC,CAAC,QAAG,EAAG,CAAC,QAAG,CAAC,EACnB,KAAM,GACN,GAAI,SAAUV,EAA+BS,EAAmBlC,EAAsB,CACpF,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACnDzC,EAAI2E,EAAQ,OAClB,GAAI3E,IAAM,EAAG,CACXkE,EAAS,EACT,MACF,CACA,IAAMK,EAAU9B,EAAI,YAAY,0BAAW,EACrCmC,EAAa,SAAUV,EAAUW,EAAO,CAC5C,IAAIK,EAAQ,EACZ,OAAO,SAAUF,EAAkB,CACjCE,GAAO,EACHA,IAAUL,GACZX,EAAS,CAEb,CACF,EAAGA,EAAUlE,CAAC,EACd,QAAS0C,EAAE,EAAEA,EAAI1C,EAAE0C,IAAK,CACtB,IAAMuC,EAAON,EAAQjC,CAAC,EAEhB8B,EAAU,OADED,IAAY,GAAKU,EAASV,EAAU,iBAAmBU,GAEzET,EAAQ,KAAKC,GAAU,CACrB,OAAO,OAA2B5D,EAAO4D,CAAM,EAC/CG,EAAU,EAAI,CAChB,CAAC,EACDJ,EAAQ,MAAME,GAAO,CACnBE,EAAU,EAAK,CACjB,CAAC,CACH,CACF,EACA,YAAa,EACf,EAEA,4BAAW,CACT,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAUnC,EAAyB,CACrC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,WAAW,EACpB,IAAMvB,EAAWJ,EAAI,YAAY,sCAAa,EAE9C,OADW2B,EAAS,aAAavB,CAAQ,CAE3C,EACA,YAAa,EACf,EACA,oDAAe,CACb,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,SAAK,QAAG,CAAC,EACtB,KAAM,GACN,GAAI,SAAU/B,EAAY2B,EAAsB,CAC9C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,OAAStD,CACpB,EACA,YAAa,EACf,EACA,kCAAY,CAAE,KAAM,MAAO,MAAO,cAAe,EACjD,qCAAe,CAAE,KAAM,MAAO,MAAO,EAAG,EACxC,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUI,EAAauB,EAAiC,CAC1D,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAI1D,EAAaQ,CAAG,CAAC,CACxD,EACA,YAAa,EACf,EACA,4BAAW,CAAE,KAAM,QAAS,MAAO,GAAI,EACvC,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUxB,EAAW+C,EAAsB,CAC7CA,EAAI,YAAY,8BAAW/C,CAAC,CAC9B,EACA,YAAa,EACf,EACA,4BAAW,CACT,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUyF,EAAoB1C,EAAkC,CAClE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAIzE,EAAoB,IAAIkB,EAAM,QAAQsE,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,CAAC,CAAC,CACrG,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU1C,EAAkC,CAC9C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAI7E,EAAY,KAAK,CAAC,CACzD,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAUkD,EAAkC,CAC9C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAI7E,EAAY,MAAM,CAAC,CAC1D,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAU4F,EAAoB1C,EAAkC,CAClE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAI3E,EAAY,IAAIoB,EAAM,QAAQsE,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,CAAC,CAAC,CAC7F,EACA,YAAa,EACf,EACA,sBAAU,CACR,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUnF,EAAWyC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAItE,EAAqB,IAAKE,CAAC,CAAC,CACnE,EACA,YAAa,EACf,EACA,sBAAU,CACR,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWyC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAItE,EAAqB,IAAKE,CAAC,CAAC,CACnE,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWyC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAItE,EAAqB,IAAKE,CAAC,CAAC,CACnE,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWyC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAItE,EAAqB,IAAKE,CAAC,CAAC,CACnE,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWyC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAItE,EAAqB,IAAKE,CAAC,CAAC,CACnE,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWyC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAItE,EAAqB,IAAKE,CAAC,CAAC,CACnE,EACA,YAAa,EACf,EACA,sBAAU,CACR,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,EAAG,CAAC,cAAI,CAAC,EACzB,KAAM,GACN,GAAI,SAAUD,EAAYC,EAAWyC,EAAkC,CACrE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACrDO,EACJ,GAAIjD,IAAQ,UAAOA,IAAQ,WAAaA,IAAQ,eAC9CiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,QAAUA,IAAQ,sBAASA,IAAQ,YAAcA,IAAQ,eAClFiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,MAAQA,IAAQ,eACzCiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,QAAUA,IAAQ,eAC3CiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,SAAWA,IAAQ,eAC5CiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,QAAUA,IAAQ,qBAC3CiD,EAAM,QAEN,OAAM,MAAM,0NAAsC,EAEpD,OAAOoB,EAAS,iBAAiB,IAAItE,EAAqBkD,EAAKhD,CAAC,CAAC,CACnE,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,SAAK,QAAG,CAAC,EACtB,KAAM,GACN,GAAI,SAAUH,EAA2B4C,EAAkC,CACzE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAIxE,EAAaC,CAAK,CAAC,CAC1D,EACA,YAAa,EACf,EACA,kCAAY,CACV,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUK,EAAWuC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAInE,EAAc,IAAKC,CAAC,CAAC,CAC5D,EACA,YAAa,EACf,EACA,kCAAY,CACV,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWuC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAInE,EAAc,IAAKC,CAAC,CAAC,CAC5D,EACA,YAAa,EACf,EACA,kCAAY,CACV,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWuC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAInE,EAAc,IAAKC,CAAC,CAAC,CAC5D,EACA,YAAa,EACf,EACA,kCAAY,CACV,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWuC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAInE,EAAc,IAAKC,CAAC,CAAC,CAC5D,EACA,YAAa,EACf,EACA,4BAAW,CACT,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,EAAG,CAAC,cAAI,CAAC,EACzB,KAAM,GACN,GAAI,SAAUH,EAAaG,EAAWuC,EAAkC,CACtE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACrDO,EACJ,GAAIjD,IAAQ,UAAOA,IAAQ,MAAQA,IAAQ,eACzCiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,QAAUA,IAAQ,eAC3CiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,SAAWA,IAAQ,eAC5CiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,QAAUA,IAAQ,qBAC3CiD,EAAM,QAEN,OAAM,MAAM,8MAAoC,EAElD,OAAOoB,EAAS,iBAAiB,IAAInE,EAAc+C,EAAK9C,CAAC,CAAC,CAC5D,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWuC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAIjE,EAAY,IAAKD,CAAC,CAAC,CAC1D,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,CAAC,cAAI,CAAC,EACb,KAAM,GACN,GAAI,SAAUA,EAAWuC,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAIjE,EAAY,IAAKD,CAAC,CAAC,CAC1D,EACA,YAAa,EACf,EACA,sBAAU,CACR,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,EAAG,CAAC,cAAI,CAAC,EACzB,KAAM,GACN,GAAI,SAAUH,EAAaG,EAAWuC,EAAkC,CACtE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACrDO,EACJ,GAAIjD,IAAQ,UAAOA,IAAQ,SAAWA,IAAQ,eAC5CiD,EAAM,YAEJjD,IAAQ,UAAOA,IAAQ,QAAUA,IAAQ,qBAC3CiD,EAAM,QAEN,OAAM,MAAM,kMAAkC,EAEhD,OAAOoB,EAAS,iBAAiB,IAAIjE,EAAY6C,EAAK9C,CAAC,CAAC,CAC1D,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUkF,EAAyB3C,EAAkC,CACvE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAI,OAAO2C,GAAM,WAAYA,EAAI,IAAIvE,EAAM,MAAMuE,CAAC,GAC3ChB,EAAS,iBAAiB,IAAI9D,EAAgB8E,CAAC,CAAC,CACzD,EACA,YAAa,EACf,EACA,0DAAgB,CACd,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUC,EAAW5C,EAAkC,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAI7D,EAAgB8E,CAAC,CAAC,CACzD,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUA,EAAmB5C,EAAkC,CACjE,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAIhE,EAAiB,CAAC,CAACiF,CAAC,CAAC,CAC5D,EACA,YAAa,EACf,EACA,kCAAY,CACV,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU5C,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,SAAS,CACpB,EACA,YAAa,EACf,EACA,kCAAY,CACV,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAkC,CAC9C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAI5D,EAAe,EAAK,CAAC,CAC5D,EACA,YAAa,EACf,EACA,4BAAW,CACT,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAUiC,EAAkC,CAC9C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,iBAAiB,IAAI5D,EAAe,EAAI,CAAC,CAC3D,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAU8E,EAAW7C,EAAsB,CAC7C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,GAAI6C,EAAI,GAAKA,GAAKlB,EAAS,QAAQ,OACjC,MAAM,MAAM,kGAAkB,EAEhCA,EAAS,OAASkB,EAClBlB,EAAS,eAAe,CAC1B,EACA,YAAa,EACf,EAEA,4BAAW,CAAC,KAAM,MAAO,MAAO,EAAI,EACpC,4BAAW,CAAC,KAAM,MAAO,MAAO,EAAI,EACpC,4BAAW,CACT,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUZ,EAAyBf,EAAuC,CAC5E,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EAGzD,GADI,OAAOe,GAAO,WAAYA,EAAK,SAAS,cAAcA,CAAE,GAAK,SAAS,eAAeA,CAAE,GACvF,CAACA,EAAM,MAAM,IAAI,MAAM,6HAAyB,EAEpD,IAAMD,EAAWa,EAAS,YAAYZ,CAAE,EACxC,OAAAY,EAAS,cAAc,EAChBb,CACT,EACA,YAAa,EACf,EACA,gBAAS,CACP,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAUd,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,OAAO,EAAI,CACtB,EACA,YAAa,EACf,EACA,4BAAW,CACT,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,OAAO,EAAK,CACvB,EACA,YAAa,EACf,EACA,gBAAS,CACP,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,cAAc,CACzB,EACA,YAAa,EACf,EACA,kCAAY,CACV,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUgB,EAAW3C,EAAsB,CAC7C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACxC2B,EAAS,YAAY,EAC7B,cAAcgB,CAAC,EACxBhB,EAAS,eAAe,CAC1B,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,CAAC,SAAK,QAAG,CAAC,EACjB,KAAM,GACN,GAAI,SAAUlE,EAAWuC,EAAsB,CAC7C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACxC2B,EAAS,YAAY,EAC7B,cAAclE,CAAC,EACxBkE,EAAS,eAAe,CAC1B,EACA,YAAa,EACf,EACA,oBAAa,CACX,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAA8B,CAC1C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAK2B,EAAS,OACP,KAAK,UAAUA,EAAS,OAAO,OAAO,CAAC,EADf,IAEjC,EACA,YAAa,EACf,EACA,wCAAa,CACX,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,cAAc,CACzB,EACA,YAAa,EACf,EACA,oDAAe,CACb,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAwC,CACpD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,YAAY,CAC9B,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAgC,CAC5C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,SAAS,CAC3B,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAiC,CAC7C,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,UAAU,CAC5B,EACA,YAAa,EACf,EACA,0DAAgB,CACd,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAqC,CACjD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAO2B,EAAS,MAClB,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAqC,CACjD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACnD8C,EAAQnB,EAAS,OACvB,OAAAA,EAAS,OAAS,IAAIvD,EAAM,MAC5BuD,EAAS,eAAe,EACjBmB,CACT,EACA,YAAa,EACf,EACA,UAAQ,CACN,KAAM,OACN,KAAM,CAAC,CAAC,QAAG,CAAC,EACZ,QAAS,GACT,KAAM,GACN,GAAI,SAAUC,EAAiB/C,EAA+B,CAC5D,OAAO+C,CACT,EACA,YAAa,EACf,EAEA,kFAAoB,CAClB,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU/C,EAA6C,CACzD,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD,OAAI,OAAO5B,EAAM,cAAkB,IAC1BuD,EAAS,aAAavD,EAAM,aAAa,EAE3C,IACT,EACA,YAAa,EACf,EACA,oDAAe,CACb,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU4B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACrD2B,EAAS,YACXA,EAAS,UAAU,QAAU,GAEjC,EACA,YAAa,EACf,EACA,oDAAe,CACb,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACrD2B,EAAS,YACXA,EAAS,UAAU,QAAU,GAEjC,EACA,YAAa,EACf,EACA,oDAAe,CACb,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,gBAAgB,EAAI,CAC/B,EACA,YAAa,EACf,EACA,0DAAgB,CACd,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,gBAAgB,EAAK,CAChC,EACA,YAAa,EACf,EACA,8CAAc,CACZ,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,cAAc,EAAI,CAC7B,EACA,YAAa,EACf,EACA,oDAAe,CACb,KAAM,OACN,KAAM,CAAC,EACP,KAAM,GACN,GAAI,SAAU3B,EAAsB,CAClC,GAAM,CAAE2B,EAAUvD,CAAM,EAAI0B,EAAmB,OAAOE,CAAG,EACzD2B,EAAS,cAAc,EAAK,CAC9B,EACA,YAAa,EACf,CACF,EAEOqB,EAAQpB,EAGX,OAAO,WAAc,UACvB,UAAU,MAAM,gBAAgB,qBAAsBA,CAAkB",
6
- "names": ["ThreeUtil", "_ThreeUtil", "obj", "propKey", "prop", "DrawLineEventArgs", "v1", "v2", "width", "color", "CommandPromise", "command", "resolve", "reject", "Command", "CommandHome", "mode", "CommandJump", "v", "CommandMoveAbsolute", "CommandAngle", "angle", "CommandMoveDirection", "dir", "l", "CommandRotate", "a", "CommandRoll", "CommandPenEnable", "enable", "CommandPenColor", "CommandPenWidth", "CommandVisible", "visible", "CommandModel", "model", "Turtle3D", "three", "id", "modelBase", "job", "ThreeUtil", "url", "obj", "xhr", "noWait", "que", "m", "headup90", "axisX", "modifier", "target", "axis", "rv", "euler", "vertices", "colors", "indices", "material", "geometry", "lineSegments", "evt", "args", "WeykTurtle3DSystem", "_WeykTurtle3DSystem", "sys", "i", "scene", "tt", "modelUrl", "e", "index", "cmd", "beforeClear", "camera", "flag", "cameraHelper", "axisHelper", "rect", "renderer", "to", "controlConstrucor", "controls", "line", "hasNext", "wait", "redraw", "macrorun", "now", "elapsedMs", "callback", "element", "turtle3d", "PluginWeykTurtle3D", "turtle3dSystem", "baseUrl", "promise", "module", "err", "plugins", "callbacks", "total", "countTotal", "countSuccess", "success", "name", "count", "xyz", "c", "w", "n", "lines", "p", "plugin_weykturtle3d_default"]
3
+ "sources": ["../src/plugin_weykturtle3d_threeutil.mjs", "../src/plugin_weykturtle3d.mts"],
4
+ "sourcesContent": ["export class ThreeUtil {\n static isDisporsal(obj) {\n return 'dispose' in obj && typeof obj.dispose === 'function';\n }\n static isMesh(obj) {\n return 'isMesh' in obj && obj.isMesh === true;\n }\n static disposeChildObject(obj) {\n while (obj.children.length > 0) {\n this.disposeChildObject(obj.children[0]);\n obj.remove(obj.children[0]);\n }\n if (ThreeUtil.isMesh(obj)) {\n if (obj.geometry) {\n obj.geometry.dispose();\n }\n if (obj.material) {\n for (const propKey of Object.keys(obj.material)) {\n const prop = obj.material[propKey];\n if (ThreeUtil.isDisporsal(prop)) {\n prop.dispose();\n }\n }\n obj.material.dispose();\n }\n }\n }\n}\n", "/**\n * PluginWeykTurtle3D\n * 3d turtle graphics plugin\n */\n\nimport type { NakoSystem as NakoSystemBase } from '../core/src/plugin_api.mjs'\n\nimport { ThreeUtil } from './plugin_weykturtle3d_threeutil.mjs'\nimport type * as THREENS from './plugin_weykturtle3d_three.mjs'\n\ndeclare global {\n interface Navigator {\n nako3: { addPluginObject: (name: string, obj: object) => void }\n }\n interface Window {\n THREE?: THREENS.THREE\n }\n}\n\ntype CallbackType<T> = (a:T) => void\ntype NumericArray3 = [ number, number, number ]\ntype NakoRumtimeName = 'wnako'|'cnako'\ninterface NakoVariables {\n type: 'const'|'var'\n value: any\n}\ninterface NakoFunction {\n type: 'func'\n josi: []|string[][]\n asyncFn?: boolean\n pure?: boolean\n fn: any\n return_none?: boolean\n}\ninterface NakoMeta {\n type: 'const'\n value: {\n pluginName: string\n description: string\n pluginVersion: string\n nakoRuntime: NakoRumtimeName[]\n nakoVersion: string\n }\n}\ninterface NakoPluginObject {\n [ index: string]: NakoVariables|NakoFunction|NakoMeta\n}\n\nclass DrawLineEventArgs {\n v1: THREENS.Vector3\n v2: THREENS.Vector3\n width: number\n color: THREENS.Color\n constructor (v1: THREENS.Vector3, v2: THREENS.Vector3, width: number, color: THREENS.Color) {\n this.v1 = v1\n this.v2 = v2\n this.width = width\n this.color = color\n }\n}\n\ninterface Turtle3DEventMap {\n modelChanged: CustomEvent<void>\n drawLine: CustomEvent<DrawLineEventArgs>\n}\n\ninterface Turtle3DEventTarget extends EventTarget {\n addEventListener<K extends keyof Turtle3DEventMap>(\n type: K,\n // eslint-disable-next-line no-use-before-define\n listener: ((this: Turtle3D, evt: Turtle3DEventMap[K]) => any) | null,\n options?: boolean | EventListenerOptions,): void\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void\n dispatchEvent<K extends keyof Turtle3DEventMap>(evt: Turtle3DEventMap[K]): boolean\n removeListener<K extends keyof Turtle3DEventMap>(\n type: K,\n // eslint-disable-next-line no-use-before-define\n listener: (this: Turtle3D, evt: Turtle3DEventMap[K]) => any,\n options?: boolean | EventListenerOptions,): void\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void\n}\n\nclass Command {\n\n}\nclass CommandPromise {\n resolve: (result:any) => void\n reject: (err:Error) => void\n command: Command\n constructor (command: Command, resolve: (result: any) => void, reject: (err: Error) => void) {\n this.command = command\n this.resolve = resolve\n this.reject = reject\n }\n}\nclass CommandHome extends Command {\n cmd: string = 'home'\n mode: 'set'|'jump'\n constructor (mode: 'set'|'jump') {\n super()\n this.mode = mode\n }\n}\nclass CommandJump extends Command {\n cmd: string = 'jump'\n v: THREENS.Vector3\n constructor (v: THREENS.Vector3) {\n super()\n this.v = v\n }\n}\nclass CommandMoveAbsolute extends Command {\n cmd: string = 'move'\n v: THREENS.Vector3\n constructor (v: THREENS.Vector3) {\n super()\n this.v = v\n }\n}\nclass CommandAngle extends Command {\n cmd: string = 'angle'\n angle: THREENS.EulerArray\n constructor (angle: THREENS.EulerArray) {\n super()\n this.angle = angle\n }\n}\ntype MoveDirection = 'f'|'b'|'u'|'d'|'l'|'r'\ntype RotateDirection = 'u'|'d'|'l'|'r'\ntype RollDirection = 'l'|'r'\nclass CommandMoveDirection extends Command {\n cmd: string = 'slide'\n direction: MoveDirection\n length: number\n constructor (dir: MoveDirection, l: number) {\n super()\n this.direction = dir\n this.length = l\n }\n}\nclass CommandRotate extends Command {\n cmd: string = 'rotate'\n direction: RotateDirection\n angle: number\n constructor (dir: RotateDirection, a: number) {\n super()\n this.direction = dir\n this.angle = a\n }\n}\nclass CommandRoll extends Command {\n cmd: string = 'roll'\n direction: RollDirection\n angle: number\n constructor (dir: RollDirection, a: number) {\n super()\n this.direction = dir\n this.angle = a\n }\n}\nclass CommandPenEnable extends Command {\n cmd: string = 'pen'\n subcmd: string = 'enable'\n enable: boolean\n constructor (enable: boolean) {\n super()\n this.enable = enable\n }\n}\nclass CommandPenColor extends Command {\n cmd: string = 'pen'\n subcmd: string = 'color'\n color: THREENS.Color\n constructor (color: THREENS.Color) {\n super()\n this.color = color\n }\n}\nclass CommandPenWidth extends Command {\n cmd: string = 'pen'\n subcmd: string = 'width'\n width: number\n constructor (width: number) {\n super()\n this.width = width\n }\n}\nclass CommandVisible extends Command {\n cmd: string = 'attr'\n subcmd: string = 'visible'\n visible: boolean\n constructor (visible: boolean) {\n super()\n this.visible = visible\n }\n}\nclass CommandModel extends Command {\n cmd: string = 'attr'\n subcmd: string = 'model'\n model: any\n constructor (model: any) {\n super()\n this.model = model\n }\n}\n\nconst TypedTurtle3DEventTarget = EventTarget as { new(): Turtle3DEventTarget; prototype: Turtle3DEventTarget }\n\nclass Turtle3D extends TypedTurtle3DEventTarget implements Turtle3DEventTarget {\n private three: THREENS.THREE\n id: number\n obj: THREENS.Object3D\n disposal: boolean\n home: { position: THREENS.Vector3, quaternion: THREENS.Quaternion }\n color: THREENS.Color\n lineWidth: number\n flagDown: boolean\n flagLoaded: boolean\n f_visible: boolean\n macros: CommandPromise[]\n\n constructor (three: THREENS.THREE, id: number) {\n super()\n this.three = three\n this.id = id\n const modelBase = new three.Group()\n this.obj = modelBase\n this.home = {\n position: new three.Vector3(0, 0, 0),\n quaternion: new three.Quaternion()\n }\n this.color = new three.Color(0xffffff)\n this.disposal = false\n this.lineWidth = 4\n this.flagDown = true\n this.flagLoaded = false\n this.f_visible = true\n this.macros = []\n\n this.home.position.copy(modelBase.position)\n this.home.quaternion.copy(modelBase.quaternion)\n }\n\n clear (): void {\n // \u672A\u5B9F\u884C\u30B8\u30E7\u30D6\u306EPromise\u3092\u5168\u3066\u5B8C\u4E86\u306B\u3059\u308B\n for (const job of this.macros) {\n job.resolve(0)\n }\n this.macros = [] // \u30B8\u30E7\u30D6\u3092\u30AF\u30EA\u30A2\n // \u304B\u3081\u306E\u30E2\u30C7\u30EB\u3092\u30AB\u30E1\u304B\u3089\u524A\u9664\n this.discardModel()\n this.f_visible = true\n this.obj.visible = true\n }\n\n discardModel (): void {\n if (this.disposal) {\n ThreeUtil.disposeChildObject(this.obj)\n this.disposal = false\n } else {\n this.obj.remove(this.obj.children[0])\n }\n this.flagLoaded = false\n }\n\n loadTurtle (model: THREENS.Object3D|string) {\n if (this.isObject3D(model)) {\n this.discardModel()\n this.obj.add(model)\n this.disposal = false\n this.flagLoaded = true\n this.raiseModelChanged()\n return\n }\n const url = model\n if (url.length === 0) {\n this.discardModel()\n this.obj.add(this.createDefaultTurtle())\n this.disposal = true\n this.flagLoaded = true\n this.raiseModelChanged()\n return\n }\n const loader = new this.three.ObjectLoader()\n loader.load(url, (obj: THREENS.Object3D) => {\n this.discardModel()\n this.obj.add(obj)\n this.disposal = true\n this.flagLoaded = true\n this.raiseModelChanged()\n }, (xhr: XMLHttpRequest) => {\n // nothing\n }, (xhr: XMLHttpRequest) => {\n this.discardModel()\n this.f_visible = false\n this.obj.visible = false\n this.raiseModelChanged()\n })\n }\n\n doMacro (noWait: boolean): boolean {\n if (!this.flagLoaded && !noWait) {\n return true\n }\n const que = this.macros.shift()\n if (typeof que === 'undefined') { return false }\n const m = que instanceof CommandPromise ? que.command : que\n if (m instanceof CommandJump) {\n // \u8D77\u70B9\u3092\u79FB\u52D5\u3059\u308B\n this.obj.position.copy(m.v)\n } else if (m instanceof CommandMoveAbsolute) {\n const v1 = this.obj.position.clone()\n const v2 = m.v\n // \u7DDA\u3092\u5F15\u304F\n this.line(v1, v2)\n // \u30AB\u30E1\u306E\u89D2\u5EA6\u3092\u5909\u66F4\n this.obj.lookAt(v2)\n const headup90 = new this.three.Quaternion()\n const axisX = new this.three.Vector3(1, 0, 0)\n headup90.setFromAxisAngle(axisX, Math.PI / 2)\n this.obj.quaternion.multiply(headup90)\n // \u30AB\u30E1\u3092\u79FB\u52D5\n this.obj.position.copy(v2)\n } else if (m instanceof CommandMoveDirection) {\n const dir = m.direction\n const l = m.length * ((dir === 'b') ? -1 : 1)\n const v1 = this.obj.position.clone()\n const v2 = new this.three.Vector3(0, l, 0)\n if (dir === 'f' || dir === 'b') {\n v2.applyQuaternion(this.obj.quaternion)\n } else {\n // u\n const modifier = new this.three.Quaternion()\n const target = this.obj.quaternion.clone()\n if (dir === 'u' || dir === 'd') {\n const axis = new this.three.Vector3(1, 0, 0)\n if (dir === 'u') {\n modifier.setFromAxisAngle(axis, (-90) * Math.PI / 180)\n } else { // dir === 'd'\n modifier.setFromAxisAngle(axis, 90 * Math.PI / 180)\n }\n } else { // dir === 'l' || dir === 'r'\n const axis = new this.three.Vector3(0, 0, 1)\n if (dir === 'l') {\n modifier.setFromAxisAngle(axis, 90 * Math.PI / 180)\n } else { // dir === 'r'\n modifier.setFromAxisAngle(axis, (-90) * Math.PI / 180)\n }\n }\n target.multiply(modifier)\n v2.applyQuaternion(target)\n }\n v2.add(v1)\n this.line(v1, v2)\n this.obj.position.copy(v2)\n } else if (m instanceof CommandHome) {\n const mode = m.mode\n switch (mode) {\n case 'set':\n this.home.position.copy(this.obj.position)\n this.home.quaternion.copy(this.obj.quaternion)\n break\n case 'jump':\n this.obj.position.copy(this.home.position)\n this.obj.quaternion.copy(this.home.quaternion)\n break\n }\n } else if (m instanceof CommandRotate) {\n const dir = m.direction\n const rv = m.angle * (dir === 'l' || dir === 'd' ? 1 : -1)\n const target = new this.three.Quaternion()\n let axis:THREENS.Vector3\n if (dir === 'l' || dir === 'r') {\n axis = new this.three.Vector3(0, 0, 1)\n } else {\n axis = new this.three.Vector3(1, 0, 0)\n }\n target.setFromAxisAngle(axis, (rv % 360) * Math.PI / 180)\n this.obj.quaternion.multiply(target)\n } else if (m instanceof CommandRoll) {\n const dir = m.direction\n const rv = m.angle * (dir === 'r' ? 1 : -1)\n const axis = new this.three.Vector3(0, 1, 0)\n const target = new this.three.Quaternion()\n target.setFromAxisAngle(axis, (rv % 360) * Math.PI / 180)\n this.obj.quaternion.multiply(target)\n } else if (m instanceof CommandPenColor) {\n this.color = m.color\n } else if (m instanceof CommandPenWidth) {\n this.lineWidth = m.width\n } else if (m instanceof CommandPenEnable) {\n this.flagDown = m.enable\n } else if (m instanceof CommandVisible) {\n this.f_visible = m.visible\n if (this.f_visible) {\n this.obj.visible = true\n } else {\n this.obj.visible = false\n }\n } else if (m instanceof CommandModel) {\n this.flagLoaded = false\n this.loadTurtle(m.model)\n } else if (m instanceof CommandAngle) {\n const euler = new this.three.Euler()\n euler.fromArray(m.angle)\n // eslint-disable-next-line no-unused-vars\n const dir = new this.three.Quaternion()\n this.obj.quaternion.setFromEuler(euler)\n }\n if (que instanceof CommandPromise) {\n que.resolve(0)\n }\n return (this.macros.length > 0)\n }\n\n private createDefaultTurtle (): THREENS.Object3D {\n const vertices = new Float32Array([\n 0.0, 1.0, 0.0,\n -0.6, -1.0, 0.0,\n 0.0, -0.5, 0.0,\n 0.6, -1.0, 0.0,\n\n 0.0, 0.0, 0.5,\n 0.0, 1.0, 0.0,\n -0.6, -1.0, 0.0,\n 0.0, -0.5, 0.0,\n 0.6, -1.0, 0.0,\n\n 0.0, 0.0, -0.5,\n 0.0, 1.0, 0.0,\n -0.6, -1.0, 0.0,\n 0.0, -0.5, 0.0,\n 0.6, -1.0, 0.0\n ])\n\n const colors = new Float32Array([\n 0.0, 1.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 1.0, 0.0,\n\n 1.0, 0.0, 0.0,\n 1.0, 0.0, 0.0,\n 1.0, 0.0, 0.0,\n 1.0, 0.0, 0.0,\n 1.0, 0.0, 0.0,\n\n 0.0, 0.0, 1.0,\n 0.0, 0.0, 1.0,\n 0.0, 0.0, 1.0,\n 0.0, 0.0, 1.0,\n 0.0, 0.0, 1.0\n ])\n\n const indices = [\n 0, 1, 1, 2, 2, 3, 3, 0,\n 4, 5, 4, 6, 4, 7, 4, 8,\n 9, 10, 9, 11, 9, 12, 9, 13\n ]\n\n const obj = new this.three.Group()\n const material = new this.three.LineBasicMaterial({ vertexColors: true })\n const geometry = new this.three.BufferGeometry()\n geometry.setIndex(indices)\n geometry.setAttribute('position', new this.three.BufferAttribute(vertices, 3))\n geometry.setAttribute('color', new this.three.BufferAttribute(colors, 3))\n geometry.computeBoundingSphere()\n\n const lineSegments = new this.three.LineSegments(geometry, material)\n lineSegments.scale.set(30.0, 30.0, 30.0)\n\n obj.add(lineSegments)\n return obj\n }\n\n private raiseModelChanged (): void {\n const evt = new CustomEvent<void>('modelChanged')\n this.dispatchEvent(evt)\n }\n\n private raiseDrawLine (v1: THREENS.Vector3, v2: THREENS.Vector3, width: number, color: THREENS.Color) : void {\n const args = new DrawLineEventArgs(v1, v2, width, color)\n const evt = new CustomEvent<DrawLineEventArgs>('drawLine', { detail: args })\n this.dispatchEvent(evt)\n }\n\n private line (v1: THREENS.Vector3, v2: THREENS.Vector3) {\n if (!this.flagDown) { return }\n this.raiseDrawLine(v1, v2, this.lineWidth, this.color)\n }\n\n private isObject3D (obj: any): obj is THREENS.Object3D {\n return obj instanceof this.three.Object3D\n }\n}\n\ninterface NakoSystem extends NakoSystemBase {\n // eslint-disable-next-line no-use-before-define\n tags: { weykturtle3d?: WeykTurtle3DSystem }\n}\n\nclass WeykTurtle3DSystem {\n // eslint-disable-next-line no-use-before-define\n private static instance: WeykTurtle3DSystem\n private instanceCount: number\n sys: NakoSystem\n three: null|THREENS.THREE\n containerid: string\n camera: number\n target: number\n _renderer: THREENS.Renderer|null\n _scene: THREENS.Scene|null\n _lines: THREENS.Line|null\n _camera: THREENS.Camera|null\n _controls: THREENS.Controls|null\n _camerahelper: THREENS.CameraHelper|null\n _axishelper: THREENS.AxesHelper|null\n turtles: Turtle3D[]\n flagSetTimer: boolean\n _prevUpdatedTime: number\n\n static getInstance (sys: NakoSystem) {\n if (WeykTurtle3DSystem.instance === undefined) {\n WeykTurtle3DSystem.instance = new WeykTurtle3DSystem(sys)\n } else if (WeykTurtle3DSystem.instance.sys !== sys) {\n console.log('T3D: difference sys instance')\n WeykTurtle3DSystem.instance.sys = sys\n }\n const i = WeykTurtle3DSystem.instance\n i.instanceCount += 1\n return WeykTurtle3DSystem.instance\n }\n\n private constructor (sys: NakoSystem) {\n this.instanceCount = 0\n this.three = null\n this.sys = sys\n this.containerid = ''\n this.camera = -1\n this.target = -1\n this._renderer = null\n this._scene = null\n this._lines = null\n this._camera = null\n this._controls = null\n this._camerahelper = null\n this._axishelper = null\n this.turtles = []\n this.flagSetTimer = false\n this._prevUpdatedTime = 0\n }\n\n clearAll () {\n this.disposeAllTurtle()\n this.disposeAllLine()\n const scene = this._scene\n if (scene && this._lines) {\n scene.remove(this._lines)\n scene.add(this._lines)\n if (this._camerahelper !== null) {\n this._camerahelper.visible = false\n scene.remove(this._camerahelper)\n scene.add(this._camerahelper)\n }\n if (this._axishelper !== null) {\n this._axishelper.visible = false\n scene.remove(this._axishelper)\n scene.add(this._axishelper)\n }\n }\n }\n\n disposeAllTurtle () {\n // \u30AB\u30E1\u3092\u30AF\u30EA\u30A2\n for (const tt of this.turtles) {\n tt.clear()\n }\n this.turtles = []\n this.target = -1\n this.camera = -1\n this.flagSetTimer = false\n }\n\n disposeAllLine () {\n // \u5F15\u3044\u305F\u7DDA\u3092\u7DDA\u7528\u306E\u30D0\u30C3\u30D5\u30A1\u304B\u3089\u30AF\u30EA\u30A2\n if (this._lines !== null) {\n ThreeUtil.disposeChildObject(this._lines)\n }\n }\n\n private getThree (): THREENS.THREE {\n if (!this.three) {\n throw new Error('ThreeJS\u306E\u6E96\u5099\u3055\u308C\u308B\u524D\u306B\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F')\n }\n return this.three\n }\n\n createTurtle (modelUrl: string): number {\n // \u30AB\u30E1\u306E\u60C5\u5831\u3092 sys._turtle \u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\n const three = this.getThree()\n const id = this.turtles.length\n const tt = new Turtle3D(three, id)\n tt.addEventListener('modelChanged', (e) => {\n const redraw = !!this.sys.__getSysVar('T3D\u81EA\u52D5\u63CF\u753B')\n if (redraw) {\n this.doDraw(true)\n }\n })\n tt.addEventListener('drawLine', (e) => {\n this.drawLine(e.detail.v1, e.detail.v2, e.detail.width, e.detail.color)\n })\n this.turtles.push(tt)\n this.target = id\n tt.loadTurtle(modelUrl)\n const scene = this.getScene()\n scene.add(tt.obj)\n return id\n }\n\n initTurtle (): void {\n if (this.turtles.length === 0) {\n if (this._renderer === null) {\n this.initRenderer()\n }\n const three = this.getThree()\n // \u30AB\u30E1\u3092\uFF11\u3064\u751F\u6210\u3059\u308B\n const index = this.createTurtle('')\n // \u751F\u6210\u3057\u305F\u30AB\u30E1\u3092\u30AB\u30E1\u30E9\u7528\u30AB\u30E1\u3068\u3057\u3066\u8A2D\u5B9A\u3059\u308B\n const tt = this.turtles[index]\n tt.obj.position.set(0, 0, 1000)\n const axis = new three.Vector3(0, 0, -1).normalize()\n const angle = 0\n tt.obj.quaternion.setFromAxisAngle(axis, angle)\n tt.home.position.copy(tt.obj.position)\n tt.home.quaternion.copy(tt.obj.quaternion)\n tt.f_visible = false\n tt.obj.visible = false\n this.camera = index\n this.target = -1\n }\n }\n\n getCur (): Turtle3D {\n if (this.turtles.length === 0) {\n throw Error('\u6700\u521D\u306B\u300ET3D\u30AB\u30E1\u4F5C\u6210\u300F\u547D\u4EE4\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002')\n }\n if (this.target < 0 || this.target >= this.turtles.length) {\n throw Error('\u6307\u5B9A\u3055\u308C\u305F\u756A\u53F7\u306E\u30AB\u30E1\u306F\u3044\u307E\u305B\u3093\u3002')\n }\n return this.turtles[this.target]\n }\n\n queCurrentTurtle (cmd: Command): Promise<number> {\n const tt = this.getCur()\n const promise = new Promise<number>((resolve, reject) => {\n const que = new CommandPromise(cmd, resolve, reject)\n tt.macros.push(que)\n this.animationStart()\n })\n return promise\n }\n\n doDraw (beforeClear: boolean) {\n if (this.camera === -1) { return }\n if (!this._scene) { return }\n this.getRenderer()\n if (!this._renderer) { return }\n this.getCamera()\n if (!this._camera) { return }\n const camera = this.turtles[this.camera]\n if (this._controls === null) {\n this._camera.position.copy(camera.obj.position)\n this._camera.quaternion.copy(camera.obj.quaternion)\n }\n if (this._camerahelper !== null) {\n this._camerahelper.update()\n }\n if (this._controls !== null) {\n this._controls.update()\n camera.obj.position.copy(this._camera.position)\n camera.obj.quaternion.copy(this._camera.quaternion)\n }\n if (beforeClear) {\n this._renderer.clear()\n }\n this._renderer.render(this._scene, this._camera)\n }\n\n setCameraHelper (flag: boolean) {\n const three = this.getThree()\n if (flag) {\n if (this._camerahelper === null) {\n if (this._scene && this._camera) {\n if (typeof three.CameraHelper === 'undefined') {\n throw Error('\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u306E\u6A5F\u80FD\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n const cameraHelper = new three.CameraHelper(this._camera)\n this._camerahelper = cameraHelper\n this._scene.add(cameraHelper)\n }\n }\n this._camerahelper!.visible = true\n } else {\n if (this._camerahelper !== null) {\n this._camerahelper.visible = false\n }\n }\n }\n\n setAxisHelper (flag: boolean) {\n const three = this.getThree()\n if (flag) {\n if (this._axishelper === null) {\n if (this._scene) {\n if (typeof three.AxisHelper === 'undefined') {\n throw Error('AXIS\u30D8\u30EB\u30D1\u306E\u6A5F\u80FD\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n const axisHelper = new three.AxisHelper(1000)\n this._axishelper = axisHelper\n this._scene.add(axisHelper)\n }\n }\n this._axishelper!.visible = true\n } else {\n if (this._axishelper !== null) {\n this._axishelper.visible = false\n }\n }\n }\n\n getScene (): THREENS.Scene {\n const three = this.getThree()\n if (this._scene === null) {\n this._scene = new three.Scene()\n }\n return this._scene\n }\n\n getCamera (): THREENS.Camera {\n const three = this.getThree()\n if (this._camera === null) {\n const camera = new three.PerspectiveCamera(60, 1.0, 1, 65000)\n this.resetCamera(camera)\n this._camera = camera\n }\n return this._camera\n }\n\n resetCamera (camera: THREENS.Camera):void {\n const three = this.getThree()\n camera.position.set(0, 0, 1000)\n if (this._renderer !== null) {\n const rect = new three.Vector2()\n this._renderer.getSize(rect)\n if ('aspect' in camera) {\n camera.aspect = rect.width / rect.height\n }\n }\n camera.up = new three.Vector3(0, 1, 0)\n camera.lookAt(new three.Vector3(0, 0, 0))\n }\n\n initTrutle3dEnv (renderer: THREENS.WebGLRenderer) {\n renderer.setClearColor(0x000000, 1.0)\n renderer.autoClear = false\n\n const scene = this.getScene()\n // eslint-disable-next-line no-unused-vars\n const camera = this.getCamera()\n\n if (scene && this._lines) {\n scene.add(this._lines)\n if (this.turtles.length === 0) {\n this.initTurtle()\n }\n }\n }\n\n initRenderer ():THREENS.WebGLRenderer {\n // \u63CF\u753B\u5148\u3092\u30BB\u30C3\u30C8\u3059\u308B\n let to = this.sys.__getSysVar('T3D\u30AB\u30E1\u63CF\u753B\u5148')\n if (typeof to === 'string') { to = document.querySelector(to) || document.getElementById(to) }\n if (!to) {\n throw new Error('[ERROR] T3D\u30AB\u30E1\u63CF\u753B\u5148\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n const renderer = this.setRenderer(to)\n this.setupRenderer()\n return renderer\n }\n\n setRenderer (to: Element|HTMLCanvasElement|THREENS.WebGLRenderer):THREENS.WebGLRenderer {\n const three = this.getThree()\n let renderer: null|THREENS.WebGLRenderer = null\n if (to instanceof three.WebGLRenderer) {\n renderer = to\n } else if (to instanceof HTMLCanvasElement) {\n renderer = new three.WebGLRenderer({ antialias: false, alpha: true, canvas: to })\n if (renderer === null) {\n throw new Error('\u30EC\u30F3\u30C0\u30E9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u6307\u5B9A\u3057\u305FCanvas\u8981\u7D20\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093')\n }\n renderer.setSize(to.width, to.height)\n } else if (to instanceof Element) {\n renderer = new three.WebGLRenderer({ antialias: false, alpha: true })\n if (renderer === null) {\n throw new Error('\u30EC\u30F3\u30C0\u30E9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u6307\u5B9A\u3057\u305FDOM\u8981\u7D20\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093')\n }\n renderer.setSize(to.clientWidth, to.clientHeight)\n to.appendChild(renderer.domElement)\n } else {\n // never\n throw new Error('\u30EC\u30F3\u30C0\u30E9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u305D\u308C\u306F\u4F5C\u6210\u5148\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093')\n }\n renderer.setPixelRatio(window.devicePixelRatio)\n this._renderer = renderer\n return this._renderer\n }\n\n clearRenderer () {\n this._renderer = null\n if (this._controls) {\n this._controls.enabled = false\n this._controls = null\n }\n }\n\n setupRenderer () {\n if (this._renderer) {\n this.initTrutle3dEnv(this._renderer)\n }\n }\n\n getRenderer (): THREENS.Renderer {\n if (this._renderer === null) {\n this.initRenderer()\n }\n return this._renderer!\n }\n\n setupControl (controlConstrucor: THREENS.Controls): THREENS.Controls {\n if (typeof controlConstrucor === 'undefined') {\n throw new Error('\u6307\u5B9A\u3055\u308C\u305F\u30B3\u30F3\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n if (this._controls !== null) {\n if (this._controls instanceof controlConstrucor) {\n return this._controls\n } else {\n throw new Error('\u65E2\u306B\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u9069\u7528\u3057\u3066\u3044\u307E\u3059\u3002\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u306E\u5909\u66F4\u306F\u3067\u304D\u307E\u305B\u3093\u3002')\n }\n }\n const renderer = this.getRenderer()\n const camera = this.getCamera()\n // eslint-disable-next-line new-cap\n const controls = new controlConstrucor(camera, renderer.domElement)\n controls.enabled = true\n this._controls = controls\n return this._controls\n }\n\n drawLine (v1: THREENS.Vector3, v2: THREENS.Vector3, width: number, color: THREENS.Color):void {\n const three = this.getThree()\n const geometry = new three.BufferGeometry()\n const vertices = new three.Float32BufferAttribute(6, 3)\n vertices.copyArray([v1.x, v1.y, v1.z, v2.x, v2.y, v2.z])\n const material = new three.LineBasicMaterial({ color, linewidth: width })\n geometry.setAttribute('position', vertices)\n const line = new three.Line(geometry, material)\n if (this._lines) {\n this._lines.add(line)\n }\n }\n\n doMacroAllTurtles (): boolean {\n let hasNext = false\n for (const tt of this.turtles) {\n if (tt.doMacro(this.isNoWait())) { hasNext = true }\n }\n return hasNext\n }\n\n animationStart ():void {\n const wait = this.getWait()\n const macrorun = !!this.sys.__getSysVar('T3D\u81EA\u52D5\u5B9F\u884C')\n if (!macrorun) {\n return\n }\n if (this.isNoWait()) {\n this.animation()\n return\n }\n if (this.flagSetTimer) { return }\n this.flagSetTimer = true\n this.animationFrame(() => this.animation())\n }\n\n getWait (): number {\n return this.sys.__getSysVar('T3D\u30AB\u30E1\u901F\u5EA6')\n }\n\n isNoWait (): boolean {\n return this.sys.__getSysVar('T3D\u30AB\u30E1\u901F\u5EA6') === 0\n }\n\n animation () {\n const redraw = !!this.sys.__getSysVar('T3D\u81EA\u52D5\u63CF\u753B')\n const macrorun = !!this.sys.__getSysVar('T3D\u81EA\u52D5\u5B9F\u884C')\n const hasNext = this.animationTick()\n if (redraw) {\n this.doDraw(true)\n }\n if ((hasNext || this._controls !== null) && macrorun) {\n this.animationFrame(() => this.animation())\n } else {\n this.flagSetTimer = false\n }\n }\n\n animationTick () {\n const now = Date.now()\n const noWait = this.isNoWait()\n // \u30CE\u30FC\u30A6\u30A8\u30A4\u30C8\u3067\u306F\u306A\u3044\u5834\u5408\u306E\u6642\u9593\u5F85\u3061\u51E6\u7406\n if (!noWait) {\n const elapsedMs = now - this._prevUpdatedTime\n const wait = this.getWait()\n if (wait > 0 && elapsedMs < wait) {\n return true\n }\n }\n this._prevUpdatedTime = now\n let hasNext:boolean\n if (noWait) {\n while (this.doMacroAllTurtles()) {\n // no-op\n }\n hasNext = false\n } else {\n hasNext = this.doMacroAllTurtles()\n }\n return hasNext\n }\n\n animationFrame (callback: () => void, element?: Element) {\n window.setTimeout(callback, 1000 / 60)\n }\n\n ck (): THREENS.THREE {\n if (this.three === null) {\n if (this.sys.__getSysVar('THREE') !== null) {\n this.three = this.sys.__getSysVar('THREE')\n } else if (typeof window.THREE !== 'undefined') {\n this.three = window.THREE\n }\n }\n if (this.three === null) {\n throw new Error('three.module.js\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u307E\u305B\u3093')\n }\n if (this.sys.__getSysVar('THREE') === null) {\n this.sys.__setSysVar('THREE', this.three)\n }\n if (this._lines === null) {\n this._lines = new this.three.Group()\n }\n return this.three\n }\n\n static getTurtle3D (sys: NakoSystem): WeykTurtle3DSystem {\n if (!sys.tags.weykturtle3d) {\n throw new Error('\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u521D\u671F\u5316\u304C\u884C\u308F\u308C\u3066\u3044\u307E\u305B\u3093')\n }\n return sys.tags.weykturtle3d\n }\n\n static getEnv (sys: NakoSystem):[ WeykTurtle3DSystem, THREENS.THREE ] {\n const turtle3d = WeykTurtle3DSystem.getTurtle3D(sys)\n const three = turtle3d.ck()\n return [turtle3d, three]\n }\n}\n\nconst PluginWeykTurtle3D: NakoPluginObject = {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_weykturtle3d', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: '3D\u3067\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u63CF\u753B\u30D7\u30E9\u30B0\u30A4\u30F3', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAC\u660E\n pluginVersion: '3.6.0', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\n nakoRuntime: ['wnako'], // \u5BFE\u8C61\u30E9\u30F3\u30BF\u30A4\u30E0\n nakoVersion: '3.6.0' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n if (sys.tags.weykturtle3d) { return }\n const turtle3dSystem = WeykTurtle3DSystem.getInstance(sys)\n sys.tags.weykturtle3d = turtle3dSystem\n\n // \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u521D\u671F\u5316\n sys.__setSysVar('THREE', null)\n }\n },\n '!\u30AF\u30EA\u30A2': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n if (sys.tags.weykturtle3d) {\n sys.tags.weykturtle3d.clearAll()\n sys.tags.weykturtle3d.clearRenderer()\n }\n }\n },\n // @3D\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u3068\u30D7\u30E9\u30B0\u30A4\u30F3\n 'THREE': { type: 'const', value: '' }, // @THREE\n 'T3D\u30D9\u30FC\u30B9URL': { type: 'var', value: 'https://cdn.jsdelivr.net/npm/three@0.127.0' }, // @T3D\u3079\u30FC\u3059URL\n 'T3D\u30E9\u30A4\u30D6\u30E9\u30EA\u8AAD\u8FBC': { // @ThreeJS\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u52D5\u7684\u306B\u8AAD\u307F\u8FBC\u3080 // @T3D\u3089\u3044\u3076\u3089\u308A\u3088\u307F\u3053\u3080\n type: 'func',\n josi: [],\n asyncFn: true,\n pure: true,\n fn: async function (sys: NakoSystem): Promise<boolean> {\n const turtle3d = WeykTurtle3DSystem.getTurtle3D(sys)\n if (turtle3d.three === null && sys.__getSysVar('THREE') === null) {\n const baseUrl = sys.__getSysVar('T3D\u30D9\u30FC\u30B9URL')\n const moduleUrl = baseUrl === '' ? 'three' : (baseUrl + '/build/three.module.js')\n const promise = import(/* webpackIgnore: true */ moduleUrl)\n promise.then(module => {\n turtle3d.three = Object.assign({}, module)\n turtle3d.ck()\n return true\n })\n promise.catch(err => {\n console.error('T3D:ThreeJS\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F')\n console.error(err)\n return false\n })\n return await promise\n } else {\n turtle3d.ck()\n return true\n }\n },\n return_none: false\n },\n 'T3D\u30E9\u30A4\u30D6\u30E9\u30EA\u8AAD\u8FBC\u5F8C': { // @ThreeJS\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u52D5\u7684\u306B\u8AAD\u307F\u8FBC\u3080 // @T3D\u3089\u3044\u3076\u3089\u308A\u3088\u307F\u3053\u307F\u3054\n type: 'func',\n josi: [['\u306B']],\n pure: true,\n fn: function (callback: CallbackType<boolean>, sys: NakoSystem):void {\n const turtle3d = WeykTurtle3DSystem.getTurtle3D(sys)\n if (turtle3d.three === null && sys.__getSysVar('THREE') === null) {\n const baseUrl = sys.__getSysVar('T3D\u30D9\u30FC\u30B9URL')\n const moduleUrl = baseUrl === '' ? 'three' : (baseUrl + '/build/three.module.js')\n const promise = import(/* webpackIgnore: true */ moduleUrl)\n promise.then(module => {\n turtle3d.three = Object.assign({}, module)\n turtle3d.ck()\n callback(turtle3d.three !== null)\n })\n promise.catch(err => {\n console.error('T3D:ThreeJS\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F')\n console.error(err)\n callback(turtle3d.three !== null)\n })\n } else {\n turtle3d.ck()\n callback(turtle3d.three !== null)\n }\n },\n return_none: true\n },\n 'T3D\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAD\u8FBC': { // @ThreeJS\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u52D5\u7684\u306B\u8AAD\u307F\u8FBC\u3080 // @T3D\u3077\u3089\u3050\u3044\u3093\u3088\u307F\u3053\u3080\n type: 'func',\n josi: [['\u3092']],\n asyncFn: true,\n pure: true,\n fn: async function (plugins: string[], sys: NakoSystem):Promise<void> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n const l = plugins.length\n if (l === 0) {\n return\n }\n const baseUrl = sys.__getSysVar('T3D\u30D9\u30FC\u30B9URL')\n const totalPromise = new Promise<void>((resolve, reject) => {\n const callbacks = (function (total) {\n let countTotal = 0\n let countSuccess = 0\n return function (success: boolean) {\n countTotal += 1\n if (success) {\n countSuccess += 1\n }\n if (countTotal === total) {\n if (countTotal === countSuccess) {\n resolve()\n } else {\n reject(new Error('\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u305F\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u3042\u308A\u307E\u3059'))\n }\n }\n }\n })(l)\n for (const name of plugins) {\n const pluginUrl = baseUrl === '' ? name : (baseUrl + '/examples/jsm/' + name)\n const promise = import(/* webpackIgnore: true */ pluginUrl)\n promise.then(module => {\n Object.assign<THREENS.THREE, any>(three, module)\n callbacks(true)\n })\n promise.catch(err => {\n console.error('T3D:ThreeJS\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F')\n console.error(err)\n callbacks(false)\n })\n }\n })\n return totalPromise\n },\n return_none: true\n },\n 'T3D\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAD\u8FBC\u5F8C': { // @ThreeJS\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u52D5\u7684\u306B\u8AAD\u307F\u8FBC\u3080 // @T3D\u3077\u3089\u3050\u3044\u3093\u3088\u307F\u3053\u307F\u3054\n type: 'func',\n josi: [['\u306B'], ['\u3092']],\n pure: true,\n fn: function (callback: CallbackType<void>, plugins: string[], sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n const l = plugins.length\n if (l === 0) {\n callback()\n return\n }\n const baseUrl = sys.__getSysVar('T3D\u30D9\u30FC\u30B9URL')\n const callbacks = (function (callback, total) {\n let count = 0\n return function (success: boolean) {\n count += 1\n if (count === total) {\n callback()\n }\n }\n })(callback, l)\n for (let i = 0; i < l; i++) {\n const name = plugins[i]\n const pluginUrl = baseUrl === '' ? name : (baseUrl + '/examples/jsm/' + name)\n const promise = import(/* webpackIgnore: true */ pluginUrl)\n promise.then(module => {\n Object.assign<THREENS.THREE, any>(three, module)\n callbacks(true)\n })\n promise.catch(err => {\n console.error('T3D:ThreeJS\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F')\n console.error(err)\n callbacks(false)\n })\n }\n },\n return_none: true\n },\n // @3D\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u30AB\u30E1\u64CD\u4F5C\n 'T3D\u30AB\u30E1\u4F5C\u6210': { // @\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u958B\u59CB\u3057\u3066\u30AB\u30E1\u306EID\u3092\u8FD4\u3059 // @T3D\u304B\u3081\u3055\u304F\u305B\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): number {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.initTurtle()\n const modelUrl = sys.__getSysVar('T3D\u30AB\u30E1\u30E2\u30C7\u30EBURL')\n const id = turtle3d.createTurtle(modelUrl)\n return id\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u64CD\u4F5C\u5BFE\u8C61\u8A2D\u5B9A': { // @ID\u3092\u6307\u5B9A\u3057\u3066\u64CD\u4F5C\u5BFE\u8C61\u3068\u306A\u308B\u30AB\u30E1\u3092\u5909\u66F4\u3059\u308B // @T3D\u304B\u3081\u305D\u3046\u3055\u305F\u3044\u3057\u3087\u3046\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078', '\u306E']],\n pure: true,\n fn: function (id: number, sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.target = id\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u63CF\u753B\u5148': { type: 'var', value: 'turtle3d_div' }, // @T3D\u304B\u3081\u3073\u3087\u3046\u304C\u3055\u304D\n 'T3D\u30AB\u30E1\u30E2\u30C7\u30EBURL': { type: 'var', value: '' }, // @T3D\u304B\u3081\u3082\u3067\u308BURL\n 'T3D\u30AB\u30E1\u30E2\u30C7\u30EB\u5909\u66F4': { // @\u30AB\u30E1\u306E\u30E2\u30C7\u30EB\u3092URL\u306B\u5909\u66F4\u3059\u308B // @T3D\u304B\u3081\u3082\u3067\u308B\u3078\u3093\u3053\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (url: string, sys: NakoSystem):Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandModel(url))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u901F\u5EA6': { type: 'const', value: 100 }, // @T3D\u304B\u3081\u305D\u304F\u3069\n 'T3D\u30AB\u30E1\u901F\u5EA6\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u52D5\u4F5C\u901F\u5EA6V\u306B\u8A2D\u5B9A(\u5927\u304D\u3044\u307B\u3069\u9045\u3044) // @T3D\u304B\u3081\u305D\u304F\u3069\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (v: number, sys: NakoSystem):void {\n sys.__setSysVar('T3D\u30AB\u30E1\u901F\u5EA6', v)\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092[x,y,z]\u3078\u79FB\u52D5\u3059\u308B // @T3D\u304B\u3081\u3044\u3069\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (xyz: NumericArray3, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveAbsolute(new three.Vector3(xyz[0], xyz[1], xyz[2])))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u539F\u70B9\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u539F\u70B9\u3092\u73FE\u5728\u306E\u4F4D\u7F6E\u30FB\u5411\u304D\u306B\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u3052\u3093\u3066\u3093\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandHome('set'))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u539F\u70B9\u79FB\u52D5': { // @\u30AB\u30E1\u3092\u539F\u70B9\u306E\u4F4D\u7F6E\u30FB\u5411\u304D\u306B\u79FB\u52D5\u3059\u308B(\u63CF\u753B\u306F\u3057\u306A\u3044) // @T3D\u304B\u3081\u3052\u3093\u3066\u3093\u3044\u3069\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandHome('jump'))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u8D77\u70B9\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u63CF\u753B\u8D77\u70B9\u4F4D\u7F6E\u3092[x,y,z]\u3078\u79FB\u52D5\u3059\u308B // @T3D\u304B\u3081\u304D\u3066\u3093\u3044\u3069\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (xyz: NumericArray3, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandJump(new three.Vector3(xyz[0], xyz[1], xyz[2])))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u9032': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092L\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3059\u3059\u3080\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('f', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u623B': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092L\u3060\u3051\u623B\u3059 // @T3D\u304B\u3081\u3082\u3069\u308B\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('b', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u4E0A\u5E73\u884C\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u4E0A\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3046\u3048\u3078\u3044\u3053\u3046\u3044\u3069\u3046\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('u', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u4E0B\u5E73\u884C\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u4E0B\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3057\u305F\u3078\u3044\u3053\u3046\u3044\u3069\u3046\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('d', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u5DE6\u5E73\u884C\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u5DE6\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3072\u3060\u308A\u3078\u3044\u3053\u3046\u3044\u3069\u3046\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('l', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u53F3\u5E73\u884C\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u53F3\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u307F\u304E\u3078\u3044\u3053\u3046\u3044\u3069\u3046\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (l: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandMoveDirection('r', l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092DIR\u306BL\u3060\u3051\u9032\u3081\u308B // @T3D\u304B\u3081\u3046\u3054\u304F\n type: 'func',\n josi: [['\u3078', '\u306B'], ['\u3060\u3051']],\n pure: true,\n fn: function (dir:string, l: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n let cmd:MoveDirection\n if (dir === '\u524D' || dir === 'FORWARD' || dir === '\u307E\u3048') {\n cmd = 'f'\n } else if (dir === '\u5F8C' || dir === 'BACK' || dir === '\u3046\u3057\u308D' || dir === 'BACKWARD' || dir === '\u3042\u3068') {\n cmd = 'b'\n } else if (dir === '\u4E0A' || dir === 'UP' || dir === '\u3046\u3048') {\n cmd = 'u'\n } else if (dir === '\u4E0B' || dir === 'DOWN' || dir === '\u3057\u305F') {\n cmd = 'd'\n } else if (dir === '\u53F3' || dir === 'RIGHT' || dir === '\u307F\u304E') {\n cmd = 'r'\n } else if (dir === '\u5DE6' || dir === 'LEFT' || dir === '\u3072\u3060\u308A') {\n cmd = 'l'\n } else {\n throw Error('\u65B9\u5411\u306E\u6307\u5B9A\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u524D\u5F8C\u4E0A\u4E0B\u5DE6\u53F3\u306E\u3044\u305A\u308C\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')\n }\n return turtle3d.queCurrentTurtle(new CommandMoveDirection(cmd, l))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u89D2\u5EA6\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092\u30AA\u30A4\u30E9\u30FC([x,y,z,XYZ])\u306B\u3066\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u304B\u304F\u3069\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078', '\u306E']],\n pure: true,\n fn: function (angle: THREENS.EulerArray, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandAngle(angle))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u53F3\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051\u53F3\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u307F\u304E\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRotate('r', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u5DE6\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051\u5DE6\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u3072\u3060\u308A\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRotate('l', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u4E0A\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051\u4E0A\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u3046\u3048\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRotate('u', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u4E0B\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051\u4E0B\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u3057\u305F\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRotate('d', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092A\u3060\u3051DIR\u306B\u5411\u3051\u308B // @T3D\u304B\u3081\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3078', '\u306B'], ['\u3060\u3051']],\n pure: true,\n fn: function (dir: string, a: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n let cmd:RotateDirection\n if (dir === '\u4E0A' || dir === 'UP' || dir === '\u3046\u3048') {\n cmd = 'u'\n } else if (dir === '\u4E0B' || dir === 'DOWN' || dir === '\u3057\u305F') {\n cmd = 'd'\n } else if (dir === '\u53F3' || dir === 'RIGHT' || dir === '\u307F\u304E') {\n cmd = 'r'\n } else if (dir === '\u5DE6' || dir === 'LEFT' || dir === '\u3072\u3060\u308A') {\n cmd = 'l'\n } else {\n throw Error('\u65B9\u5411\u306E\u6307\u5B9A\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u4E0A\u4E0B\u5DE6\u53F3\u306E\u3044\u305A\u308C\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')\n }\n return turtle3d.queCurrentTurtle(new CommandRotate(cmd, a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u53F3\u30ED\u30FC\u30EB': { // @\u30AB\u30E1\u3092A\u3060\u3051\u53F3\u306B\u50BE\u3051\u308B // @T3D\u304B\u3081\u307F\u304E\u308D\u30FC\u308B\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRoll('r', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u5DE6\u30ED\u30FC\u30EB': { // @\u30AB\u30E1\u306EA\u3060\u3051\u5DE6\u306B\u50BE\u3051\u308B // @T3D\u304B\u3081\u3072\u3060\u308A\u308D\u30FC\u308B\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (a: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandRoll('l', a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u50BE': { // @\u30AB\u30E1\u3092A\u3060\u3051DIR\u306B\u50BE\u3051\u308B // @T3D\u304B\u3081\u304B\u305F\u3080\u3051\u308B\n type: 'func',\n josi: [['\u306B', '\u3078'], ['\u3060\u3051']],\n pure: true,\n fn: function (dir: string, a: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n let cmd:RollDirection\n if (dir === '\u53F3' || dir === 'RIGHT' || dir === '\u307F\u304E') {\n cmd = 'r'\n } else if (dir === '\u5DE6' || dir === 'LEFT' || dir === '\u3072\u3060\u308A') {\n cmd = 'l'\n } else {\n throw Error('\u5411\u304D\u306E\u6307\u5B9A\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u5DE6\u53F3\u306E\u3069\u3061\u3089\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')\n }\n return turtle3d.queCurrentTurtle(new CommandRoll(cmd, a))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u30DA\u30F3\u8272\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u30DA\u30F3\u63CF\u753B\u8272\u3092C\u306B\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u307A\u3093\u3044\u308D\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (c: number|THREENS.Color, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n if (typeof c === 'number') { c = new three.Color(c) }\n return turtle3d.queCurrentTurtle(new CommandPenColor(c))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u30DA\u30F3\u30B5\u30A4\u30BA\u8A2D\u5B9A': { // @\u30AB\u30E1\u30DA\u30F3\u306E\u30B5\u30A4\u30BA\u3092W\u306B\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u307A\u3093\u3055\u3044\u305A\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (w: number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandPenWidth(w))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u30DA\u30F3\u8A2D\u5B9A': { // @\u30AB\u30E1\u30DA\u30F3\u3092\u4F7F\u3046\u304B\u3069\u3046\u304B\u3092V(\u30AA\u30F3/\u30AA\u30D5)\u306B\u8A2D\u5B9A\u3059\u308B // @T3D\u304B\u3081\u307A\u3093\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (w: boolean|number, sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandPenEnable(!!w))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u5168\u6D88\u53BB': { // @\u8868\u793A\u3057\u3066\u3044\u308B\u30AB\u30E1\u3068\u63CF\u753B\u5185\u5BB9\u3092\u5168\u90E8\u6D88\u53BB\u3059\u308B // @T3D\u304B\u3081\u305C\u3093\u3057\u3087\u3046\u304D\u3087\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.clearAll()\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u975E\u8868\u793A': { // @\u30AB\u30E1\u306E\u30E2\u30C7\u30EB\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u3002\u63CF\u753B\u306B\u5F71\u97FF\u3057\u306A\u3044\u3002 // @T3D\u304B\u3081\u3072\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandVisible(false))\n },\n return_none: false\n },\n 'T3D\u30AB\u30E1\u8868\u793A': { // @\u975E\u8868\u793A\u306B\u3057\u305F\u30AB\u30E1\u306E\u30E2\u30C7\u30EB\u3092\u8868\u793A\u3059\u308B\u3002 // @T3D\u304B\u3081\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): Promise<number> {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.queCurrentTurtle(new CommandVisible(true))\n },\n return_none: false\n },\n 'T3D\u8996\u70B9\u30AB\u30E1\u8A2D\u5B9A': { // @\u6307\u5B9A\u3057\u305F\u30AB\u30E1\u3092\u8996\u70B9\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B // @T3D\u3057\u3066\u3093\u304B\u3081\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (n: number, sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n if (n < 0 || n >= turtle3d.turtles.length) {\n throw Error('\u6307\u5B9A\u3055\u308C\u305F\u756A\u53F7\u306E\u30AB\u30E1\u306F\u3044\u307E\u305B\u3093\u3002')\n }\n turtle3d.camera = n\n turtle3d.animationStart()\n },\n return_none: true\n },\n // @3D\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u57FA\u672C\u6A5F\u80FD\n 'T3D\u81EA\u52D5\u63CF\u753B': { type: 'var', value: true }, // @T3D\u3058\u3069\u3046\u3073\u3087\u3046\u304C\n 'T3D\u81EA\u52D5\u5B9F\u884C': { type: 'var', value: true }, // @T3D\u3058\u3069\u3046\u3058\u3063\u3053\u3046\n 'T3D\u63CF\u753B\u6E96\u5099': { // @\u6307\u5B9A\u3057\u305FDOM\u306EID\u306B\u5BFE\u3059\u308B\u63CF\u753B\u3092\u6E96\u5099\u3057\u3001\u63CF\u753B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FD4\u3059 // @T3D\u3073\u3087\u3046\u304C\u3058\u3085\u3093\u3073\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (to: string|Element|null, sys: NakoSystem):THREENS.WebGLRenderer {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n\n if (typeof to === 'string') { to = document.querySelector(to) || document.getElementById(to) }\n if (!to) { throw new Error('T3D\u63CF\u753B\u6E96\u5099\u306B\u6307\u5B9A\u3057\u305F\u63CF\u753B\u5148\u306B\u8AA4\u308A\u304C\u3042\u308A\u307E\u3059') }\n\n const renderer = turtle3d.setRenderer(to)\n turtle3d.setupRenderer()\n return renderer\n },\n return_none: false\n },\n 'T3D\u63CF\u753B': { // @\u73FE\u5728\u306E\u72B6\u614B\u3092\u63CF\u753B\u3059\u308B // @T3D\u3073\u3087\u3046\u304C\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.doDraw(true)\n },\n return_none: true\n },\n 'T3D\u4E0A\u66F8\u63CF\u753B': { // @\u73FE\u5728\u306E\u72B6\u614B\u3092\u5143\u30A4\u30E1\u30FC\u30B8\u3092\u30AF\u30EA\u30A2\u305B\u305A\u306B\u63CF\u753B\u3059\u308B // @T3D\u3046\u308F\u304C\u304D\u3073\u3087\u3046\u304C\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.doDraw(false)\n },\n return_none: true\n },\n 'T3D\u5B9F\u884C': { // @\u5404\u30AB\u30E1\u306E\u52D5\u304D\u3092\u7D4C\u904E\u6642\u9593\u7B49\u306B\u5F93\u3044\u5B9F\u884C\u3059\u308B // @T3D\u3058\u3063\u3053\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.animationTick()\n },\n return_none: true\n },\n 'T3D\u80CC\u666F\u8272\u8A2D\u5B9A': { // @canvas\u3092\u30AF\u30EA\u30A2\u3059\u308B\u969B\u306E\u80CC\u666F\u8272\u3092\u8A2D\u5B9A\u3059\u308B // @T3D\u306F\u3044\u3051\u3044\u3057\u3087\u304F\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (c: number, sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n const renderer = turtle3d.getRenderer()\n renderer.setClearColor(c)\n turtle3d.animationStart()\n },\n return_none: true\n },\n 'T3D\u80CC\u666F\u900F\u904E\u8A2D\u5B9A': { // @canvas\u3092\u30AF\u30EA\u30A2\u3059\u308B\u969B\u306E\u80CC\u666F\u306E\u30A2\u30EB\u30D5\u30A1\u5024\u3092\u8A2D\u5B9A\u3059\u308B // @T3D\u306F\u3044\u3051\u3044\u3068\u3046\u304B\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (a: number, sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n const renderer = turtle3d.getRenderer()\n renderer.setClearAlpha(a)\n turtle3d.animationStart()\n },\n return_none: true\n },\n 'T3DJSON\u53D6\u5F97': { // @\u63CF\u753B\u3057\u305F\u7DDA\u306EJSON\u5F62\u5F0F\u3067\u53D6\u5F97\u3059\u308B // @T3DJSON\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): null|string {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n if (!turtle3d._lines) { return null }\n return JSON.stringify(turtle3d._lines.toJSON())\n },\n return_none: false\n },\n 'T3D\u30EC\u30F3\u30C0\u30E9\u7834\u68C4': { // @\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u3044\u308B\u30EC\u30F3\u30C0\u30E9\u3092\u6368\u3066\u308B // @T3D\u308C\u3093\u3060\u3089\u306F\u304D\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.clearRenderer()\n },\n return_none: true\n },\n 'T3D\u5185\u90E8\u30EC\u30F3\u30C0\u30E9\u53D6\u5F97': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u3044\u308B\u30EC\u30F3\u30C0\u30E9\u3092\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u308C\u3093\u3060\u3089\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): THREENS.WebGLRenderer {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.getRenderer()\n },\n return_none: false\n },\n 'T3D\u5185\u90E8\u30B7\u30FC\u30F3\u53D6\u5F97': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u3044\u308B\u30B7\u30FC\u30F3\u3092\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u3057\u30FC\u3093\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): THREENS.Scene {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.getScene()\n },\n return_none: false\n },\n 'T3D\u5185\u90E8\u30AB\u30E1\u30E9\u53D6\u5F97': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4F7F\u7528\u3057\u3066\u3044\u308B\u30AB\u30E1\u30E9\u3092\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u304B\u3081\u3089\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): THREENS.Camera {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d.getCamera()\n },\n return_none: false\n },\n 'T3D\u5185\u90E8\u7DDA\u63CF\u753B\u53C2\u7167\u53D6\u5F97': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4FDD\u6301\u3057\u3066\u3044\u308B\u63CF\u3044\u305F\u7DDA\u306E\u30C7\u30FC\u30BF\u306E\u53C2\u7167\u3092\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u305B\u3093\u3073\u3087\u3046\u304C\u3055\u3093\u3057\u3087\u3046\u3057\u3085\u3068\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): null|THREENS.Group {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n return turtle3d._lines\n },\n return_none: false\n },\n 'T3D\u5185\u90E8\u7DDA\u63CF\u753B\u53D6\u51FA': { // @\u672C\u30D7\u30E9\u30B0\u30A4\u30F3\u5185\u90E8\u3067\u4FDD\u6301\u3057\u3066\u3044\u308B\u63CF\u3044\u305F\u7DDA\u306E\u30C7\u30FC\u30BF\u3092\u53D6\u308A\u51FA\u3057\u3066\u8FD4\u3059 // @T3D\u306A\u3044\u3076\u305B\u3093\u3073\u3087\u3046\u304C\u3068\u308A\u3060\u3057\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): null|THREENS.Group {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n const lines = turtle3d._lines\n turtle3d._lines = new three.Group()\n turtle3d.animationStart()\n return lines\n },\n return_none: false\n },\n 'T3D\u5F85': { // @Promise\u306E\u7D42\u4E86\u3092\u5F85\u3063\u3066\u7D50\u679C\u3092\u8FD4\u3059 // @T3D\u307E\u3064\n type: 'func',\n josi: [['\u3092']],\n asyncFn: true,\n pure: true,\n fn: function (p: Promise<any>, sys: NakoSystem): Promise<any> {\n return p\n },\n return_none: false\n },\n // @3D\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u30D8\u30EB\u30D1\u6A5F\u80FD\n 'T3D\u30AA\u30FC\u30D3\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A': { // \u30AA\u30FC\u30D3\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u7D44\u307F\u8FBC\u3080 // @T3D\u304A\u30FC\u3073\u3063\u3068\u3053\u3093\u3068\u308D\u30FC\u308B\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem): null|THREENS.OrbitControls {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n if (typeof three.OrbitControls !== 'undefined') {\n return turtle3d.setupControl(three.OrbitControls) as THREENS.OrbitControls\n }\n return null\n },\n return_none: false\n },\n 'T3D\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u6709\u52B9': { // @\u7D44\u307F\u8FBC\u3093\u3060\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B // @T3D\u3053\u3093\u3068\u308D\u30FC\u308B\u3086\u3046\u3053\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n if (turtle3d._controls) {\n turtle3d._controls.enabled = true\n }\n },\n return_none: true\n },\n 'T3D\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7121\u52B9': { // @\u7D44\u307F\u8FBC\u3093\u3060\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3092\u7121\u52B9\u306B\u3059\u308B // @T3D\u3053\u3093\u3068\u308D\u30FC\u308B\u3080\u3053\u3046\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n if (turtle3d._controls) {\n turtle3d._controls.enabled = false\n }\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u8868\u793A': { // @\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u30FC\u3092\u8868\u793A\u3059\u308B // @T3D\u304B\u3081\u3089\u3078\u308B\u3071\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.setCameraHelper(true)\n },\n return_none: true\n },\n 'T3D\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u975E\u8868\u793A': { // @\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B // @T3D\u304B\u3081\u3089\u3078\u308B\u3071\u3072\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.setCameraHelper(false)\n },\n return_none: true\n },\n 'T3D\u8EF8\u7DDA\u30D8\u30EB\u30D1\u8868\u793A': { // @\u5EA7\u6A19\u8EF8\u30D8\u30EB\u30D1\u30FC\u3092\u8868\u793A\u3059\u308B // @T3D\u3058\u304F\u305B\u3093\u3078\u308B\u3071\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.setAxisHelper(true)\n },\n return_none: true\n },\n 'T3D\u8EF8\u7DDA\u30D8\u30EB\u30D1\u975E\u8868\u793A': { // @\u5EA7\u6A19\u8EF8\u30D8\u30EB\u30D1\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B // @T3D\u3058\u304F\u305B\u3093\u3078\u308B\u3071\u3072\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem):void {\n const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)\n turtle3d.setAxisHelper(false)\n },\n return_none: true\n }\n}\n\nexport default PluginWeykTurtle3D\n\n// \u30D6\u30E9\u30A6\u30B6\u304B\u3089script\u30BF\u30B0\u3067\u53D6\u308A\u8FBC\u3093\u3060\u6642\u3001\u81EA\u52D5\u3067\u767B\u9332\u3059\u308B\nif (typeof navigator === 'object') {\n navigator.nako3.addPluginObject('PluginWeykTurtle3D', PluginWeykTurtle3D)\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ThreeUtil", "_ThreeUtil", "obj", "propKey", "prop", "DrawLineEventArgs", "v1", "v2", "width", "color", "Command", "CommandPromise", "command", "resolve", "reject", "CommandHome", "mode", "CommandJump", "v", "CommandMoveAbsolute", "CommandAngle", "angle", "CommandMoveDirection", "dir", "l", "CommandRotate", "a", "CommandRoll", "CommandPenEnable", "enable", "CommandPenColor", "CommandPenWidth", "CommandVisible", "visible", "CommandModel", "model", "TypedTurtle3DEventTarget", "Turtle3D", "three", "id", "modelBase", "job", "ThreeUtil", "url", "obj", "xhr", "noWait", "que", "m", "headup90", "axisX", "modifier", "target", "axis", "rv", "euler", "vertices", "colors", "indices", "material", "geometry", "lineSegments", "evt", "args", "WeykTurtle3DSystem", "_WeykTurtle3DSystem", "sys", "i", "scene", "tt", "modelUrl", "e", "index", "cmd", "beforeClear", "camera", "flag", "cameraHelper", "axisHelper", "rect", "renderer", "to", "controlConstrucor", "controls", "line", "hasNext", "wait", "redraw", "macrorun", "now", "elapsedMs", "callback", "element", "turtle3d", "PluginWeykTurtle3D", "turtle3dSystem", "baseUrl", "promise", "module", "err", "plugins", "callbacks", "total", "countTotal", "countSuccess", "success", "name", "count", "xyz", "c", "w", "n", "lines", "p", "plugin_weykturtle3d_default"]
7
7
  }