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 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/plugin_turtle_images.mjs", "../../src/plugin_turtle.mts"],
4
- "sourcesContent": ["/**\n * images\n */\nexport const turtleImage = 'data:image/png;base64,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';\nexport const elephantImage = 'data:image/png;base64,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';\nexport const pandaImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAq5pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTctMDUtMjVUMTM6Mzk6MTJaPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBGaXJld29ya3MgQ1MzPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE3LTA1LTI1VDEzOjQwOjQ5WjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrVrWkKAAAPNElEQVRoBaVae3SU1bXf30wm7zTJJJm8eSqUUN4or9ikgF5qFUoLXdXlstiitl1WfBWVe+3FLrRW6+WPKtUWXJcrtghd1AbQatWwUORVpIAQ3klISELe78dkZk5/vzNzvjsJCSR2r3VyznfO2fv89j57n9dE5MuR07DdcMOoJSi/+uSTP9/x8EMPbVu5cuV/43sC29euXetQStl9WWcI9VZYcqJvRGFhYQTa2d9CcoRylgelazYOwsVBfJlpSV9X4nglKjp6UnlFlTzx+OPidrslOztb2traZP3LLz15oezSi2EyjCL+sLqhFjlmIJT68AxHAWuiiOukiDfTk7IU1tthWZb4QdEx0YFLlTVa1qybZgZGjBoVuX37n2Xe3Nm/Xf6976d5PJ4xDocjnhgsy+l1Op2tIG9HRwcxebu7eurPnD1bsXHjRoiXz5GqkVzr16/3P/roo80oG+KsUJFhExm1BTPSkm/PSHMrnTzuHubpqclqZG6WGn/jWIV+TP5t2972t7e3Q8+hkc/nUzU1NWrfvn2dAH4JMqhEZXpK0j+mTJr0MspZSCRiGRaZqZfM1OQHbfBpbp8pGwVcAJ+ekqiOHz9O1AGk3rDkQ9mk8PrwMts11dbWqj++9ZYxiJr0tbwqoB62EvQ9TRmpKb/L8qQELR8GnkpkpaeqsaNH6sGOHDmiAcCzFNNQKBAIKKYQDxUno04VFRU99634AWXXrl69elgKaPA5OTkx6Wnu97PSNXha3W8szzzNnai+NnGCBr9hw6saL4EYUMy/DIUZwN/T06N++ctnT0OJxKA5g+7Msu0eoQaT6ZUmNTU1Qfw9e52WIz8gyotG1vfxQaxC0lRfL109Xtm4cZPEx8cLAAuCFgFr6UShUETXs24oZHihiOVyuXwFBQWe7u7O2fv2fbYZ/DSYFtQHTEgw63xIERES+DuATIcRvWCJNEyhfhpQQkKiNLS0y/r1/yMZGRk2ePZpamqS5uZmDZ4KMVG54RBWLK50NFzvU089XYj8KfJj39DG7z8DtnngHlsdTuu2gB/gLQ2efH2InWNiY6WuvkHWrVsnWVlZNti3394q+TfdLAf/cVhKSkqktbVN4uLiJCkpKSTDNmIfmQN9hBS3YmJirCmTJ09/e9u2N/fs2dOKvldNgPb7jFT3Lxiw8H1vuL/3L4/IydK+f0v+PAVr265++fJlXY8BVKSlp9v+/vDDD3W/4cZGqL+3rbVVzZg2zcxCRLgG2u8zUpMKLIf1LEKPTtZ/hmwD0adpUdJ/LFqkLcs60oED+3U+bepk8WSmy7gbxsr0qVN03cKFC6WqqkrHhumvG67zJxQ7VnxCgvzkpz9dyu5wI59RgN5Avwdgx6tsBPUimXZdEf6HseiM0BMmUyYHwXEQgjp08JDuip1AXK5I8fV6pbGxQWbffJOur6q6HC5qyGVMncZz47hxeWDKJWMQQdDSPrjOGofDmgjrEzz2pcHJGeGSrs4u3WHs2LF2RwZpc3OT/v7n8RN2PQtllyr1d2amWc77NA/lg4YO5Obm4lgi45EqqAC18mVlJaQGetXPYDTSoK6jW/EnMjJKLpSWycwZ0yQTwUsieK4aT6/5T5kwIU8uXDgv9VhiOTMO1EdiNu6991594GNfBudwCDwQZflTUlIco7Mzskov1+gZoJSA3+v6Nqyfhk56Cb2WYA7O9Z+0YMGt9spCoGwbOXKkrHrkEcH5Rnp7OZlBwnqOtTk46ew7XDI80dFRkjd1mrv08ntageDx1pLlQxVIP4/CDJCmz5ihc6zV2vr8oBIkgjWAdQX+sM0AMXXDzLXwgC/AfUkroJKTk0fAHvNCgq47rzQeTi+6O/xR53SdcDJAjTKm7d8ETzGW3x8Qr9fbzg8NNiMtbU5UVHQcjOPHALqOA/cfnAwkgjBLYFRUcCbq6urs/mw3uy7L4Sko4cv9DeGx2tvb5KPiYp5OgwqUnD07r7a6ShK+8pVAPI4G7pRUSfNkSLI7VWLj4vVSaEDTVXq9XttdGhrqNZqior9KV1dwVaLf79q1U+5bsUK2bHnzy6G9BldHewdbY/lHR9TiO+6YUVFRLkePnRgwslKTEyQJytDv6Sq0RFxscBMrKTkts2fPEY8nXWiZWBwt3n//b3LnnYspX6phmGXLlks0gp58NMS/Saq+oYEi7kP6IxVIe+7558ePHjNGcARw0DVwkxJcKOSzfftk//7P5OPiPVLf1Eamq+ipx1ZJfn6+cC/gXZiK8OxDumHMaB3EXI36E5UJuYTtYv37DPJtlZeXs2n8zp07Y6nAqNS0tBQeC8aNG9fHPLfffrtWhsCYcI/Vp8tGWIDre119nZw/f17e2LRR7n/gAdutcrJz9Njd3V2Cs7wuh/+hkRgj4bNxvdlhu4krGhbUA5f1yV133TUfwNCuArBUAD5ubkasGxIdPnxY/eTHDyqcEHX/Cxcu2Ie3ObNuVlBW1wN4n1sab29FRUUKQOz2wQYENjYFTp8+3QnwKm/C+GBwPfbYY9/o7OzUjRigz/WJn2bQcMVY7tdV7d69S82bM8uu3759u63EyZMnNS4Et84bGxvVCy/8ym4/eOCArqfcgSgEnjcz//0rf0S+rsWLFvEooaN4fkNDA/mAqa8CAwnrX0cWw7Z71y71wQcf2F1waOMrg8Klxq47e/aMwvFDg583d47OOYOkcAUo0xiNTWx//vnn2P/EkiVLZmnwoSPPtEvl5WzXGujCMP8YBch2YP9+tXXr1j6gjThc0DVgDK7mzJ6ly99esliZ5xcDOFwR8Prr8ELx3Lp1B8E3C986TnFssHfOjDNnzujbCIAMPIcGwTVyKmEUqaysVFv/9CdtfQOOrBv/8AcN+huFBQqrhxozMleVll4cUCov8sCl3ti0qfeWeXPJ91zI6txobfC67uDBg/+kFACw32UGlDqEynDr8X1ox44dak9xscJOrf6CMga007Nr16pTp04inVJUGhcdde7cOYVHMXX33XeZfr5nnvkv9eTq1efBqzcv5H1WS3lnx47NIWzeIWC8bpdwJdi5rKxM7d27V7377m6A26ZefeUVDS4xLtKAHDCPxp55260L/a+/9pqamPfVRgD3IJHs85reiQ/gDrhk6dJ72YLx+qzPrBsu6XM+5PBayjKP10yGeOTAqiXvvvc3mTp5kvCNtL2tFa8PPhxnErGbx2kcX5wqkYKCwkBnV5fj5KnT3B1rQzKosCatyQsvvvg+prEbNS64EZdSLSA8R7WuC/FdPwsd6NgxnBezI3hdkFWrHtEyenHdbGtt1ptgJA6GnR3tUlNdKS0t+lbHOHB++ukn7Pu0ZhDh6dFWgKC0Er/bsOEtlEnXdCPq199FgmxD+xu0j1KtrS1q4YL52nVGI5j7v3h4UpLUyJwsntmZ+HC8OqQAM/u6G4HtXAcEbvqvtLS23I3jRAROe6q7p4c/QGir88g8evRoycvLE7zWaRejVckafhwIG+C6xYT4BJk6dap8+NHHuJ5GasuHy6LrdXV1WqNys2kZaWlu/DWe9WcHrIgfX7lyha5EwwdMNOsPVBQh3Yk04LUyNzsD991n5LvLluHQFownKqJ9HkyDEQGQCJBl5tiNZdFtt8rhI5/LqBE50t3VORg7eXgZDiA5UWyxLPVQdW3TFi0yxMVg9uHNpvBKTVUxH8ZD9UZBPfCl0nPS1u2XnEyPvLH5TZk/f4F9gBtsRsIVJHh+80iOmJOJEyfqEyv9HltQaMhrZvq1BHd3Uf7APdX1TW8ZgCZXHnfSp+gwD9sSZsHSqxRF0soMsuTkFCk58YXwpXfVqoflgQce1K5lhiVAQ3ggw4IdtDrBh88UDnIyc+ZMgW9La0sLDPT/fIZ/oDzC5fLixBnpD/iPX6lrmhK+oxFsID4+tgMDLQtNmYPTzUTiXbS1uVHcaakyAnfhop27ZMOGDfrMn4bYYHwQpOEheKz/8vLLv5Hi4o/xzHJR/47G39J433j99dfFA1k8dg+FLMiuqqkTl1M5Il1RzW0dna8Zy5OfZbqOhQeuE7DeRFiN8xquJD6DREsnu1O0UucvlurKJ554XL71rTvw7pOl3eTQocM8rhsWOz969KgcO3ZMVqxYoWeguanRNpLdqV+BRun19sjNc/J7y8tKXeUXz21s7wncH64AWXQs4FH3hzD9JigwYDAb2Th76OfFJLgVb11nz18wTXZ+41jeylxo78VbarxcPH9aWjuDb0XZiCUf7s9mhm2mfgWHwwl+r9Q1tKiXfvOS9cneT+SvRUV8z/m8vwJmFgTr8n4Ing0ldOD0k9nnUwcqAjMxKVm7Uzd2Wj5u8CGruamB7/vatfhGGgMlYmPjcVPrxtNkx3XBM3bisOReLLska9Y83ZOclBz189Wrfw8ADyI57SANIaIL6VnACvuwcqhD+HbBufgDBzeP/gprNh2cGKgZD7gkE6zBwAw+sVDJWAChYlTKxIpmGPiPXgm5cAC8Kiws8GIfiv6/zZsr0F0/ryMf8Fd0LgcR7V1dlXFxsU1Oh/VN4GYcEDxdiu0sX6WMCV60hSjYheD5Q8ilymppwQ8dqSlu/TQTch0NFAzMGXOUb4+BFUdiY6Ic2LkjmptbWne/+x7wSGkhftUvKyvzDxigRkBHZ9fBmLjYY9iSc1CXi7hwahP2VQZNmq5SyDRER8dIeWWVfPc7S/Hj99xA8Z69/hR3suJVEUpoYwQXO6wzmCJU6aWMbbre4WiH+xUdOXr8O5BZQvC4f9OYwXchM1C/nBZx1NY2vIP8HY8naYoEHIshcBEabsIowfMIXAfftBgFEgx3daOMzimINH78V/04edJoDv62YHlNN+nGq3gDdowKcJZiSyiBGl/ABXswTq/Dp0pqGlsqKWP58uVO3Lc1eH7bEvgxCDEmOLUGh2S43XnKaS2AMgtFBebAYGkoYzOiBJ6fmGulFIFerq6Vgq/f4v/Ryvsj39z8vyf//tHHL904Zoyjvb25FStZg0MiqiN9vitl/EVwcDKGIRab+gex3RBWMNracVDT2HgK7Uy/zc5OSFG9rumwYL4VkLm4sU5CfTrmnv+pgqNz8BKVn3+Ls7b2igD8GrQXnbt4EdmAZMYJbzRxEV6ny0OZgauYUGEGuUrwiMTEZF+kNQpn1UyxHKk4V0Wy85X6xvYf3HPP0Te2bDmDT1chpmoPCiHinFGWPcum4Xr5vwBI81/lIwKhoQAAAABJRU5ErkJggg==';\n", "/**\n * Turtle Graphics for Web browser (nadesiko3)\n * plugin_turtle.mts\n */\n\nimport { NakoSystem, NakoCallback } from '../core/src/plugin_api.mjs'\nimport { turtleImage, elephantImage, pandaImage } from './plugin_turtle_images.mjs'\n\nclass NakoTurtle {\n id: number\n img: any\n canvas: any\n ctx: any\n dir: number\n cx: number\n cy: number\n x: number\n y: number\n color: string\n lineWidth: number\n flagDown: boolean\n flagBegeinPath: boolean\n f_update: boolean\n flagLoaded: boolean\n f_visible: boolean\n mlist: any[]\n sys: NakoSystem\n\n constructor (sys: NakoSystem, id: number) {\n this.sys = sys\n this.id = id\n this.img = null\n this.canvas = null\n this.ctx = null\n this.dir = 270 // \u4E0A\u5411\u304D\n this.cx = 32\n this.cy = 32\n this.x = 0\n this.y = 0\n this.color = 'black'\n this.lineWidth = 4\n this.flagDown = true\n this.flagBegeinPath = false\n this.f_update = true\n this.flagLoaded = false\n this.f_visible = true\n this.mlist = []\n }\n\n clear () {\n this.mlist = [] // \u30B8\u30E7\u30D6\u3092\u30AF\u30EA\u30A2\n document.body.removeChild(this.canvas)\n }\n\n loadImage (url: string, callback: any) {\n this.canvas = document.createElement('canvas')\n this.ctx = this.canvas.getContext('2d')\n this.canvas.id = this.id\n this.img = document.createElement('img')\n this.img.onload = () => {\n this.cx = this.img.width / 2\n this.cy = this.img.height / 2\n this.canvas.width = this.img.width\n this.canvas.height = this.img.height\n this.flagLoaded = true\n this.f_update = true\n this.canvas.style.position = 'absolute'\n document.body.appendChild(this.canvas)\n // console.log('createTurtle::this.turtles=', this)\n callback(this)\n }\n this.img.onerror = () => {\n console.log('\u30AB\u30E1\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557')\n this.flagLoaded = true\n this.f_visible = false\n this.f_update = true\n callback(this)\n }\n this.img.src = url\n }\n}\n\nclass NakoTurtleSystem {\n turtles: NakoTurtle[]\n target: number\n ctx: any\n canvas: any\n canvas_r: any\n flagSetTimer: boolean\n timerId: any\n sys: NakoSystem\n instanceCount: number\n // Singleton\n /* eslint-disable no-use-before-define */\n static instance: NakoTurtleSystem\n static getInstance (sys: NakoSystem) {\n if (NakoTurtleSystem.instance === undefined) {\n NakoTurtleSystem.instance = new NakoTurtleSystem(sys)\n }\n const i = NakoTurtleSystem.instance\n i.instanceCount += 1\n return NakoTurtleSystem.instance\n }\n\n constructor (sys: NakoSystem) {\n this.sys = sys\n this.turtles = [] // \u30AB\u30E1\u306E\u4E00\u89A7\n this.target = -1\n this.ctx = null\n this.canvas = null\n this.canvas_r = { left: 0, top: 0, width: 640, height: 400 }\n this.flagSetTimer = false\n this.instanceCount = 0\n this.timerId = null\n }\n\n clearAll () {\n // console.log('\u30AB\u30E1\u5168\u6D88\u53BB turtles=', this.turtles)\n for (let i = 0; i < this.turtles.length; i++) {\n const tt = this.turtles[i]\n tt.clear()\n }\n this.turtles = []\n if (this.canvas !== null) {\n this.ctx.clearRect(0, 0,\n this.canvas.width,\n this.canvas.height)\n }\n this.target = -1\n this.flagSetTimer = false\n }\n\n drawTurtle (id: number) {\n const tt = this.turtles[id]\n if (!tt) { return }\n const cr = this.canvas_r\n // \u30AB\u30E1\u306E\u4F4D\u7F6E\u3092\u79FB\u52D5\n tt.canvas.style.left = (cr.left + tt.x - tt.cx) + 'px'\n tt.canvas.style.top = (cr.top + tt.y - tt.cx) + 'px'\n if (!tt.f_update) { return }\n /* istanbul ignore if */\n if (!tt.flagLoaded) { return }\n tt.f_update = false\n tt.ctx.clearRect(0, 0,\n tt.canvas.width,\n tt.canvas.height)\n if (!tt.f_visible) { return }\n if (tt.dir !== 270) {\n const rad = (tt.dir + 90) * 0.017453292519943295\n tt.ctx.save()\n tt.ctx.translate(tt.cx, tt.cy)\n tt.ctx.rotate(rad)\n tt.ctx.translate(-tt.cx, -tt.cy)\n tt.ctx.drawImage(tt.img, 0, 0)\n tt.ctx.restore()\n } else { tt.ctx.drawImage(tt.img, 0, 0) }\n }\n\n getCur () {\n if (this.turtles.length === 0) { throw Error('\u6700\u521D\u306B\u300E\u30AB\u30E1\u4F5C\u6210\u300F\u547D\u4EE4\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002') }\n return this.turtles[this.target]\n }\n\n setTimer () {\n // \u30B3\u30DE\u30F3\u30C9\u8A2D\u5B9A\u5F8C\u30011\u5EA6\u3060\u3051\u3053\u306E\u95A2\u6570\u3092\u547C\u3073\u51FA\u3059\n if (this.flagSetTimer) { return }\n this.flagSetTimer = true\n // \u8A18\u9332\u3057\u305F\u30DE\u30AF\u30ED\u3092\u518D\u751F\u3059\u308B\n if (this.timerId) { clearTimeout(this.timerId) }\n this.timerId = setTimeout(() => {\n console.log('[TURTLE] Let\\'s go!')\n this.play()\n }, 1)\n }\n\n line (tt: NakoTurtle, x1: number, y1: number, x2: number, y2: number) {\n /* istanbul ignore else */\n if (tt) { if (!tt.flagDown) { return } }\n\n const ctx = this.ctx\n if (tt.flagBegeinPath) {\n ctx.lineTo(x2, y2)\n } else {\n ctx.beginPath()\n ctx.lineWidth = tt.lineWidth\n ctx.strokeStyle = tt.color\n ctx.moveTo(x1, y1)\n ctx.lineTo(x2, y2)\n ctx.stroke()\n }\n }\n\n addMacro (args: Array<any>) {\n const tt: NakoTurtle = this.getCur()\n tt.mlist.push(args)\n this.setTimer()\n }\n\n doMacro (tt: NakoTurtle, wait: number) {\n if (!tt.flagLoaded && wait > 0) {\n // console.log('[TURTLE] waiting ...')\n return true\n }\n const m = tt.mlist.shift()\n const cmd = (m !== undefined) ? m[0] : ''\n // console.log('@@@doMacro', cmd, m, tt.x, tt.y, ': dir=', tt.dir)\n switch (cmd) {\n case 'xy':\n // \u8D77\u70B9\u3092\u79FB\u52D5\u3059\u308B\n tt.x = m[1]\n tt.y = m[2]\n break\n case 'begin':\n // \u63CF\u753B\u3092\u660E\u793A\u7684\u306B\u958B\u59CB\u3059\u308B\n this.ctx.beginPath()\n this.ctx.moveTo(tt.x, tt.y)\n tt.flagBegeinPath = true\n break\n case 'close':\n // \u30D1\u30B9\u3092\u9589\u3058\u308B\n this.ctx.closePath()\n tt.flagBegeinPath = false\n break\n case 'fill':\n if (tt.flagBegeinPath) {\n this.ctx.closePath()\n tt.flagBegeinPath = false\n }\n this.ctx.fill()\n break\n case 'stroke':\n if (tt.flagBegeinPath) {\n this.ctx.closePath()\n tt.flagBegeinPath = false\n }\n this.ctx.stroke()\n break\n case 'text':\n this.ctx.fillText(m[1], tt.x, tt.y)\n break\n case 'textset':\n this.ctx.font = m[1]\n break\n case 'fillStyle':\n this.ctx.fillStyle = m[1]\n break\n case 'mv': {\n // \u7DDA\u3092\u5F15\u304F\n this.line(tt, tt.x, tt.y, m[1], m[2])\n // \u30AB\u30E1\u306E\u89D2\u5EA6\u3092\u5909\u66F4\n const mvRad = Math.atan2(m[2] - tt.y, m[1] - tt.x)\n tt.dir = mvRad * 57.29577951308232\n tt.f_update = true\n // \u5B9F\u969B\u306B\u4F4D\u7F6E\u3092\u79FB\u52D5\n tt.x = m[1]\n tt.y = m[2]\n break\n }\n case 'fd': {\n const fdv = m[1] * m[2]\n const rad = tt.dir * 0.017453292519943295\n const x2 = tt.x + Math.cos(rad) * fdv\n const y2 = tt.y + Math.sin(rad) * fdv\n this.line(tt, tt.x, tt.y, x2, y2)\n tt.x = x2\n tt.y = y2\n // console.log('@@@fd', m, tt.x, tt.y, ': dir=', tt.dir)\n break\n }\n case 'angle': {\n const angle = m[1]\n tt.dir = ((angle - 90 + 360) % 360)\n tt.f_update = true\n break\n }\n case 'rotr': {\n const rv = m[1]\n tt.dir = (tt.dir + rv) % 360\n tt.f_update = true\n break\n }\n case 'rotl': {\n const lv = m[1]\n tt.dir = (tt.dir - lv + 360) % 360\n tt.f_update = true\n break\n }\n case 'color':\n tt.color = m[1]\n this.ctx.strokeStyle = tt.color\n break\n case 'size':\n tt.lineWidth = m[1]\n this.ctx.lineWidth = tt.lineWidth\n break\n case 'penOn':\n tt.flagDown = m[1]\n break\n case 'visible':\n tt.f_visible = m[1]\n tt.f_update = true\n break\n case 'changeImage':\n tt.flagLoaded = false\n tt.img.src = m[1]\n break\n }\n if (tt.flagLoaded) { this.drawTurtle(tt.id) }\n return (tt.mlist.length > 0)\n }\n\n doMacroAll (wait: number) {\n let hasNext = false\n for (let i = 0; i < this.turtles.length; i++) {\n const tt = this.turtles[i]\n if (this.doMacro(tt, wait)) { hasNext = true }\n }\n return hasNext\n }\n\n play () {\n const wait = this.sys.__getSysVar('\u30AB\u30E1\u901F\u5EA6')\n let hasNext = this.doMacroAll(wait)\n if (wait <= 0) {\n // \u5F85\u3061\u6642\u9593\u306A\u3057\u3067\u5168\u90E8\u5B9F\u884C\n while (hasNext) { hasNext = this.doMacroAll(wait) }\n } else if (hasNext) {\n // \u4E00\u3064\u305A\u3064\u5B9F\u884C\n if (this.timerId) { clearTimeout(this.timerId) }\n this.timerId = setTimeout(() => this.play(), wait)\n return\n }\n console.log('[TURTLE] finished.')\n this.flagSetTimer = false\n }\n\n setupCanvas () {\n // \u63CF\u753B\u5148\u3092\u30BB\u30C3\u30C8\u3059\u308B\n let canvasId = this.sys.__getSysVar('\u30AB\u30E1\u63CF\u753B\u5148')\n if (typeof canvasId === 'string') {\n canvasId = document.getElementById(canvasId) || document.querySelector(canvasId)\n this.sys.__setSysVar('\u30AB\u30E1\u63CF\u753B\u5148', canvasId)\n }\n console.log('\u30AB\u30E1\u63CF\u753B\u5148=', canvasId)\n const cv = this.canvas = canvasId\n if (!cv) {\n console.log('[ERROR] \u30AB\u30E1\u63CF\u753B\u5148\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002' + canvasId)\n throw Error('\u30AB\u30E1\u63CF\u753B\u5148\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002')\n }\n const ctx = this.ctx = cv.getContext('2d')\n ctx.lineWidth = 4\n ctx.strokeStyle = 'black'\n ctx.lineCap = 'round'\n this.resizeCanvas()\n }\n\n resizeCanvas () {\n const cv = this.canvas\n const rect = cv.getBoundingClientRect()\n const rx = rect.left + window.scrollX\n const ry = rect.top + window.scrollY\n this.canvas_r = {\n 'left': rx,\n 'top': ry,\n width: rect.width,\n height: rect.height\n }\n }\n\n createTurtle (imageUrl: string) {\n // \u30AD\u30E3\u30F3\u30D0\u30B9\u60C5\u5831\u306F\u6BCE\u56DE\u53C2\u7167\u3059\u308B (#734)\n this.setupCanvas()\n // \u30AB\u30E1\u306E\u60C5\u5831\u3092\u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\n const id = this.turtles.length\n const tt: NakoTurtle = new NakoTurtle(this.sys, id)\n this.turtles.push(tt)\n this.target = id\n // \u753B\u50CF\u3092\u8AAD\u307F\u8FBC\u3080\n tt.loadImage(imageUrl, (tt: NakoTurtle) => {\n this.drawTurtle(tt.id)\n console.log(`tutrle.onload(id=${tt.id})`)\n })\n // \u30C7\u30D5\u30A9\u30EB\u30C8\u4F4D\u7F6E(\u4E2D\u592E)\u306E\u8A2D\u5B9A\n tt.x = this.canvas_r.width / 2\n tt.y = this.canvas_r.height / 2\n return id\n }\n}\n\nconst PluginTurtle = {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_turtle', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: '\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u7528\u306E\u30D7\u30E9\u30B0\u30A4\u30F3', // \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.3' // \u8981\u6C42\u306A\u3067\u3057\u3053\u30D0\u30FC\u30B8\u30E7\u30F3\n }\n },\n\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const turtleSystem: NakoTurtleSystem = NakoTurtleSystem.getInstance(sys)\n sys.tags.turtles = turtleSystem\n }\n },\n\n '!\u30AF\u30EA\u30A2': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n // console.log('tutle::!\u30AF\u30EA\u30A2')\n sys.tags.turtles.clearAll()\n }\n },\n\n // @\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u30FB\u30AB\u30E1\u63CF\u753B\n '\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 // @\u304B\u3081\u3055\u304F\u305B\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const imageUrl = sys.__getSysVar('\u30AB\u30E1\u753B\u50CFURL')\n return sys.tags.turtles.createTurtle(imageUrl)\n }\n },\n '\u30BE\u30A6\u4F5C\u6210': { // @\u30BE\u30A6\u306E\u753B\u50CF\u3067\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u958B\u59CB\u3057\u3066ID\u3092\u8FD4\u3059 // @\u305E\u3046\u3055\u304F\u305B\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const imageUrl = elephantImage\n return sys.tags.turtles.createTurtle(imageUrl)\n }\n },\n '\u30D1\u30F3\u30C0\u4F5C\u6210': { // @\u30D1\u30F3\u30C0\u306E\u753B\u50CF\u3067\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u958B\u59CB\u3057\u3066ID\u3092\u8FD4\u3059 // @\u3071\u3093\u3060\u3055\u304F\u305B\u3044\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const imageUrl = pandaImage\n return sys.tags.turtles.createTurtle(imageUrl)\n }\n },\n '\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 // @\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) {\n sys.tags.turtles.target = id\n },\n return_none: true\n },\n '\u30AB\u30E1\u63CF\u753B\u5148': { type: 'var', value: '#turtle_cv' }, // @\u304B\u3081\u3073\u3087\u3046\u304C\u3055\u304D\n '\u30AB\u30E1\u753B\u50CFURL': { type: 'var', value: turtleImage }, // @\u304B\u3081\u304C\u305E\u3046URL\n '\u30AB\u30E1\u753B\u50CF\u5909\u66F4': { // @\u30AB\u30E1\u306E\u753B\u50CF\u3092URL\u306B\u5909\u66F4\u3059\u308B // @\u304B\u3081\u304C\u305E\u3046\u3078\u3093\u3053\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (url: string, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['changeImage', url])\n },\n return_none: true\n },\n '\u30AB\u30E1\u901F\u5EA6': { type: 'const', value: 100 }, // @\u304B\u3081\u305D\u304F\u3069\n '\u30AB\u30E1\u901F\u5EA6\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u52D5\u4F5C\u901F\u5EA6v\u306B\u8A2D\u5B9A(\u5927\u304D\u3044\u307B\u3069\u9045\u3044) // @\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) {\n sys.__setSysVar('\u30AB\u30E1\u901F\u5EA6', v)\n }\n },\n '\u30AB\u30E1\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092[x,y]\u3078\u79FB\u52D5\u3059\u308B // @\u304B\u3081\u3044\u3069\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (xy: number[], sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['mv', xy[0], xy[1]])\n },\n return_none: true\n },\n '\u30AB\u30E1\u8D77\u70B9\u79FB\u52D5': { // @\u30AB\u30E1\u306E\u63CF\u753B\u8D77\u70B9\u4F4D\u7F6E\u3092[x,y]\u3078\u79FB\u52D5\u3059\u308B // @\u304B\u3081\u304D\u3066\u3093\u3044\u3069\u3046\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (xy: number[], sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['xy', xy[0], xy[1]])\n },\n return_none: true\n },\n '\u30AB\u30E1\u9032': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092V\u3060\u3051\u9032\u3081\u308B // @\u304B\u3081\u3059\u3059\u3080\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (v: number, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['fd', v, 1])\n },\n return_none: true\n },\n '\u30AB\u30E1\u623B': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u3092V\u3060\u3051\u623B\u3059 // @\u304B\u3081\u3082\u3069\u308B\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (v: number, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['fd', v, -1])\n },\n return_none: true\n },\n '\u30AB\u30E1\u89D2\u5EA6\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092DEG\u306B\u8A2D\u5B9A\u3059\u308B // @\u304B\u3081\u304B\u304F\u3069\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078', '\u306E']],\n pure: true,\n fn: function (v: number, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['angle', v])\n },\n return_none: true\n },\n '\u30AB\u30E1\u53F3\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092DEG\u3060\u3051\u53F3\u306B\u5411\u3051\u308B // @\u304B\u3081\u307F\u304E\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (v: number, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['rotr', v])\n },\n return_none: true\n },\n '\u30AB\u30E1\u5DE6\u56DE\u8EE2': { // @\u30AB\u30E1\u306E\u5411\u304D\u3092DEG\u3060\u3051\u5DE6\u306B\u5411\u3051\u308B // @\u304B\u3081\u3072\u3060\u308A\u304B\u3044\u3066\u3093\n type: 'func',\n josi: [['\u3060\u3051']],\n pure: true,\n fn: function (v: number, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['rotl', v])\n },\n return_none: true\n },\n '\u30AB\u30E1\u30DA\u30F3\u8272\u8A2D\u5B9A': { // @\u30AB\u30E1\u306E\u30DA\u30F3\u63CF\u753B\u8272\u3092C\u306B\u8A2D\u5B9A\u3059\u308B // @\u304B\u3081\u307A\u3093\u3044\u308D\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (c: string, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['color', c])\n },\n return_none: true\n },\n '\u30AB\u30E1\u30DA\u30F3\u30B5\u30A4\u30BA\u8A2D\u5B9A': { // @\u30AB\u30E1\u30DA\u30F3\u306E\u30B5\u30A4\u30BA\u3092W\u306B\u8A2D\u5B9A\u3059\u308B // @\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: string, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['size', w])\n }\n },\n '\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 // @\u304B\u3081\u307A\u3093\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (w: string, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['penOn', w])\n }\n },\n '\u30AB\u30E1\u30D1\u30B9\u958B\u59CB': { // @\u30AB\u30E1\u3067\u660E\u793A\u7684\u306B\u30D1\u30B9\u306E\u63CF\u753B\u3092\u958B\u59CB\u3059\u308B // @\u304B\u3081\u3071\u3059\u304B\u3044\u3057\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['begin'])\n }\n },\n '\u30AB\u30E1\u30D1\u30B9\u9589': { // @\u30AB\u30E1\u3067\u30D1\u30B9\u3092\u660E\u793A\u7684\u306B\u9589\u3058\u308B(\u7701\u7565\u53EF\u80FD) // @\u304B\u3081\u3071\u3059\u3068\u3058\u308B\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['close'])\n }\n },\n '\u30AB\u30E1\u30D1\u30B9\u7DDA\u5F15': { // @\u30AB\u30E1\u3067\u30D1\u30B9\u3092\u9589\u3058\u3066\u3001\u30AB\u30E1\u30DA\u30F3\u8272\u8A2D\u5B9A\u3067\u6307\u5B9A\u3057\u305F\u8272\u3067\u67A0\u7DDA\u3092\u5F15\u304F // @\u304B\u3081\u3071\u3059\u305B\u3093\u3072\u304F\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['stroke'])\n }\n },\n '\u30AB\u30E1\u30D1\u30B9\u5857': { // @\u30AB\u30E1\u3067\u30D1\u30B9\u3092\u9589\u3058\u3066\u3001\u30AB\u30E1\u5857\u308A\u8272\u8A2D\u5B9A\u3067\u6307\u5B9A\u3057\u305F\u8272\u3067\u5857\u308A\u3064\u3076\u3059 // @\u304B\u3081\u3071\u3059\u306C\u308B\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['fill'])\n }\n },\n '\u30AB\u30E1\u6587\u5B57\u63CF\u753B': { // @\u30AB\u30E1\u306E\u4F4D\u7F6E\u306B\u6587\u5B57S\u3092\u63CF\u753B // @\u304B\u3081\u3082\u3058\u3073\u3087\u3046\u304C\n type: 'func',\n josi: [['\u3092', '\u3068', '\u306E']],\n pure: true,\n fn: function (s: string, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['text', s])\n }\n },\n '\u30AB\u30E1\u6587\u5B57\u8A2D\u5B9A': { // @\u30AB\u30E1\u6587\u5B57\u63CF\u753B\u3067\u63CF\u753B\u3059\u308B\u30C6\u30AD\u30B9\u30C8\u30B5\u30A4\u30BA\u3084\u30D5\u30A9\u30F3\u30C8(48px serif)\u306A\u3069\u3092\u8A2D\u5B9A // @\u304B\u3081\u3082\u3058\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078', '\u3067']],\n pure: true,\n fn: function (s: string, sys: NakoSystem) {\n s = '' + s // \u6587\u5B57\u5217\u306B\n if (s.match(/^\\d+$/)) {\n s = s + 'px serif'\n } else if (s.match(/^\\d+(px|em)$/)) {\n s = s + ' serif'\n }\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['textset', s])\n }\n },\n '\u30AB\u30E1\u5857\u8272\u8A2D\u5B9A': { // @\u30AB\u30E1\u30D1\u30B9\u306E\u5857\u308A\u8272\u3092C\u306B\u8A2D\u5B9A\u3059\u308B // @\u304B\u3081\u306C\u308A\u3044\u308D\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078']],\n pure: true,\n fn: function (c: string, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['fillStyle', c])\n },\n return_none: true\n },\n '\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 // @\u304B\u3081\u305C\u3093\u3057\u3087\u3046\u304D\u3087\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n sys.tags.turtles.clearAll()\n },\n return_none: true\n },\n '\u30AB\u30E1\u30B3\u30DE\u30F3\u30C9\u5B9F\u884C': { // @\u30AB\u30E1\u306B\u30B3\u30DE\u30F3\u30C9S\u3092\u5B9F\u884C\u3059\u308B\u3002\u30B3\u30DE\u30F3\u30C9\u306F\u6539\u884C\u304B\u300C;\u300D\u3067\u533A\u5207\u308B\u3002\u30B3\u30DE\u30F3\u30C9\u3068\u5F15\u6570\u306F\u300C=\u300D\u3067\u533A\u5207\u308A\u5F15\u6570\u306F\u304B\u30AB\u30F3\u30DE\u3067\u533A\u5207\u308B // @\u304B\u3081\u3053\u307E\u3093\u3069\u3058\u3063\u3053\u3046\n type: 'func',\n josi: [['\u306E', '\u3092']],\n pure: true,\n fn: function (cmd: string, sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n const a = cmd.split(/(\\n|;)/)\n for (let i = 0; i < a.length; i++) {\n let c = a[i]\n c = c.replace(/^([a-zA-Z_]+)\\s*(\\d+)/, '$1,$2')\n c = c.replace(/^([a-zA-Z_]+)\\s*=/, '$1,')\n const ca = c.split(/\\s*,\\s*/)\n turtles.addMacro(ca)\n }\n },\n return_none: true\n },\n '\u30AB\u30E1\u975E\u8868\u793A': { // @\u30AB\u30E1\u306E\u753B\u50CF\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u3002\u63CF\u753B\u306B\u5F71\u97FF\u3057\u306A\u3044\u3002 // @\u304B\u3081\u3072\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['visible', false])\n },\n return_none: true\n },\n '\u30AB\u30E1\u8868\u793A': { // @\u975E\u8868\u793A\u306B\u3057\u305F\u30AB\u30E1\u3092\u8868\u793A\u3059\u308B\u3002 // @\u304B\u3081\u3072\u3087\u3046\u3058\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys: NakoSystem) {\n const turtles: NakoTurtleSystem = sys.tags.turtles\n turtles.addMacro(['visible', true])\n },\n return_none: true\n },\n '\u30AB\u30E1\u30AF\u30EA\u30C3\u30AF\u6642': { // @ \u64CD\u4F5C\u5BFE\u8C61\u306E\u30AB\u30E1\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u305F\u6642\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8A2D\u5B9A\u3059\u308B // @\u304B\u3081\u304F\u308A\u3063\u304F\u3057\u305F\u3068\u304D\n type: 'func',\n josi: [['\u3092']],\n pure: false,\n fn: function (func: NakoCallback, sys: NakoSystem) {\n func = sys.__findVar(func, null) // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n if (typeof func !== 'function') { return }\n const tid = sys.tags.turtles.target\n const tt = sys.tags.turtles.list[tid]\n tt.canvas.onclick = (e: any) => {\n sys.__setSysVar('\u5BFE\u8C61', e.target)\n return func(e)\n }\n },\n return_none: true\n }\n}\n\n// module.exports = PluginTurtle\nexport default PluginTurtle\n\n// script\u30BF\u30B0\u3067\u53D6\u308A\u8FBC\u3093\u3060\u6642\u3001\u81EA\u52D5\u3067\u767B\u9332\u3059\u308B\n// @ts-ignore TS2339\nif (typeof (navigator) === 'object' && typeof (navigator.nako3)) { navigator.nako3.addPluginObject('PluginTurtle', PluginTurtle) }\n"],
5
- "mappings": "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",
6
- "names": ["turtleImage", "elephantImage", "pandaImage", "NakoTurtle", "sys", "id", "url", "callback", "NakoTurtleSystem", "_NakoTurtleSystem", "i", "tt", "cr", "rad", "x1", "y1", "x2", "y2", "ctx", "args", "wait", "m", "mvRad", "fdv", "angle", "rv", "lv", "hasNext", "canvasId", "cv", "rect", "rx", "ry", "imageUrl", "PluginTurtle", "turtleSystem", "elephantImage", "pandaImage", "turtleImage", "v", "xy", "c", "w", "s", "cmd", "turtles", "a", "ca", "func", "tid", "e", "plugin_turtle_default"]
7
- }
@@ -1,4 +0,0 @@
1
- "use strict";(()=>{var a={meta:{type:"const",value:{pluginName:"plugin_webworker",description:"\u30D6\u30E9\u30A6\u30B6\u306EWebWorker\u306E\u305F\u3081\u306E\u30D7\u30E9\u30B0\u30A4\u30F3",pluginVersion:"3.6.0",nakoRuntime:["wnako"],nakoVersion:"3.6.0"}},\u521D\u671F\u5316:{type:"func",josi:[],pure:!0,fn:function(n){n._webworker={setNakoHandler:function(t){t.onmessage=e=>{let o=e.data||{type:"",data:""},r=o.type||"",i=o.data||"";switch(r){case"output":t.onoutput&&t.onoutput.apply(n,[i,e]);break;case"data":t.ondata&&t.ondata.apply(n,[i,e]);break;case"error":n.logger.error(i.noColor);break}},t.onerror=e=>{let o=new Error(typeof e.message<"u"?e.message:"no message");n.logger.error(o)},t.onerrormessage=e=>{let o=new Error(typeof e.message<"u"?e.message:"no message");n.logger.error(o)}},inWorker:()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,getBaseUrlFromTag:()=>{if(!self.document)return"";let t="plugin_webworker.js",e=location.pathname;if(e.substr(e.length-1,1)!=="/"){let r=e.split("/");e=r.slice(r.length-1,1).join("/")&"/"}let o=document.querySelectorAll("script");for(let r=0;r<o.length;r++){let u=o[r].src||"",f=u.indexOf(t);if(f>=0&&(u.length-f===t.length||"?&#".indexOf(u.substr(f+t.length,1))>=0))return u=u.substring(0,f),u.substring(0,1)==="/"?location.origin+u:/^[a-zA-Z]+:\/\//.test(u)?u:location.origin+e+u}return location.origin+e}},n.__v0.\u30EF\u30FC\u30AB\u30FCURL=n._webworker.getBaseUrlFromTag()}},\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8:{type:"const",value:""},\u53D7\u4FE1\u30C7\u30FC\u30BF:{type:"const",value:""},\u30EF\u30FC\u30AB\u30FCURL:{type:"const",value:""},\u30EF\u30FC\u30AB\u30FCURL\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078","\u3068"]],pure:!0,fn:function(n,t){n&&n.substring(n.length-1)!=="/"&&(n+="/"),t.__v0.\u30EF\u30FC\u30AB\u30FCURL=n},return_none:!0},\u30EF\u30FC\u30AB\u30FC\u8D77\u52D5:{type:"func",josi:[["\u3067","\u3092","\u306E"]],pure:!0,fn:function(n,t){return new Worker(n)},return_none:!1},\u30EF\u30FC\u30AB\u30FCJS\u8D77\u52D5:{type:"func",josi:[["\u3067","\u3092","\u306E"]],pure:!0,fn:function(n,t){let e=new Blob([n],{type:"application/javascript"}),o=URL.createObjectURL(e);return new Worker(o)},return_none:!1},NAKO\u30EF\u30FC\u30AB\u30FC\u8D77\u52D5:{type:"func",josi:[["\u3067"]],isVariableJosi:!0,pure:!0,fn:function(n,t){let e;if(typeof t>"u"&&(t=n,n=void 0),n!==void 0){if(!(n instanceof Array))throw new Error("\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u914D\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");let r=t.__v0.\u30EF\u30FC\u30AB\u30FCURL,i=`importScripts('${r}wnako3webworker.js')
2
- `,u=n.length,f;for(f=0;f<u;f++)i+=`importScripts('${r}${n[f]}')
3
- `;let s=new Blob([i],{type:"application/javascript"});e=URL.createObjectURL(s)}else e=t.__v0.\u30EF\u30FC\u30AB\u30FCURL+"wnako3webworker.js";let o=new Worker(e);return o&&t._webworker.setNakoHandler(o),o},return_none:!1},NAKO\u30EF\u30FC\u30AB\u30FC\u30CF\u30F3\u30C9\u30E9\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078","\u306E"]],pure:!0,fn:function(n,t){t._webworker.setNakoHandler(n)},return_none:!0},NAKO\u30EF\u30FC\u30AB\u30FC\u30C7\u30FC\u30BF\u53D7\u4FE1\u6642:{type:"func",josi:[["\u3067"],["\u304B\u3089"]],isVariableJosi:!0,pure:!1,fn:function(n,t,e){typeof e>"u"&&(e=t,t=self),n=e.__findVar(n,null),t.ondata=(o,r)=>(e.__v0.\u53D7\u4FE1\u30C7\u30FC\u30BF=o,e.__v0.\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8=r,n(r,e))},return_none:!0},NAKO\u30EF\u30FC\u30AB\u30FC\u8868\u793A\u6642:{type:"func",josi:[["\u3067"],["\u304B\u3089"]],pure:!1,fn:function(n,t,e){n=e.__findVar(n,null),t.onoutput=(o,r)=>(e.__v0.\u53D7\u4FE1\u30C7\u30FC\u30BF=o,e.__v0.\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8=r,n(r,e))},return_none:!0},\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u53D7\u4FE1\u6642:{type:"func",josi:[["\u3067"],["\u304B\u3089"]],isVariableJosi:!0,pure:!1,fn:function(n,t,e){typeof e>"u"&&(e=t,t=self),n=e.__findVar(n,null),t.onmessage=o=>(e.__v0.\u53D7\u4FE1\u30C7\u30FC\u30BF=o.data,e.__v0.\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8=o,n(o,e))},return_none:!0},NAKO\u30EF\u30FC\u30AB\u30FC\u30D7\u30ED\u30B0\u30E9\u30E0\u8D77\u52D5:{type:"func",josi:[["\u306B","\u3067"],["\u3092"]],pure:!0,fn:function(n,t,e){let o={type:"run",data:t};n.postMessage(o)},return_none:!0},NAKO\u30EF\u30FC\u30AB\u30FC\u30EA\u30BB\u30C3\u30C8:{type:"func",josi:[["\u3092"]],pure:!0,fn:function(n,t){let e={type:"reset",data:""};n.postMessage(e)},return_none:!0},\u30EF\u30FC\u30AB\u30FC\u7D42\u4E86:{type:"func",josi:[["\u3092"]],isVariableJosi:!0,pure:!0,fn:function(n,t){typeof t>"u"&&(t=n,n=self),n.terminate()},return_none:!0},NAKO\u30EF\u30FC\u30AB\u30FC\u7D42\u4E86:{type:"func",josi:[["\u3092"]],isVariableJosi:!0,pure:!0,fn:function(n,t){if(typeof t>"u"){self.close();return}let e={type:"close",data:""};n.postMessage(e)},return_none:!0},NAKO\u30EF\u30FC\u30AB\u30FC\u30C7\u30FC\u30BF\u9001\u4FE1:{type:"func",josi:[["\u3092"],["\u306B","\u3078"]],isVariableJosi:!0,pure:!0,fn:function(n,t,e){typeof e>"u"&&(e=t,t=self);let o={type:"data",data:n};t.postMessage(o)},return_none:!0},\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u9001\u4FE1:{type:"func",josi:[["\u3092"],["\u306B","\u3078"]],isVariableJosi:!0,pure:!0,fn:function(n,t,e){typeof e>"u"&&(e=t,t=self),t.postMessage(n)},return_none:!0},NAKO\u30EF\u30FC\u30AB\u30FC\u8EE2\u9001:{type:"func",josi:[["\u3092"],["\u306B","\u3078"]],isVariableJosi:!0,pure:!1,fn:function(n,t,e){typeof e>"u"&&(e=t,t=self);let o=[],r=[];if(typeof n=="string"&&(n=[n]),n.forEach(i=>{if(i.indexOf("__")===-1)for(let u of e.__modList){let f=u+"__"+i;if(typeof e.__varslist[2].get(f)<"u"||typeof e.__varslist[1].get(f)<"u"){i=f;break}}if(i.indexOf("__")>-1){let u=i.split("__")[0];o.indexOf(u)===-1&&o.push(u)}if(typeof e.__varslist[2].get(i)<"u")r.push({type:"val",name:i,content:e.__varslist[2].get(i)});else if(typeof e.__varslist[1].get(i)<"u")r.push({type:"func",name:i,content:{meta:e.gen.nakoFuncList[i],func:Object.assign({},e.compiler.funclist[i],{fn:null})}});else throw console.error("\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30E6\u30FC\u30B6\u95A2\u6570\u3082\u3057\u304F\u306F\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u304C\u3042\u308A\u307E\u305B\u3093:"+i),new Error("\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30E6\u30FC\u30B6\u95A2\u6570\u3082\u3057\u304F\u306F\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u304C\u3042\u308A\u307E\u305B\u3093:"+i)}),r.length>0){let i=[];for(let f of o)i.push({name:f,export:e.compiler.moduleExport[f]});r.push({type:"env",name:"modlist",content:i}),r.push({type:"env",name:"constPools",content:e.constPools}),r.push({type:"env",name:"constPoolsTemplate",content:e.constPoolsTemplate});let u={type:"trans",data:r};t.postMessage(u)}},return_none:!0}},p=a;typeof navigator=="object"&&typeof navigator.nako3=="object"&&navigator.nako3.addPluginObject("PluginWebWorker",a);})();
4
- //# sourceMappingURL=plugin_webworker.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/plugin_webworker.mjs"],
4
- "sourcesContent": ["// @ts-nocheck\nconst PluginWebWorker = {\n 'meta': {\n type: 'const',\n value: {\n pluginName: 'plugin_webworker', // \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\n description: '\u30D6\u30E9\u30A6\u30B6\u306EWebWorker\u306E\u305F\u3081\u306E\u30D7\u30E9\u30B0\u30A4\u30F3', // \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\n '\u521D\u671F\u5316': {\n type: 'func',\n josi: [],\n pure: true,\n fn: function (sys) {\n sys._webworker = {\n setNakoHandler: function (work) {\n work.onmessage = (event) => {\n const data = event.data || { type: '', data: '' }\n const type = data.type || ''\n const value = data.data || ''\n switch (type) {\n case 'output':\n if (work.onoutput) {\n work.onoutput.apply(sys, [value, event])\n }\n break\n case 'data':\n if (work.ondata) {\n work.ondata.apply(sys, [value, event])\n }\n break\n case 'error':\n sys.logger.error(value.noColor)\n break\n }\n }\n work.onerror = (event) => {\n const e = new Error(typeof event.message !== 'undefined' ? event.message : 'no message')\n sys.logger.error(e)\n }\n work.onerrormessage = (event) => {\n const e = new Error(typeof event.message !== 'undefined' ? event.message : 'no message')\n sys.logger.error(e)\n }\n },\n inWorker: () => {\n // eslint-disable-next-line no-undef\n return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope\n },\n getBaseUrlFromTag: () => {\n if (!self.document) { return '' }\n const pluginName = 'plugin_webworker.js'\n let path = location.pathname\n if (path.substr(path.length - 1, 1) !== '/') {\n const paths = path.split('/')\n path = paths.slice(paths.length - 1, 1).join('/') & '/'\n }\n const scripts = document.querySelectorAll('script')\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i]\n let src = script.src || ''\n const index = src.indexOf(pluginName)\n if (index >= 0) {\n if (src.length - index === pluginName.length ||\n '?&#'.indexOf(src.substr(index + pluginName.length, 1)) >= 0) {\n src = src.substring(0, index)\n if (src.substring(0, 1) === '/') {\n // \u30B9\u30AF\u30EA\u30D7\u30C8\u30BD\u30FC\u30B9\u306Forigin\u7121\u3057\u306E\u7D76\u5BFE\u30D1\u30B9\n return location.origin + src\n }\n if (/^[a-zA-Z]+:\\/\\//.test(src)) {\n // \u30B9\u30AF\u30EA\u30D7\u30C8\u30BD\u30FC\u30B9\u306F\u7D76\u5BFEURI\n return src\n }\n // \u30B9\u30AF\u30EA\u30D7\u30C8\u30BD\u30FC\u30B9\u306Forigin\u7121\u3057\u306E\u76F8\u5BFE\u30D1\u30B9\n return location.origin + path + src\n }\n }\n }\n // \u30B9\u30AF\u30EA\u30D7\u30C8\u30BD\u30FC\u30B9\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u306E\u3067\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306EURI\u3092\u8FD4\u3059\n return location.origin + path\n }\n }\n sys.__v0['\u30EF\u30FC\u30AB\u30FCURL'] = sys._webworker.getBaseUrlFromTag()\n }\n },\n // @\u30A4\u30D9\u30F3\u30C8\u5B9A\u6570\n '\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8': { type: 'const', value: '' }, // @\u305F\u3044\u3057\u3087\u3046\u3044\u3079\u3093\u3068\n '\u53D7\u4FE1\u30C7\u30FC\u30BF': { type: 'const', value: '' }, // @\u305F\u3044\u3057\u3087\u3046\u3044\u3079\u3093\u3068\n\n '\u30EF\u30FC\u30AB\u30FCURL': { type: 'const', value: '' }, // @\u308F\u30FC\u304B\u30FCURL\n '\u30EF\u30FC\u30AB\u30FCURL\u8A2D\u5B9A': { // @\u306A\u3067\u3057\u3053v3\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308BURL\u3092\u8A2D\u5B9A // @\u308F\u30FC\u304B\u30FCURL\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078', '\u3068']],\n pure: true,\n fn: function (url, sys) {\n if (url && url.substring(url.length - 1) !== '/') {\n url += '/'\n }\n sys.__v0['\u30EF\u30FC\u30AB\u30FCURL'] = url\n },\n return_none: true\n },\n\n // @NAKO\u30EF\u30FC\u30AB\u30FC\n '\u30EF\u30FC\u30AB\u30FC\u8D77\u52D5': { // @\u6307\u5B9A\u3057\u305FURL\u3067WebWorker\u3092\u8D77\u52D5\u3059\u308B\u3002\u30EF\u30FC\u30AB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FD4\u3059\u3002 // @\u308F\u30FC\u304B\u30FC\u304D\u3069\u3046\n type: 'func',\n josi: [['\u3067', '\u3092', '\u306E']],\n pure: true,\n fn: function (url, sys) {\n return new Worker(url)\n },\n return_none: false\n },\n '\u30EF\u30FC\u30AB\u30FCJS\u8D77\u52D5': { // @\u6307\u5B9A\u3057\u305FJavascript\u306E\u30BD\u30FC\u30B9\u3067WebWorker\u3092\u8D77\u52D5\u3059\u308B\u3002\u30EF\u30FC\u30AB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FD4\u3059\u3002 // @\u308F\u30FC\u304B\u30FCJS\u304D\u3069\u3046\n type: 'func',\n josi: [['\u3067', '\u3092', '\u306E']],\n pure: true,\n fn: function (src, sys) {\n const blob = new Blob([src], { type: 'application/javascript' })\n const url = URL.createObjectURL(blob)\n return new Worker(url)\n },\n return_none: false\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u8D77\u52D5': { // @\u6307\u5B9A\u3057\u305F\u306A\u3067\u3057\u3053\uFF13\u306EWebWorker\u3092\u8D77\u52D5\u3059\u308B\u3002\u30EF\u30FC\u30AB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u8FD4\u3059\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u304D\u3069\u3046\n type: 'func',\n josi: [['\u3067']],\n isVariableJosi: true,\n pure: true,\n fn: function (plugins, sys) {\n let url\n if (typeof sys === 'undefined') { sys = plugins; plugins = undefined }\n if (plugins !== undefined) {\n if (!(plugins instanceof Array)) {\n throw new Error('\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u914D\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044')\n }\n const baseurl = sys.__v0['\u30EF\u30FC\u30AB\u30FCURL']\n let code = `importScripts('${baseurl}wnako3webworker.js')\\n`\n const l = plugins.length\n let i\n for (i = 0; i < l; i++) {\n code += `importScripts('${baseurl}${plugins[i]}')\\n`\n }\n const blob = new Blob([code], { type: 'application/javascript' })\n url = URL.createObjectURL(blob)\n } else {\n url = sys.__v0['\u30EF\u30FC\u30AB\u30FCURL'] + 'wnako3webworker.js'\n }\n const myWorker = new Worker(url)\n if (myWorker) {\n sys._webworker.setNakoHandler(myWorker)\n }\n return myWorker\n },\n return_none: false\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u30CF\u30F3\u30C9\u30E9\u8A2D\u5B9A': { // @\u30EF\u30FC\u30AB\u30FC\u306BNAKO\u30EF\u30FC\u30AB\u30FC\u306E\u305F\u3081\u306E\u8A2D\u5B9A\u3092\u884C\u3046\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u306F\u3093\u3069\u3089\u305B\u3063\u3066\u3044\n type: 'func',\n josi: [['\u306B', '\u3078', '\u306E']],\n pure: true,\n fn: function (work, sys) {\n sys._webworker.setNakoHandler(work)\n },\n return_none: true\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u30C7\u30FC\u30BF\u53D7\u4FE1\u6642': { // @\u7121\u540D\u95A2\u6570F\u3067\u306A\u3067\u3057\u3053v3\u30A8\u30F3\u30B8\u30F3\u306B\u5BFE\u3057\u3066\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u3088\u308A\u30C7\u30FC\u30BF\u3092\u53D7\u4FE1\u3057\u305F\u6642\u306B\u5B9F\u884C\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u3092\u8A2D\u5B9A\u3002\u300E\u53D7\u4FE1\u30C7\u30FC\u30BF\u300F\u306B\u53D7\u4FE1\u3057\u305F\u30C7\u30FC\u30BF\u3002\u300E\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8\u300F\u306B\u30A4\u30D9\u30F3\u30C8\u5F15\u6570\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u3067\u30FC\u305F\u3058\u3085\u3057\u3093\u3057\u305F\u3068\u304D\n type: 'func',\n josi: [['\u3067'], ['\u304B\u3089']],\n isVariableJosi: true,\n pure: false,\n fn: function (func, work, sys) {\n if (typeof sys === 'undefined') { sys = work; work = self }\n func = sys.__findVar(func, null) // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n work.ondata = (data, e) => {\n sys.__v0['\u53D7\u4FE1\u30C7\u30FC\u30BF'] = data\n sys.__v0['\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8'] = e\n return func(e, sys)\n }\n },\n return_none: true\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u8868\u793A\u6642': { // @\u7121\u540D\u95A2\u6570F\u3067\u306A\u3067\u3057\u3053v3\u30A8\u30F3\u30B8\u30F3\u306B\u5BFE\u3057\u3066\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u3088\u308A\u8868\u793A\u30C7\u30FC\u30BF\u3092\u53D7\u4FE1\u3057\u305F\u6642\u306B\u5B9F\u884C\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u3092\u8A2D\u5B9A\u3002\u300E\u53D7\u4FE1\u30C7\u30FC\u30BF\u300F\u306B\u8868\u793A\u3057\u3088\u3046\u3068\u3057\u305F\u30C7\u30FC\u30BF\u3002\u300E\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8\u300F\u306B\u30A4\u30D9\u30F3\u30C8\u5F15\u6570\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u3072\u3087\u3046\u3058\u3057\u305F\u3068\u304D\n type: 'func',\n josi: [['\u3067'], ['\u304B\u3089']],\n pure: false,\n fn: function (func, work, sys) {\n func = sys.__findVar(func, null) // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n work.onoutput = (data, e) => {\n sys.__v0['\u53D7\u4FE1\u30C7\u30FC\u30BF'] = data\n sys.__v0['\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8'] = e\n return func(e, sys)\n }\n },\n return_none: true\n },\n '\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u53D7\u4FE1\u6642': { // @\u7121\u540D\u95A2\u6570F\u3067work\u306B\u5BFE\u3057\u3066\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u53D7\u4FE1\u3057\u305F\u6642\u306B\u5B9F\u884C\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u3092\u8A2D\u5B9A\u3002\u300E\u53D7\u4FE1\u30C7\u30FC\u30BF\u300F\u306B\u53D7\u4FE1\u3057\u305F\u30C7\u30FC\u30BF\u3002\u300E\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8\u300F\u306B\u30A4\u30D9\u30F3\u30C8\u5F15\u6570\u3002 // @\u308F\u30FC\u304B\u30FC\u3081\u3063\u305B\u30FC\u3058\u3058\u3085\u3057\u3093\u3057\u305F\u3068\u304D\n type: 'func',\n josi: [['\u3067'], ['\u304B\u3089']],\n isVariableJosi: true,\n pure: false,\n fn: function (func, work, sys) {\n if (typeof sys === 'undefined') { sys = work; work = self }\n func = sys.__findVar(func, null) // \u6587\u5B57\u5217\u6307\u5B9A\u306A\u3089\u95A2\u6570\u306B\u5909\u63DB\n work.onmessage = (e) => {\n sys.__v0['\u53D7\u4FE1\u30C7\u30FC\u30BF'] = e.data\n sys.__v0['\u5BFE\u8C61\u30A4\u30D9\u30F3\u30C8'] = e\n return func(e, sys)\n }\n },\n return_none: true\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u30D7\u30ED\u30B0\u30E9\u30E0\u8D77\u52D5': { // @WORKER\u306B\u56FA\u6709\u306E\u5F62\u5F0F\u3067\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u8EE2\u9001\u3068\u5B9F\u884C\u884C\u3046\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u3077\u308D\u3050\u3089\u3080\u304D\u3069\u3046\n type: 'func',\n josi: [['\u306B', '\u3067'], ['\u3092']],\n pure: true,\n fn: function (work, data, sys) {\n const msg = {\n type: 'run',\n data: data\n }\n work.postMessage(msg)\n },\n return_none: true\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u30EA\u30BB\u30C3\u30C8': { // @WORKER\u306B\u56FA\u6709\u306E\u5F62\u5F0F\u3067\u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u8EE2\u9001\u3068\u5B9F\u884C\u884C\u3046\u3002 // @\u308F\u30FC\u304B\u30FC\u308A\u305B\u3063\u3068\n type: 'func',\n josi: [['\u3092']],\n pure: true,\n fn: function (work, sys) {\n const msg = {\n type: 'reset',\n data: ''\n }\n work.postMessage(msg)\n },\n return_none: true\n },\n '\u30EF\u30FC\u30AB\u30FC\u7D42\u4E86': { // @WORKER\u3092\u7D42\u4E86\u3059\u308B\u3002 // @\u308F\u30FC\u304B\u30FC\u3057\u3085\u3046\u308A\u3087\u3046\n type: 'func',\n josi: [['\u3092']],\n isVariableJosi: true,\n pure: true,\n fn: function (work, sys) {\n if (typeof sys === 'undefined') { sys = work; work = self }\n work.terminate()\n },\n return_none: true\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u7D42\u4E86': { // @WORKER\u3092\u7D42\u4E86\u3059\u308B\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u3057\u3085\u3046\u308A\u3087\u3046\n type: 'func',\n josi: [['\u3092']],\n isVariableJosi: true,\n pure: true,\n fn: function (work, sys) {\n if (typeof sys === 'undefined') {\n self.close()\n return\n }\n const msg = {\n type: 'close',\n data: ''\n }\n work.postMessage(msg)\n },\n return_none: true\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u30C7\u30FC\u30BF\u9001\u4FE1': { // @WORKER\u306B\u56FA\u6709\u306E\u5F62\u5F0F\u3067\u30C7\u30FC\u30BF\u3092\u9001\u4FE1\u3059\u308B\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u3067\u30FC\u305F\u305D\u3046\u3057\u3093\n type: 'func',\n josi: [['\u3092'], ['\u306B', '\u3078']],\n isVariableJosi: true,\n pure: true,\n fn: function (data, work, sys) {\n if (typeof sys === 'undefined') { sys = work; work = self }\n const msg = {\n type: 'data',\n data: data\n }\n work.postMessage(msg)\n },\n return_none: true\n },\n '\u30EF\u30FC\u30AB\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u9001\u4FE1': { // @WORKER\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u9001\u4FE1\u3059\u308B\u3002 // @\u308F\u30FC\u304B\u30FC\u3081\u3063\u305B\u30FC\u3058\u305D\u3046\u3057\u3093\n type: 'func',\n josi: [['\u3092'], ['\u306B', '\u3078']],\n isVariableJosi: true,\n pure: true,\n fn: function (msg, work, sys) {\n if (typeof sys === 'undefined') { sys = work; work = self }\n work.postMessage(msg)\n },\n return_none: true\n },\n 'NAKO\u30EF\u30FC\u30AB\u30FC\u8EE2\u9001': { // @WORKER\u306B\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u95A2\u6570\u307E\u305F\u306F\u30E6\u30FC\u30B6\u5B9A\u7FA9\u306E\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u3092\u8EE2\u9001\u3059\u308B\u3002 // @NAKO\u308F\u30FC\u304B\u30FC\u3066\u3093\u305D\u3046\n type: 'func',\n josi: [['\u3092'], ['\u306B', '\u3078']],\n isVariableJosi: true,\n pure: false,\n fn: function (datas, work, sys) {\n if (typeof sys === 'undefined') { sys = work; work = self }\n const modNameList = []\n const obj = []\n if (typeof datas === 'string') { datas = [datas] }\n datas.forEach(data => {\n if (data.indexOf('__') === -1) {\n for (const modname of sys.__modList) {\n const varname = modname + '__' + data\n if (typeof sys.__varslist[2].get(varname) !== 'undefined' || typeof sys.__varslist[1].get(varname) !== 'undefined') {\n data = varname\n break\n }\n }\n }\n if (data.indexOf('__') > -1) {\n const modname = data.split('__')[0]\n if (modNameList.indexOf(modname) === -1) {\n modNameList.push(modname)\n }\n }\n if (typeof sys.__varslist[2].get(data) !== 'undefined') {\n obj.push({\n type: 'val',\n name: data,\n content: sys.__varslist[2].get(data)\n })\n } else\n if (typeof sys.__varslist[1].get(data) !== 'undefined') {\n obj.push({\n type: 'func',\n name: data,\n content: {\n meta: sys.gen.nakoFuncList[data],\n func: Object.assign({}, sys.compiler.funclist[data], { fn: null })\n }\n })\n } else {\n console.error('\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30E6\u30FC\u30B6\u95A2\u6570\u3082\u3057\u304F\u306F\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u304C\u3042\u308A\u307E\u305B\u3093:' + data)\n throw new Error('\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30E6\u30FC\u30B6\u95A2\u6570\u3082\u3057\u304F\u306F\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u304C\u3042\u308A\u307E\u305B\u3093:' + data)\n }\n })\n if (obj.length > 0) {\n const modInfoList = []\n for (const modname of modNameList) {\n modInfoList.push({\n name: modname,\n export: sys.compiler.moduleExport[modname]\n })\n }\n obj.push({\n type: 'env',\n name: 'modlist',\n content: modInfoList\n })\n obj.push({\n type: 'env',\n name: 'constPools',\n content: sys.constPools\n })\n obj.push({\n type: 'env',\n name: 'constPoolsTemplate',\n content: sys.constPoolsTemplate\n })\n const msg = {\n type: 'trans',\n data: obj\n }\n work.postMessage(msg)\n }\n },\n return_none: true\n }\n}\n\nexport default PluginWebWorker\n\nif (typeof (navigator) === 'object' && typeof (navigator.nako3) === 'object') {\n navigator.nako3.addPluginObject('PluginWebWorker', PluginWebWorker)\n}\n\n"],
5
- "mappings": "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",
6
- "names": ["PluginWebWorker", "sys", "work", "event", "data", "type", "value", "e", "pluginName", "path", "paths", "scripts", "i", "src", "index", "url", "blob", "plugins", "baseurl", "code", "l", "myWorker", "func", "msg", "datas", "modNameList", "obj", "modname", "varname", "modInfoList", "plugin_webworker_default"]
7
- }
@@ -1,2 +0,0 @@
1
- "use strict";(()=>{var y=class t{static isDisporsal(e){return"dispose"in e&&typeof e.dispose=="function"}static isMesh(e){return"isMesh"in e&&e.isMesh===!0}static disposeChildObject(e){for(;e.children.length>0;)this.disposeChildObject(e.children[0]),e.remove(e.children[0]);if(t.isMesh(e)&&(e.geometry&&e.geometry.dispose(),e.material)){for(let r of Object.keys(e.material)){let n=e.material[r];t.isDisporsal(n)&&n.dispose()}e.material.dispose()}}};var H=class{constructor(e,r,n,s){this.v1=e,this.v2=r,this.width=n,this.color=s}},g=class{constructor(e,r,n){this.command=e,this.resolve=r,this.reject=n}},h=class{},b=class extends h{constructor(r){super();this.cmd="home";this.mode=r}},S=class extends h{constructor(r){super();this.cmd="jump";this.v=r}},N=class extends h{constructor(r){super();this.cmd="move";this.v=r}},w=class extends h{constructor(r){super();this.cmd="angle";this.angle=r}},d=class extends h{constructor(r,n){super();this.cmd="slide";this.direction=r,this.length=n}},E=class extends h{constructor(r,n){super();this.cmd="rotate";this.direction=r,this.angle=n}},T=class extends h{constructor(r,n){super();this.cmd="roll";this.direction=r,this.angle=n}},R=class extends h{constructor(r){super();this.cmd="pen";this.subcmd="enable";this.enable=r}},D=class extends h{constructor(r){super();this.cmd="pen";this.subcmd="color";this.color=r}},j=class extends h{constructor(r){super();this.cmd="pen";this.subcmd="width";this.width=r}},v=class extends h{constructor(r){super();this.cmd="attr";this.subcmd="visible";this.visible=r}},k=class extends h{constructor(r){super();this.cmd="attr";this.subcmd="model";this.model=r}},C=class extends EventTarget{constructor(e,r){super(),this.three=e,this.id=r;let n=new e.Group;this.obj=n,this.home={position:new e.Vector3(0,0,0),quaternion:new e.Quaternion},this.color=new e.Color(16777215),this.disposal=!1,this.lineWidth=4,this.flagDown=!0,this.flagLoaded=!1,this.f_visible=!0,this.macros=[],this.home.position.copy(n.position),this.home.quaternion.copy(n.quaternion)}clear(){for(let e of this.macros)e.resolve(0);this.macros=[],this.discardModel(),this.f_visible=!0,this.obj.visible=!0}discardModel(){this.disposal?(y.disposeChildObject(this.obj),this.disposal=!1):this.obj.remove(this.obj.children[0]),this.flagLoaded=!1}loadTurtle(e){if(this.isObject3D(e)){this.discardModel(),this.obj.add(e),this.disposal=!1,this.flagLoaded=!0,this.raiseModelChanged();return}let r=e;if(r.length===0){this.discardModel(),this.obj.add(this.createDefaultTurtle()),this.disposal=!0,this.flagLoaded=!0,this.raiseModelChanged();return}new this.three.ObjectLoader().load(r,s=>{this.discardModel(),this.obj.add(s),this.disposal=!0,this.flagLoaded=!0,this.raiseModelChanged()},s=>{},s=>{this.discardModel(),this.f_visible=!1,this.obj.visible=!1,this.raiseModelChanged()})}doMacro(e){if(!this.flagLoaded&&!e)return!0;let r=this.macros.shift();if(typeof r>"u")return!1;let n=r instanceof g?r.command:r;if(n instanceof S)this.obj.position.copy(n.v);else if(n instanceof N){let s=this.obj.position.clone(),i=n.v;this.line(s,i),this.obj.lookAt(i);let u=new this.three.Quaternion,l=new this.three.Vector3(1,0,0);u.setFromAxisAngle(l,Math.PI/2),this.obj.quaternion.multiply(u),this.obj.position.copy(i)}else if(n instanceof d){let s=n.direction,i=n.length*(s==="b"?-1:1),u=this.obj.position.clone(),l=new this.three.Vector3(0,i,0);if(s==="f"||s==="b")l.applyQuaternion(this.obj.quaternion);else{let a=new this.three.Quaternion,f=this.obj.quaternion.clone();if(s==="u"||s==="d"){let c=new this.three.Vector3(1,0,0);s==="u"?a.setFromAxisAngle(c,-90*Math.PI/180):a.setFromAxisAngle(c,90*Math.PI/180)}else{let c=new this.three.Vector3(0,0,1);s==="l"?a.setFromAxisAngle(c,90*Math.PI/180):a.setFromAxisAngle(c,-90*Math.PI/180)}f.multiply(a),l.applyQuaternion(f)}l.add(u),this.line(u,l),this.obj.position.copy(l)}else if(n instanceof b)switch(n.mode){case"set":this.home.position.copy(this.obj.position),this.home.quaternion.copy(this.obj.quaternion);break;case"jump":this.obj.position.copy(this.home.position),this.obj.quaternion.copy(this.home.quaternion);break}else if(n instanceof E){let s=n.direction,i=n.angle*(s==="l"||s==="d"?1:-1),u=new this.three.Quaternion,l;s==="l"||s==="r"?l=new this.three.Vector3(0,0,1):l=new this.three.Vector3(1,0,0),u.setFromAxisAngle(l,i%360*Math.PI/180),this.obj.quaternion.multiply(u)}else if(n instanceof T){let s=n.direction,i=n.angle*(s==="r"?1:-1),u=new this.three.Vector3(0,1,0),l=new this.three.Quaternion;l.setFromAxisAngle(u,i%360*Math.PI/180),this.obj.quaternion.multiply(l)}else if(n instanceof D)this.color=n.color;else if(n instanceof j)this.lineWidth=n.width;else if(n instanceof R)this.flagDown=n.enable;else if(n instanceof v)this.f_visible=n.visible,this.f_visible?this.obj.visible=!0:this.obj.visible=!1;else if(n instanceof k)this.flagLoaded=!1,this.loadTurtle(n.model);else if(n instanceof w){let s=new this.three.Euler;s.fromArray(n.angle);let i=new this.three.Quaternion;this.obj.quaternion.setFromEuler(s)}return r instanceof g&&r.resolve(0),this.macros.length>0}createDefaultTurtle(){let e=new Float32Array([0,1,0,-.6,-1,0,0,-.5,0,.6,-1,0,0,0,.5,0,1,0,-.6,-1,0,0,-.5,0,.6,-1,0,0,0,-.5,0,1,0,-.6,-1,0,0,-.5,0,.6,-1,0]),r=new Float32Array([0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1]),n=[0,1,1,2,2,3,3,0,4,5,4,6,4,7,4,8,9,10,9,11,9,12,9,13],s=new this.three.Group,i=new this.three.LineBasicMaterial({vertexColors:!0}),u=new this.three.BufferGeometry;u.setIndex(n),u.setAttribute("position",new this.three.BufferAttribute(e,3)),u.setAttribute("color",new this.three.BufferAttribute(r,3)),u.computeBoundingSphere();let l=new this.three.LineSegments(u,i);return l.scale.set(30,30,30),s.add(l),s}raiseModelChanged(){let e=new CustomEvent("modelChanged");this.dispatchEvent(e)}raiseDrawLine(e,r,n,s){let i=new H(e,r,n,s),u=new CustomEvent("drawLine",{detail:i});this.dispatchEvent(u)}line(e,r){this.flagDown&&this.raiseDrawLine(e,r,this.lineWidth,this.color)}isObject3D(e){return e instanceof this.three.Object3D}},o=class t{static getInstance(e){t.instance===void 0&&(t.instance=new t(e));let r=t.instance;return r.instanceCount+=1,t.instance}constructor(e){this.instanceCount=0,this.three=null,this.sys=e,this.containerid="",this.camera=-1,this.target=-1,this._renderer=null,this._scene=null,this._lines=null,this._camera=null,this._controls=null,this._camerahelper=null,this._axishelper=null,this.turtles=[],this.flagSetTimer=!1,this._prevUpdatedTime=0}clearAll(){this.disposeAllTurtle(),this.disposeAllLine();let e=this._scene;e&&this._lines&&(e.remove(this._lines),e.add(this._lines),this._camerahelper!==null&&(this._camerahelper.visible=!1,e.remove(this._camerahelper),e.add(this._camerahelper)),this._axishelper!==null&&(this._axishelper.visible=!1,e.remove(this._axishelper),e.add(this._axishelper)),this.initTurtle())}disposeAllTurtle(){for(let e of this.turtles)e.clear();this.turtles=[],this.target=-1,this.camera=-1,this.flagSetTimer=!1}disposeAllLine(){this._lines!==null&&y.disposeChildObject(this._lines)}getThree(){if(!this.three)throw new Error("ThreeJS\u306E\u6E96\u5099\u3055\u308C\u308B\u524D\u306B\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F");return this.three}createTurtle(e){let r=this.getThree(),n=this.turtles.length,s=new C(r,n);return s.addEventListener("modelChanged",u=>{!!this.sys.__getSysVar("T3D\u81EA\u52D5\u63CF\u753B")&&this.doDraw(!0)}),s.addEventListener("drawLine",u=>{this.drawLine(u.detail.v1,u.detail.v2,u.detail.width,u.detail.color)}),this.turtles.push(s),this.target=n,s.loadTurtle(e),this.getScene().add(s.obj),n}initTurtle(){if(this.turtles.length===0){this._renderer===null&&this.initRenderer();let e=this.getThree(),r=this.createTurtle(""),n=this.turtles[r];n.obj.position.set(0,0,1e3);let s=new e.Vector3(0,0,-1).normalize();n.obj.quaternion.setFromAxisAngle(s,0),n.home.position.copy(n.obj.position),n.home.quaternion.copy(n.obj.quaternion),n.f_visible=!1,n.obj.visible=!1,this.camera=r,this.target=-1}}getCur(){if(this.turtles.length===0)throw Error("\u6700\u521D\u306B\u300ET3D\u30AB\u30E1\u4F5C\u6210\u300F\u547D\u4EE4\u3092\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(this.target<0||this.target>=this.turtles.length)throw Error("\u6307\u5B9A\u3055\u308C\u305F\u756A\u53F7\u306E\u30AB\u30E1\u306F\u3044\u307E\u305B\u3093\u3002");return this.turtles[this.target]}queCurrentTurtle(e){let r=this.getCur();return new Promise((s,i)=>{let u=new g(e,s,i);r.macros.push(u),this.animationStart()})}doDraw(e){if(this.camera===-1||!this._scene||(this.getRenderer(),!this._renderer)||(this.getCamera(),!this._camera))return;let r=this.turtles[this.camera];this._controls===null&&(this._camera.position.copy(r.obj.position),this._camera.quaternion.copy(r.obj.quaternion)),this._camerahelper!==null&&this._camerahelper.update(),this._controls!==null&&(this._controls.update(),r.obj.position.copy(this._camera.position),r.obj.quaternion.copy(this._camera.quaternion)),e&&this._renderer.clear(),this._renderer.render(this._scene,this._camera)}setCameraHelper(e){let r=this.getThree();if(e){if(this._camerahelper===null&&this._scene&&this._camera){if(typeof r.CameraHelper>"u")throw Error("\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u306E\u6A5F\u80FD\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002");let n=new r.CameraHelper(this._camera);this._camerahelper=n,this._scene.add(n)}this._camerahelper.visible=!0}else this._camerahelper!==null&&(this._camerahelper.visible=!1)}setAxisHelper(e){let r=this.getThree();if(e){if(this._axishelper===null&&this._scene){if(typeof r.AxisHelper>"u")throw Error("AXIS\u30D8\u30EB\u30D1\u306E\u6A5F\u80FD\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002");let n=new r.AxisHelper(1e3);this._axishelper=n,this._scene.add(n)}this._axishelper.visible=!0}else this._axishelper!==null&&(this._axishelper.visible=!1)}getScene(){let e=this.getThree();return this._scene===null&&(this._scene=new e.Scene),this._scene}getCamera(){let e=this.getThree();if(this._camera===null){let r=new e.PerspectiveCamera(60,1,1,65e3);this.resetCamera(r),this._camera=r}return this._camera}resetCamera(e){let r=this.getThree();if(e.position.set(0,0,1e3),this._renderer!==null){let n=new r.Vector2;this._renderer.getSize(n),"aspect"in e&&(e.aspect=n.width/n.height)}e.up=new r.Vector3(0,1,0),e.lookAt(new r.Vector3(0,0,0))}initTrutle3dEnv(e){e.setClearColor(0,1),e.autoClear=!1;let r=this.getScene(),n=this.getCamera();r&&this._lines&&(r.add(this._lines),this.turtles.length===0&&this.initTurtle())}initRenderer(){let e=this.sys.__getSysVar("T3D\u30AB\u30E1\u63CF\u753B\u5148");if(typeof e=="string"&&(e=document.querySelector(e)||document.getElementById(e)),!e)throw new Error("[ERROR] T3D\u30AB\u30E1\u63CF\u753B\u5148\u304C\u898B\u5F53\u305F\u308A\u307E\u305B\u3093\u3002");let r=this.setRenderer(e);return this.setupRenderer(),r}setRenderer(e){let r=this.getThree(),n=null;if(e instanceof r.WebGLRenderer)n=e;else if(e instanceof HTMLCanvasElement){if(n=new r.WebGLRenderer({antialias:!1,alpha:!0,canvas:e}),n===null)throw new Error("\u30EC\u30F3\u30C0\u30E9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093");n.setSize(e.width,e.height)}else if(e instanceof Element){if(n=new r.WebGLRenderer({antialias:!1,alpha:!0}),n===null)throw new Error("\u30EC\u30F3\u30C0\u30E9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093");n.setSize(e.clientWidth,e.clientHeight),e.appendChild(n.domElement)}return n.setPixelRatio(window.devicePixelRatio),this._renderer=n,this._renderer}clearRenderer(){this._renderer=null,this._controls&&(this._controls.enabled=!1,this._controls=null)}setupRenderer(){this._renderer&&this.initTrutle3dEnv(this._renderer)}getRenderer(){return this._renderer===null&&this.initRenderer(),this._renderer}setupControl(e){if(typeof e>"u")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");if(this._controls!==null){if(this._controls instanceof e)return this._controls;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")}let r=this.getRenderer(),n=this.getCamera(),s=new e(n,r.domElement);return s.enabled=!0,this._controls=s,this._controls}drawLine(e,r,n,s){let i=this.getThree(),u=new i.BufferGeometry,l=new i.Float32BufferAttribute(6,3);l.copyArray([e.x,e.y,e.z,r.x,r.y,r.z]);let a=new i.LineBasicMaterial({color:s,linewidth:n});u.setAttribute("position",l);let f=new i.Line(u,a);this._lines&&this._lines.add(f)}doMacroAllTurtles(){let e=!1;for(let r of this.turtles)r.doMacro(this.isNoWait())&&(e=!0);return e}animationStart(){let e=this.getWait();if(this.sys.__getSysVar("T3D\u81EA\u52D5\u5B9F\u884C")){if(this.isNoWait()){this.animation();return}this.flagSetTimer||(this.flagSetTimer=!0,this.animationFrame(()=>this.animation()))}}getWait(){return this.sys.__getSysVar("T3D\u30AB\u30E1\u901F\u5EA6")}isNoWait(){return this.sys.__getSysVar("T3D\u30AB\u30E1\u901F\u5EA6")===0}animation(){let e=!!this.sys.__getSysVar("T3D\u81EA\u52D5\u63CF\u753B"),r=!!this.sys.__getSysVar("T3D\u81EA\u52D5\u5B9F\u884C"),n=this.animationTick();e&&this.doDraw(!0),(n||this._controls!==null)&&r?this.animationFrame(()=>this.animation()):this.flagSetTimer=!1}animationTick(){let e=Date.now(),r=this.isNoWait();if(!r){let s=e-this._prevUpdatedTime,i=this.getWait();if(i>0&&s<i)return!0}this._prevUpdatedTime=e;let n;if(r){for(;this.doMacroAllTurtles(););n=!1}else n=this.doMacroAllTurtles();return n}animationFrame(e,r){window.setTimeout(e,1e3/60)}ck(){if(this.three===null&&(this.sys.__getSysVar("THREE")!==null?this.three=this.sys.__getSysVar("THREE"):typeof window.THREE<"u"&&(this.three=window.THREE)),this.three===null)throw new Error("three.module.js\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u3066\u3044\u307E\u305B\u3093");return this.sys.__getSysVar("THREE")===null&&this.sys.__setSysVar("THREE",this.three),this._lines===null&&(this._lines=new this.three.Group),this.three}static getTurtle3D(e){if(!e.tags.weykturtle3d)throw new Error("\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u521D\u671F\u5316\u304C\u884C\u308F\u308C\u3066\u3044\u307E\u305B\u3093");return e.tags.weykturtle3d}static getEnv(e){let r=t.getTurtle3D(e),n=r.ck();return[r,n]}},x={meta:{type:"const",value:{pluginName:"plugin_weykturtle3d",description:"3D\u3067\u30BF\u30FC\u30C8\u30EB\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF\u30B9\u63CF\u753B\u30D7\u30E9\u30B0\u30A4\u30F3",pluginVersion:"3.6.0",nakoRuntime:["wnako"],nakoVersion:"3.6.0"}},\u521D\u671F\u5316:{type:"func",josi:[],pure:!0,fn:function(t){if(t.tags.weykturtle3d)return;let e=o.getInstance(t);t.tags.weykturtle3d=e,t.__setSysVar("THREE",null)}},THREE:{type:"const",value:""},T3D\u30D9\u30FC\u30B9URL:{type:"var",value:"https://cdn.jsdelivr.net/npm/three@0.127.0"},T3D\u30E9\u30A4\u30D6\u30E9\u30EA\u8AAD\u8FBC:{type:"func",josi:[],asyncFn:!0,pure:!0,fn:async function(t){let e=o.getTurtle3D(t);if(e.three===null&&t.__getSysVar("THREE")===null){let r=t.__getSysVar("T3D\u30D9\u30FC\u30B9URL"),s=import(r===""?"three":r+"/build/three.module.js");return s.then(i=>(e.three=Object.assign({},i),e.ck(),!0)),s.catch(i=>!1),await s}else return e.ck(),!0},return_none:!1},T3D\u30E9\u30A4\u30D6\u30E9\u30EA\u8AAD\u8FBC\u5F8C:{type:"func",josi:[["\u306B"]],pure:!0,fn:function(t,e){let r=o.getTurtle3D(e);if(r.three===null&&e.__getSysVar("THREE")===null){let n=e.__getSysVar("T3D\u30D9\u30FC\u30B9URL"),i=import(n===""?"three":n+"/build/three.module.js");i.then(u=>{r.three=Object.assign({},u),r.ck(),t(!0)}),i.catch(u=>{t(!1)})}else r.ck(),t(!0)},return_none:!0},T3D\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAD\u8FBC:{type:"func",josi:[["\u3092"]],asyncFn:!0,pure:!0,fn:async function(t,e){let[r,n]=o.getEnv(e),s=t.length;if(s===0)return;let i=e.__getSysVar("T3D\u30D9\u30FC\u30B9URL");return new Promise((l,a)=>{let f=function(c){let m=0,p=0;return function(_){m+=1,_&&(p+=1),m===c&&(m===p?l():a())}}(s);for(let c of t){let p=import(i===""?c:i+"/examples/jsm/"+c);p.then(_=>{Object.assign(n,_),f(!0)}),p.catch(_=>{f(!1)})}})},return_none:!0},T3D\u30D7\u30E9\u30B0\u30A4\u30F3\u8AAD\u8FBC\u5F8C:{type:"func",josi:[["\u306B"],["\u3092"]],pure:!0,fn:function(t,e,r){let[n,s]=o.getEnv(r),i=e.length;if(i===0){t();return}let u=r.__getSysVar("T3D\u30D9\u30FC\u30B9URL"),l=function(a,f){let c=0;return function(m){c+=1,c===f&&a()}}(t,i);for(let a=0;a<i;a++){let f=e[a],m=import(u===""?f:u+"/examples/jsm/"+f);m.then(p=>{Object.assign(s,p),l(!0)}),m.catch(p=>{l(!1)})}},return_none:!0},T3D\u30AB\u30E1\u4F5C\u6210:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.initTurtle();let n=t.__getSysVar("T3D\u30AB\u30E1\u30E2\u30C7\u30EBURL");return e.createTurtle(n)},return_none:!1},T3D\u30AB\u30E1\u64CD\u4F5C\u5BFE\u8C61\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078","\u306E"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);r.target=t},return_none:!0},T3D\u30AB\u30E1\u63CF\u753B\u5148:{type:"var",value:"turtle3d_div"},T3D\u30AB\u30E1\u30E2\u30C7\u30EBURL:{type:"var",value:""},T3D\u30AB\u30E1\u30E2\u30C7\u30EB\u5909\u66F4:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new k(t))},return_none:!1},T3D\u30AB\u30E1\u901F\u5EA6:{type:"const",value:100},T3D\u30AB\u30E1\u901F\u5EA6\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){e.__setSysVar("T3D\u30AB\u30E1\u901F\u5EA6",t)},return_none:!0},T3D\u30AB\u30E1\u79FB\u52D5:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new N(new n.Vector3(t[0],t[1],t[2])))},return_none:!1},T3D\u30AB\u30E1\u539F\u70B9\u8A2D\u5B9A:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e.queCurrentTurtle(new b("set"))},return_none:!1},T3D\u30AB\u30E1\u539F\u70B9\u79FB\u52D5:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e.queCurrentTurtle(new b("jump"))},return_none:!1},T3D\u30AB\u30E1\u8D77\u70B9\u79FB\u52D5:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new S(new n.Vector3(t[0],t[1],t[2])))},return_none:!1},T3D\u30AB\u30E1\u9032:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new d("f",t))},return_none:!1},T3D\u30AB\u30E1\u623B:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new d("b",t))},return_none:!1},T3D\u30AB\u30E1\u4E0A\u5E73\u884C\u79FB\u52D5:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new d("u",t))},return_none:!1},T3D\u30AB\u30E1\u4E0B\u5E73\u884C\u79FB\u52D5:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new d("d",t))},return_none:!1},T3D\u30AB\u30E1\u5DE6\u5E73\u884C\u79FB\u52D5:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new d("l",t))},return_none:!1},T3D\u30AB\u30E1\u53F3\u5E73\u884C\u79FB\u52D5:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new d("r",t))},return_none:!1},T3D\u30AB\u30E1\u52D5:{type:"func",josi:[["\u3078","\u306B"],["\u3060\u3051"]],pure:!0,fn:function(t,e,r){let[n,s]=o.getEnv(r),i;if(t==="\u524D"||t==="FORWARD"||t==="\u307E\u3048")i="f";else if(t==="\u5F8C"||t==="BACK"||t==="\u3046\u3057\u308D"||t==="BACKWARD"||t==="\u3042\u3068")i="b";else if(t==="\u4E0A"||t==="UP"||t==="\u3046\u3048")i="u";else if(t==="\u4E0B"||t==="DOWN"||t==="\u3057\u305F")i="d";else if(t==="\u53F3"||t==="RIGHT"||t==="\u307F\u304E")i="r";else if(t==="\u5DE6"||t==="LEFT"||t==="\u3072\u3060\u308A")i="l";else 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");return n.queCurrentTurtle(new d(i,e))},return_none:!1},T3D\u30AB\u30E1\u89D2\u5EA6\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078","\u306E"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new w(t))},return_none:!1},T3D\u30AB\u30E1\u53F3\u56DE\u8EE2:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new E("r",t))},return_none:!1},T3D\u30AB\u30E1\u5DE6\u56DE\u8EE2:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new E("l",t))},return_none:!1},T3D\u30AB\u30E1\u4E0A\u56DE\u8EE2:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new E("u",t))},return_none:!1},T3D\u30AB\u30E1\u4E0B\u56DE\u8EE2:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new E("d",t))},return_none:!1},T3D\u30AB\u30E1\u56DE\u8EE2:{type:"func",josi:[["\u3078","\u306B"],["\u3060\u3051"]],pure:!0,fn:function(t,e,r){let[n,s]=o.getEnv(r),i;if(t==="\u4E0A"||t==="UP"||t==="\u3046\u3048")i="u";else if(t==="\u4E0B"||t==="DOWN"||t==="\u3057\u305F")i="d";else if(t==="\u53F3"||t==="RIGHT"||t==="\u307F\u304E")i="r";else if(t==="\u5DE6"||t==="LEFT"||t==="\u3072\u3060\u308A")i="l";else 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");return n.queCurrentTurtle(new E(i,e))},return_none:!1},T3D\u30AB\u30E1\u53F3\u30ED\u30FC\u30EB:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new T("r",t))},return_none:!1},T3D\u30AB\u30E1\u5DE6\u30ED\u30FC\u30EB:{type:"func",josi:[["\u3060\u3051"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new T("l",t))},return_none:!1},T3D\u30AB\u30E1\u50BE:{type:"func",josi:[["\u306B","\u3078"],["\u3060\u3051"]],pure:!0,fn:function(t,e,r){let[n,s]=o.getEnv(r),i;if(t==="\u53F3"||t==="RIGHT"||t==="\u307F\u304E")i="r";else if(t==="\u5DE6"||t==="LEFT"||t==="\u3072\u3060\u308A")i="l";else 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");return n.queCurrentTurtle(new T(i,e))},return_none:!1},T3D\u30AB\u30E1\u30DA\u30F3\u8272\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return typeof t=="number"&&(t=new n.Color(t)),r.queCurrentTurtle(new D(t))},return_none:!1},T3D\u30AB\u30E1\u30DA\u30F3\u30B5\u30A4\u30BA\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new j(t))},return_none:!1},T3D\u30AB\u30E1\u30DA\u30F3\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);return r.queCurrentTurtle(new R(!!t))},return_none:!1},T3D\u30AB\u30E1\u5168\u6D88\u53BB:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.clearAll()},return_none:!0},T3D\u30AB\u30E1\u975E\u8868\u793A:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e.queCurrentTurtle(new v(!1))},return_none:!1},T3D\u30AB\u30E1\u8868\u793A:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e.queCurrentTurtle(new v(!0))},return_none:!1},T3D\u8996\u70B9\u30AB\u30E1\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);if(t<0||t>=r.turtles.length)throw Error("\u6307\u5B9A\u3055\u308C\u305F\u756A\u53F7\u306E\u30AB\u30E1\u306F\u3044\u307E\u305B\u3093\u3002");r.camera=t,r.animationStart()},return_none:!0},T3D\u81EA\u52D5\u63CF\u753B:{type:"var",value:!0},T3D\u81EA\u52D5\u5B9F\u884C:{type:"var",value:!0},T3D\u63CF\u753B\u6E96\u5099:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);if(typeof t=="string"&&(t=document.querySelector(t)||document.getElementById(t)),!t)throw new Error("T3D\u63CF\u753B\u6E96\u5099\u306B\u6307\u5B9A\u3057\u305F\u63CF\u753B\u5148\u306B\u8AA4\u308A\u304C\u3042\u308A\u307E\u3059");let s=r.setRenderer(t);return r.setupRenderer(),s},return_none:!1},T3D\u63CF\u753B:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.doDraw(!0)},return_none:!0},T3D\u4E0A\u66F8\u63CF\u753B:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.doDraw(!1)},return_none:!0},T3D\u5B9F\u884C:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.animationTick()},return_none:!0},T3D\u80CC\u666F\u8272\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);r.getRenderer().setClearColor(t),r.animationStart()},return_none:!0},T3D\u80CC\u666F\u900F\u904E\u8A2D\u5B9A:{type:"func",josi:[["\u306B","\u3078"]],pure:!0,fn:function(t,e){let[r,n]=o.getEnv(e);r.getRenderer().setClearAlpha(t),r.animationStart()},return_none:!0},T3DJSON\u53D6\u5F97:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e._lines?JSON.stringify(e._lines.toJSON()):null},return_none:!1},T3D\u30EC\u30F3\u30C0\u30E9\u7834\u68C4:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.clearRenderer()},return_none:!0},T3D\u5185\u90E8\u30EC\u30F3\u30C0\u30E9\u53D6\u5F97:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e.getRenderer()},return_none:!1},T3D\u5185\u90E8\u30B7\u30FC\u30F3\u53D6\u5F97:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e.getScene()},return_none:!1},T3D\u5185\u90E8\u30AB\u30E1\u30E9\u53D6\u5F97:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e.getCamera()},return_none:!1},T3D\u5185\u90E8\u7DDA\u63CF\u753B\u53C2\u7167\u53D6\u5F97:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return e._lines},return_none:!1},T3D\u5185\u90E8\u7DDA\u63CF\u753B\u53D6\u51FA:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t),n=e._lines;return e._lines=new r.Group,e.animationStart(),n},return_none:!1},T3D\u5F85:{type:"func",josi:[["\u3092"]],asyncFn:!0,pure:!0,fn:function(t,e){return t},return_none:!1},T3D\u30AA\u30FC\u30D3\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u8A2D\u5B9A:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);return typeof r.OrbitControls<"u"?e.setupControl(r.OrbitControls):null},return_none:!1},T3D\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u6709\u52B9:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e._controls&&(e._controls.enabled=!0)},return_none:!0},T3D\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u7121\u52B9:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e._controls&&(e._controls.enabled=!1)},return_none:!0},T3D\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u8868\u793A:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.setCameraHelper(!0)},return_none:!0},T3D\u30AB\u30E1\u30E9\u30D8\u30EB\u30D1\u975E\u8868\u793A:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.setCameraHelper(!1)},return_none:!0},T3D\u8EF8\u7DDA\u30D8\u30EB\u30D1\u8868\u793A:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.setAxisHelper(!0)},return_none:!0},T3D\u8EF8\u7DDA\u30D8\u30EB\u30D1\u975E\u8868\u793A:{type:"func",josi:[],pure:!0,fn:function(t){let[e,r]=o.getEnv(t);e.setAxisHelper(!1)},return_none:!0}},V=x;typeof navigator=="object"&&navigator.nako3.addPluginObject("PluginWeykTurtle3D",x);})();
2
- //# sourceMappingURL=plugin_weykturtle3d.js.map
@@ -1,7 +0,0 @@
1
- {
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": "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",
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"]
7
- }