gdcore-tools 1.0.6 → 1.0.7

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 (601) hide show
  1. package/GDevelop/ExtLibs/7za.exe +0 -0
  2. package/GDevelop/ExtLibs/curl.exe +0 -0
  3. package/GDevelop/scripts/libgettextlib-0-17.dll +0 -0
  4. package/GDevelop/scripts/libgettextsrc-0-17.dll +0 -0
  5. package/LICENSE +1 -1
  6. package/dist/Runtime/AsyncTasksManager.js +5 -0
  7. package/dist/Runtime/AsyncTasksManager.js.map +7 -0
  8. package/dist/Runtime/Cordova/config.xml +44 -0
  9. package/dist/Runtime/Cordova/package.json +22 -0
  10. package/dist/Runtime/Cordova/www/index.html +45 -0
  11. package/dist/Runtime/CustomRuntimeObject.js +2 -0
  12. package/dist/Runtime/CustomRuntimeObject.js.map +7 -0
  13. package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js +2 -0
  14. package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js.map +7 -0
  15. package/dist/Runtime/Electron/main.js +65 -0
  16. package/dist/Runtime/Electron/package.json +26 -0
  17. package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js +2 -0
  18. package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js.map +7 -0
  19. package/dist/Runtime/Extensions/3D/A_RuntimeObject3DRenderer.js +2 -0
  20. package/dist/Runtime/Extensions/3D/A_RuntimeObject3DRenderer.js.map +7 -0
  21. package/dist/Runtime/Extensions/3D/AmbientLight.js +2 -0
  22. package/dist/Runtime/Extensions/3D/AmbientLight.js.map +7 -0
  23. package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js +2 -0
  24. package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js.map +7 -0
  25. package/dist/Runtime/Extensions/3D/Cube3DRuntimeObjectPixiRenderer.js +2 -0
  26. package/dist/Runtime/Extensions/3D/Cube3DRuntimeObjectPixiRenderer.js.map +7 -0
  27. package/dist/Runtime/Extensions/3D/DirectionalLight.js +2 -0
  28. package/dist/Runtime/Extensions/3D/DirectionalLight.js.map +7 -0
  29. package/dist/Runtime/Extensions/3D/ExponentialFog.js +2 -0
  30. package/dist/Runtime/Extensions/3D/ExponentialFog.js.map +7 -0
  31. package/dist/Runtime/Extensions/3D/HemisphereLight.js +2 -0
  32. package/dist/Runtime/Extensions/3D/HemisphereLight.js.map +7 -0
  33. package/dist/Runtime/Extensions/3D/JsExtension.js +2809 -0
  34. package/dist/Runtime/Extensions/3D/LinearFog.js +2 -0
  35. package/dist/Runtime/Extensions/3D/LinearFog.js.map +7 -0
  36. package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js +2 -0
  37. package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js.map +7 -0
  38. package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js +2 -0
  39. package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js.map +7 -0
  40. package/dist/Runtime/Extensions/3D/Scene3DTools.js +2 -0
  41. package/dist/Runtime/Extensions/3D/Scene3DTools.js.map +7 -0
  42. package/dist/Runtime/Extensions/AdMob/JsExtension.js +798 -0
  43. package/dist/Runtime/Extensions/AdMob/admobtools.js +2 -0
  44. package/dist/Runtime/Extensions/AdMob/admobtools.js.map +7 -0
  45. package/dist/Runtime/Extensions/AdvancedWindow/JsExtension.js +719 -0
  46. package/dist/Runtime/Extensions/AdvancedWindow/electron-advancedwindowtools.js +2 -0
  47. package/dist/Runtime/Extensions/AdvancedWindow/electron-advancedwindowtools.js.map +7 -0
  48. package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js +2 -0
  49. package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js.map +7 -0
  50. package/dist/Runtime/Extensions/BBText/JsExtension.js +639 -0
  51. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject-pixi-renderer.js +2 -0
  52. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject-pixi-renderer.js.map +7 -0
  53. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js +2 -0
  54. package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js.map +7 -0
  55. package/dist/Runtime/Extensions/BBText/pixi-multistyle-text/dist/pixi-multistyle-text.umd.js +1 -0
  56. package/dist/Runtime/Extensions/BitmapText/JsExtension.js +756 -0
  57. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js +2 -0
  58. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js.map +7 -0
  59. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js +2 -0
  60. package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js.map +7 -0
  61. package/dist/Runtime/Extensions/DebuggerTools/JsExtension.js +123 -0
  62. package/dist/Runtime/Extensions/DebuggerTools/debuggertools.js +2 -0
  63. package/dist/Runtime/Extensions/DebuggerTools/debuggertools.js.map +7 -0
  64. package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js +2 -0
  65. package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js.map +7 -0
  66. package/dist/Runtime/Extensions/DeviceSensors/JsExtension.js +461 -0
  67. package/dist/Runtime/Extensions/DeviceSensors/devicesensortools.js +2 -0
  68. package/dist/Runtime/Extensions/DeviceSensors/devicesensortools.js.map +7 -0
  69. package/dist/Runtime/Extensions/DeviceVibration/JsExtension.js +108 -0
  70. package/dist/Runtime/Extensions/DeviceVibration/devicevibrationtools.js +2 -0
  71. package/dist/Runtime/Extensions/DeviceVibration/devicevibrationtools.js.map +7 -0
  72. package/dist/Runtime/Extensions/DialogueTree/JsExtension.js +730 -0
  73. package/dist/Runtime/Extensions/DialogueTree/bondage.js/dist/bondage.min.js +11 -0
  74. package/dist/Runtime/Extensions/DialogueTree/dialoguetools.js +3 -0
  75. package/dist/Runtime/Extensions/DialogueTree/dialoguetools.js.map +7 -0
  76. package/dist/Runtime/Extensions/DraggableBehavior/draggableruntimebehavior.js +2 -0
  77. package/dist/Runtime/Extensions/DraggableBehavior/draggableruntimebehavior.js.map +7 -0
  78. package/dist/Runtime/Extensions/Effects/JsExtension.js +1197 -0
  79. package/dist/Runtime/Extensions/Effects/adjustment-pixi-filter.js +2 -0
  80. package/dist/Runtime/Extensions/Effects/adjustment-pixi-filter.js.map +7 -0
  81. package/dist/Runtime/Extensions/Effects/advanced-bloom-pixi-filter.js +2 -0
  82. package/dist/Runtime/Extensions/Effects/advanced-bloom-pixi-filter.js.map +7 -0
  83. package/dist/Runtime/Extensions/Effects/ascii-pixi-filter.js +2 -0
  84. package/dist/Runtime/Extensions/Effects/ascii-pixi-filter.js.map +7 -0
  85. package/dist/Runtime/Extensions/Effects/bevel-pixi-filter.js +2 -0
  86. package/dist/Runtime/Extensions/Effects/bevel-pixi-filter.js.map +7 -0
  87. package/dist/Runtime/Extensions/Effects/black-and-white-pixi-filter.js +2 -0
  88. package/dist/Runtime/Extensions/Effects/black-and-white-pixi-filter.js.map +7 -0
  89. package/dist/Runtime/Extensions/Effects/blending-mode-pixi-filter.js +2 -0
  90. package/dist/Runtime/Extensions/Effects/blending-mode-pixi-filter.js.map +7 -0
  91. package/dist/Runtime/Extensions/Effects/blur-pixi-filter.js +2 -0
  92. package/dist/Runtime/Extensions/Effects/blur-pixi-filter.js.map +7 -0
  93. package/dist/Runtime/Extensions/Effects/brightness-pixi-filter.js +2 -0
  94. package/dist/Runtime/Extensions/Effects/brightness-pixi-filter.js.map +7 -0
  95. package/dist/Runtime/Extensions/Effects/bulge-pinch-pixi-filter.js +2 -0
  96. package/dist/Runtime/Extensions/Effects/bulge-pinch-pixi-filter.js.map +7 -0
  97. package/dist/Runtime/Extensions/Effects/color-map-pixi-filter.js +2 -0
  98. package/dist/Runtime/Extensions/Effects/color-map-pixi-filter.js.map +7 -0
  99. package/dist/Runtime/Extensions/Effects/color-replace-pixi-filter.js +2 -0
  100. package/dist/Runtime/Extensions/Effects/color-replace-pixi-filter.js.map +7 -0
  101. package/dist/Runtime/Extensions/Effects/crt-pixi-filter.js +2 -0
  102. package/dist/Runtime/Extensions/Effects/crt-pixi-filter.js.map +7 -0
  103. package/dist/Runtime/Extensions/Effects/displacement-pixi-filter.js +2 -0
  104. package/dist/Runtime/Extensions/Effects/displacement-pixi-filter.js.map +7 -0
  105. package/dist/Runtime/Extensions/Effects/dot-pixi-filter.js +2 -0
  106. package/dist/Runtime/Extensions/Effects/dot-pixi-filter.js.map +7 -0
  107. package/dist/Runtime/Extensions/Effects/drop-shadow-pixi-filter.js +2 -0
  108. package/dist/Runtime/Extensions/Effects/drop-shadow-pixi-filter.js.map +7 -0
  109. package/dist/Runtime/Extensions/Effects/glitch-pixi-filter.js +2 -0
  110. package/dist/Runtime/Extensions/Effects/glitch-pixi-filter.js.map +7 -0
  111. package/dist/Runtime/Extensions/Effects/glow-pixi-filter.js +2 -0
  112. package/dist/Runtime/Extensions/Effects/glow-pixi-filter.js.map +7 -0
  113. package/dist/Runtime/Extensions/Effects/godray-pixi-filter.js +2 -0
  114. package/dist/Runtime/Extensions/Effects/godray-pixi-filter.js.map +7 -0
  115. package/dist/Runtime/Extensions/Effects/kawase-blur-pixi-filter.js +2 -0
  116. package/dist/Runtime/Extensions/Effects/kawase-blur-pixi-filter.js.map +7 -0
  117. package/dist/Runtime/Extensions/Effects/light-night-pixi-filter.js +3 -0
  118. package/dist/Runtime/Extensions/Effects/light-night-pixi-filter.js.map +7 -0
  119. package/dist/Runtime/Extensions/Effects/night-pixi-filter.js +3 -0
  120. package/dist/Runtime/Extensions/Effects/night-pixi-filter.js.map +7 -0
  121. package/dist/Runtime/Extensions/Effects/noise-pixi-filter.js +2 -0
  122. package/dist/Runtime/Extensions/Effects/noise-pixi-filter.js.map +7 -0
  123. package/dist/Runtime/Extensions/Effects/old-film-pixi-filter.js +2 -0
  124. package/dist/Runtime/Extensions/Effects/old-film-pixi-filter.js.map +7 -0
  125. package/dist/Runtime/Extensions/Effects/outline-pixi-filter.js +2 -0
  126. package/dist/Runtime/Extensions/Effects/outline-pixi-filter.js.map +7 -0
  127. package/dist/Runtime/Extensions/Effects/pixelate-pixi-filter.js +2 -0
  128. package/dist/Runtime/Extensions/Effects/pixelate-pixi-filter.js.map +7 -0
  129. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-adjustment.js +8 -0
  130. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-advanced-bloom.js +8 -0
  131. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-ascii.js +8 -0
  132. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-bevel.js +8 -0
  133. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-bulge-pinch.js +8 -0
  134. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-color-map.js +8 -0
  135. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-color-replace.js +8 -0
  136. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-crt.js +8 -0
  137. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-dot.js +8 -0
  138. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-drop-shadow.js +8 -0
  139. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-glitch.js +8 -0
  140. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-glow.js +8 -0
  141. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-godray.js +8 -0
  142. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-kawase-blur.js +8 -0
  143. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-old-film.js +8 -0
  144. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-outline.js +8 -0
  145. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-pixelate.js +8 -0
  146. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-radial-blur.js +8 -0
  147. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-reflection.js +8 -0
  148. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-rgb-split.js +8 -0
  149. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-tilt-shift.js +171 -0
  150. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-twist.js +8 -0
  151. package/dist/Runtime/Extensions/Effects/pixi-filters/filter-zoom-blur.js +8 -0
  152. package/dist/Runtime/Extensions/Effects/pixi-filters/types/adjustment/types.d.ts +29 -0
  153. package/dist/Runtime/Extensions/Effects/pixi-filters/types/advanced-bloom/types.d.ts +30 -0
  154. package/dist/Runtime/Extensions/Effects/pixi-filters/types/ascii/types.d.ts +11 -0
  155. package/dist/Runtime/Extensions/Effects/pixi-filters/types/bevel/types.d.ts +25 -0
  156. package/dist/Runtime/Extensions/Effects/pixi-filters/types/bloom/types.d.ts +18 -0
  157. package/dist/Runtime/Extensions/Effects/pixi-filters/types/bulge-pinch/types.d.ts +24 -0
  158. package/dist/Runtime/Extensions/Effects/pixi-filters/types/color-map/types.d.ts +22 -0
  159. package/dist/Runtime/Extensions/Effects/pixi-filters/types/color-overlay/types.d.ts +11 -0
  160. package/dist/Runtime/Extensions/Effects/pixi-filters/types/color-replace/types.d.ts +17 -0
  161. package/dist/Runtime/Extensions/Effects/pixi-filters/types/convolution/types.d.ts +13 -0
  162. package/dist/Runtime/Extensions/Effects/pixi-filters/types/cross-hatch/types.d.ts +10 -0
  163. package/dist/Runtime/Extensions/Effects/pixi-filters/types/crt/types.d.ts +35 -0
  164. package/dist/Runtime/Extensions/Effects/pixi-filters/types/dot/types.d.ts +12 -0
  165. package/dist/Runtime/Extensions/Effects/pixi-filters/types/drop-shadow/types.d.ts +33 -0
  166. package/dist/Runtime/Extensions/Effects/pixi-filters/types/emboss/types.d.ts +11 -0
  167. package/dist/Runtime/Extensions/Effects/pixi-filters/types/glitch/types.d.ts +38 -0
  168. package/dist/Runtime/Extensions/Effects/pixi-filters/types/glow/types.d.ts +23 -0
  169. package/dist/Runtime/Extensions/Effects/pixi-filters/types/godray/types.d.ts +27 -0
  170. package/dist/Runtime/Extensions/Effects/pixi-filters/types/kawase-blur/types.d.ts +15 -0
  171. package/dist/Runtime/Extensions/Effects/pixi-filters/types/motion-blur/types.d.ts +17 -0
  172. package/dist/Runtime/Extensions/Effects/pixi-filters/types/multi-color-replace/types.d.ts +18 -0
  173. package/dist/Runtime/Extensions/Effects/pixi-filters/types/old-film/types.d.ts +33 -0
  174. package/dist/Runtime/Extensions/Effects/pixi-filters/types/outline/types.d.ts +13 -0
  175. package/dist/Runtime/Extensions/Effects/pixi-filters/types/pixelate/types.d.ts +11 -0
  176. package/dist/Runtime/Extensions/Effects/pixi-filters/types/radial-blur/types.d.ts +19 -0
  177. package/dist/Runtime/Extensions/Effects/pixi-filters/types/reflection/types.d.ts +25 -0
  178. package/dist/Runtime/Extensions/Effects/pixi-filters/types/rgb-split/types.d.ts +13 -0
  179. package/dist/Runtime/Extensions/Effects/pixi-filters/types/shockwave/types.d.ts +25 -0
  180. package/dist/Runtime/Extensions/Effects/pixi-filters/types/simple-lightmap/types.d.ts +13 -0
  181. package/dist/Runtime/Extensions/Effects/pixi-filters/types/tilt-shift/types.d.ts +19 -0
  182. package/dist/Runtime/Extensions/Effects/pixi-filters/types/twist/types.d.ts +13 -0
  183. package/dist/Runtime/Extensions/Effects/pixi-filters/types/zoom-blur/types.d.ts +28 -0
  184. package/dist/Runtime/Extensions/Effects/radial-blur-pixi-filter.js +2 -0
  185. package/dist/Runtime/Extensions/Effects/radial-blur-pixi-filter.js.map +7 -0
  186. package/dist/Runtime/Extensions/Effects/reflection-pixi-filter.js +2 -0
  187. package/dist/Runtime/Extensions/Effects/reflection-pixi-filter.js.map +7 -0
  188. package/dist/Runtime/Extensions/Effects/rgb-split-pixi-filter.js +2 -0
  189. package/dist/Runtime/Extensions/Effects/rgb-split-pixi-filter.js.map +7 -0
  190. package/dist/Runtime/Extensions/Effects/sepia-pixi-filter.js +2 -0
  191. package/dist/Runtime/Extensions/Effects/sepia-pixi-filter.js.map +7 -0
  192. package/dist/Runtime/Extensions/Effects/tilt-shift-pixi-filter.js +2 -0
  193. package/dist/Runtime/Extensions/Effects/tilt-shift-pixi-filter.js.map +7 -0
  194. package/dist/Runtime/Extensions/Effects/twist-pixi-filter.js +2 -0
  195. package/dist/Runtime/Extensions/Effects/twist-pixi-filter.js.map +7 -0
  196. package/dist/Runtime/Extensions/Effects/zoom-blur-pixi-filter.js +2 -0
  197. package/dist/Runtime/Extensions/Effects/zoom-blur-pixi-filter.js.map +7 -0
  198. package/dist/Runtime/Extensions/ExampleJsExtension/JsExtension.js +589 -0
  199. package/dist/Runtime/Extensions/ExampleJsExtension/dummyeffect.js +3 -0
  200. package/dist/Runtime/Extensions/ExampleJsExtension/dummyeffect.js.map +7 -0
  201. package/dist/Runtime/Extensions/ExampleJsExtension/dummyruntimebehavior.js +2 -0
  202. package/dist/Runtime/Extensions/ExampleJsExtension/dummyruntimebehavior.js.map +7 -0
  203. package/dist/Runtime/Extensions/ExampleJsExtension/dummyruntimeobject-pixi-renderer.js +2 -0
  204. package/dist/Runtime/Extensions/ExampleJsExtension/dummyruntimeobject-pixi-renderer.js.map +7 -0
  205. package/dist/Runtime/Extensions/ExampleJsExtension/dummyruntimeobject.js +2 -0
  206. package/dist/Runtime/Extensions/ExampleJsExtension/dummyruntimeobject.js.map +7 -0
  207. package/dist/Runtime/Extensions/ExampleJsExtension/dummywithshareddataruntimebehavior.js +2 -0
  208. package/dist/Runtime/Extensions/ExampleJsExtension/dummywithshareddataruntimebehavior.js.map +7 -0
  209. package/dist/Runtime/Extensions/ExampleJsExtension/examplejsextensiontools.js +2 -0
  210. package/dist/Runtime/Extensions/ExampleJsExtension/examplejsextensiontools.js.map +7 -0
  211. package/dist/Runtime/Extensions/FacebookInstantGames/FBInstant.d.ts +2 -0
  212. package/dist/Runtime/Extensions/FacebookInstantGames/JsExtension.js +379 -0
  213. package/dist/Runtime/Extensions/FacebookInstantGames/facebookinstantgamestools.js +2 -0
  214. package/dist/Runtime/Extensions/FacebookInstantGames/facebookinstantgamestools.js.map +7 -0
  215. package/dist/Runtime/Extensions/FileSystem/JsExtension.js +559 -0
  216. package/dist/Runtime/Extensions/FileSystem/filesystemtools.js +2 -0
  217. package/dist/Runtime/Extensions/FileSystem/filesystemtools.js.map +7 -0
  218. package/dist/Runtime/Extensions/Firebase/A_firebasejs/A_firebase-base.js +2 -0
  219. package/dist/Runtime/Extensions/Firebase/A_firebasejs/A_firebase-base.js.map +1 -0
  220. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-analytics.js +2 -0
  221. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-analytics.js.map +1 -0
  222. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-auth.js +2 -0
  223. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-auth.js.map +1 -0
  224. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-database.js +2 -0
  225. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-database.js.map +1 -0
  226. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-firestore.js +2 -0
  227. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-firestore.js.map +1 -0
  228. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-functions.js +2 -0
  229. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-functions.js.map +1 -0
  230. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-messaging.js +2 -0
  231. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-messaging.js.map +1 -0
  232. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-performance.js +2 -0
  233. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-performance.js.map +1 -0
  234. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-remote-config.js +2 -0
  235. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-remote-config.js.map +1 -0
  236. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-storage.js +2 -0
  237. package/dist/Runtime/Extensions/Firebase/A_firebasejs/B_firebase-storage.js.map +1 -0
  238. package/dist/Runtime/Extensions/Firebase/A_firebasejs/firebase.d.ts +10191 -0
  239. package/dist/Runtime/Extensions/Firebase/B_firebasetools/C_firebasetools.js +2 -0
  240. package/dist/Runtime/Extensions/Firebase/B_firebasetools/C_firebasetools.js.map +7 -0
  241. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_analyticstools.js +2 -0
  242. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_analyticstools.js.map +7 -0
  243. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_authtools.js +2 -0
  244. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_authtools.js.map +7 -0
  245. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_cloudfirestoretools.js +2 -0
  246. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_cloudfirestoretools.js.map +7 -0
  247. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_databasetools.js +2 -0
  248. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_databasetools.js.map +7 -0
  249. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_functionstools.js +2 -0
  250. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_functionstools.js.map +7 -0
  251. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_performancetools.js +2 -0
  252. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_performancetools.js.map +7 -0
  253. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_remoteconfigtools.js +2 -0
  254. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_remoteconfigtools.js.map +7 -0
  255. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_storagetools.js +2 -0
  256. package/dist/Runtime/Extensions/Firebase/B_firebasetools/D_storagetools.js.map +7 -0
  257. package/dist/Runtime/Extensions/Firebase/JsExtension.js +2323 -0
  258. package/dist/Runtime/Extensions/Inventory/inventory.js +2 -0
  259. package/dist/Runtime/Extensions/Inventory/inventory.js.map +7 -0
  260. package/dist/Runtime/Extensions/Inventory/inventorytools.js +2 -0
  261. package/dist/Runtime/Extensions/Inventory/inventorytools.js.map +7 -0
  262. package/dist/Runtime/Extensions/JsExtensionTypes.flow.js +34 -0
  263. package/dist/Runtime/Extensions/Leaderboards/JsExtension.js +299 -0
  264. package/dist/Runtime/Extensions/Leaderboards/leaderboardstools.js +2 -0
  265. package/dist/Runtime/Extensions/Leaderboards/leaderboardstools.js.map +7 -0
  266. package/dist/Runtime/Extensions/Leaderboards/sha256.d.ts +234 -0
  267. package/dist/Runtime/Extensions/Leaderboards/sha256.js +21 -0
  268. package/dist/Runtime/Extensions/Lighting/JsExtension.js +371 -0
  269. package/dist/Runtime/Extensions/Lighting/lightobstacleruntimebehavior.js +2 -0
  270. package/dist/Runtime/Extensions/Lighting/lightobstacleruntimebehavior.js.map +7 -0
  271. package/dist/Runtime/Extensions/Lighting/lightruntimeobject-pixi-renderer.js +40 -0
  272. package/dist/Runtime/Extensions/Lighting/lightruntimeobject-pixi-renderer.js.map +7 -0
  273. package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js +2 -0
  274. package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js.map +7 -0
  275. package/dist/Runtime/Extensions/LinkedObjects/linkedobjects.js +2 -0
  276. package/dist/Runtime/Extensions/LinkedObjects/linkedobjects.js.map +7 -0
  277. package/dist/Runtime/Extensions/P2P/A_peer.js +4 -0
  278. package/dist/Runtime/Extensions/P2P/A_peer.js.map +1 -0
  279. package/dist/Runtime/Extensions/P2P/B_p2ptools.js +2 -0
  280. package/dist/Runtime/Extensions/P2P/B_p2ptools.js.map +7 -0
  281. package/dist/Runtime/Extensions/P2P/JsExtension.js +483 -0
  282. package/dist/Runtime/Extensions/P2P/peerjs.d.ts +509 -0
  283. package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject-pixi-renderer.js +2 -0
  284. package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject-pixi-renderer.js.map +7 -0
  285. package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js +2 -0
  286. package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js.map +7 -0
  287. package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject-pixi-renderer.js +2 -0
  288. package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject-pixi-renderer.js.map +7 -0
  289. package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js +2 -0
  290. package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js.map +7 -0
  291. package/dist/Runtime/Extensions/ParticleSystem/pixi-particles-pixi-renderer.min.js +3 -0
  292. package/dist/Runtime/Extensions/PathfindingBehavior/PathTools.js +2 -0
  293. package/dist/Runtime/Extensions/PathfindingBehavior/PathTools.js.map +7 -0
  294. package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingobstacleruntimebehavior.js +2 -0
  295. package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingobstacleruntimebehavior.js.map +7 -0
  296. package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js +2 -0
  297. package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js.map +7 -0
  298. package/dist/Runtime/Extensions/Physics2Behavior/Box2D_v2.3.1_min.wasm.js +2 -0
  299. package/dist/Runtime/Extensions/Physics2Behavior/Box2D_v2.3.1_min.wasm.js.map +7 -0
  300. package/dist/Runtime/Extensions/Physics2Behavior/Box2D_v2.3.1_min.wasm.wasm +0 -0
  301. package/dist/Runtime/Extensions/Physics2Behavior/JsExtension.js +4072 -0
  302. package/dist/Runtime/Extensions/Physics2Behavior/box2d.d.ts +1804 -0
  303. package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js +2 -0
  304. package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js.map +7 -0
  305. package/dist/Runtime/Extensions/Physics2Behavior/physics2tools.js +2 -0
  306. package/dist/Runtime/Extensions/Physics2Behavior/physics2tools.js.map +7 -0
  307. package/dist/Runtime/Extensions/PhysicsBehavior/box2djs/box2d.js +804 -0
  308. package/dist/Runtime/Extensions/PhysicsBehavior/physicsruntimebehavior.js +2 -0
  309. package/dist/Runtime/Extensions/PhysicsBehavior/physicsruntimebehavior.js.map +7 -0
  310. package/dist/Runtime/Extensions/PlatformBehavior/benchmarks/platformerobjectruntimebehavior.benchmark.js +2 -0
  311. package/dist/Runtime/Extensions/PlatformBehavior/benchmarks/platformerobjectruntimebehavior.benchmark.js.map +7 -0
  312. package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js +2 -0
  313. package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js.map +7 -0
  314. package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js +2 -0
  315. package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js.map +7 -0
  316. package/dist/Runtime/Extensions/PlatformBehavior/platformtools.js +2 -0
  317. package/dist/Runtime/Extensions/PlatformBehavior/platformtools.js.map +7 -0
  318. package/dist/Runtime/Extensions/PlayerAuthentication/JsExtension.js +218 -0
  319. package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationcomponents.js +5 -0
  320. package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationcomponents.js.map +7 -0
  321. package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationtools.js +2 -0
  322. package/dist/Runtime/Extensions/PlayerAuthentication/playerauthenticationtools.js.map +7 -0
  323. package/dist/Runtime/Extensions/PrimitiveDrawing/pixi-graphics-extras/graphics-extras.min.js +10 -0
  324. package/dist/Runtime/Extensions/PrimitiveDrawing/pixi-graphics-extras/graphics-extras.min.js.map +1 -0
  325. package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject-pixi-renderer.js +2 -0
  326. package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject-pixi-renderer.js.map +7 -0
  327. package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js +2 -0
  328. package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js.map +7 -0
  329. package/dist/Runtime/Extensions/Screenshot/JsExtension.js +68 -0
  330. package/dist/Runtime/Extensions/Screenshot/screenshottools.js +2 -0
  331. package/dist/Runtime/Extensions/Screenshot/screenshottools.js.map +7 -0
  332. package/dist/Runtime/Extensions/Shopify/shopify-buy.umd.polyfilled.min.js +2 -0
  333. package/dist/Runtime/Extensions/Shopify/shopifytools.js +2 -0
  334. package/dist/Runtime/Extensions/Shopify/shopifytools.js.map +7 -0
  335. package/dist/Runtime/Extensions/SpatialSound/JsExtension.js +92 -0
  336. package/dist/Runtime/Extensions/SpatialSound/howler.spatial.min.js +2 -0
  337. package/dist/Runtime/Extensions/SpatialSound/spatialsoundtools.js +2 -0
  338. package/dist/Runtime/Extensions/SpatialSound/spatialsoundtools.js.map +7 -0
  339. package/dist/Runtime/Extensions/SystemInfo/systeminfotools.js +2 -0
  340. package/dist/Runtime/Extensions/SystemInfo/systeminfotools.js.map +7 -0
  341. package/dist/Runtime/Extensions/TextEntryObject/textentryruntimeobject-pixi-renderer.js +2 -0
  342. package/dist/Runtime/Extensions/TextEntryObject/textentryruntimeobject-pixi-renderer.js.map +7 -0
  343. package/dist/Runtime/Extensions/TextEntryObject/textentryruntimeobject.js +2 -0
  344. package/dist/Runtime/Extensions/TextEntryObject/textentryruntimeobject.js.map +7 -0
  345. package/dist/Runtime/Extensions/TextInput/JsExtension.js +790 -0
  346. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js +2 -0
  347. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js.map +7 -0
  348. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js +2 -0
  349. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js.map +7 -0
  350. package/dist/Runtime/Extensions/TextObject/textruntimeobject-pixi-renderer.js +2 -0
  351. package/dist/Runtime/Extensions/TextObject/textruntimeobject-pixi-renderer.js.map +7 -0
  352. package/dist/Runtime/Extensions/TextObject/textruntimeobject.js +2 -0
  353. package/dist/Runtime/Extensions/TextObject/textruntimeobject.js.map +7 -0
  354. package/dist/Runtime/Extensions/TileMap/JsExtension.js +1653 -0
  355. package/dist/Runtime/Extensions/TileMap/TileMapRuntimeManager.js +2 -0
  356. package/dist/Runtime/Extensions/TileMap/TileMapRuntimeManager.js.map +7 -0
  357. package/dist/Runtime/Extensions/TileMap/collision/TileMapCollisionMaskRenderer.js +2 -0
  358. package/dist/Runtime/Extensions/TileMap/collision/TileMapCollisionMaskRenderer.js.map +7 -0
  359. package/dist/Runtime/Extensions/TileMap/collision/TransformedTileMap.js +2 -0
  360. package/dist/Runtime/Extensions/TileMap/collision/TransformedTileMap.js.map +7 -0
  361. package/dist/Runtime/Extensions/TileMap/example/anotherIsland.json +5769 -0
  362. package/dist/Runtime/Extensions/TileMap/example/island.json +5823 -0
  363. package/dist/Runtime/Extensions/TileMap/helper/TileMapHelper.d.ts +25 -0
  364. package/dist/Runtime/Extensions/TileMap/helper/TileMapHelper.js +2 -0
  365. package/dist/Runtime/Extensions/TileMap/helper/TileMapHelper.js.map +7 -0
  366. package/dist/Runtime/Extensions/TileMap/helper/dts/index.d.ts +16 -0
  367. package/dist/Runtime/Extensions/TileMap/helper/dts/index.d.ts.map +1 -0
  368. package/dist/Runtime/Extensions/TileMap/helper/dts/load/TileMapFileContent.d.ts +12 -0
  369. package/dist/Runtime/Extensions/TileMap/helper/dts/load/TileMapFileContent.d.ts.map +1 -0
  370. package/dist/Runtime/Extensions/TileMap/helper/dts/load/TileMapLoader.d.ts +18 -0
  371. package/dist/Runtime/Extensions/TileMap/helper/dts/load/TileMapLoader.d.ts.map +1 -0
  372. package/dist/Runtime/Extensions/TileMap/helper/dts/load/ldtk/LDtkFormat.d.ts +589 -0
  373. package/dist/Runtime/Extensions/TileMap/helper/dts/load/ldtk/LDtkFormat.d.ts.map +1 -0
  374. package/dist/Runtime/Extensions/TileMap/helper/dts/load/ldtk/LDtkTileMapLoader.d.ts +16 -0
  375. package/dist/Runtime/Extensions/TileMap/helper/dts/load/ldtk/LDtkTileMapLoader.d.ts.map +1 -0
  376. package/dist/Runtime/Extensions/TileMap/helper/dts/load/ldtk/LDtkTileMapLoaderHelper.d.ts +5 -0
  377. package/dist/Runtime/Extensions/TileMap/helper/dts/load/ldtk/LDtkTileMapLoaderHelper.d.ts.map +1 -0
  378. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledFormat.d.ts +343 -0
  379. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledFormat.d.ts.map +1 -0
  380. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledTileMapLoader.d.ts +16 -0
  381. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledTileMapLoader.d.ts.map +1 -0
  382. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledTileMapLoader.spec.d.ts +2 -0
  383. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledTileMapLoader.spec.d.ts.map +1 -0
  384. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledTileMapLoaderHelper.d.ts +37 -0
  385. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledTileMapLoaderHelper.d.ts.map +1 -0
  386. package/dist/Runtime/Extensions/TileMap/helper/dts/model/CommonTypes.d.ts +5 -0
  387. package/dist/Runtime/Extensions/TileMap/helper/dts/model/CommonTypes.d.ts.map +1 -0
  388. package/dist/Runtime/Extensions/TileMap/helper/dts/model/GID.d.ts +45 -0
  389. package/dist/Runtime/Extensions/TileMap/helper/dts/model/GID.d.ts.map +1 -0
  390. package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts +361 -0
  391. package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts.map +1 -0
  392. package/dist/Runtime/Extensions/TileMap/helper/dts/render/ResourceCache.d.ts +27 -0
  393. package/dist/Runtime/Extensions/TileMap/helper/dts/render/ResourceCache.d.ts.map +1 -0
  394. package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapManager.d.ts +70 -0
  395. package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapManager.d.ts.map +1 -0
  396. package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapPixiHelper.d.ts +56 -0
  397. package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapPixiHelper.d.ts.map +1 -0
  398. package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileTextureCache.d.ts +24 -0
  399. package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileTextureCache.d.ts.map +1 -0
  400. package/dist/Runtime/Extensions/TileMap/helper/dts/render/ldtk/LDtkPixiHelper.d.ts +26 -0
  401. package/dist/Runtime/Extensions/TileMap/helper/dts/render/ldtk/LDtkPixiHelper.d.ts.map +1 -0
  402. package/dist/Runtime/Extensions/TileMap/helper/dts/render/tiled/TiledPixiHelper.d.ts +21 -0
  403. package/dist/Runtime/Extensions/TileMap/helper/dts/render/tiled/TiledPixiHelper.d.ts.map +1 -0
  404. package/dist/Runtime/Extensions/TileMap/helper/dts/types/index.d.ts +12 -0
  405. package/dist/Runtime/Extensions/TileMap/helper/dts/types/index.d.ts.map +1 -0
  406. package/dist/Runtime/Extensions/TileMap/pako/dist/pako.d.ts +166 -0
  407. package/dist/Runtime/Extensions/TileMap/pako/dist/pako.min.js +2 -0
  408. package/dist/Runtime/Extensions/TileMap/pixi-tilemap/dist/global-pixi-tilemap.d.ts +23 -0
  409. package/dist/Runtime/Extensions/TileMap/pixi-tilemap/dist/pixi-tilemap.d.ts +270 -0
  410. package/dist/Runtime/Extensions/TileMap/pixi-tilemap/dist/pixi-tilemap.umd.js +74 -0
  411. package/dist/Runtime/Extensions/TileMap/pixi-tilemap/dist/pixi-tilemap.umd.js.map +7 -0
  412. package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js +2 -0
  413. package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js.map +7 -0
  414. package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js +2 -0
  415. package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js.map +7 -0
  416. package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js +2 -0
  417. package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js.map +7 -0
  418. package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject-pixi-renderer.js +2 -0
  419. package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject-pixi-renderer.js.map +7 -0
  420. package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js +2 -0
  421. package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js.map +7 -0
  422. package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js +2 -0
  423. package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js.map +7 -0
  424. package/dist/Runtime/Extensions/TweenBehavior/JsExtension.js +1087 -0
  425. package/dist/Runtime/Extensions/TweenBehavior/shifty.d.ts +839 -0
  426. package/dist/Runtime/Extensions/TweenBehavior/shifty.js +5 -0
  427. package/dist/Runtime/Extensions/TweenBehavior/shifty.js.map +1 -0
  428. package/dist/Runtime/Extensions/TweenBehavior/shifty_setup.js +2 -0
  429. package/dist/Runtime/Extensions/TweenBehavior/shifty_setup.js.map +7 -0
  430. package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js +2 -0
  431. package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js.map +7 -0
  432. package/dist/Runtime/Extensions/TweenBehavior/tweentools.js +2 -0
  433. package/dist/Runtime/Extensions/TweenBehavior/tweentools.js.map +7 -0
  434. package/dist/Runtime/Extensions/Video/JsExtension.js +694 -0
  435. package/dist/Runtime/Extensions/Video/videoruntimeobject-pixi-renderer.js +2 -0
  436. package/dist/Runtime/Extensions/Video/videoruntimeobject-pixi-renderer.js.map +7 -0
  437. package/dist/Runtime/Extensions/Video/videoruntimeobject.js +2 -0
  438. package/dist/Runtime/Extensions/Video/videoruntimeobject.js.map +7 -0
  439. package/dist/Runtime/FacebookInstantGames/fbapp-config.json +17 -0
  440. package/dist/Runtime/FacebookInstantGames/index.html +68 -0
  441. package/dist/Runtime/Model3DManager.js +2 -0
  442. package/dist/Runtime/Model3DManager.js.map +7 -0
  443. package/dist/Runtime/RuntimeCustomObjectLayer.js +2 -0
  444. package/dist/Runtime/RuntimeCustomObjectLayer.js.map +7 -0
  445. package/dist/Runtime/RuntimeInstanceContainer.js +2 -0
  446. package/dist/Runtime/RuntimeInstanceContainer.js.map +7 -0
  447. package/dist/Runtime/RuntimeLayer.js +2 -0
  448. package/dist/Runtime/RuntimeLayer.js.map +7 -0
  449. package/dist/Runtime/affinetransformation.js +2 -0
  450. package/dist/Runtime/affinetransformation.js.map +7 -0
  451. package/dist/Runtime/debugger-client/abstract-debugger-client.js +2 -0
  452. package/dist/Runtime/debugger-client/abstract-debugger-client.js.map +7 -0
  453. package/dist/Runtime/debugger-client/hot-reloader.js +2 -0
  454. package/dist/Runtime/debugger-client/hot-reloader.js.map +7 -0
  455. package/dist/Runtime/debugger-client/websocket-debugger-client.js +2 -0
  456. package/dist/Runtime/debugger-client/websocket-debugger-client.js.map +7 -0
  457. package/dist/Runtime/debugger-client/window-message-debugger-client.js +2 -0
  458. package/dist/Runtime/debugger-client/window-message-debugger-client.js.map +7 -0
  459. package/dist/Runtime/events-tools/cameratools.js +2 -0
  460. package/dist/Runtime/events-tools/cameratools.js.map +7 -0
  461. package/dist/Runtime/events-tools/commontools.js +2 -0
  462. package/dist/Runtime/events-tools/commontools.js.map +7 -0
  463. package/dist/Runtime/events-tools/inputtools.js +2 -0
  464. package/dist/Runtime/events-tools/inputtools.js.map +7 -0
  465. package/dist/Runtime/events-tools/networktools.js +2 -0
  466. package/dist/Runtime/events-tools/networktools.js.map +7 -0
  467. package/dist/Runtime/events-tools/objecttools.js +2 -0
  468. package/dist/Runtime/events-tools/objecttools.js.map +7 -0
  469. package/dist/Runtime/events-tools/runtimescenetools.js +2 -0
  470. package/dist/Runtime/events-tools/runtimescenetools.js.map +7 -0
  471. package/dist/Runtime/events-tools/soundtools.js +2 -0
  472. package/dist/Runtime/events-tools/soundtools.js.map +7 -0
  473. package/dist/Runtime/events-tools/storagetools.js +2 -0
  474. package/dist/Runtime/events-tools/storagetools.js.map +7 -0
  475. package/dist/Runtime/events-tools/stringtools.js +3 -0
  476. package/dist/Runtime/events-tools/stringtools.js.map +7 -0
  477. package/dist/Runtime/events-tools/variabletools.js +2 -0
  478. package/dist/Runtime/events-tools/variabletools.js.map +7 -0
  479. package/dist/Runtime/events-tools/windowtools.js +2 -0
  480. package/dist/Runtime/events-tools/windowtools.js.map +7 -0
  481. package/dist/Runtime/fontfaceobserver-font-manager/fontfaceobserver-font-manager.js +2 -0
  482. package/dist/Runtime/fontfaceobserver-font-manager/fontfaceobserver-font-manager.js.map +7 -0
  483. package/dist/Runtime/fontfaceobserver-font-manager/fontfaceobserver.js +16 -0
  484. package/dist/Runtime/force.js +2 -0
  485. package/dist/Runtime/force.js.map +7 -0
  486. package/dist/Runtime/gd.js +2 -0
  487. package/dist/Runtime/gd.js.map +7 -0
  488. package/dist/Runtime/howler-sound-manager/howler-sound-manager.js +2 -0
  489. package/dist/Runtime/howler-sound-manager/howler-sound-manager.js.map +7 -0
  490. package/dist/Runtime/howler-sound-manager/howler.min.js +3 -0
  491. package/dist/Runtime/index.html +55 -0
  492. package/dist/Runtime/inputmanager.js +2 -0
  493. package/dist/Runtime/inputmanager.js.map +7 -0
  494. package/dist/Runtime/jsonmanager.js +2 -0
  495. package/dist/Runtime/jsonmanager.js.map +7 -0
  496. package/dist/Runtime/layer.js +2 -0
  497. package/dist/Runtime/layer.js.map +7 -0
  498. package/dist/Runtime/libs/CocoonJS/cocoon.min.js +4 -0
  499. package/dist/Runtime/libs/jshashtable.js +2 -0
  500. package/dist/Runtime/libs/jshashtable.js.map +7 -0
  501. package/dist/Runtime/libs/rbush.js +624 -0
  502. package/dist/Runtime/logger.js +2 -0
  503. package/dist/Runtime/logger.js.map +7 -0
  504. package/dist/Runtime/oncetriggers.js +2 -0
  505. package/dist/Runtime/oncetriggers.js.map +7 -0
  506. package/dist/Runtime/pixi-renderers/CustomObjectPixiRenderer.js +2 -0
  507. package/dist/Runtime/pixi-renderers/CustomObjectPixiRenderer.js.map +7 -0
  508. package/dist/Runtime/pixi-renderers/DebuggerPixiRenderer.js +2 -0
  509. package/dist/Runtime/pixi-renderers/DebuggerPixiRenderer.js.map +7 -0
  510. package/dist/Runtime/pixi-renderers/RuntimeInstanceContainerPixiRenderer.js +1 -0
  511. package/dist/Runtime/pixi-renderers/RuntimeInstanceContainerPixiRenderer.js.map +7 -0
  512. package/dist/Runtime/pixi-renderers/ThreeAddons.js +2 -0
  513. package/dist/Runtime/pixi-renderers/draco/gltf/draco_decoder.wasm +0 -0
  514. package/dist/Runtime/pixi-renderers/draco/gltf/draco_wasm_wrapper.js +116 -0
  515. package/dist/Runtime/pixi-renderers/layer-pixi-renderer.js +15 -0
  516. package/dist/Runtime/pixi-renderers/layer-pixi-renderer.js.map +7 -0
  517. package/dist/Runtime/pixi-renderers/loadingscreen-pixi-renderer.js +2 -0
  518. package/dist/Runtime/pixi-renderers/loadingscreen-pixi-renderer.js.map +7 -0
  519. package/dist/Runtime/pixi-renderers/pixi-bitmapfont-manager.js +2 -0
  520. package/dist/Runtime/pixi-renderers/pixi-bitmapfont-manager.js.map +7 -0
  521. package/dist/Runtime/pixi-renderers/pixi-effects-manager.js +2 -0
  522. package/dist/Runtime/pixi-renderers/pixi-effects-manager.js.map +7 -0
  523. package/dist/Runtime/pixi-renderers/pixi-filters-tools.js +2 -0
  524. package/dist/Runtime/pixi-renderers/pixi-filters-tools.js.map +7 -0
  525. package/dist/Runtime/pixi-renderers/pixi-image-manager.js +2 -0
  526. package/dist/Runtime/pixi-renderers/pixi-image-manager.js.map +7 -0
  527. package/dist/Runtime/pixi-renderers/pixi.js +11 -0
  528. package/dist/Runtime/pixi-renderers/runtimegame-pixi-renderer.js +2 -0
  529. package/dist/Runtime/pixi-renderers/runtimegame-pixi-renderer.js.map +7 -0
  530. package/dist/Runtime/pixi-renderers/runtimescene-pixi-renderer.js +3 -0
  531. package/dist/Runtime/pixi-renderers/runtimescene-pixi-renderer.js.map +7 -0
  532. package/dist/Runtime/pixi-renderers/spriteruntimeobject-pixi-renderer.js +2 -0
  533. package/dist/Runtime/pixi-renderers/spriteruntimeobject-pixi-renderer.js.map +7 -0
  534. package/dist/Runtime/pixi-renderers/three.js +7 -0
  535. package/dist/Runtime/polygon.js +2 -0
  536. package/dist/Runtime/polygon.js.map +7 -0
  537. package/dist/Runtime/profiler.js +2 -0
  538. package/dist/Runtime/profiler.js.map +7 -0
  539. package/dist/Runtime/runtimebehavior.js +2 -0
  540. package/dist/Runtime/runtimebehavior.js.map +7 -0
  541. package/dist/Runtime/runtimegame.js +2 -0
  542. package/dist/Runtime/runtimegame.js.map +7 -0
  543. package/dist/Runtime/runtimeobject.js +2 -0
  544. package/dist/Runtime/runtimeobject.js.map +7 -0
  545. package/dist/Runtime/runtimescene.js +2 -0
  546. package/dist/Runtime/runtimescene.js.map +7 -0
  547. package/dist/Runtime/runtimewatermark.js +100 -0
  548. package/dist/Runtime/runtimewatermark.js.map +7 -0
  549. package/dist/Runtime/scenestack.js +2 -0
  550. package/dist/Runtime/scenestack.js.map +7 -0
  551. package/dist/Runtime/splash/gd-logo-dark-colored.js +2 -0
  552. package/dist/Runtime/splash/gd-logo-dark-colored.js.map +7 -0
  553. package/dist/Runtime/splash/gd-logo-dark.js +2 -0
  554. package/dist/Runtime/splash/gd-logo-dark.js.map +7 -0
  555. package/dist/Runtime/splash/gd-logo-light-colored.js +2 -0
  556. package/dist/Runtime/splash/gd-logo-light-colored.js.map +7 -0
  557. package/dist/Runtime/splash/gd-logo-light.js +2 -0
  558. package/dist/Runtime/splash/gd-logo-light.js.map +7 -0
  559. package/dist/Runtime/spriteruntimeobject.js +2 -0
  560. package/dist/Runtime/spriteruntimeobject.js.map +7 -0
  561. package/dist/Runtime/timemanager.js +2 -0
  562. package/dist/Runtime/timemanager.js.map +7 -0
  563. package/dist/Runtime/timer.js +2 -0
  564. package/dist/Runtime/timer.js.map +7 -0
  565. package/dist/Runtime/types/global-pixi.d.ts +22 -0
  566. package/dist/Runtime/types/global-three-addons.d.ts +9 -0
  567. package/dist/Runtime/types/global-three.d.ts +3 -0
  568. package/dist/Runtime/types/global-types.d.ts +61 -0
  569. package/dist/Runtime/types/howler.d.ts +313 -0
  570. package/dist/Runtime/types/project-data.d.ts +276 -0
  571. package/dist/Runtime/variable.js +2 -0
  572. package/dist/Runtime/variable.js.map +7 -0
  573. package/dist/Runtime/variablescontainer.js +2 -0
  574. package/dist/Runtime/variablescontainer.js.map +7 -0
  575. package/dist/lib/libGD.cjs +22 -0
  576. package/dist/lib/libGD.wasm +0 -0
  577. package/dist/loaders.js +1 -0
  578. package/package.json +24 -10
  579. package/src/downloadGD.js +0 -70
  580. package/src/index.js +21 -14
  581. package/examples/create-objects-from-json/assets/Blank button.png +0 -0
  582. package/examples/create-objects-from-json/game.json +0 -258
  583. package/examples/create-objects-from-json/index.js +0 -50
  584. package/examples/create-objects-from-json/mylist.json +0 -7
  585. package/examples/export-game/game.json +0 -205
  586. package/examples/export-game/index.js +0 -13
  587. package/src/CaseSensitiveSlug.js +0 -34
  588. package/src/EventsFunctionsExtensionsLoader/LocalEventsFunctionCodeWriter.js +0 -56
  589. package/src/EventsFunctionsExtensionsLoader/MetadataDeclarationHelpers.js +0 -489
  590. package/src/EventsFunctionsExtensionsLoader/index.js +0 -451
  591. package/src/JsExtensionsLoader/LocalJsExtensionsFinder.js +0 -42
  592. package/src/JsExtensionsLoader/LocalJsExtensionsLoader.js +0 -57
  593. package/src/JsExtensionsLoader/index.js +0 -101
  594. package/src/LocalFileSystem.js +0 -158
  595. package/src/LocalProjectOpener.js +0 -46
  596. package/src/LocalProjectWriter.js +0 -96
  597. package/src/MapFor.js +0 -46
  598. package/src/ObjectSplitter.js +0 -187
  599. package/src/Serializer.js +0 -35
  600. package/src/build.js +0 -51
  601. package/src/runtime-files-list.js +0 -143
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../GDevelop/Extensions/ParticleSystem/particleemitterobject-pixi-renderer.ts"],
4
+ "sourcesContent": ["/*\nGDevelop - Particle System Extension\nCopyright (c) 2010-2016 Florian Rival (Florian.Rival@gmail.com)\nThis project is released under the MIT License.\n*/\n\nnamespace gdjs {\n import PIXI = GlobalPIXIModule.PIXI;\n export class ParticleEmitterObjectPixiRenderer {\n renderer: any;\n emitter: any;\n started: boolean = false;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n runtimeObject: gdjs.RuntimeObject,\n objectData: any\n ) {\n let texture = null;\n const graphics = new PIXI.Graphics();\n graphics.lineStyle(0, 0, 0);\n graphics.beginFill(gdjs.rgbToHexNumber(255, 255, 255), 1);\n if (objectData.rendererType === 'Point') {\n graphics.drawCircle(0, 0, objectData.rendererParam1);\n } else if (objectData.rendererType === 'Line') {\n graphics.drawRect(\n 0,\n 0,\n objectData.rendererParam1,\n objectData.rendererParam2\n );\n\n // Draw an almost-invisible rectangle in the left hand to force PIXI to take a full texture with our line at the right hand\n graphics.beginFill(gdjs.rgbToHexNumber(255, 255, 255), 0.001);\n graphics.drawRect(\n 0,\n 0,\n objectData.rendererParam1,\n objectData.rendererParam2\n );\n } else if (objectData.textureParticleName) {\n const sprite = new PIXI.Sprite(\n (instanceContainer\n .getGame()\n .getImageManager() as gdjs.PixiImageManager).getPIXITexture(\n objectData.textureParticleName\n )\n );\n sprite.width = objectData.rendererParam1;\n sprite.height = objectData.rendererParam2;\n graphics.addChild(sprite);\n } else {\n graphics.drawRect(\n 0,\n 0,\n objectData.rendererParam1,\n objectData.rendererParam2\n );\n }\n graphics.endFill();\n\n // Render the texture from graphics using the PIXI Renderer.\n // TODO: could be optimized by generating the texture only once per object type,\n // instead of at each object creation.\n const pixiRenderer = instanceContainer\n .getGame()\n .getRenderer()\n .getPIXIRenderer();\n //@ts-expect-error Pixi has wrong type definitions for this method\n texture = pixiRenderer.generateTexture(graphics);\n const config = {\n color: {\n list: [\n {\n value: gdjs\n .rgbToHexNumber(\n objectData.particleRed1,\n objectData.particleGreen1,\n objectData.particleBlue1\n )\n .toString(16),\n time: 0,\n },\n {\n value: gdjs\n .rgbToHexNumber(\n objectData.particleRed2,\n objectData.particleGreen2,\n objectData.particleBlue2\n )\n .toString(16),\n time: 1,\n },\n ],\n isStepped: false,\n },\n acceleration: {\n x: objectData.particleGravityX,\n y: objectData.particleGravityY,\n },\n lifetime: {\n min: objectData.particleLifeTimeMin,\n max: objectData.particleLifeTimeMax,\n },\n // A negative flow is \"infinite flow\" (all particles burst)\n frequency: objectData.flow < 0 ? 0.0001 : 1.0 / objectData.flow,\n spawnChance: 1,\n particlesPerWave: objectData.flow < 0 ? objectData.maxParticleNb : 1,\n maxParticles: objectData.maxParticleNb,\n // Lifetime can be computed from the tank (the number of particles available)\n // and the flow (number of particles emitted per seconds)\n emitterLifetime: ParticleEmitterObjectPixiRenderer.computeLifetime(\n objectData.flow,\n objectData.tank\n ),\n pos: { x: 0, y: 0 },\n addAtBack: false,\n spawnType: 'circle',\n spawnCircle: { x: 0, y: 0, r: objectData.zoneRadius },\n };\n // @ts-ignore\n config.speed = {\n list: [{ time: 0, value: objectData.emitterForceMax }],\n minimumSpeedMultiplier:\n objectData.emitterForceMax !== 0\n ? objectData.emitterForceMin / objectData.emitterForceMax\n : 1,\n isStepped: false,\n };\n // @ts-ignore\n config.alpha = {\n list: [\n { time: 0, value: objectData.particleAlpha1 / 255.0 },\n { time: 1, value: objectData.particleAlpha2 / 255.0 },\n ],\n isStepped: false,\n };\n let size1 = objectData.particleSize1 / 100;\n let size2 = objectData.particleSize2 / 100;\n const sizeRandom1 = objectData.particleSizeRandomness1 / 100;\n const sizeRandom2 = objectData.particleSizeRandomness2 / 100;\n const m = sizeRandom2 !== 0 ? (1 + sizeRandom1) / (1 + sizeRandom2) : 1;\n // @ts-ignore\n config.scale = {\n list: [\n { time: 0, value: size1 * (1 + sizeRandom1) },\n { time: 1, value: size2 * (1 + sizeRandom2) },\n ],\n minimumScaleMultiplier: m,\n isStepped: false,\n };\n // Angle of the spray cone\n // @ts-ignore\n config.startRotation = {\n min: -objectData.emitterAngleB / 2.0,\n max: objectData.emitterAngleB / 2.0,\n };\n // Rotation speed of the particles\n // @ts-ignore\n config.rotationSpeed = {\n min: objectData.particleAngle1,\n max: objectData.particleAngle2,\n };\n // @ts-ignore\n config.blendMode = objectData.additive ? 'ADD' : 'NORMAL';\n this.renderer = new PIXI.Container();\n // The embedded particle emitter is supposed to be the last minor version\n // of the version 4 of the particle emitter object\n // See source https://github.com/pixijs/particle-emitter/blob/v4.3.1/src/Emitter.ts\n // @ts-ignore\n this.emitter = new PIXI.particles.Emitter(this.renderer, texture, config);\n this.start();\n const layer = instanceContainer.getLayer(runtimeObject.getLayer());\n if (layer) {\n layer\n .getRenderer()\n .addRendererObject(this.renderer, runtimeObject.getZOrder());\n }\n }\n\n getRendererObject() {\n return this.renderer;\n }\n\n update(delta: float): void {\n this.emitter.update(delta);\n if (!this.started && this.getParticleCount() > 0) {\n this.started = true;\n }\n }\n\n setPosition(x: number, y: number): void {\n this.emitter.spawnPos.x = x;\n this.emitter.spawnPos.y = y;\n }\n\n setAngle(angle1: float, angle2: float): void {\n this.emitter.minStartRotation = angle1;\n this.emitter.maxStartRotation = angle2;\n }\n\n setForce(min: float, max: float): void {\n // If max force is zero, PIXI seems to not be able to compute correctly\n // the angle of the emitter, resulting in it staying at 0\u00B0 or 180\u00B0.\n // See https://github.com/4ian/GDevelop/issues/4312.\n const _max = max || 0.000001;\n this.emitter.startSpeed.value = _max;\n this.emitter.minimumSpeedMultiplier = min / _max;\n }\n\n setZoneRadius(radius: float): void {\n this.emitter.spawnCircle.radius = radius;\n }\n\n setLifeTime(min: float, max: float): void {\n this.emitter.minLifetime = min;\n this.emitter.maxLifetime = max;\n }\n\n setGravity(x: float, y: float): void {\n this.emitter.acceleration.x = x;\n this.emitter.acceleration.y = y;\n }\n\n setColor(\n r1: number,\n g1: number,\n b1: number,\n r2: number,\n g2: number,\n b2: number\n ): void {\n this.emitter.startColor.value.r = r1;\n this.emitter.startColor.value.g = g1;\n this.emitter.startColor.value.b = b1;\n this.emitter.startColor.next = this.emitter.startColor.next || {\n time: 1,\n value: {},\n };\n this.emitter.startColor.next.value.r = r2;\n this.emitter.startColor.next.value.g = g2;\n this.emitter.startColor.next.value.b = b2;\n }\n\n setSize(size1: float, size2: float): void {\n this.emitter.startScale.value = size1 / 100.0;\n if (this.emitter.startScale.next) {\n this.emitter.startScale.next.value = size2 / 100.0;\n }\n }\n\n setParticleRotationSpeed(min: float, max: float): void {\n this.emitter.minRotationSpeed = min;\n this.emitter.maxRotationSpeed = max;\n }\n\n setMaxParticlesCount(count: float): void {\n this.emitter.maxParticles = count;\n }\n\n setAdditiveRendering(enabled: boolean): void {\n this.emitter.particleBlendMode = enabled\n ? PIXI.BLEND_MODES.ADD\n : PIXI.BLEND_MODES.NORMAL;\n }\n\n setAlpha(alpha1: number, alpha2: number): void {\n this.emitter.startAlpha.value = alpha1 / 255.0;\n if (this.emitter.startAlpha.next) {\n this.emitter.startAlpha.next.value = alpha2 / 255.0;\n }\n }\n\n setFlow(flow: number, tank: number): void {\n this.emitter.frequency = flow < 0 ? 0.0001 : 1.0 / flow;\n this.emitter.emitterLifetime = ParticleEmitterObjectPixiRenderer.computeLifetime(\n flow,\n tank\n );\n }\n\n resetEmission(flow: number, tank: number): void {\n this.setFlow(flow, tank);\n const wasEmitting = this.emitter.emit;\n // The only way to recompute emitter lifetime is to start the emitter.\n this.start();\n if (!wasEmitting) this.stop();\n }\n\n isTextureNameValid(\n texture: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): boolean {\n const invalidPixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getInvalidPIXITexture();\n const pixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getPIXITexture(texture);\n return pixiTexture.valid && pixiTexture !== invalidPixiTexture;\n }\n\n setTextureName(\n texture: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): void {\n const invalidPixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getInvalidPIXITexture();\n const pixiTexture = instanceContainer\n .getGame()\n .getImageManager()\n .getPIXITexture(texture);\n if (pixiTexture.valid && pixiTexture !== invalidPixiTexture) {\n this.emitter.particleImages[0] = pixiTexture;\n }\n }\n\n getParticleCount(): integer {\n return this.emitter.particleCount;\n }\n\n stop(): void {\n this.emitter.emit = false;\n }\n\n start(): void {\n this.emitter.emit = true;\n }\n\n recreate(): void {\n this.emitter.cleanup();\n }\n\n destroy(): void {\n this.emitter.destroy();\n }\n\n hasStarted(): boolean {\n return this.started;\n }\n\n static computeLifetime(flow: number, tank: number): float {\n if (tank < 0) return -1;\n else if (flow < 0) return 0.001;\n else return (tank + 0.1) / flow;\n }\n }\n\n // @ts-ignore - Register the class to let the engine use it.\n export const ParticleEmitterObjectRenderer = ParticleEmitterObjectPixiRenderer;\n export type ParticleEmitterObjectRenderer = ParticleEmitterObjectPixiRenderer;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["gdjs", "PIXI", "ParticleEmitterObjectPixiRenderer", "instanceContainer", "runtimeObject", "objectData", "texture", "graphics", "sprite", "config", "size1", "size2", "sizeRandom1", "sizeRandom2", "m", "layer", "delta", "x", "y", "angle1", "angle2", "min", "max", "_max", "radius", "r1", "g1", "b1", "r2", "g2", "b2", "count", "enabled", "alpha1", "alpha2", "flow", "tank", "wasEmitting", "invalidPixiTexture", "pixiTexture"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var gdjs;(t=>{class s extends t.RuntimeObject{angleA;angleB;forceMin;forceMax;zoneRadius;lifeTimeMin;lifeTimeMax;gravityX;gravityY;colorR1;colorR2;colorG1;colorG2;colorB1;colorB2;size1;size2;alpha1;alpha2;rendererType;rendererParam1;rendererParam2;texture;flow;tank;destroyWhenNoParticles;particleRotationMinSpeed;particleRotationMaxSpeed;maxParticlesCount;additiveRendering;jumpForwardInTimeOnCreation;_jumpForwardInTimeCompleted=!1;_posDirty=!0;_angleDirty=!0;_forceDirty=!0;_zoneRadiusDirty=!0;_lifeTimeDirty=!0;_gravityDirty=!0;_colorDirty=!0;_sizeDirty=!0;_alphaDirty=!0;_flowDirty=!0;_tankDirty=!0;_particleRotationSpeedDirty=!0;_maxParticlesCountDirty=!0;_additiveRenderingDirty=!0;_textureDirty;_renderer;constructor(e,i){super(e,i),this._renderer=new t.ParticleEmitterObjectRenderer(e,this,i),this.angleA=i.emitterAngleA,this.angleB=i.emitterAngleB,this.forceMin=i.emitterForceMin,this.forceMax=i.emitterForceMax,this.zoneRadius=i.zoneRadius,this.lifeTimeMin=i.particleLifeTimeMin,this.lifeTimeMax=i.particleLifeTimeMax,this.gravityX=i.particleGravityX,this.gravityY=i.particleGravityY,this.colorR1=i.particleRed1,this.colorR2=i.particleRed2,this.colorG1=i.particleGreen1,this.colorG2=i.particleGreen2,this.colorB1=i.particleBlue1,this.colorB2=i.particleBlue2,this.size1=i.particleSize1,this.size2=i.particleSize2,this.alpha1=i.particleAlpha1,this.alpha2=i.particleAlpha2,this.rendererType=i.rendererType,this.rendererParam1=i.rendererParam1,this.rendererParam2=i.rendererParam2,this.texture=i.textureParticleName,this.flow=i.flow,this.tank=i.tank,this.destroyWhenNoParticles=i.destroyWhenNoParticles,this.particleRotationMinSpeed=i.particleAngle1,this.particleRotationMaxSpeed=i.particleAngle2,this.maxParticlesCount=i.maxParticleNb,this.additiveRendering=i.additive,this.jumpForwardInTimeOnCreation=i.jumpForwardInTimeOnCreation,this._textureDirty=this.texture!=="",this.onCreated()}setX(e){this.x!==e&&(this._posDirty=!0),super.setX(e)}setY(e){this.y!==e&&(this._posDirty=!0),super.setY(e)}setAngle(e){this.angle!==e&&(this._angleDirty=!0),super.setAngle(e)}getRendererObject(){return this._renderer.getRendererObject()}updateFromObjectData(e,i){return e.emitterAngleA!==i.emitterAngleA&&this.setEmitterAngleA(i.emitterAngleA),e.emitterAngleB!==i.emitterAngleB&&this.setEmitterAngleB(i.emitterAngleB),e.emitterForceMin!==i.emitterForceMin&&this.setEmitterForceMin(i.emitterForceMin),e.particleAngle1!==i.particleAngle1&&this.setParticleRotationMinSpeed(i.particleAngle1),e.particleAngle2!==i.particleAngle2&&this.setParticleRotationMaxSpeed(i.particleAngle2),e.maxParticleNb!==i.maxParticleNb&&this.setMaxParticlesCount(i.maxParticleNb),e.additive!==i.additive&&this.setAdditiveRendering(i.additive),e.emitterForceMax!==i.emitterForceMax&&this.setEmitterForceMax(i.emitterForceMax),e.zoneRadius!==i.zoneRadius&&this.setZoneRadius(i.zoneRadius),e.particleLifeTimeMin!==i.particleLifeTimeMin&&this.setParticleLifeTimeMin(i.particleLifeTimeMin),e.particleLifeTimeMax!==i.particleLifeTimeMax&&this.setParticleLifeTimeMax(i.particleLifeTimeMax),e.particleGravityX!==i.particleGravityX&&this.setParticleGravityX(i.particleGravityX),e.particleGravityY!==i.particleGravityY&&this.setParticleGravityY(i.particleGravityY),e.particleRed1!==i.particleRed1&&this.setParticleRed1(i.particleRed1),e.particleRed2!==i.particleRed2&&this.setParticleRed2(i.particleRed2),e.particleGreen1!==i.particleGreen1&&this.setParticleGreen1(i.particleGreen1),e.particleGreen2!==i.particleGreen2&&this.setParticleGreen2(i.particleGreen2),e.particleBlue1!==i.particleBlue1&&this.setParticleBlue1(i.particleBlue1),e.particleBlue2!==i.particleBlue2&&this.setParticleBlue2(i.particleBlue2),e.particleSize1!==i.particleSize1&&this.setParticleSize1(i.particleSize1),e.particleSize2!==i.particleSize2&&this.setParticleSize2(i.particleSize2),e.particleAlpha1!==i.particleAlpha1&&this.setParticleAlpha1(i.particleAlpha1),e.particleAlpha2!==i.particleAlpha2&&this.setParticleAlpha2(i.particleAlpha2),e.textureParticleName!==i.textureParticleName&&this.setTexture(i.textureParticleName,this.getRuntimeScene()),e.flow!==i.flow&&this.setFlow(i.flow),e.tank!==i.tank&&this.setTank(i.tank),e.destroyWhenNoParticles!==i.destroyWhenNoParticles&&(this.destroyWhenNoParticles=i.destroyWhenNoParticles),(e.particleSizeRandomness1!==i.particleSizeRandomness1||e.particleSizeRandomness2!==i.particleSizeRandomness2||e.particleAngle1!==i.particleAngle1||e.particleAngle2!==i.particleAngle2||e.maxParticleNb!==i.maxParticleNb||e.additive!==i.additive||e.rendererType!==i.rendererType||e.rendererParam1!==i.rendererParam1||e.rendererParam2!==i.rendererParam2)&&(this.getInstanceContainer().getLayer(this.layer).getRenderer().removeRendererObject(this._renderer.getRendererObject()),this._renderer.destroy(),this._renderer=new t.ParticleEmitterObjectRenderer(this.getInstanceContainer(),this,i),this._posDirty=this._angleDirty=this._forceDirty=this._zoneRadiusDirty=!0,this._lifeTimeDirty=this._gravityDirty=this._colorDirty=this._sizeDirty=!0,this._alphaDirty=this._flowDirty=this._tankDirty=this._textureDirty=!0),!0}update(e){if(this._posDirty&&this._renderer.setPosition(this.getX(),this.getY()),this._particleRotationSpeedDirty&&this._renderer.setParticleRotationSpeed(this.particleRotationMinSpeed,this.particleRotationMaxSpeed),this._maxParticlesCountDirty&&this._renderer.setMaxParticlesCount(this.maxParticlesCount),this._additiveRenderingDirty&&this._renderer.setAdditiveRendering(this.additiveRendering),this._angleDirty){const i=this.getAngle();this._renderer.setAngle(i-this.angleB/2,i+this.angleB/2)}this._forceDirty&&this._renderer.setForce(this.forceMin,this.forceMax),this._zoneRadiusDirty&&this._renderer.setZoneRadius(this.zoneRadius),this._lifeTimeDirty&&this._renderer.setLifeTime(this.lifeTimeMin,this.lifeTimeMax),this._gravityDirty&&this._renderer.setGravity(this.gravityX,this.gravityY),this._colorDirty&&this._renderer.setColor(this.colorR1,this.colorG1,this.colorB1,this.colorR2,this.colorG2,this.colorB2),this._sizeDirty&&this._renderer.setSize(this.size1,this.size2),this._alphaDirty&&this._renderer.setAlpha(this.alpha1,this.alpha2),(this._flowDirty||this._tankDirty)&&this._renderer.resetEmission(this.flow,this.tank),this._textureDirty&&this._renderer.setTextureName(this.texture,e),this._posDirty=this._angleDirty=this._forceDirty=this._zoneRadiusDirty=!1,this._lifeTimeDirty=this._gravityDirty=this._colorDirty=this._sizeDirty=!1,this._alphaDirty=this._flowDirty=this._textureDirty=this._tankDirty=!1,this._additiveRenderingDirty=this._maxParticlesCountDirty=this._particleRotationSpeedDirty=!1,this._renderer.update(this.getElapsedTime()/1e3),this._renderer.hasStarted()&&this.getParticleCount()===0&&this.destroyWhenNoParticles&&this.deleteFromScene(e),this.jumpForwardInTimeOnCreation>0&&this._jumpForwardInTimeCompleted===!1&&(this._renderer.update(this.jumpForwardInTimeOnCreation),this._jumpForwardInTimeCompleted=!0)}onDestroyFromScene(e){this._renderer.destroy(),super.onDestroyFromScene(e)}getEmitterForceMin(){return this.forceMin}setEmitterForceMin(e){e<0&&(e=0),this.forceMin!==e&&(this._forceDirty=!0,this.forceMin=e)}getEmitterForceMax(){return this.forceMax}setEmitterForceMax(e){e<0&&(e=0),this.forceMax!==e&&(this._forceDirty=!0,this.forceMax=e)}setParticleRotationMinSpeed(e){this.particleRotationMinSpeed!==e&&(this._particleRotationSpeedDirty=!0,this.particleRotationMinSpeed=e)}getParticleRotationMinSpeed(){return this.particleRotationMinSpeed}setParticleRotationMaxSpeed(e){this.particleRotationMaxSpeed!==e&&(this._particleRotationSpeedDirty=!0,this.particleRotationMaxSpeed=e)}getParticleRotationMaxSpeed(){return this.particleRotationMaxSpeed}setMaxParticlesCount(e){this.maxParticlesCount!==e&&(this._maxParticlesCountDirty=!0,this.maxParticlesCount=e)}getMaxParticlesCount(){return this.maxParticlesCount}setAdditiveRendering(e){this.additiveRendering!==e&&(this._additiveRenderingDirty=!0,this.additiveRendering=e)}getAdditiveRendering(){return this.additiveRendering}getEmitterAngle(){return(this.angleA+this.angleB)/2}setEmitterAngle(e){const i=this.getEmitterAngle();e!==i&&(this._angleDirty=!0,this.angleA+=e-i,this.angleB+=e-i)}getEmitterAngleA(){return this.angleA}setEmitterAngleA(e){this.angleA!==e&&(this._angleDirty=!0,this.angleA=e)}getEmitterAngleB(){return this.angleB}setEmitterAngleB(e){this.angleB!==e&&(this._angleDirty=!0,this.angleB=e)}getConeSprayAngle(){return this.getEmitterAngleB()}setConeSprayAngle(e){this.setEmitterAngleB(e)}getZoneRadius(){return this.zoneRadius}setZoneRadius(e){e<0&&(e=0),this.zoneRadius!==e&&e>0&&(this._zoneRadiusDirty=!0,this.zoneRadius=e)}getParticleLifeTimeMin(){return this.lifeTimeMin}setParticleLifeTimeMin(e){e<0&&(e=0),this.lifeTimeMin!==e&&(this._lifeTimeDirty=!0,this.lifeTimeMin=e)}getParticleLifeTimeMax(){return this.lifeTimeMax}setParticleLifeTimeMax(e){e<0&&(e=0),this.lifeTimeMax!==e&&(this._lifeTimeDirty=!0,this.lifeTimeMax=e)}getParticleGravityX(){return this.gravityX}setParticleGravityX(e){this.gravityX!==e&&(this._gravityDirty=!0,this.gravityX=e)}getParticleGravityY(){return this.gravityY}setParticleGravityY(e){this.gravityY!==e&&(this._gravityDirty=!0,this.gravityY=e)}getParticleGravityAngle(){return Math.atan2(this.gravityY,this.gravityX)*180/Math.PI}setParticleGravityAngle(e){if(this.getParticleGravityAngle()!==e){this._gravityDirty=!0;const r=this.getParticleGravityLength();this.gravityX=r*Math.cos(e*Math.PI/180),this.gravityY=r*Math.sin(e*Math.PI/180)}}getParticleGravityLength(){return Math.sqrt(this.gravityX*this.gravityX+this.gravityY*this.gravityY)}setParticleGravityLength(e){e<0&&(e=0);const i=this.getParticleGravityLength();i!==e&&(this._gravityDirty=!0,this.gravityX*=e/i,this.gravityY*=e/i)}getParticleRed1(){return this.colorR1}setParticleRed1(e){e<0&&(e=0),e>255&&(e=255),this.colorR1!==e&&(this._colorDirty=!0,this.colorR1=e)}getParticleRed2(){return this.colorR2}setParticleRed2(e){e<0&&(e=0),e>255&&(e=255),this.colorR2!==e&&(this._colorDirty=!0,this.colorR2=e)}getParticleGreen1(){return this.colorG1}setParticleGreen1(e){e<0&&(e=0),e>255&&(e=255),this.colorG1!==e&&(this._colorDirty=!0,this.colorG1=e)}getParticleGreen2(){return this.colorG2}setParticleGreen2(e){e<0&&(e=0),e>255&&(e=255),this.colorG2!==e&&(this._colorDirty=!0,this.colorG2=e)}getParticleBlue1(){return this.colorB1}setParticleBlue1(e){e<0&&(e=0),e>255&&(e=255),this.colorB1!==e&&(this._colorDirty=!0,this.colorB1=e)}getParticleBlue2(){return this.colorB2}setParticleBlue2(e){e<0&&(e=0),e>255&&(e=255),this.colorB2!==e&&(this._colorDirty=!0,this.colorB2=e)}setParticleColor1(e){const i=e.split(";");i.length<3||(this.setParticleRed1(parseInt(i[0],10)),this.setParticleGreen1(parseInt(i[1],10)),this.setParticleBlue1(parseInt(i[2],10)))}setParticleColor2(e){const i=e.split(";");i.length<3||(this.setParticleRed2(parseInt(i[0],10)),this.setParticleGreen2(parseInt(i[1],10)),this.setParticleBlue2(parseInt(i[2],10)))}getParticleSize1(){return this.size1}setParticleSize1(e){e<0&&(e=0),this.size1!==e&&(this._sizeDirty=!0,this.size1=e)}getParticleSize2(){return this.size2}setParticleSize2(e){this.size2!==e&&(this._sizeDirty=!0,this.size2=e)}getParticleAlpha1(){return this.alpha1}setParticleAlpha1(e){this.alpha1!==e&&(this._alphaDirty=!0,this.alpha1=e)}getParticleAlpha2(){return this.alpha2}setParticleAlpha2(e){this.alpha2!==e&&(this._alphaDirty=!0,this.alpha2=e)}startEmission(){this._renderer.start()}stopEmission(){this._renderer.stop()}isEmitting(){return this._renderer.emitter.emit}noMoreParticles(){return!this.isEmitting()}recreateParticleSystem(){this._renderer.recreate()}getFlow(){return this.flow}setFlow(e){this.flow!==e&&(this.flow=e,this._flowDirty=!0)}getParticleCount(){return this._renderer.getParticleCount()}getTank(){return this.tank}setTank(e){this.tank=e,this._tankDirty=!0}getTexture(){return this.texture}setTexture(e,i){this.texture!==e&&this._renderer.isTextureNameValid(e,i)&&(this.texture=e,this._textureDirty=!0)}jumpEmitterForwardInTime(e){this._renderer.update(e)}}t.ParticleEmitterObject=s,t.registerObject("ParticleSystem::ParticleEmitter",t.ParticleEmitterObject)})(gdjs||={});
2
+ //# sourceMappingURL=particleemitterobject.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../GDevelop/Extensions/ParticleSystem/particleemitterobject.ts"],
4
+ "sourcesContent": ["/*\n * GDevelop - Particle System Extension\n * Copyright (c) 2010-2016 Florian Rival (Florian.Rival@gmail.com)\n * This project is released under the MIT License.\n */\n\nnamespace gdjs {\n export type ParticleEmitterObjectDataType = {\n /**\n * @deprecated Data not used\n */\n emitterAngleA: number;\n emitterForceMin: number;\n /**\n * Cone spray angle (degrees)\n */\n emitterAngleB: number;\n zoneRadius: number;\n emitterForceMax: number;\n particleLifeTimeMax: number;\n particleLifeTimeMin: number;\n particleGravityY: number;\n particleGravityX: number;\n particleRed2: number;\n particleRed1: number;\n particleGreen2: number;\n particleGreen1: number;\n particleBlue2: number;\n particleBlue1: number;\n particleSize2: number;\n particleSize1: number;\n /**\n * Particle max rotation speed (degrees/second)\n */\n particleAngle2: number;\n /**\n * Particle min rotation speed (degrees/second)\n */\n particleAngle1: number;\n particleAlpha1: number;\n rendererType: string;\n particleAlpha2: number;\n rendererParam2: number;\n rendererParam1: number;\n particleSizeRandomness1: number;\n particleSizeRandomness2: number;\n maxParticleNb: number;\n additive: boolean;\n /** Resource name for image in particle */\n textureParticleName: string;\n tank: number;\n flow: number;\n /** Destroy the object when there is no particles? */\n destroyWhenNoParticles: boolean;\n jumpForwardInTimeOnCreation: number;\n };\n\n export type ParticleEmitterObjectData = ObjectData &\n ParticleEmitterObjectDataType;\n\n /**\n * Displays particles.\n */\n export class ParticleEmitterObject extends gdjs.RuntimeObject {\n /**\n * @deprecated Data not used\n */\n angleA: number;\n angleB: number;\n forceMin: number;\n forceMax: float;\n zoneRadius: number;\n lifeTimeMin: number;\n lifeTimeMax: float;\n gravityX: number;\n gravityY: number;\n colorR1: number;\n colorR2: number;\n colorG1: number;\n colorG2: number;\n colorB1: number;\n colorB2: number;\n size1: number;\n size2: number;\n alpha1: number;\n alpha2: number;\n rendererType: string;\n rendererParam1: number;\n rendererParam2: number;\n texture: string;\n flow: number;\n tank: number;\n destroyWhenNoParticles: boolean;\n particleRotationMinSpeed: number;\n particleRotationMaxSpeed: number;\n maxParticlesCount: number;\n additiveRendering: boolean;\n jumpForwardInTimeOnCreation: number;\n _jumpForwardInTimeCompleted: boolean = false;\n _posDirty: boolean = true;\n _angleDirty: boolean = true;\n _forceDirty: boolean = true;\n _zoneRadiusDirty: boolean = true;\n _lifeTimeDirty: boolean = true;\n _gravityDirty: boolean = true;\n _colorDirty: boolean = true;\n _sizeDirty: boolean = true;\n _alphaDirty: boolean = true;\n _flowDirty: boolean = true;\n _tankDirty: boolean = true;\n _particleRotationSpeedDirty: boolean = true;\n _maxParticlesCountDirty: boolean = true;\n _additiveRenderingDirty: boolean = true;\n // Don't mark texture as dirty if not using one.\n _textureDirty: boolean;\n\n // @ts-ignore\n _renderer: gdjs.ParticleEmitterObjectRenderer;\n\n /**\n * @param instanceContainer the container the object belongs to\n * @param particleObjectData The initial properties of the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n particleObjectData: ParticleEmitterObjectData\n ) {\n super(instanceContainer, particleObjectData);\n this._renderer = new gdjs.ParticleEmitterObjectRenderer(\n instanceContainer,\n this,\n particleObjectData\n );\n this.angleA = particleObjectData.emitterAngleA;\n this.angleB = particleObjectData.emitterAngleB;\n this.forceMin = particleObjectData.emitterForceMin;\n this.forceMax = particleObjectData.emitterForceMax;\n this.zoneRadius = particleObjectData.zoneRadius;\n this.lifeTimeMin = particleObjectData.particleLifeTimeMin;\n this.lifeTimeMax = particleObjectData.particleLifeTimeMax;\n this.gravityX = particleObjectData.particleGravityX;\n this.gravityY = particleObjectData.particleGravityY;\n this.colorR1 = particleObjectData.particleRed1;\n this.colorR2 = particleObjectData.particleRed2;\n this.colorG1 = particleObjectData.particleGreen1;\n this.colorG2 = particleObjectData.particleGreen2;\n this.colorB1 = particleObjectData.particleBlue1;\n this.colorB2 = particleObjectData.particleBlue2;\n this.size1 = particleObjectData.particleSize1;\n this.size2 = particleObjectData.particleSize2;\n this.alpha1 = particleObjectData.particleAlpha1;\n this.alpha2 = particleObjectData.particleAlpha2;\n this.rendererType = particleObjectData.rendererType;\n this.rendererParam1 = particleObjectData.rendererParam1;\n this.rendererParam2 = particleObjectData.rendererParam2;\n this.texture = particleObjectData.textureParticleName;\n this.flow = particleObjectData.flow;\n this.tank = particleObjectData.tank;\n this.destroyWhenNoParticles = particleObjectData.destroyWhenNoParticles;\n this.particleRotationMinSpeed = particleObjectData.particleAngle1;\n this.particleRotationMaxSpeed = particleObjectData.particleAngle2;\n this.maxParticlesCount = particleObjectData.maxParticleNb;\n this.additiveRendering = particleObjectData.additive;\n this.jumpForwardInTimeOnCreation =\n particleObjectData.jumpForwardInTimeOnCreation;\n this._textureDirty = this.texture !== '';\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n setX(x: number): void {\n if (this.x !== x) {\n this._posDirty = true;\n }\n super.setX(x);\n }\n\n setY(y: number): void {\n if (this.y !== y) {\n this._posDirty = true;\n }\n super.setY(y);\n }\n\n setAngle(angle): void {\n if (this.angle !== angle) {\n this._angleDirty = true;\n }\n super.setAngle(angle);\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n updateFromObjectData(\n oldObjectData: ParticleEmitterObjectData,\n newObjectData: ParticleEmitterObjectData\n ): boolean {\n if (oldObjectData.emitterAngleA !== newObjectData.emitterAngleA) {\n this.setEmitterAngleA(newObjectData.emitterAngleA);\n }\n if (oldObjectData.emitterAngleB !== newObjectData.emitterAngleB) {\n this.setEmitterAngleB(newObjectData.emitterAngleB);\n }\n if (oldObjectData.emitterForceMin !== newObjectData.emitterForceMin) {\n this.setEmitterForceMin(newObjectData.emitterForceMin);\n }\n if (oldObjectData.particleAngle1 !== newObjectData.particleAngle1) {\n this.setParticleRotationMinSpeed(newObjectData.particleAngle1);\n }\n if (oldObjectData.particleAngle2 !== newObjectData.particleAngle2) {\n this.setParticleRotationMaxSpeed(newObjectData.particleAngle2);\n }\n if (oldObjectData.maxParticleNb !== newObjectData.maxParticleNb) {\n this.setMaxParticlesCount(newObjectData.maxParticleNb);\n }\n if (oldObjectData.additive !== newObjectData.additive) {\n this.setAdditiveRendering(newObjectData.additive);\n }\n if (oldObjectData.emitterForceMax !== newObjectData.emitterForceMax) {\n this.setEmitterForceMax(newObjectData.emitterForceMax);\n }\n if (oldObjectData.zoneRadius !== newObjectData.zoneRadius) {\n this.setZoneRadius(newObjectData.zoneRadius);\n }\n if (\n oldObjectData.particleLifeTimeMin !== newObjectData.particleLifeTimeMin\n ) {\n this.setParticleLifeTimeMin(newObjectData.particleLifeTimeMin);\n }\n if (\n oldObjectData.particleLifeTimeMax !== newObjectData.particleLifeTimeMax\n ) {\n this.setParticleLifeTimeMax(newObjectData.particleLifeTimeMax);\n }\n if (oldObjectData.particleGravityX !== newObjectData.particleGravityX) {\n this.setParticleGravityX(newObjectData.particleGravityX);\n }\n if (oldObjectData.particleGravityY !== newObjectData.particleGravityY) {\n this.setParticleGravityY(newObjectData.particleGravityY);\n }\n if (oldObjectData.particleRed1 !== newObjectData.particleRed1) {\n this.setParticleRed1(newObjectData.particleRed1);\n }\n if (oldObjectData.particleRed2 !== newObjectData.particleRed2) {\n this.setParticleRed2(newObjectData.particleRed2);\n }\n if (oldObjectData.particleGreen1 !== newObjectData.particleGreen1) {\n this.setParticleGreen1(newObjectData.particleGreen1);\n }\n if (oldObjectData.particleGreen2 !== newObjectData.particleGreen2) {\n this.setParticleGreen2(newObjectData.particleGreen2);\n }\n if (oldObjectData.particleBlue1 !== newObjectData.particleBlue1) {\n this.setParticleBlue1(newObjectData.particleBlue1);\n }\n if (oldObjectData.particleBlue2 !== newObjectData.particleBlue2) {\n this.setParticleBlue2(newObjectData.particleBlue2);\n }\n if (oldObjectData.particleSize1 !== newObjectData.particleSize1) {\n this.setParticleSize1(newObjectData.particleSize1);\n }\n if (oldObjectData.particleSize2 !== newObjectData.particleSize2) {\n this.setParticleSize2(newObjectData.particleSize2);\n }\n if (oldObjectData.particleAlpha1 !== newObjectData.particleAlpha1) {\n this.setParticleAlpha1(newObjectData.particleAlpha1);\n }\n if (oldObjectData.particleAlpha2 !== newObjectData.particleAlpha2) {\n this.setParticleAlpha2(newObjectData.particleAlpha2);\n }\n if (\n oldObjectData.textureParticleName !== newObjectData.textureParticleName\n ) {\n this.setTexture(\n newObjectData.textureParticleName,\n this.getRuntimeScene()\n );\n }\n if (oldObjectData.flow !== newObjectData.flow) {\n this.setFlow(newObjectData.flow);\n }\n if (oldObjectData.tank !== newObjectData.tank) {\n this.setTank(newObjectData.tank);\n }\n if (\n oldObjectData.destroyWhenNoParticles !==\n newObjectData.destroyWhenNoParticles\n ) {\n this.destroyWhenNoParticles = newObjectData.destroyWhenNoParticles;\n }\n if (\n oldObjectData.particleSizeRandomness1 !==\n newObjectData.particleSizeRandomness1 ||\n oldObjectData.particleSizeRandomness2 !==\n newObjectData.particleSizeRandomness2 ||\n oldObjectData.particleAngle1 !== newObjectData.particleAngle1 ||\n oldObjectData.particleAngle2 !== newObjectData.particleAngle2 ||\n oldObjectData.maxParticleNb !== newObjectData.maxParticleNb ||\n oldObjectData.additive !== newObjectData.additive ||\n oldObjectData.rendererType !== newObjectData.rendererType ||\n oldObjectData.rendererParam1 !== newObjectData.rendererParam1 ||\n oldObjectData.rendererParam2 !== newObjectData.rendererParam2\n ) {\n // Destroy the renderer, ensure it's removed from the layer.\n const layer = this.getInstanceContainer().getLayer(this.layer);\n layer\n .getRenderer()\n .removeRendererObject(this._renderer.getRendererObject());\n this._renderer.destroy();\n\n // and recreate the renderer, which will add itself to the layer.\n this._renderer = new gdjs.ParticleEmitterObjectRenderer(\n this.getInstanceContainer(),\n this,\n newObjectData\n );\n\n // Consider every state dirty as the renderer was just re-created, so it needs\n // to be repositioned, angle updated, etc...\n this._posDirty = this._angleDirty = this._forceDirty = this._zoneRadiusDirty = true;\n this._lifeTimeDirty = this._gravityDirty = this._colorDirty = this._sizeDirty = true;\n this._alphaDirty = this._flowDirty = this._tankDirty = this._textureDirty = true;\n }\n return true;\n }\n\n update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n if (this._posDirty) {\n this._renderer.setPosition(this.getX(), this.getY());\n }\n if (this._particleRotationSpeedDirty) {\n this._renderer.setParticleRotationSpeed(\n this.particleRotationMinSpeed,\n this.particleRotationMaxSpeed\n );\n }\n if (this._maxParticlesCountDirty) {\n this._renderer.setMaxParticlesCount(this.maxParticlesCount);\n }\n if (this._additiveRenderingDirty) {\n this._renderer.setAdditiveRendering(this.additiveRendering);\n }\n if (this._angleDirty) {\n const angle = this.getAngle();\n this._renderer.setAngle(\n angle - this.angleB / 2.0,\n angle + this.angleB / 2.0\n );\n }\n if (this._forceDirty) {\n this._renderer.setForce(this.forceMin, this.forceMax);\n }\n if (this._zoneRadiusDirty) {\n this._renderer.setZoneRadius(this.zoneRadius);\n }\n if (this._lifeTimeDirty) {\n this._renderer.setLifeTime(this.lifeTimeMin, this.lifeTimeMax);\n }\n if (this._gravityDirty) {\n this._renderer.setGravity(this.gravityX, this.gravityY);\n }\n if (this._colorDirty) {\n this._renderer.setColor(\n this.colorR1,\n this.colorG1,\n this.colorB1,\n this.colorR2,\n this.colorG2,\n this.colorB2\n );\n }\n if (this._sizeDirty) {\n this._renderer.setSize(this.size1, this.size2);\n }\n if (this._alphaDirty) {\n this._renderer.setAlpha(this.alpha1, this.alpha2);\n }\n if (this._flowDirty || this._tankDirty) {\n this._renderer.resetEmission(this.flow, this.tank);\n }\n if (this._textureDirty) {\n this._renderer.setTextureName(this.texture, instanceContainer);\n }\n this._posDirty = this._angleDirty = this._forceDirty = this._zoneRadiusDirty = false;\n this._lifeTimeDirty = this._gravityDirty = this._colorDirty = this._sizeDirty = false;\n this._alphaDirty = this._flowDirty = this._textureDirty = this._tankDirty = false;\n this._additiveRenderingDirty = this._maxParticlesCountDirty = this._particleRotationSpeedDirty = false;\n this._renderer.update(this.getElapsedTime() / 1000.0);\n if (\n this._renderer.hasStarted() &&\n this.getParticleCount() === 0 &&\n this.destroyWhenNoParticles\n ) {\n this.deleteFromScene(instanceContainer);\n }\n if (\n this.jumpForwardInTimeOnCreation > 0 &&\n this._jumpForwardInTimeCompleted === false\n ) {\n this._renderer.update(this.jumpForwardInTimeOnCreation);\n this._jumpForwardInTimeCompleted = true;\n }\n }\n\n onDestroyFromScene(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n this._renderer.destroy();\n super.onDestroyFromScene(instanceContainer);\n }\n\n getEmitterForceMin(): number {\n return this.forceMin;\n }\n\n setEmitterForceMin(force: float): void {\n if (force < 0) {\n force = 0;\n }\n if (this.forceMin !== force) {\n this._forceDirty = true;\n this.forceMin = force;\n }\n }\n\n getEmitterForceMax(): number {\n return this.forceMax;\n }\n\n setEmitterForceMax(force: float): void {\n if (force < 0) {\n force = 0;\n }\n if (this.forceMax !== force) {\n this._forceDirty = true;\n this.forceMax = force;\n }\n }\n\n setParticleRotationMinSpeed(speed: number): void {\n if (this.particleRotationMinSpeed !== speed) {\n this._particleRotationSpeedDirty = true;\n this.particleRotationMinSpeed = speed;\n }\n }\n\n getParticleRotationMinSpeed(): number {\n return this.particleRotationMinSpeed;\n }\n\n setParticleRotationMaxSpeed(speed: number): void {\n if (this.particleRotationMaxSpeed !== speed) {\n this._particleRotationSpeedDirty = true;\n this.particleRotationMaxSpeed = speed;\n }\n }\n\n getParticleRotationMaxSpeed(): number {\n return this.particleRotationMaxSpeed;\n }\n\n setMaxParticlesCount(count: number): void {\n if (this.maxParticlesCount !== count) {\n this._maxParticlesCountDirty = true;\n this.maxParticlesCount = count;\n }\n }\n\n getMaxParticlesCount(): number {\n return this.maxParticlesCount;\n }\n\n setAdditiveRendering(enabled: boolean) {\n if (this.additiveRendering !== enabled) {\n this._additiveRenderingDirty = true;\n this.additiveRendering = enabled;\n }\n }\n\n getAdditiveRendering(): boolean {\n return this.additiveRendering;\n }\n\n /**\n * @deprecated Prefer using getAngle\n */\n getEmitterAngle(): float {\n return (this.angleA + this.angleB) / 2.0;\n }\n\n /**\n * @deprecated Prefer using setAngle\n */\n setEmitterAngle(angle: float): void {\n const oldAngle = this.getEmitterAngle();\n if (angle !== oldAngle) {\n this._angleDirty = true;\n this.angleA += angle - oldAngle;\n this.angleB += angle - oldAngle;\n }\n }\n\n /**\n * @deprecated This function returns data that is not used.\n */\n getEmitterAngleA(): float {\n return this.angleA;\n }\n\n /**\n * @deprecated This function sets data that is not used.\n */\n setEmitterAngleA(angle: float): void {\n if (this.angleA !== angle) {\n this._angleDirty = true;\n this.angleA = angle;\n }\n }\n\n getEmitterAngleB(): float {\n return this.angleB;\n }\n\n setEmitterAngleB(angle: float): void {\n if (this.angleB !== angle) {\n this._angleDirty = true;\n this.angleB = angle;\n }\n }\n\n getConeSprayAngle(): float {\n return this.getEmitterAngleB();\n }\n\n setConeSprayAngle(angle: float): void {\n this.setEmitterAngleB(angle);\n }\n\n getZoneRadius(): float {\n return this.zoneRadius;\n }\n\n setZoneRadius(radius: float): void {\n if (radius < 0) {\n radius = 0;\n }\n if (this.zoneRadius !== radius && radius > 0) {\n this._zoneRadiusDirty = true;\n this.zoneRadius = radius;\n }\n }\n\n getParticleLifeTimeMin(): float {\n return this.lifeTimeMin;\n }\n\n setParticleLifeTimeMin(lifeTime: float): void {\n if (lifeTime < 0) {\n lifeTime = 0;\n }\n if (this.lifeTimeMin !== lifeTime) {\n this._lifeTimeDirty = true;\n this.lifeTimeMin = lifeTime;\n }\n }\n\n getParticleLifeTimeMax(): float {\n return this.lifeTimeMax;\n }\n\n setParticleLifeTimeMax(lifeTime: float): void {\n if (lifeTime < 0) {\n lifeTime = 0;\n }\n if (this.lifeTimeMax !== lifeTime) {\n this._lifeTimeDirty = true;\n this.lifeTimeMax = lifeTime;\n }\n }\n\n getParticleGravityX(): float {\n return this.gravityX;\n }\n\n setParticleGravityX(x: float): void {\n if (this.gravityX !== x) {\n this._gravityDirty = true;\n this.gravityX = x;\n }\n }\n\n getParticleGravityY(): float {\n return this.gravityY;\n }\n\n setParticleGravityY(y: float): void {\n if (this.gravityY !== y) {\n this._gravityDirty = true;\n this.gravityY = y;\n }\n }\n\n getParticleGravityAngle(): float {\n return (Math.atan2(this.gravityY, this.gravityX) * 180.0) / Math.PI;\n }\n\n setParticleGravityAngle(angle: float): void {\n const oldAngle = this.getParticleGravityAngle();\n if (oldAngle !== angle) {\n this._gravityDirty = true;\n const length = this.getParticleGravityLength();\n this.gravityX = length * Math.cos((angle * Math.PI) / 180.0);\n this.gravityY = length * Math.sin((angle * Math.PI) / 180.0);\n }\n }\n\n getParticleGravityLength(): float {\n return Math.sqrt(\n this.gravityX * this.gravityX + this.gravityY * this.gravityY\n );\n }\n\n setParticleGravityLength(length: float): void {\n if (length < 0) {\n length = 0;\n }\n const oldLength = this.getParticleGravityLength();\n if (oldLength !== length) {\n this._gravityDirty = true;\n this.gravityX *= length / oldLength;\n this.gravityY *= length / oldLength;\n }\n }\n\n getParticleRed1(): number {\n return this.colorR1;\n }\n\n setParticleRed1(red: number): void {\n if (red < 0) {\n red = 0;\n }\n if (red > 255) {\n red = 255;\n }\n if (this.colorR1 !== red) {\n this._colorDirty = true;\n this.colorR1 = red;\n }\n }\n\n getParticleRed2(): number {\n return this.colorR2;\n }\n\n setParticleRed2(red: number): void {\n if (red < 0) {\n red = 0;\n }\n if (red > 255) {\n red = 255;\n }\n if (this.colorR2 !== red) {\n this._colorDirty = true;\n this.colorR2 = red;\n }\n }\n\n getParticleGreen1(): number {\n return this.colorG1;\n }\n\n setParticleGreen1(green: number): void {\n if (green < 0) {\n green = 0;\n }\n if (green > 255) {\n green = 255;\n }\n if (this.colorG1 !== green) {\n this._colorDirty = true;\n this.colorG1 = green;\n }\n }\n\n getParticleGreen2(): number {\n return this.colorG2;\n }\n\n setParticleGreen2(green: number): void {\n if (green < 0) {\n green = 0;\n }\n if (green > 255) {\n green = 255;\n }\n if (this.colorG2 !== green) {\n this._colorDirty = true;\n this.colorG2 = green;\n }\n }\n\n getParticleBlue1(): number {\n return this.colorB1;\n }\n\n setParticleBlue1(blue: number): void {\n if (blue < 0) {\n blue = 0;\n }\n if (blue > 255) {\n blue = 255;\n }\n if (this.colorB1 !== blue) {\n this._colorDirty = true;\n this.colorB1 = blue;\n }\n }\n\n getParticleBlue2(): number {\n return this.colorB2;\n }\n\n setParticleBlue2(blue: number): void {\n if (blue < 0) {\n blue = 0;\n }\n if (blue > 255) {\n blue = 255;\n }\n if (this.colorB2 !== blue) {\n this._colorDirty = true;\n this.colorB2 = blue;\n }\n }\n\n setParticleColor1(rgbColor: string): void {\n const colors = rgbColor.split(';');\n if (colors.length < 3) {\n return;\n }\n this.setParticleRed1(parseInt(colors[0], 10));\n this.setParticleGreen1(parseInt(colors[1], 10));\n this.setParticleBlue1(parseInt(colors[2], 10));\n }\n\n setParticleColor2(rgbColor: string): void {\n const colors = rgbColor.split(';');\n if (colors.length < 3) {\n return;\n }\n this.setParticleRed2(parseInt(colors[0], 10));\n this.setParticleGreen2(parseInt(colors[1], 10));\n this.setParticleBlue2(parseInt(colors[2], 10));\n }\n\n getParticleSize1(): float {\n return this.size1;\n }\n\n setParticleSize1(size: float): void {\n if (size < 0) {\n size = 0;\n }\n if (this.size1 !== size) {\n this._sizeDirty = true;\n this.size1 = size;\n }\n }\n\n getParticleSize2(): float {\n return this.size2;\n }\n\n setParticleSize2(size: float): void {\n if (this.size2 !== size) {\n this._sizeDirty = true;\n this.size2 = size;\n }\n }\n\n getParticleAlpha1(): number {\n return this.alpha1;\n }\n\n setParticleAlpha1(alpha: number): void {\n if (this.alpha1 !== alpha) {\n this._alphaDirty = true;\n this.alpha1 = alpha;\n }\n }\n\n getParticleAlpha2(): number {\n return this.alpha2;\n }\n\n setParticleAlpha2(alpha: number): void {\n if (this.alpha2 !== alpha) {\n this._alphaDirty = true;\n this.alpha2 = alpha;\n }\n }\n\n startEmission(): void {\n this._renderer.start();\n }\n\n stopEmission(): void {\n this._renderer.stop();\n }\n\n isEmitting(): boolean {\n return this._renderer.emitter.emit;\n }\n\n noMoreParticles(): boolean {\n return !this.isEmitting();\n }\n\n recreateParticleSystem(): void {\n this._renderer.recreate();\n }\n\n getFlow(): number {\n return this.flow;\n }\n\n setFlow(flow: number): void {\n if (this.flow !== flow) {\n this.flow = flow;\n this._flowDirty = true;\n }\n }\n\n getParticleCount(): number {\n return this._renderer.getParticleCount();\n }\n\n getTank(): number {\n return this.tank;\n }\n\n setTank(tank: number): void {\n this.tank = tank;\n this._tankDirty = true;\n }\n\n getTexture(): string {\n return this.texture;\n }\n\n setTexture(\n texture: string,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ): void {\n if (this.texture !== texture) {\n if (this._renderer.isTextureNameValid(texture, instanceContainer)) {\n this.texture = texture;\n this._textureDirty = true;\n }\n }\n }\n\n jumpEmitterForwardInTime(timeSkipped: number): void {\n this._renderer.update(timeSkipped);\n }\n }\n gdjs.registerObject(\n 'ParticleSystem::ParticleEmitter',\n gdjs.ParticleEmitterObject\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["gdjs", "ParticleEmitterObject", "instanceContainer", "particleObjectData", "x", "y", "angle", "oldObjectData", "newObjectData", "force", "speed", "count", "enabled", "oldAngle", "radius", "lifeTime", "length", "oldLength", "red", "green", "blue", "rgbColor", "colors", "size", "alpha", "flow", "tank", "texture", "timeSkipped"]
7
+ }
@@ -0,0 +1,3 @@
1
+ this.PIXI=this.PIXI||{},function(t,i){"use strict";var e,s=function(){function i(i,e,s){this.value=i,this.time=e,this.next=null,this.isStepped=!1,this.ease=s?"function"==typeof s?s:t.ParticleUtils.generateEase(s):null}return i.createList=function(e){if("list"in e){var s=e.list,a=void 0,n=void 0,r=s[0],o=r.value,h=r.time;if(n=a=new i("string"==typeof o?t.ParticleUtils.hexToRGB(o):o,h,e.ease),s.length>2||2===s.length&&s[1].value!==o)for(var l=1;l<s.length;++l){var p=s[l],c=p.value,u=p.time;a.next=new i("string"==typeof c?t.ParticleUtils.hexToRGB(c):c,u),a=a.next}return n.isStepped=!!e.isStepped,n}var m=new i("string"==typeof e.start?t.ParticleUtils.hexToRGB(e.start):e.start,0);return e.end!==e.start&&(m.next=new i("string"==typeof e.end?t.ParticleUtils.hexToRGB(e.end):e.end,1)),m},i}(),a=i;function n(t){return e(t)}e=parseInt(/^(\d+)\./.exec(i.VERSION)[1])<5?a.Texture.fromImage:a.Texture.from,function(t){t.verbose=!1,t.DEG_TO_RADS=Math.PI/180,t.rotatePoint=function(i,e){if(i){i*=t.DEG_TO_RADS;var s=Math.sin(i),a=Math.cos(i),n=e.x*a-e.y*s,r=e.x*s+e.y*a;e.x=n,e.y=r}},t.combineRGBComponents=function(t,i,e){return t<<16|i<<8|e},t.normalize=function(i){var e=1/t.length(i);i.x*=e,i.y*=e},t.scaleBy=function(t,i){t.x*=i,t.y*=i},t.length=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},t.hexToRGB=function(t,i){var e;return i||(i={}),"#"==t.charAt(0)?t=t.substr(1):0===t.indexOf("0x")&&(t=t.substr(2)),8==t.length&&(e=t.substr(0,2),t=t.substr(2)),i.r=parseInt(t.substr(0,2),16),i.g=parseInt(t.substr(2,2),16),i.b=parseInt(t.substr(4,2),16),e&&(i.a=parseInt(e,16)),i},t.generateEase=function(t){var i=t.length,e=1/i;return function(s){var a,n,r=i*s|0;return a=(s-r*e)*i,(n=t[r]||t[i-1]).s+a*(2*(1-a)*(n.cp-n.s)+a*(n.e-n.s))}},t.getBlendMode=function(t){if(!t)return i.BLEND_MODES.NORMAL;for(t=t.toUpperCase();t.indexOf(" ")>=0;)t=t.replace(" ","_");return i.BLEND_MODES[t]||i.BLEND_MODES.NORMAL},t.createSteppedGradient=function(i,e){void 0===e&&(e=10),("number"!=typeof e||e<=0)&&(e=10);var a=new s(t.hexToRGB(i[0].value),i[0].time);a.isStepped=!0;for(var n=a,r=i[0],o=1,h=i[o],l=1;l<e;++l){for(var p=l/e;p>h.time;)r=h,h=i[++o];p=(p-r.time)/(h.time-r.time);var c=t.hexToRGB(r.value),u=t.hexToRGB(h.value),m={r:(u.r-c.r)*p+c.r,g:(u.g-c.g)*p+c.g,b:(u.b-c.b)*p+c.b};n.next=new s(m,l/e),n=n.next}return a}}(t.ParticleUtils||(t.ParticleUtils={}));var r=function(t,i){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var e in i)i.hasOwnProperty(e)&&(t[e]=i[e])})(t,i)};function o(t,i){function e(){this.constructor=t}r(t,i),t.prototype=null===i?Object.create(i):(e.prototype=i.prototype,new e)}var h=function(){function t(t){void 0===t&&(t=!1),this.current=null,this.next=null,this.isColor=!!t,this.interpolate=null,this.ease=null}return t.prototype.reset=function(t){this.current=t,this.next=t.next,this.next&&this.next.time>=1?this.interpolate=this.isColor?p:l:t.isStepped?this.interpolate=this.isColor?d:m:this.interpolate=this.isColor?u:c,this.ease=this.current.ease},t}();function l(t){return this.ease&&(t=this.ease(t)),(this.next.value-this.current.value)*t+this.current.value}function p(i){this.ease&&(i=this.ease(i));var e=this.current.value,s=this.next.value,a=(s.r-e.r)*i+e.r,n=(s.g-e.g)*i+e.g,r=(s.b-e.b)*i+e.b;return t.ParticleUtils.combineRGBComponents(a,n,r)}function c(t){for(this.ease&&(t=this.ease(t));t>this.next.time;)this.current=this.next,this.next=this.next.next;return t=(t-this.current.time)/(this.next.time-this.current.time),(this.next.value-this.current.value)*t+this.current.value}function u(i){for(this.ease&&(i=this.ease(i));i>this.next.time;)this.current=this.next,this.next=this.next.next;i=(i-this.current.time)/(this.next.time-this.current.time);var e=this.current.value,s=this.next.value,a=(s.r-e.r)*i+e.r,n=(s.g-e.g)*i+e.g,r=(s.b-e.b)*i+e.b;return t.ParticleUtils.combineRGBComponents(a,n,r)}function m(t){for(this.ease&&(t=this.ease(t));this.next&&t>this.next.time;)this.current=this.next,this.next=this.next.next;return this.current.value}function d(i){for(this.ease&&(i=this.ease(i));this.next&&i>this.next.time;)this.current=this.next,this.next=this.next.next;var e=this.current.value;return t.ParticleUtils.combineRGBComponents(e.r,e.g,e.b)}var f,x=function(e){function s(t){var a=e.call(this)||this;return a.emitter=t,a.anchor.x=a.anchor.y=.5,a.velocity=new i.Point,a.rotationSpeed=0,a.rotationAcceleration=0,a.maxLife=0,a.age=0,a.ease=null,a.extraData=null,a.alphaList=new h,a.speedList=new h,a.speedMultiplier=1,a.acceleration=new i.Point,a.maxSpeed=NaN,a.scaleList=new h,a.scaleMultiplier=1,a.colorList=new h(!0),a._doAlpha=!1,a._doScale=!1,a._doSpeed=!1,a._doAcceleration=!1,a._doColor=!1,a._doNormalMovement=!1,a._oneOverLife=0,a.next=null,a.prev=null,a.init=a.init,a.Particle_init=s.prototype.init,a.update=a.update,a.Particle_update=s.prototype.update,a.Sprite_destroy=e.prototype.destroy,a.Particle_destroy=s.prototype.destroy,a.applyArt=a.applyArt,a.kill=a.kill,a}return o(s,e),s.prototype.init=function(){this.age=0,this.velocity.x=this.speedList.current.value*this.speedMultiplier,this.velocity.y=0,t.ParticleUtils.rotatePoint(this.rotation,this.velocity),this.noRotation?this.rotation=0:this.rotation*=t.ParticleUtils.DEG_TO_RADS,this.rotationSpeed*=t.ParticleUtils.DEG_TO_RADS,this.rotationAcceleration*=t.ParticleUtils.DEG_TO_RADS,this.alpha=this.alphaList.current.value,this.scale.x=this.scale.y=this.scaleList.current.value,this._doAlpha=!!this.alphaList.current.next,this._doSpeed=!!this.speedList.current.next,this._doScale=!!this.scaleList.current.next,this._doColor=!!this.colorList.current.next,this._doAcceleration=0!==this.acceleration.x||0!==this.acceleration.y,this._doNormalMovement=this._doSpeed||0!==this.speedList.current.value||this._doAcceleration,this._oneOverLife=1/this.maxLife;var i=this.colorList.current.value;this.tint=t.ParticleUtils.combineRGBComponents(i.r,i.g,i.b),this.visible=!0},s.prototype.applyArt=function(t){this.texture=t||i.Texture.EMPTY},s.prototype.update=function(i){if(this.age+=i,this.age>=this.maxLife||this.age<0)return this.kill(),-1;var e=this.age*this._oneOverLife;if(this.ease&&(e=4==this.ease.length?this.ease(e,0,1,1):this.ease(e)),this._doAlpha&&(this.alpha=this.alphaList.interpolate(e)),this._doScale){var s=this.scaleList.interpolate(e)*this.scaleMultiplier;this.scale.x=this.scale.y=s}if(this._doNormalMovement){var a=void 0,n=void 0;if(this._doSpeed){var r=this.speedList.interpolate(e)*this.speedMultiplier;t.ParticleUtils.normalize(this.velocity),t.ParticleUtils.scaleBy(this.velocity,r),a=this.velocity.x*i,n=this.velocity.y*i}else if(this._doAcceleration){var o=this.velocity.x,h=this.velocity.y;if(this.velocity.x+=this.acceleration.x*i,this.velocity.y+=this.acceleration.y*i,this.maxSpeed){var l=t.ParticleUtils.length(this.velocity);l>this.maxSpeed&&t.ParticleUtils.scaleBy(this.velocity,this.maxSpeed/l)}a=(o+this.velocity.x)/2*i,n=(h+this.velocity.y)/2*i}else a=this.velocity.x*i,n=this.velocity.y*i;this.position.x+=a,this.position.y+=n}if(this._doColor&&(this.tint=this.colorList.interpolate(e)),0!==this.rotationAcceleration){var p=this.rotationSpeed+this.rotationAcceleration*i;this.rotation+=(this.rotationSpeed+p)/2*i,this.rotationSpeed=p}else 0!==this.rotationSpeed?this.rotation+=this.rotationSpeed*i:this.acceleration&&!this.noRotation&&(this.rotation=Math.atan2(this.velocity.y,this.velocity.x));return e},s.prototype.kill=function(){this.emitter.recycle(this)},s.prototype.destroy=function(){this.parent&&this.parent.removeChild(this),this.Sprite_destroy(),this.emitter=this.velocity=this.colorList=this.scaleList=this.alphaList=this.speedList=this.ease=this.next=this.prev=null},s.parseArt=function(i){var e;for(e=i.length;e>=0;--e)"string"==typeof i[e]&&(i[e]=n(i[e]));if(t.ParticleUtils.verbose)for(e=i.length-1;e>0;--e)if(i[e].baseTexture!=i[e-1].baseTexture){window.console&&console.warn("PixiParticles: using particle textures from different images may hinder performance in WebGL");break}return i},s.parseData=function(t){return t},s}(i.Sprite),y=function(){function t(t){this.segments=[],this.countingLengths=[],this.totalLength=0,this.init(t)}return t.prototype.init=function(t){if(t&&t.length)if(Array.isArray(t[0]))for(var i=0;i<t.length;++i)for(var e=t[i],s=e[0],a=1;a<e.length;++a){var n=e[a];this.segments.push({p1:s,p2:n,l:0}),s=n}else for(s=t[0],i=1;i<t.length;++i){n=t[i];this.segments.push({p1:s,p2:n,l:0}),s=n}else this.segments.push({p1:{x:0,y:0},p2:{x:0,y:0},l:0});for(i=0;i<this.segments.length;++i){var r=this.segments[i],o=r.p1,h=r.p2,l=Math.sqrt((h.x-o.x)*(h.x-o.x)+(h.y-o.y)*(h.y-o.y));this.segments[i].l=l,this.totalLength+=l,this.countingLengths.push(this.totalLength)}},t.prototype.getRandomPoint=function(t){var i,e,s=Math.random()*this.totalLength;if(1===this.segments.length)i=this.segments[0],e=s;else for(var a=0;a<this.countingLengths.length;++a)if(s<this.countingLengths[a]){i=this.segments[a],e=0===a?s:s-this.countingLengths[a-1];break}e/=i.l||1;var n=i.p1,r=i.p2;t.x=n.x+e*(r.x-n.x),t.y=n.y+e*(r.y-n.y)},t}(),_=i;f=parseInt(/^(\d+)\./.exec(i.VERSION)[1])<5?_.ticker.shared:_.Ticker.shared;var v=new i.Point,P=function(){function e(t,i,e){this._currentImageIndex=-1,this._particleConstructor=x,this.particleImages=null,this.startAlpha=null,this.startSpeed=null,this.minimumSpeedMultiplier=1,this.acceleration=null,this.maxSpeed=NaN,this.startScale=null,this.minimumScaleMultiplier=1,this.startColor=null,this.minLifetime=0,this.maxLifetime=0,this.minStartRotation=0,this.maxStartRotation=0,this.noRotation=!1,this.minRotationSpeed=0,this.maxRotationSpeed=0,this.particleBlendMode=0,this.customEase=null,this.extraData=null,this._frequency=1,this.spawnChance=1,this.maxParticles=1e3,this.emitterLifetime=-1,this.spawnPos=null,this.spawnType=null,this._spawnFunc=null,this.spawnRect=null,this.spawnCircle=null,this.spawnPolygonalChain=null,this.particlesPerWave=1,this.particleSpacing=0,this.angleStart=0,this.rotation=0,this.ownerPos=null,this._prevEmitterPos=null,this._prevPosIsValid=!1,this._posChanged=!1,this._parent=null,this.addAtBack=!1,this.particleCount=0,this._emit=!1,this._spawnTimer=0,this._emitterLife=-1,this._activeParticlesFirst=null,this._activeParticlesLast=null,this._poolFirst=null,this._origConfig=null,this._origArt=null,this._autoUpdate=!1,this._currentImageIndex=-1,this._destroyWhenComplete=!1,this._completeCallback=null,this.parent=t,i&&e&&this.init(i,e),this.recycle=this.recycle,this.update=this.update,this.rotate=this.rotate,this.updateSpawnPos=this.updateSpawnPos,this.updateOwnerPos=this.updateOwnerPos}return Object.defineProperty(e.prototype,"orderedArt",{get:function(){return-1!==this._currentImageIndex},set:function(t){this._currentImageIndex=t?0:-1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"frequency",{get:function(){return this._frequency},set:function(t){this._frequency="number"==typeof t&&t>0?t:1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"particleConstructor",{get:function(){return this._particleConstructor},set:function(t){if(t!=this._particleConstructor){this._particleConstructor=t,this.cleanup();for(var i=this._poolFirst;i;i=i.next)i.destroy();this._poolFirst=null,this._origConfig&&this._origArt&&this.init(this._origArt,this._origConfig)}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},set:function(t){this.cleanup(),this._parent=t},enumerable:!0,configurable:!0}),e.prototype.init=function(e,a){if(e&&a){this.cleanup(),this._origConfig=a,this._origArt=e,e=Array.isArray(e)?e.slice():[e];var n=this._particleConstructor;this.particleImages=n.parseArt?n.parseArt(e):e,a.alpha?this.startAlpha=s.createList(a.alpha):this.startAlpha=new s(1,0),a.speed?(this.startSpeed=s.createList(a.speed),this.minimumSpeedMultiplier=("minimumSpeedMultiplier"in a?a.minimumSpeedMultiplier:a.speed.minimumSpeedMultiplier)||1):(this.minimumSpeedMultiplier=1,this.startSpeed=new s(0,0));var r=a.acceleration;r&&(r.x||r.y)?(this.startSpeed.next=null,this.acceleration=new i.Point(r.x,r.y),this.maxSpeed=a.maxSpeed||NaN):this.acceleration=new i.Point,a.scale?(this.startScale=s.createList(a.scale),this.minimumScaleMultiplier=("minimumScaleMultiplier"in a?a.minimumScaleMultiplier:a.scale.minimumScaleMultiplier)||1):(this.startScale=new s(1,0),this.minimumScaleMultiplier=1),a.color?this.startColor=s.createList(a.color):this.startColor=new s({r:255,g:255,b:255},0),a.startRotation?(this.minStartRotation=a.startRotation.min,this.maxStartRotation=a.startRotation.max):this.minStartRotation=this.maxStartRotation=0,a.noRotation&&(this.minStartRotation||this.maxStartRotation)?this.noRotation=!!a.noRotation:this.noRotation=!1,a.rotationSpeed?(this.minRotationSpeed=a.rotationSpeed.min,this.maxRotationSpeed=a.rotationSpeed.max):this.minRotationSpeed=this.maxRotationSpeed=0,this.rotationAcceleration=a.rotationAcceleration||0,this.minLifetime=a.lifetime.min,this.maxLifetime=a.lifetime.max,this.particleBlendMode=t.ParticleUtils.getBlendMode(a.blendMode),a.ease?this.customEase="function"==typeof a.ease?a.ease:t.ParticleUtils.generateEase(a.ease):this.customEase=null,n.parseData?this.extraData=n.parseData(a.extraData):this.extraData=a.extraData||null,this.spawnRect=this.spawnCircle=null,this.particlesPerWave=1,a.particlesPerWave&&a.particlesPerWave>1&&(this.particlesPerWave=a.particlesPerWave),this.particleSpacing=0,this.angleStart=0,this.parseSpawnType(a),this.frequency=a.frequency,this.spawnChance="number"==typeof a.spawnChance&&a.spawnChance>0?a.spawnChance:1,this.emitterLifetime=a.emitterLifetime||-1,this.maxParticles=a.maxParticles>0?a.maxParticles:1e3,this.addAtBack=!!a.addAtBack,this.rotation=0,this.ownerPos=new i.Point,this.spawnPos=new i.Point(a.pos.x,a.pos.y),this.initAdditional(e,a),this._prevEmitterPos=this.spawnPos.clone(),this._prevPosIsValid=!1,this._spawnTimer=0,this.emit=void 0===a.emit||!!a.emit,this.autoUpdate=!!a.autoUpdate,this.orderedArt=!!a.orderedArt}},e.prototype.initAdditional=function(t,i){},e.prototype.parseSpawnType=function(t){var e;switch(t.spawnType){case"rect":this.spawnType="rect",this._spawnFunc=this._spawnRect;var s=t.spawnRect;this.spawnRect=new i.Rectangle(s.x,s.y,s.w,s.h);break;case"circle":this.spawnType="circle",this._spawnFunc=this._spawnCircle,e=t.spawnCircle,this.spawnCircle=new i.Circle(e.x,e.y,e.r);break;case"ring":this.spawnType="ring",this._spawnFunc=this._spawnRing,e=t.spawnCircle,this.spawnCircle=new i.Circle(e.x,e.y,e.r),this.spawnCircle.minRadius=e.minR;break;case"burst":this.spawnType="burst",this._spawnFunc=this._spawnBurst,this.particleSpacing=t.particleSpacing,this.angleStart=t.angleStart?t.angleStart:0;break;case"point":this.spawnType="point",this._spawnFunc=this._spawnPoint;break;case"polygonalChain":this.spawnType="polygonalChain",this._spawnFunc=this._spawnPolygonalChain,this.spawnPolygonalChain=new y(t.spawnPolygon);break;default:this.spawnType="point",this._spawnFunc=this._spawnPoint}},e.prototype.recycle=function(t){t.next&&(t.next.prev=t.prev),t.prev&&(t.prev.next=t.next),t==this._activeParticlesLast&&(this._activeParticlesLast=t.prev),t==this._activeParticlesFirst&&(this._activeParticlesFirst=t.next),t.prev=null,t.next=this._poolFirst,this._poolFirst=t,t.parent&&t.parent.removeChild(t),--this.particleCount},e.prototype.rotate=function(i){if(this.rotation!=i){var e=i-this.rotation;this.rotation=i,t.ParticleUtils.rotatePoint(e,this.spawnPos),this._posChanged=!0}},e.prototype.updateSpawnPos=function(t,i){this._posChanged=!0,this.spawnPos.x=t,this.spawnPos.y=i},e.prototype.updateOwnerPos=function(t,i){this._posChanged=!0,this.ownerPos.x=t,this.ownerPos.y=i},e.prototype.resetPositionTracking=function(){this._prevPosIsValid=!1},Object.defineProperty(e.prototype,"emit",{get:function(){return this._emit},set:function(t){this._emit=!!t,this._emitterLife=this.emitterLifetime},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"autoUpdate",{get:function(){return this._autoUpdate},set:function(t){this._autoUpdate&&!t?f.remove(this.update,this):!this._autoUpdate&&t&&f.add(this.update,this),this._autoUpdate=!!t},enumerable:!0,configurable:!0}),e.prototype.playOnceAndDestroy=function(t){this.autoUpdate=!0,this.emit=!0,this._destroyWhenComplete=!0,this._completeCallback=t},e.prototype.playOnce=function(t){this.emit=!0,this._completeCallback=t},e.prototype.update=function(t){if(this._autoUpdate&&(t=t/i.settings.TARGET_FPMS/1e3),this._parent){var e,s,a,n,r;for(s=this._activeParticlesFirst;s;s=a)a=s.next,s.update(t);this._prevPosIsValid&&(n=this._prevEmitterPos.x,r=this._prevEmitterPos.y);var o=this.ownerPos.x+this.spawnPos.x,h=this.ownerPos.y+this.spawnPos.y;if(this._emit)for(this._spawnTimer-=t<0?0:t;this._spawnTimer<=0;){if(this._emitterLife>0&&(this._emitterLife-=this._frequency,this._emitterLife<=0)){this._spawnTimer=0,this._emitterLife=0,this.emit=!1;break}if(this.particleCount>=this.maxParticles)this._spawnTimer+=this._frequency;else{var l=void 0;if(l=this.minLifetime==this.maxLifetime?this.minLifetime:Math.random()*(this.maxLifetime-this.minLifetime)+this.minLifetime,-this._spawnTimer<l){var p=void 0,c=void 0;if(this._prevPosIsValid&&this._posChanged){var u=1+this._spawnTimer/t;p=(o-n)*u+n,c=(h-r)*u+r}else p=o,c=h;e=0;for(var m=Math.min(this.particlesPerWave,this.maxParticles-this.particleCount);e<m;++e)if(!(this.spawnChance<1&&Math.random()>=this.spawnChance)){var d=void 0;if(this._poolFirst?(d=this._poolFirst,this._poolFirst=this._poolFirst.next,d.next=null):d=new this.particleConstructor(this),this.particleImages.length>1?-1!==this._currentImageIndex?(d.applyArt(this.particleImages[this._currentImageIndex++]),(this._currentImageIndex<0||this._currentImageIndex>=this.particleImages.length)&&(this._currentImageIndex=0)):d.applyArt(this.particleImages[Math.floor(Math.random()*this.particleImages.length)]):d.applyArt(this.particleImages[0]),d.alphaList.reset(this.startAlpha),1!=this.minimumSpeedMultiplier&&(d.speedMultiplier=Math.random()*(1-this.minimumSpeedMultiplier)+this.minimumSpeedMultiplier),d.speedList.reset(this.startSpeed),d.acceleration.x=this.acceleration.x,d.acceleration.y=this.acceleration.y,d.maxSpeed=this.maxSpeed,1!=this.minimumScaleMultiplier&&(d.scaleMultiplier=Math.random()*(1-this.minimumScaleMultiplier)+this.minimumScaleMultiplier),d.scaleList.reset(this.startScale),d.colorList.reset(this.startColor),this.minRotationSpeed==this.maxRotationSpeed?d.rotationSpeed=this.minRotationSpeed:d.rotationSpeed=Math.random()*(this.maxRotationSpeed-this.minRotationSpeed)+this.minRotationSpeed,d.rotationAcceleration=this.rotationAcceleration,d.noRotation=this.noRotation,d.maxLife=l,d.blendMode=this.particleBlendMode,d.ease=this.customEase,d.extraData=this.extraData,this.applyAdditionalProperties(d),this._spawnFunc(d,p,c,e),d.init(),d.update(-this._spawnTimer),d.parent){var f=this._parent.children;if(f[0]==d)f.shift();else if(f[f.length-1]==d)f.pop();else{var x=f.indexOf(d);f.splice(x,1)}this.addAtBack?f.unshift(d):f.push(d)}else this.addAtBack?this._parent.addChildAt(d,0):this._parent.addChild(d);this._activeParticlesLast?(this._activeParticlesLast.next=d,d.prev=this._activeParticlesLast,this._activeParticlesLast=d):this._activeParticlesLast=this._activeParticlesFirst=d,++this.particleCount}}this._spawnTimer+=this._frequency}}if(this._posChanged&&(this._prevEmitterPos.x=o,this._prevEmitterPos.y=h,this._prevPosIsValid=!0,this._posChanged=!1),!this._emit&&!this._activeParticlesFirst){if(this._completeCallback){var y=this._completeCallback;this._completeCallback=null,y()}this._destroyWhenComplete&&this.destroy()}}},e.prototype.applyAdditionalProperties=function(t){},e.prototype._spawnPoint=function(t,i,e){this.minStartRotation==this.maxStartRotation?t.rotation=this.minStartRotation+this.rotation:t.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,t.position.x=i,t.position.y=e},e.prototype._spawnRect=function(i,e,s){this.minStartRotation==this.maxStartRotation?i.rotation=this.minStartRotation+this.rotation:i.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,v.x=Math.random()*this.spawnRect.width+this.spawnRect.x,v.y=Math.random()*this.spawnRect.height+this.spawnRect.y,0!==this.rotation&&t.ParticleUtils.rotatePoint(this.rotation,v),i.position.x=e+v.x,i.position.y=s+v.y},e.prototype._spawnCircle=function(i,e,s){this.minStartRotation==this.maxStartRotation?i.rotation=this.minStartRotation+this.rotation:i.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,v.x=Math.random()*this.spawnCircle.radius,v.y=0,t.ParticleUtils.rotatePoint(360*Math.random(),v),v.x+=this.spawnCircle.x,v.y+=this.spawnCircle.y,0!==this.rotation&&t.ParticleUtils.rotatePoint(this.rotation,v),i.position.x=e+v.x,i.position.y=s+v.y},e.prototype._spawnRing=function(i,e,s){var a=this.spawnCircle;this.minStartRotation==this.maxStartRotation?i.rotation=this.minStartRotation+this.rotation:i.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,a.minRadius!==a.radius?v.x=Math.random()*(a.radius-a.minRadius)+a.minRadius:v.x=a.radius,v.y=0;var n=360*Math.random();i.rotation+=n,t.ParticleUtils.rotatePoint(n,v),v.x+=this.spawnCircle.x,v.y+=this.spawnCircle.y,0!==this.rotation&&t.ParticleUtils.rotatePoint(this.rotation,v),i.position.x=e+v.x,i.position.y=s+v.y},e.prototype._spawnPolygonalChain=function(i,e,s){this.minStartRotation==this.maxStartRotation?i.rotation=this.minStartRotation+this.rotation:i.rotation=Math.random()*(this.maxStartRotation-this.minStartRotation)+this.minStartRotation+this.rotation,this.spawnPolygonalChain.getRandomPoint(v),0!==this.rotation&&t.ParticleUtils.rotatePoint(this.rotation,v),i.position.x=e+v.x,i.position.y=s+v.y},e.prototype._spawnBurst=function(t,i,e,s){0===this.particleSpacing?t.rotation=360*Math.random():t.rotation=this.angleStart+this.particleSpacing*s+this.rotation,t.position.x=i,t.position.y=e},e.prototype.cleanup=function(){var t,i;for(t=this._activeParticlesFirst;t;t=i)i=t.next,this.recycle(t),t.parent&&t.parent.removeChild(t);this._activeParticlesFirst=this._activeParticlesLast=null,this.particleCount=0},e.prototype.destroy=function(){var t;this.autoUpdate=!1,this.cleanup();for(var i=this._poolFirst;i;i=t)t=i.next,i.destroy();this._poolFirst=this._parent=this.particleImages=this.spawnPos=this.ownerPos=this.startColor=this.startScale=this.startAlpha=this.startSpeed=this.customEase=this._completeCallback=null},e}(),g=new i.Point,S=["pow","sqrt","abs","floor","round","ceil","E","PI","sin","cos","tan","asin","acos","atan","atan2","log"],w=new RegExp(["[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]"].concat(S).join("|"),"g"),R=function(e){function s(t){var s=e.call(this,t)||this;return s.path=null,s.initialRotation=0,s.initialPosition=new i.Point,s.movement=0,s}return o(s,e),s.prototype.init=function(){this.initialRotation=this.rotation,this.Particle_init(),this.path=this.extraData.path,this._doNormalMovement=!this.path,this.movement=0,this.initialPosition.x=this.position.x,this.initialPosition.y=this.position.y},s.prototype.update=function(i){var e=this.Particle_update(i);if(e>=0&&this.path){var s=this.speedList.interpolate(e)*this.speedMultiplier;this.movement+=s*i,g.x=this.movement,g.y=this.path(this.movement),t.ParticleUtils.rotatePoint(this.initialRotation,g),this.position.x=this.initialPosition.x+g.x,this.position.y=this.initialPosition.y+g.y}return e},s.prototype.destroy=function(){this.Particle_destroy(),this.path=this.initialPosition=null},s.parseArt=function(t){return x.parseArt(t)},s.parseData=function(i){var e={};if(i&&i.path)try{e.path=function(t){for(var i=t.match(w),e=i.length-1;e>=0;--e)S.indexOf(i[e])>=0&&(i[e]="Math."+i[e]);return t=i.join(""),new Function("x","return "+t+";")}(i.path)}catch(i){t.ParticleUtils.verbose&&console.error("PathParticle: error in parsing path expression"),e.path=null}else t.ParticleUtils.verbose&&console.error("PathParticle requires a path string in extraData!"),e.path=null;return e},s}(x),C=function(t){function e(i){var e=t.call(this,i)||this;return e.textures=null,e.duration=0,e.framerate=0,e.elapsed=0,e.loop=!1,e}return o(e,t),e.prototype.init=function(){this.Particle_init(),this.elapsed=0,this.framerate<0&&(this.duration=this.maxLife,this.framerate=this.textures.length/this.duration)},e.prototype.applyArt=function(t){this.textures=t.textures,this.framerate=t.framerate,this.duration=t.duration,this.loop=t.loop},e.prototype.update=function(t){var e=this.Particle_update(t);if(e>=0){this.elapsed+=t,this.elapsed>this.duration&&(this.loop?this.elapsed=this.elapsed%this.duration:this.elapsed=this.duration-1e-6);var s=this.elapsed*this.framerate+1e-7|0;this.texture=this.textures[s]||i.Texture.EMPTY}return e},e.prototype.destroy=function(){this.Particle_destroy(),this.textures=null},e.parseArt=function(t){for(var e,s,a,r,o,h=[],l=0;l<t.length;++l){e=t[l],h[l]=s={},s.textures=o=[],a=e.textures;for(var p=0;p<a.length;++p)if("string"==typeof(r=a[p]))o.push(n(r));else if(r instanceof i.Texture)o.push(r);else{var c=r.count||1;for(r="string"==typeof r.texture?n(r.texture):r.texture;c>0;--c)o.push(r)}"matchLife"==e.framerate?(s.framerate=-1,s.duration=0,s.loop=!1):(s.loop=!!e.loop,s.framerate=e.framerate>0?e.framerate:60,s.duration=o.length/s.framerate)}return h},e}(x);t.GetTextureFromString=n,t.Particle=x,t.Emitter=P,t.PathParticle=R,t.AnimatedParticle=C,t.PolygonalChain=y,t.PropertyList=h,t.PropertyNode=s}(this.PIXI.particles=this.PIXI.particles||{},PIXI);
2
+ // Disabled to avoid warnings in Chrome (see https://github.com/4ian/GDevelop/pull/3947)
3
+ // //# sourceMappingURL=pixi-particles.min.js.map
@@ -0,0 +1,2 @@
1
+ var gdjs;(F=>{let D;(f=>(f.simplifyPath=(o,h,t=[],S=[])=>{if(o.length<=2)return t.length=0,t.push.apply(t,o),t;const s=h*h;let n=S;n.length=0,n.push(o[0]),n.push(o[o.length-1]);do{t.length=0,t.push(n[0]);let l=0;for(let a=0;a+1<n.length;a++){const e=n[a],u=n[a+1],P=e[0],r=e[1],c=u[0],B=u[1];let v=s,q=null;for(l++;o[l]!==u;l++){const x=o[l],A=F.pathfinding.getPointSegmentDistanceSq(x[0],x[1],P,r,c,B);A>v&&(v=A,q=x)}q&&t.push(q),t.push(u)}const g=n;n=t,t=g}while(t.length!==n.length);return t},f.getPointSegmentDistanceSq=(o,h,t,S,s,n)=>{const l=s-t,g=n-S,a=o-t,e=h-S,u=l*l+g*g;if(u===0)return a*a+e*e;const P=(a*l+e*g)/u;if(P<0)return a*a+e*e;if(P>1)return(o-s)*(o-s)+(h-n)*(h-n);const r=t+P*l-o,c=S+P*g-h;return r*r+c*c}))(D=F.pathfinding||={})})(gdjs||={});
2
+ //# sourceMappingURL=PathTools.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../GDevelop/Extensions/PathfindingBehavior/PathTools.ts"],
4
+ "sourcesContent": ["namespace gdjs {\n export namespace pathfinding {\n /**\n * Simplify a path according to an allowed gap.\n *\n * The simplified path vertices are the same instances as the one in\n * the source. They must be cloned to make them truly independent from each\n * other.\n *\n * @param sourceVertices The path to simplify.\n * @param maxGap The maximum distance the edge of the contour may deviate\n * from the source geometry.\n * @param simplifiedVertices The simplified path.\n * @param workingVertices It avoids allocations.\n */\n export const simplifyPath = (\n sourceVertices: FloatPoint[],\n maxGap: float,\n simplifiedVertices: FloatPoint[] = [],\n workingVertices: FloatPoint[] = []\n ): FloatPoint[] => {\n if (sourceVertices.length <= 2) {\n simplifiedVertices.length = 0;\n simplifiedVertices.push.apply(simplifiedVertices, sourceVertices);\n return simplifiedVertices;\n }\n const maxGapSq = maxGap * maxGap;\n\n // We start with only one rope part.\n // Stretch a rope between the start and the end of the path.\n let previousStepVertices: FloatPoint[] = workingVertices;\n previousStepVertices.length = 0;\n previousStepVertices.push(sourceVertices[0]);\n previousStepVertices.push(sourceVertices[sourceVertices.length - 1]);\n\n do {\n simplifiedVertices.length = 0;\n simplifiedVertices.push(previousStepVertices[0]);\n\n // For each part of the rope...\n let sourceIndex = 0;\n for (\n let previousStepVerticesIndex = 0;\n previousStepVerticesIndex + 1 < previousStepVertices.length;\n previousStepVerticesIndex++\n ) {\n const startVertex = previousStepVertices[previousStepVerticesIndex];\n const endVertex = previousStepVertices[previousStepVerticesIndex + 1];\n\n const startX = startVertex[0];\n const startY = startVertex[1];\n const endX = endVertex[0];\n const endY = endVertex[1];\n\n // Search the furthest vertex from the rope part.\n let maxDeviationSq = maxGapSq;\n let maxDeviationVertex: FloatPoint | null = null;\n // The first and last vertices of the rope part are not checked.\n for (\n sourceIndex++;\n sourceVertices[sourceIndex] !== endVertex;\n sourceIndex++\n ) {\n const sourceVertex = sourceVertices[sourceIndex];\n\n const deviationSq = gdjs.pathfinding.getPointSegmentDistanceSq(\n sourceVertex[0],\n sourceVertex[1],\n startX,\n startY,\n endX,\n endY\n );\n if (deviationSq > maxDeviationSq) {\n maxDeviationSq = deviationSq;\n maxDeviationVertex = sourceVertex;\n }\n }\n // Add the furthest vertex to the rope.\n // The current rope part is split in 2 for the next step.\n if (maxDeviationVertex) {\n simplifiedVertices.push(maxDeviationVertex);\n }\n simplifiedVertices.push(endVertex);\n }\n\n const swapVertices = previousStepVertices;\n previousStepVertices = simplifiedVertices;\n simplifiedVertices = swapVertices;\n } while (\n // Stop when no new vertex were added.\n // It means that the maxGap constraint is fulfilled.\n // Otherwise, iterate over the full path once more.\n simplifiedVertices.length !== previousStepVertices.length\n );\n return simplifiedVertices;\n };\n\n /**\n * Returns the distance squared from the point to the line segment.\n *\n * Behavior is undefined if the the closest distance is outside the\n * line segment.\n *\n * @param px The X position of point (px, py).\n * @param py The Y position of point (px, py)\n * @param ax The X position of the line segment's vertex A.\n * @param ay The Y position of the line segment's vertex A.\n * @param bx The X position of the line segment's vertex B.\n * @param by The Y position of the line segment's vertex B.\n * @return The distance squared from the point (px, py) to line segment AB.\n */\n export const getPointSegmentDistanceSq = (\n px: float,\n py: float,\n ax: float,\n ay: float,\n bx: float,\n by: float\n ): float => {\n // This implementation is strongly inspired from CritterAI class \"Geometry\".\n //\n // Reference: http://local.wasp.uwa.edu.au/~pbourke/geometry/pointline/\n //\n // The goal of the algorithm is to find the point on line segment AB\n // that is closest to P and then calculate the distance between P\n // and that point.\n\n const deltaABx = bx - ax;\n const deltaABy = by - ay;\n const deltaAPx = px - ax;\n const deltaAPy = py - ay;\n\n const segmentABLengthSq = deltaABx * deltaABx + deltaABy * deltaABy;\n if (segmentABLengthSq === 0) {\n // AB is not a line segment. So just return\n // distanceSq from P to A\n return deltaAPx * deltaAPx + deltaAPy * deltaAPy;\n }\n\n const u = (deltaAPx * deltaABx + deltaAPy * deltaABy) / segmentABLengthSq;\n if (u < 0) {\n // Closest point on line AB is outside outside segment AB and\n // closer to A. So return distanceSq from P to A.\n return deltaAPx * deltaAPx + deltaAPy * deltaAPy;\n } else if (u > 1) {\n // Closest point on line AB is outside segment AB and closer to B.\n // So return distanceSq from P to B.\n return (px - bx) * (px - bx) + (py - by) * (py - by);\n }\n\n // Closest point on lineAB is inside segment AB. So find the exact\n // point on AB and calculate the distanceSq from it to P.\n\n // The calculation in parenthesis is the location of the point on\n // the line segment.\n const deltaX = ax + u * deltaABx - px;\n const deltaY = ay + u * deltaABy - py;\n\n return deltaX * deltaX + deltaY * deltaY;\n };\n }\n}\n"],
5
+ "mappings": "AAAA,IAAU,MAAAA,GAAV,CACS,IAAUC,OAcFA,EAAA,aAAe,CAC1BC,EACAC,EACAC,EAAmC,CAAC,EACpCC,EAAgC,CAAC,IAChB,CACjB,GAAIH,EAAe,QAAU,EAC3B,OAAAE,EAAmB,OAAS,EAC5BA,EAAmB,KAAK,MAAMA,EAAoBF,CAAc,EACzDE,EAET,MAAME,EAAWH,EAASA,EAI1B,IAAII,EAAqCF,EACzCE,EAAqB,OAAS,EAC9BA,EAAqB,KAAKL,EAAe,CAAC,CAAC,EAC3CK,EAAqB,KAAKL,EAAeA,EAAe,OAAS,CAAC,CAAC,EAEnE,EAAG,CACDE,EAAmB,OAAS,EAC5BA,EAAmB,KAAKG,EAAqB,CAAC,CAAC,EAG/C,IAAIC,EAAc,EAClB,QACMC,EAA4B,EAChCA,EAA4B,EAAIF,EAAqB,OACrDE,IACA,CACA,MAAMC,EAAcH,EAAqBE,CAAyB,EAC5DE,EAAYJ,EAAqBE,EAA4B,CAAC,EAE9DG,EAASF,EAAY,CAAC,EACtBG,EAASH,EAAY,CAAC,EACtBI,EAAOH,EAAU,CAAC,EAClBI,EAAOJ,EAAU,CAAC,EAGxB,IAAIK,EAAiBV,EACjBW,EAAwC,KAE5C,IACET,IACAN,EAAeM,CAAW,IAAMG,EAChCH,IACA,CACA,MAAMU,EAAehB,EAAeM,CAAW,EAEzCW,EAAcnB,EAAK,YAAY,0BACnCkB,EAAa,CAAC,EACdA,EAAa,CAAC,EACdN,EACAC,EACAC,EACAC,CACF,EACII,EAAcH,IAChBA,EAAiBG,EACjBF,EAAqBC,EAEzB,CAGID,GACFb,EAAmB,KAAKa,CAAkB,EAE5Cb,EAAmB,KAAKO,CAAS,CACnC,CAEA,MAAMS,EAAeb,EACrBA,EAAuBH,EACvBA,EAAqBgB,CACvB,OAIEhB,EAAmB,SAAWG,EAAqB,QAErD,OAAOH,CACT,EAgBaH,EAAA,0BAA4B,CACvCoB,EACAC,EACAC,EACAC,EACAC,EACAC,IACU,CASV,MAAMC,EAAWF,EAAKF,EAChBK,EAAWF,EAAKF,EAChBK,EAAWR,EAAKE,EAChBO,EAAWR,EAAKE,EAEhBO,EAAoBJ,EAAWA,EAAWC,EAAWA,EAC3D,GAAIG,IAAsB,EAGxB,OAAOF,EAAWA,EAAWC,EAAWA,EAG1C,MAAME,GAAKH,EAAWF,EAAWG,EAAWF,GAAYG,EACxD,GAAIC,EAAI,EAGN,OAAOH,EAAWA,EAAWC,EAAWA,EACnC,GAAIE,EAAI,EAGb,OAAQX,EAAKI,IAAOJ,EAAKI,IAAOH,EAAKI,IAAOJ,EAAKI,GAQnD,MAAMO,EAASV,EAAKS,EAAIL,EAAWN,EAC7Ba,EAASV,EAAKQ,EAAIJ,EAAWN,EAEnC,OAAOW,EAASA,EAASC,EAASA,CACpC,IA/JejC,EAAAD,EAAA,oBADT",
6
+ "names": ["gdjs", "pathfinding", "sourceVertices", "maxGap", "simplifiedVertices", "workingVertices", "maxGapSq", "previousStepVertices", "sourceIndex", "previousStepVerticesIndex", "startVertex", "endVertex", "startX", "startY", "endX", "endY", "maxDeviationSq", "maxDeviationVertex", "sourceVertex", "deviationSq", "swapVertices", "px", "py", "ax", "ay", "bx", "by", "deltaABx", "deltaABy", "deltaAPx", "deltaAPy", "segmentABLengthSq", "u", "deltaX", "deltaY"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var gdjs;(s=>{class n{_obstaclesRBush;constructor(e){this._obstaclesRBush=new rbush}static getManager(e){return e.pathfindingObstaclesManager||(e.pathfindingObstaclesManager=new s.PathfindingObstaclesManager(e)),e.pathfindingObstaclesManager}addObstacle(e){e.currentRBushAABB?e.currentRBushAABB.updateAABBFromOwner():e.currentRBushAABB=new s.BehaviorRBushAABB(e),this._obstaclesRBush.insert(e.currentRBushAABB)}removeObstacle(e){this._obstaclesRBush.remove(e.currentRBushAABB)}getAllObstaclesAround(e,t,a,r){const i=s.staticObject(n.prototype.getAllObstaclesAround);i.minX=e-a,i.minY=t-a,i.maxX=e+a,i.maxY=t+a;const h=this._obstaclesRBush.search(i);r.length=0,h.forEach(o=>r.push(o.behavior))}}s.PathfindingObstaclesManager=n;class g extends s.RuntimeBehavior{_impassable;_cost;_oldX=0;_oldY=0;_oldWidth=0;_oldHeight=0;_manager;_registeredInManager=!1;currentRBushAABB=null;constructor(e,t,a){super(e,t,a),this._impassable=t.impassable,this._cost=t.cost,this._manager=n.getManager(e)}updateFromBehaviorData(e,t){return e.impassable!==t.impassable&&this.setImpassable(t.impassable),e.cost!==t.cost&&this.setCost(t.cost),!0}onDestroy(){this._manager&&this._registeredInManager&&this._manager.removeObstacle(this)}doStepPreEvents(e){!this.activated()&&this._registeredInManager?(this._manager.removeObstacle(this),this._registeredInManager=!1):this.activated()&&!this._registeredInManager&&(this._manager.addObstacle(this),this._registeredInManager=!0),(this._oldX!==this.owner.getX()||this._oldY!==this.owner.getY()||this._oldWidth!==this.owner.getWidth()||this._oldHeight!==this.owner.getHeight())&&(this._registeredInManager&&(this._manager.removeObstacle(this),this._manager.addObstacle(this)),this._oldX=this.owner.getX(),this._oldY=this.owner.getY(),this._oldWidth=this.owner.getWidth(),this._oldHeight=this.owner.getHeight())}doStepPostEvents(e){}getAABB(){return this.owner.getAABB()}onActivate(){this._registeredInManager||(this._manager.addObstacle(this),this._registeredInManager=!0)}onDeActivate(){this._registeredInManager&&(this._manager.removeObstacle(this),this._registeredInManager=!1)}getCost(){return this._cost}setCost(e){this._cost=e}isImpassable(){return this._impassable}setImpassable(e){this._impassable=e}}s.PathfindingObstacleRuntimeBehavior=g,s.registerBehavior("PathfindingBehavior::PathfindingObstacleBehavior",s.PathfindingObstacleRuntimeBehavior)})(gdjs||={});
2
+ //# sourceMappingURL=pathfindingobstacleruntimebehavior.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../GDevelop/Extensions/PathfindingBehavior/pathfindingobstacleruntimebehavior.ts"],
4
+ "sourcesContent": ["/*\nGDevelop - Pathfinding Behavior Extension\nCopyright (c) 2013-2016 Florian Rival (Florian.Rival@gmail.com)\n */\n\nnamespace gdjs {\n export interface RuntimeInstanceContainer {\n pathfindingObstaclesManager: gdjs.PathfindingObstaclesManager;\n }\n declare var rbush: any;\n\n /**\n * PathfindingObstaclesManager manages the common objects shared by objects\n * having a pathfinding behavior: In particular, the obstacles behaviors are\n * required to declare themselves (see\n * `PathfindingObstaclesManager.addObstacle`) to the manager of their\n * associated container (see\n * `gdjs.PathfindingRuntimeBehavior.obstaclesManagers`).\n */\n export class PathfindingObstaclesManager {\n _obstaclesRBush: any;\n\n constructor(instanceContainer: gdjs.RuntimeInstanceContainer) {\n this._obstaclesRBush = new rbush();\n }\n\n /**\n * Get the obstacles manager of an instance container.\n */\n static getManager(instanceContainer: gdjs.RuntimeInstanceContainer) {\n if (!instanceContainer.pathfindingObstaclesManager) {\n //Create the shared manager if necessary.\n instanceContainer.pathfindingObstaclesManager = new gdjs.PathfindingObstaclesManager(\n instanceContainer\n );\n }\n return instanceContainer.pathfindingObstaclesManager;\n }\n\n /**\n * Add a obstacle to the list of existing obstacles.\n */\n addObstacle(\n pathfindingObstacleBehavior: PathfindingObstacleRuntimeBehavior\n ) {\n if (pathfindingObstacleBehavior.currentRBushAABB)\n pathfindingObstacleBehavior.currentRBushAABB.updateAABBFromOwner();\n else\n pathfindingObstacleBehavior.currentRBushAABB = new gdjs.BehaviorRBushAABB(\n pathfindingObstacleBehavior\n );\n\n this._obstaclesRBush.insert(pathfindingObstacleBehavior.currentRBushAABB);\n }\n\n /**\n * Remove a obstacle from the list of existing obstacles. Be sure that the obstacle was\n * added before.\n */\n removeObstacle(\n pathfindingObstacleBehavior: PathfindingObstacleRuntimeBehavior\n ) {\n this._obstaclesRBush.remove(pathfindingObstacleBehavior.currentRBushAABB);\n }\n\n /**\n * Returns all the platforms around the specified object.\n * @param maxMovementLength The maximum distance, in pixels, the object is going to do.\n * @return An array with all platforms near the object.\n */\n getAllObstaclesAround(\n x: float,\n y: float,\n radius: float,\n result: gdjs.PathfindingObstacleRuntimeBehavior[]\n ): void {\n const searchArea = gdjs.staticObject(\n PathfindingObstaclesManager.prototype.getAllObstaclesAround\n );\n // @ts-ignore\n searchArea.minX = x - radius;\n // @ts-ignore\n searchArea.minY = y - radius;\n // @ts-ignore\n searchArea.maxX = x + radius;\n // @ts-ignore\n searchArea.maxY = y + radius;\n const nearbyObstacles: gdjs.BehaviorRBushAABB<\n gdjs.PathfindingObstacleRuntimeBehavior\n >[] = this._obstaclesRBush.search(searchArea);\n result.length = 0;\n nearbyObstacles.forEach((nearbyObstacle) =>\n result.push(nearbyObstacle.behavior)\n );\n }\n }\n\n /**\n * PathfindingObstacleRuntimeBehavior represents a behavior allowing objects to be\n * considered as a obstacle by objects having Pathfinding Behavior.\n */\n export class PathfindingObstacleRuntimeBehavior extends gdjs.RuntimeBehavior {\n _impassable: boolean;\n _cost: float;\n _oldX: float = 0;\n _oldY: float = 0;\n _oldWidth: float = 0;\n _oldHeight: float = 0;\n _manager: PathfindingObstaclesManager;\n _registeredInManager: boolean = false;\n currentRBushAABB: gdjs.BehaviorRBushAABB<\n PathfindingObstacleRuntimeBehavior\n > | null = null;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n behaviorData,\n owner: gdjs.RuntimeObject\n ) {\n super(instanceContainer, behaviorData, owner);\n this._impassable = behaviorData.impassable;\n this._cost = behaviorData.cost;\n this._manager = PathfindingObstaclesManager.getManager(instanceContainer);\n\n //Note that we can't use getX(), getWidth()... of owner here:\n //The owner is not yet fully constructed.\n }\n\n updateFromBehaviorData(oldBehaviorData, newBehaviorData): boolean {\n if (oldBehaviorData.impassable !== newBehaviorData.impassable) {\n this.setImpassable(newBehaviorData.impassable);\n }\n if (oldBehaviorData.cost !== newBehaviorData.cost) {\n this.setCost(newBehaviorData.cost);\n }\n return true;\n }\n\n onDestroy() {\n if (this._manager && this._registeredInManager) {\n this._manager.removeObstacle(this);\n }\n }\n\n doStepPreEvents(instanceContainer: gdjs.RuntimeInstanceContainer) {\n //Make sure the obstacle is or is not in the obstacles manager.\n if (!this.activated() && this._registeredInManager) {\n this._manager.removeObstacle(this);\n this._registeredInManager = false;\n } else {\n if (this.activated() && !this._registeredInManager) {\n this._manager.addObstacle(this);\n this._registeredInManager = true;\n }\n }\n\n //Track changes in size or position\n if (\n this._oldX !== this.owner.getX() ||\n this._oldY !== this.owner.getY() ||\n this._oldWidth !== this.owner.getWidth() ||\n this._oldHeight !== this.owner.getHeight()\n ) {\n if (this._registeredInManager) {\n this._manager.removeObstacle(this);\n this._manager.addObstacle(this);\n }\n this._oldX = this.owner.getX();\n this._oldY = this.owner.getY();\n this._oldWidth = this.owner.getWidth();\n this._oldHeight = this.owner.getHeight();\n }\n }\n\n doStepPostEvents(instanceContainer: gdjs.RuntimeInstanceContainer) {}\n\n getAABB() {\n return this.owner.getAABB();\n }\n\n onActivate() {\n if (this._registeredInManager) {\n return;\n }\n this._manager.addObstacle(this);\n this._registeredInManager = true;\n }\n\n onDeActivate() {\n if (!this._registeredInManager) {\n return;\n }\n this._manager.removeObstacle(this);\n this._registeredInManager = false;\n }\n\n getCost() {\n return this._cost;\n }\n\n setCost(cost: float): void {\n this._cost = cost;\n }\n\n isImpassable(): boolean {\n return this._impassable;\n }\n\n setImpassable(impassable: boolean): void {\n this._impassable = impassable;\n }\n }\n gdjs.registerBehavior(\n 'PathfindingBehavior::PathfindingObstacleBehavior',\n gdjs.PathfindingObstacleRuntimeBehavior\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["gdjs", "PathfindingObstaclesManager", "instanceContainer", "pathfindingObstacleBehavior", "x", "y", "radius", "result", "searchArea", "nearbyObstacles", "nearbyObstacle", "PathfindingObstacleRuntimeBehavior", "behaviorData", "owner", "oldBehaviorData", "newBehaviorData", "cost", "impassable"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var gdjs;(l=>{const p=new l.Logger("Pathfinding behavior");class f extends l.RuntimeBehavior{_path=[];static _smoothingResultVertices=[];static _smoothingWorkingVertices=[];_allowDiagonals;_acceleration;_maxSpeed;_angularMaxSpeed;_rotateObject;_angleOffset;_cellWidth;_cellHeight;_gridOffsetX;_gridOffsetY;_extraBorder;_smoothingMaxCellGap;_pathFound=!1;_speed=0;_angularSpeed=0;_distanceOnSegment=0;_totalSegmentDistance=0;_currentSegment=0;_reachedEnd=!1;_manager;_searchContext;_movementAngle=0;constructor(s,e,o){super(s,e,o),this._path===void 0||(this._path.length=0),this._allowDiagonals=e.allowDiagonals,this._acceleration=e.acceleration,this._maxSpeed=e.maxSpeed,this._angularMaxSpeed=e.angularMaxSpeed,this._rotateObject=e.rotateObject,this._angleOffset=e.angleOffset,this._cellWidth=e.cellWidth,this._cellHeight=e.cellHeight,this._gridOffsetX=e.gridOffsetX||0,this._gridOffsetY=e.gridOffsetY||0,this._extraBorder=e.extraBorder,this._smoothingMaxCellGap=e.smoothingMaxCellGap||0,this._manager=l.PathfindingObstaclesManager.getManager(s),this._searchContext=new l.PathfindingRuntimeBehavior.SearchContext(this._manager)}updateFromBehaviorData(s,e){return s.allowDiagonals!==e.allowDiagonals&&this.allowDiagonals(e.allowDiagonals),s.acceleration!==e.acceleration&&this.setAcceleration(e.acceleration),s.maxSpeed!==e.maxSpeed&&this.setMaxSpeed(e.maxSpeed),s.angularMaxSpeed!==e.angularMaxSpeed&&this.setAngularMaxSpeed(e.angularMaxSpeed),s.rotateObject!==e.rotateObject&&this.setRotateObject(e.rotateObject),s.angleOffset!==e.angleOffset&&this.setAngleOffset(e.angleOffset),s.cellWidth!==e.cellWidth&&this.setCellWidth(e.cellWidth),s.cellHeight!==e.cellHeight&&this.setCellHeight(e.cellHeight),s.gridOffsetX!==e.gridOffsetX&&(this._gridOffsetX=e.gridOffsetX),s.gridOffsetY!==e.gridOffsetY&&(this._gridOffsetY=e.gridOffsetY),s.extraBorder!==e.extraBorder&&this.setExtraBorder(e.extraBorder),s.smoothingMaxCellGap!==e.smoothingMaxCellGap&&(this._smoothingMaxCellGap=e.smoothingMaxCellGap),!0}setCellWidth(s){this._cellWidth=s}getCellWidth(){return this._cellWidth}setCellHeight(s){this._cellHeight=s}getCellHeight(){return this._cellHeight}setGridOffsetX(s){this._gridOffsetX=s}getGridOffsetX(){return this._gridOffsetX}setGridOffsetY(s){this._gridOffsetY=s}getGridOffsetY(){return this._gridOffsetY}setAcceleration(s){this._acceleration=s}getAcceleration(){return this._acceleration}setMaxSpeed(s){this._maxSpeed=s}getMaxSpeed(){return this._maxSpeed}setSpeed(s){this._speed=s}getSpeed(){return this._speed}getMovementAngle(){return this._movementAngle}movementAngleIsAround(s,e){return Math.abs(l.evtTools.common.angleDifference(this._movementAngle,s))<=e}setAngularMaxSpeed(s){this._angularMaxSpeed=s}getAngularMaxSpeed(){return this._angularMaxSpeed}setAngleOffset(s){this._angleOffset=s}getAngleOffset(){return this._angleOffset}setExtraBorder(s){this._extraBorder=s}getExtraBorder(){return this._extraBorder}allowDiagonals(s){this._allowDiagonals=s}diagonalsAllowed(){return this._allowDiagonals}setRotateObject(s){this._rotateObject=s}isObjectRotated(){return this._rotateObject}getNodeX(s){return s<this._path.length?this._path[s][0]:0}getNodeY(s){return s<this._path.length?this._path[s][1]:0}getNextNodeIndex(){return this._currentSegment+1<this._path.length?this._currentSegment+1:this._path.length-1}getNodeCount(){return this._path.length}getNextNodeX(){return this._path.length===0?0:this._currentSegment+1<this._path.length?this._path[this._currentSegment+1][0]:this._path[this._path.length-1][0]}getNextNodeY(){return this._path.length===0?0:this._currentSegment+1<this._path.length?this._path[this._currentSegment+1][1]:this._path[this._path.length-1][1]}getLastNodeX(){return this._path.length<2?0:this._currentSegment<this._path.length-1?this._path[this._currentSegment][0]:this._path[this._path.length-1][0]}getLastNodeY(){return this._path.length<2?0:this._currentSegment<this._path.length-1?this._path[this._currentSegment][1]:this._path[this._path.length-1][1]}getDestinationX(){return this._path.length===0?0:this._path[this._path.length-1][0]}getDestinationY(){return this._path.length===0?0:this._path[this._path.length-1][1]}pathFound(){return this._pathFound}destinationReached(){return this._reachedEnd}moveTo(s,e,o){const t=this.owner,i=Math.round((e-this._gridOffsetX)/this._cellWidth),h=Math.round((o-this._gridOffsetY)/this._cellHeight),r=Math.round((t.getX()-this._gridOffsetX)/this._cellWidth),n=Math.round((t.getY()-this._gridOffsetY)/this._cellHeight);if(r==i&&n==h){this._path.length=0,this._path.push([t.getX(),t.getY()]),this._path.push([e,o]),this._enterSegment(0),this._pathFound=!0;return}if(this._searchContext.allowDiagonals(this._allowDiagonals),this._searchContext.setObstacles(this._manager),this._searchContext.setCellSize(this._cellWidth,this._cellHeight),this._searchContext.setGridOffset(this._gridOffsetX,this._gridOffsetY),this._searchContext.setStartPosition(t.getX(),t.getY()),this._searchContext.setObjectSize(t.getX()-t.getDrawableX()+this._extraBorder,t.getY()-t.getDrawableY()+this._extraBorder,t.getWidth()-(t.getX()-t.getDrawableX())+this._extraBorder,t.getHeight()-(t.getY()-t.getDrawableY())+this._extraBorder),this._searchContext.computePathTo(e,o)){let a=this._searchContext.getFinalNode(),_=0;for(;a;)_===this._path.length&&this._path.push([0,0]),this._path[_][0]=a.pos[0]*this._cellWidth+this._gridOffsetX,this._path[_][1]=a.pos[1]*this._cellHeight+this._gridOffsetY,a=a.parent,_++;if(this._path.length=_,this._path.reverse(),this._path[0][0]=t.getX(),this._path[0][1]=t.getY(),this._allowDiagonals&&this._smoothingMaxCellGap>0){l.pathfinding.simplifyPath(this._path,this._smoothingMaxCellGap*Math.min(this._cellWidth,this._cellHeight),l.PathfindingRuntimeBehavior._smoothingResultVertices,l.PathfindingRuntimeBehavior._smoothingWorkingVertices);let g=this._path;this._path=l.PathfindingRuntimeBehavior._smoothingResultVertices,l.PathfindingRuntimeBehavior._smoothingResultVertices=g}this._enterSegment(0),this._pathFound=!0;return}this._pathFound=!1}_enterSegment(s){if(this._path.length!==0)if(this._currentSegment=s,this._currentSegment<this._path.length-1){const e=this._path[this._currentSegment+1][0]-this._path[this._currentSegment][0],o=this._path[this._currentSegment+1][1]-this._path[this._currentSegment][1];this._totalSegmentDistance=Math.sqrt(e*e+o*o),this._distanceOnSegment=0,this._reachedEnd=!1,this._movementAngle=(l.toDegrees(Math.atan2(o,e))+360)%360}else this._reachedEnd=!0,this._speed=0}doStepPreEvents(s){if(this._path.length===0||this._reachedEnd)return;const e=this.owner.getElapsedTime()/1e3,o=this._speed;this._speed!==this._maxSpeed&&(this._speed+=this._acceleration*e,this._speed>this._maxSpeed&&(this._speed=this._maxSpeed)),this._angularSpeed=this._angularMaxSpeed,this._distanceOnSegment+=(this._speed+o)/2*e;const t=this._totalSegmentDistance-this._distanceOnSegment;t<=0&&this._currentSegment<this._path.length&&(this._enterSegment(this._currentSegment+1),this._distanceOnSegment=-t);let i=[0,0];this._currentSegment<this._path.length-1?(i[0]=l.evtTools.common.lerp(this._path[this._currentSegment][0],this._path[this._currentSegment+1][0],this._distanceOnSegment/this._totalSegmentDistance),i[1]=l.evtTools.common.lerp(this._path[this._currentSegment][1],this._path[this._currentSegment+1][1],this._distanceOnSegment/this._totalSegmentDistance),this._rotateObject&&this.owner.getAngle()!==this._movementAngle+this._angleOffset&&this.owner.rotateTowardAngle(this._movementAngle+this._angleOffset,this._angularSpeed)):i=this._path[this._path.length-1],this.owner.setX(i[0]),this.owner.setY(i[1])}doStepPostEvents(s){}static euclideanDistance(s,e){return Math.sqrt((s[0]-e[0])*(s[0]-e[0])+(s[1]-e[1])*(s[1]-e[1]))}static manhattanDistance(s,e){return Math.abs(s[0]-e[0])+Math.abs(s[1]-e[1])}}l.PathfindingRuntimeBehavior=f,l.registerBehavior("PathfindingBehavior::PathfindingBehavior",l.PathfindingRuntimeBehavior),(e=>{class c{pos;cost=0;smallestCost=-1;estimateCost=-1;parent=null;open=!0;constructor(t,i){this.pos=[t,i]}reinitialize(t,i){this.pos[0]=t,this.pos[1]=i,this.cost=0,this.smallestCost=-1,this.estimateCost=-1,this.parent=null,this.open=!0}}e.Node=c;class s{_obstacles;_finalNode=null;_destination=[0,0];_start=[0,0];_startX=0;_startY=0;_allowDiagonals=!0;_maxComplexityFactor=50;_cellWidth=20;_cellHeight=20;_gridOffsetX=0;_gridOffsetY=0;_leftBorder=0;_rightBorder=0;_topBorder=0;_bottomBorder=0;_distanceFunction;_allNodes=[];_openNodes=[];_closeObstacles=[];_nodeCache=[];constructor(t){this._obstacles=t,this._distanceFunction=e.euclideanDistance}setObstacles(t){return this._obstacles=t,this}getFinalNode(){return this._finalNode}allowDiagonals(t){return this._allowDiagonals=t,this._distanceFunction=t?e.euclideanDistance:e.manhattanDistance,this}setStartPosition(t,i){return this._startX=t,this._startY=i,this}setObjectSize(t,i,h,r){return this._leftBorder=t,this._rightBorder=h,this._topBorder=i,this._bottomBorder=r,this}setCellSize(t,i){return this._cellWidth=t,this._cellHeight=i,this}setGridOffset(t,i){return this._gridOffsetX=t,this._gridOffsetY=i,this}computePathTo(t,i){if(this._obstacles===null){p.log("You tried to compute a path without specifying the obstacles");return}this._destination[0]=Math.round((t-this._gridOffsetX)/this._cellWidth),this._destination[1]=Math.round((i-this._gridOffsetY)/this._cellHeight),this._start[0]=Math.round((this._startX-this._gridOffsetX)/this._cellWidth),this._start[1]=Math.round((this._startY-this._gridOffsetY)/this._cellHeight),this._freeAllNodes();const h=this._getNode(this._start[0],this._start[1]);h.smallestCost=0,h.estimateCost=0+this._distanceFunction(this._start,this._destination),this._openNodes.length=0,this._openNodes.push(h);let r=0;const n=h.estimateCost*this._maxComplexityFactor;for(;this._openNodes.length!==0;){if(r++>n)return console.warn(`No path was found after covering ${n} cells.`),!1;const a=this._openNodes.shift();if(a.open=!1,a.pos[0]==this._destination[0]&&a.pos[1]==this._destination[1])return this._finalNode=a,!0;this._insertNeighbors(a)}return!1}_freeAllNodes(){if(this._nodeCache.length<=32e3){for(const t in this._allNodes)if(this._allNodes.hasOwnProperty(t)){const i=this._allNodes[t];for(const h in i)i.hasOwnProperty(h)&&this._nodeCache.push(i[h])}}this._allNodes=[]}_insertNeighbors(t){this._addOrUpdateNode(t.pos[0]+1,t.pos[1],t,1),this._addOrUpdateNode(t.pos[0]-1,t.pos[1],t,1),this._addOrUpdateNode(t.pos[0],t.pos[1]+1,t,1),this._addOrUpdateNode(t.pos[0],t.pos[1]-1,t,1),this._allowDiagonals&&(this._addOrUpdateNode(t.pos[0]+1,t.pos[1]+1,t,1.414213562),this._addOrUpdateNode(t.pos[0]+1,t.pos[1]-1,t,1.414213562),this._addOrUpdateNode(t.pos[0]-1,t.pos[1]-1,t,1.414213562),this._addOrUpdateNode(t.pos[0]-1,t.pos[1]+1,t,1.414213562))}_getNode(t,i){if(this._allNodes.hasOwnProperty(t)){if(this._allNodes[t].hasOwnProperty(i))return this._allNodes[t][i]}else this._allNodes[t]=[];let h;this._nodeCache.length!==0?(h=this._nodeCache.shift(),h.reinitialize(t,i)):h=new c(t,i);const r=t*this._cellWidth+this._gridOffsetX,n=i*this._cellHeight+this._gridOffsetY;let a=!1;const _=this._cellHeight>this._cellWidth?this._cellHeight*2:this._cellWidth*2;this._obstacles.getAllObstaclesAround(r,n,_,this._closeObstacles);for(let g=0;g<this._closeObstacles.length;++g){const d=this._closeObstacles[g].owner,u=Math.floor((d.getDrawableX()-this._rightBorder-this._gridOffsetX)/this._cellWidth),m=Math.floor((d.getDrawableY()-this._bottomBorder-this._gridOffsetY)/this._cellHeight),O=Math.ceil((d.getDrawableX()+d.getWidth()+this._leftBorder-this._gridOffsetX)/this._cellWidth),S=Math.ceil((d.getDrawableY()+d.getHeight()+this._topBorder-this._gridOffsetY)/this._cellHeight);if(u<t&&t<O&&m<i&&i<S)if(a=!0,this._closeObstacles[g].isImpassable()){h.cost=-1;break}else h.cost+=this._closeObstacles[g].getCost()}return a||(h.cost=1),this._allNodes[t][i]=h,h}_addOrUpdateNode(t,i,h,r){const n=this._getNode(t,i);if(!(!n.open||n.cost<0)&&(n.smallestCost===-1||n.smallestCost>h.smallestCost+(h.cost+n.cost)/2*r)){if(n.smallestCost!=-1){for(let a=0;a<this._openNodes.length;++a)if(this._openNodes[a].pos[0]==n.pos[0]&&this._openNodes[a].pos[1]==n.pos[1]){this._openNodes.splice(a,1);break}}if(n.smallestCost=h.smallestCost+(h.cost+n.cost)/2*r,n.parent=h,n.estimateCost=n.smallestCost+this._distanceFunction(n.pos,this._destination),this._openNodes.length===0||this._openNodes[this._openNodes.length-1].estimateCost<n.estimateCost)this._openNodes.push(n);else for(let a=0;a<this._openNodes.length;++a)if(this._openNodes[a].estimateCost>=n.estimateCost){this._openNodes.splice(a,0,n);break}}}}e.SearchContext=s})(f=l.PathfindingRuntimeBehavior||={})})(gdjs||={});
2
+ //# sourceMappingURL=pathfindingruntimebehavior.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../GDevelop/Extensions/PathfindingBehavior/pathfindingruntimebehavior.ts"],
4
+ "sourcesContent": ["/*\nGDevelop - Pathfinding Behavior Extension\nCopyright (c) 2010-2016 Florian Rival (Florian.Rival@gmail.com)\n */\nnamespace gdjs {\n const logger = new gdjs.Logger('Pathfinding behavior');\n /**\n * PathfindingRuntimeBehavior represents a behavior allowing objects to\n * follow a path computed to avoid obstacles.\n */\n export class PathfindingRuntimeBehavior extends gdjs.RuntimeBehavior {\n _path: Array<FloatPoint> = [];\n /** Used by the path simplification algorithm */\n static _smoothingResultVertices: Array<FloatPoint> = [];\n /** Used by the path simplification algorithm */\n static _smoothingWorkingVertices: Array<FloatPoint> = [];\n\n //Behavior configuration:\n _allowDiagonals: boolean;\n _acceleration: float;\n _maxSpeed: float;\n _angularMaxSpeed: float;\n _rotateObject: boolean;\n _angleOffset: float;\n _cellWidth: float;\n _cellHeight: float;\n _gridOffsetX: float;\n _gridOffsetY: float;\n _extraBorder: float;\n _smoothingMaxCellGap: float;\n\n //Attributes used for traveling on the path:\n _pathFound: boolean = false;\n _speed: float = 0;\n _angularSpeed: float = 0;\n _distanceOnSegment: float = 0;\n _totalSegmentDistance: float = 0;\n _currentSegment: integer = 0;\n _reachedEnd: boolean = false;\n _manager: PathfindingObstaclesManager;\n _searchContext: PathfindingRuntimeBehavior.SearchContext;\n\n _movementAngle: float = 0;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n behaviorData,\n owner: gdjs.RuntimeObject\n ) {\n super(instanceContainer, behaviorData, owner);\n\n //The path computed and followed by the object (Array of arrays containing x and y position)\n if (this._path === undefined) {\n } else {\n this._path.length = 0;\n }\n this._allowDiagonals = behaviorData.allowDiagonals;\n this._acceleration = behaviorData.acceleration;\n this._maxSpeed = behaviorData.maxSpeed;\n this._angularMaxSpeed = behaviorData.angularMaxSpeed;\n this._rotateObject = behaviorData.rotateObject;\n this._angleOffset = behaviorData.angleOffset;\n this._cellWidth = behaviorData.cellWidth;\n this._cellHeight = behaviorData.cellHeight;\n this._gridOffsetX = behaviorData.gridOffsetX || 0;\n this._gridOffsetY = behaviorData.gridOffsetY || 0;\n this._extraBorder = behaviorData.extraBorder;\n this._smoothingMaxCellGap = behaviorData.smoothingMaxCellGap || 0;\n this._manager = gdjs.PathfindingObstaclesManager.getManager(\n instanceContainer\n );\n this._searchContext = new gdjs.PathfindingRuntimeBehavior.SearchContext(\n this._manager\n );\n }\n\n updateFromBehaviorData(oldBehaviorData, newBehaviorData): boolean {\n if (oldBehaviorData.allowDiagonals !== newBehaviorData.allowDiagonals) {\n this.allowDiagonals(newBehaviorData.allowDiagonals);\n }\n if (oldBehaviorData.acceleration !== newBehaviorData.acceleration) {\n this.setAcceleration(newBehaviorData.acceleration);\n }\n if (oldBehaviorData.maxSpeed !== newBehaviorData.maxSpeed) {\n this.setMaxSpeed(newBehaviorData.maxSpeed);\n }\n if (oldBehaviorData.angularMaxSpeed !== newBehaviorData.angularMaxSpeed) {\n this.setAngularMaxSpeed(newBehaviorData.angularMaxSpeed);\n }\n if (oldBehaviorData.rotateObject !== newBehaviorData.rotateObject) {\n this.setRotateObject(newBehaviorData.rotateObject);\n }\n if (oldBehaviorData.angleOffset !== newBehaviorData.angleOffset) {\n this.setAngleOffset(newBehaviorData.angleOffset);\n }\n if (oldBehaviorData.cellWidth !== newBehaviorData.cellWidth) {\n this.setCellWidth(newBehaviorData.cellWidth);\n }\n if (oldBehaviorData.cellHeight !== newBehaviorData.cellHeight) {\n this.setCellHeight(newBehaviorData.cellHeight);\n }\n if (oldBehaviorData.gridOffsetX !== newBehaviorData.gridOffsetX) {\n this._gridOffsetX = newBehaviorData.gridOffsetX;\n }\n if (oldBehaviorData.gridOffsetY !== newBehaviorData.gridOffsetY) {\n this._gridOffsetY = newBehaviorData.gridOffsetY;\n }\n if (oldBehaviorData.extraBorder !== newBehaviorData.extraBorder) {\n this.setExtraBorder(newBehaviorData.extraBorder);\n }\n if (\n oldBehaviorData.smoothingMaxCellGap !==\n newBehaviorData.smoothingMaxCellGap\n ) {\n this._smoothingMaxCellGap = newBehaviorData.smoothingMaxCellGap;\n }\n return true;\n }\n\n setCellWidth(width: float): void {\n this._cellWidth = width;\n }\n\n getCellWidth(): float {\n return this._cellWidth;\n }\n\n setCellHeight(height: float): void {\n this._cellHeight = height;\n }\n\n getCellHeight(): float {\n return this._cellHeight;\n }\n\n setGridOffsetX(gridOffsetX: float): void {\n this._gridOffsetX = gridOffsetX;\n }\n\n getGridOffsetX(): float {\n return this._gridOffsetX;\n }\n\n setGridOffsetY(gridOffsetY: float): void {\n this._gridOffsetY = gridOffsetY;\n }\n\n getGridOffsetY(): float {\n return this._gridOffsetY;\n }\n\n setAcceleration(acceleration: float): void {\n this._acceleration = acceleration;\n }\n\n getAcceleration() {\n return this._acceleration;\n }\n\n setMaxSpeed(maxSpeed: float): void {\n this._maxSpeed = maxSpeed;\n }\n\n getMaxSpeed() {\n return this._maxSpeed;\n }\n\n setSpeed(speed: float): void {\n this._speed = speed;\n }\n\n getSpeed() {\n return this._speed;\n }\n\n getMovementAngle() {\n return this._movementAngle;\n }\n\n movementAngleIsAround(degreeAngle: float, tolerance: float) {\n return (\n Math.abs(\n gdjs.evtTools.common.angleDifference(this._movementAngle, degreeAngle)\n ) <= tolerance\n );\n }\n\n setAngularMaxSpeed(angularMaxSpeed: float): void {\n this._angularMaxSpeed = angularMaxSpeed;\n }\n\n getAngularMaxSpeed() {\n return this._angularMaxSpeed;\n }\n\n setAngleOffset(angleOffset: float): void {\n this._angleOffset = angleOffset;\n }\n\n getAngleOffset() {\n return this._angleOffset;\n }\n\n setExtraBorder(extraBorder): void {\n this._extraBorder = extraBorder;\n }\n\n getExtraBorder() {\n return this._extraBorder;\n }\n\n allowDiagonals(allow: boolean) {\n this._allowDiagonals = allow;\n }\n\n diagonalsAllowed() {\n return this._allowDiagonals;\n }\n\n setRotateObject(allow: boolean): void {\n this._rotateObject = allow;\n }\n\n isObjectRotated(): boolean {\n return this._rotateObject;\n }\n\n getNodeX(index: integer): float {\n if (index < this._path.length) {\n return this._path[index][0];\n }\n return 0;\n }\n\n getNodeY(index: integer): float {\n if (index < this._path.length) {\n return this._path[index][1];\n }\n return 0;\n }\n\n getNextNodeIndex() {\n if (this._currentSegment + 1 < this._path.length) {\n return this._currentSegment + 1;\n } else {\n return this._path.length - 1;\n }\n }\n\n getNodeCount(): integer {\n return this._path.length;\n }\n\n getNextNodeX(): float {\n if (this._path.length === 0) {\n return 0;\n }\n if (this._currentSegment + 1 < this._path.length) {\n return this._path[this._currentSegment + 1][0];\n } else {\n return this._path[this._path.length - 1][0];\n }\n }\n\n getNextNodeY(): float {\n if (this._path.length === 0) {\n return 0;\n }\n if (this._currentSegment + 1 < this._path.length) {\n return this._path[this._currentSegment + 1][1];\n } else {\n return this._path[this._path.length - 1][1];\n }\n }\n\n getLastNodeX(): float {\n if (this._path.length < 2) {\n return 0;\n }\n if (this._currentSegment < this._path.length - 1) {\n return this._path[this._currentSegment][0];\n } else {\n return this._path[this._path.length - 1][0];\n }\n }\n\n getLastNodeY(): float {\n if (this._path.length < 2) {\n return 0;\n }\n if (this._currentSegment < this._path.length - 1) {\n return this._path[this._currentSegment][1];\n } else {\n return this._path[this._path.length - 1][1];\n }\n }\n\n getDestinationX(): float {\n if (this._path.length === 0) {\n return 0;\n }\n return this._path[this._path.length - 1][0];\n }\n\n getDestinationY(): float {\n if (this._path.length === 0) {\n return 0;\n }\n return this._path[this._path.length - 1][1];\n }\n\n /**\n * Return true if the latest call to moveTo succeeded.\n */\n pathFound() {\n return this._pathFound;\n }\n\n /**\n * Return true if the object reached its destination.\n */\n destinationReached() {\n return this._reachedEnd;\n }\n\n /**\n * Compute and move on the path to the specified destination.\n */\n moveTo(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n x: float,\n y: float\n ) {\n const owner = this.owner;\n\n //First be sure that there is a path to compute.\n const targetCellX = Math.round((x - this._gridOffsetX) / this._cellWidth);\n const targetCellY = Math.round(\n (y - this._gridOffsetY) / this._cellHeight\n );\n const startCellX = Math.round(\n (owner.getX() - this._gridOffsetX) / this._cellWidth\n );\n const startCellY = Math.round(\n (owner.getY() - this._gridOffsetY) / this._cellHeight\n );\n if (startCellX == targetCellX && startCellY == targetCellY) {\n this._path.length = 0;\n this._path.push([owner.getX(), owner.getY()]);\n this._path.push([x, y]);\n this._enterSegment(0);\n this._pathFound = true;\n return;\n }\n\n //Start searching for a path\n this._searchContext.allowDiagonals(this._allowDiagonals);\n this._searchContext.setObstacles(this._manager);\n this._searchContext.setCellSize(this._cellWidth, this._cellHeight);\n this._searchContext.setGridOffset(this._gridOffsetX, this._gridOffsetY);\n this._searchContext.setStartPosition(owner.getX(), owner.getY());\n this._searchContext.setObjectSize(\n owner.getX() - owner.getDrawableX() + this._extraBorder,\n owner.getY() - owner.getDrawableY() + this._extraBorder,\n owner.getWidth() -\n (owner.getX() - owner.getDrawableX()) +\n this._extraBorder,\n owner.getHeight() -\n (owner.getY() - owner.getDrawableY()) +\n this._extraBorder\n );\n if (this._searchContext.computePathTo(x, y)) {\n //Path found: memorize it\n let node = this._searchContext.getFinalNode();\n let finalPathLength = 0;\n while (node) {\n if (finalPathLength === this._path.length) {\n this._path.push([0, 0]);\n }\n this._path[finalPathLength][0] =\n node.pos[0] * this._cellWidth + this._gridOffsetX;\n this._path[finalPathLength][1] =\n node.pos[1] * this._cellHeight + this._gridOffsetY;\n node = node.parent;\n finalPathLength++;\n }\n this._path.length = finalPathLength;\n this._path.reverse();\n this._path[0][0] = owner.getX();\n this._path[0][1] = owner.getY();\n\n if (this._allowDiagonals && this._smoothingMaxCellGap > 0) {\n gdjs.pathfinding.simplifyPath(\n this._path,\n this._smoothingMaxCellGap *\n Math.min(this._cellWidth, this._cellHeight),\n gdjs.PathfindingRuntimeBehavior._smoothingResultVertices,\n gdjs.PathfindingRuntimeBehavior._smoothingWorkingVertices\n );\n let swapArray = this._path;\n this._path = gdjs.PathfindingRuntimeBehavior._smoothingResultVertices;\n gdjs.PathfindingRuntimeBehavior._smoothingResultVertices = swapArray;\n }\n\n this._enterSegment(0);\n this._pathFound = true;\n return;\n }\n\n //Not path found\n this._pathFound = false;\n }\n\n _enterSegment(segmentNumber: integer) {\n if (this._path.length === 0) {\n return;\n }\n this._currentSegment = segmentNumber;\n if (this._currentSegment < this._path.length - 1) {\n const pathX =\n this._path[this._currentSegment + 1][0] -\n this._path[this._currentSegment][0];\n const pathY =\n this._path[this._currentSegment + 1][1] -\n this._path[this._currentSegment][1];\n this._totalSegmentDistance = Math.sqrt(pathX * pathX + pathY * pathY);\n this._distanceOnSegment = 0;\n this._reachedEnd = false;\n this._movementAngle =\n (gdjs.toDegrees(Math.atan2(pathY, pathX)) + 360) % 360;\n } else {\n this._reachedEnd = true;\n this._speed = 0;\n }\n }\n\n doStepPreEvents(instanceContainer: gdjs.RuntimeInstanceContainer) {\n if (this._path.length === 0 || this._reachedEnd) {\n return;\n }\n\n // Update the speed of the object\n const timeDelta = this.owner.getElapsedTime() / 1000;\n const previousSpeed = this._speed;\n if (this._speed !== this._maxSpeed) {\n this._speed += this._acceleration * timeDelta;\n if (this._speed > this._maxSpeed) {\n this._speed = this._maxSpeed;\n }\n }\n this._angularSpeed = this._angularMaxSpeed;\n\n // Update the time on the segment and change segment if needed\n // Use a Verlet integration to be frame rate independent.\n this._distanceOnSegment +=\n ((this._speed + previousSpeed) / 2) * timeDelta;\n const remainingDistanceOnSegment =\n this._totalSegmentDistance - this._distanceOnSegment;\n if (\n remainingDistanceOnSegment <= 0 &&\n this._currentSegment < this._path.length\n ) {\n this._enterSegment(this._currentSegment + 1);\n this._distanceOnSegment = -remainingDistanceOnSegment;\n }\n\n // Position object on the segment and update its angle\n let newPos = [0, 0];\n if (this._currentSegment < this._path.length - 1) {\n newPos[0] = gdjs.evtTools.common.lerp(\n this._path[this._currentSegment][0],\n this._path[this._currentSegment + 1][0],\n this._distanceOnSegment / this._totalSegmentDistance\n );\n newPos[1] = gdjs.evtTools.common.lerp(\n this._path[this._currentSegment][1],\n this._path[this._currentSegment + 1][1],\n this._distanceOnSegment / this._totalSegmentDistance\n );\n if (\n this._rotateObject &&\n this.owner.getAngle() !== this._movementAngle + this._angleOffset\n ) {\n this.owner.rotateTowardAngle(\n this._movementAngle + this._angleOffset,\n this._angularSpeed\n );\n }\n } else {\n newPos = this._path[this._path.length - 1];\n }\n this.owner.setX(newPos[0]);\n this.owner.setY(newPos[1]);\n }\n\n doStepPostEvents(instanceContainer: gdjs.RuntimeInstanceContainer) {}\n\n /**\n * Compute the euclidean distance between two positions.\n * @memberof gdjs.PathfindingRuntimeBehavior\n */\n static euclideanDistance(a: FloatPoint, b: FloatPoint) {\n return Math.sqrt(\n (a[0] - b[0]) * (a[0] - b[0]) + (a[1] - b[1]) * (a[1] - b[1])\n );\n }\n\n /**\n * Compute the taxi distance between two positions.\n * @memberof gdjs.PathfindingRuntimeBehavior\n */\n static manhattanDistance(a: FloatPoint, b: FloatPoint) {\n return Math.abs(a[0] - b[0]) + Math.abs(a[1] - b[1]);\n }\n }\n gdjs.registerBehavior(\n 'PathfindingBehavior::PathfindingBehavior',\n gdjs.PathfindingRuntimeBehavior\n );\n\n export namespace PathfindingRuntimeBehavior {\n /**\n * Internal tool class representing a node when looking for a path\n */\n export class Node {\n pos: FloatPoint;\n cost: integer = 0;\n smallestCost: integer = -1;\n estimateCost: integer = -1;\n parent: Node | null = null;\n open: boolean = true;\n\n constructor(xPos: integer, yPos: integer) {\n this.pos = [xPos, yPos];\n }\n\n reinitialize(xPos: integer, yPos: integer) {\n this.pos[0] = xPos;\n this.pos[1] = yPos;\n this.cost = 0;\n this.smallestCost = -1;\n this.estimateCost = -1;\n this.parent = null;\n this.open = true;\n }\n }\n\n /**\n * Internal tool class containing the structures used by A* and members functions related\n * to them.\n * @ignore\n */\n export class SearchContext {\n _obstacles: PathfindingObstaclesManager;\n _finalNode: Node | null = null;\n _destination: FloatPoint = [0, 0];\n _start: FloatPoint = [0, 0];\n _startX: float = 0;\n _startY: float = 0;\n _allowDiagonals: boolean = true;\n _maxComplexityFactor: integer = 50;\n _cellWidth: float = 20;\n _cellHeight: float = 20;\n _gridOffsetX: float = 0;\n _gridOffsetY: float = 0;\n\n _leftBorder: integer = 0;\n _rightBorder: integer = 0;\n _topBorder: integer = 0;\n _bottomBorder: integer = 0;\n _distanceFunction: (pt1: FloatPoint, pt2: FloatPoint) => float;\n //An array of array. Nodes are indexed by their x position, and then by their y position.\n _allNodes: Node[][] = [];\n //An array of nodes sorted by their estimate cost (First node = Lower estimate cost).\n _openNodes: Node[] = [];\n //Used by getNodes to temporarily store obstacles near a position.\n _closeObstacles: gdjs.PathfindingObstacleRuntimeBehavior[] = [];\n //Old nodes constructed in a previous search are stored here to avoid temporary objects (see _freeAllNodes method).\n _nodeCache: Node[] = [];\n\n constructor(obstacles: PathfindingObstaclesManager) {\n this._obstacles = obstacles;\n this._distanceFunction = PathfindingRuntimeBehavior.euclideanDistance;\n }\n\n setObstacles(\n obstacles: PathfindingObstaclesManager\n ): PathfindingRuntimeBehavior.SearchContext {\n this._obstacles = obstacles;\n return this;\n }\n\n getFinalNode() {\n return this._finalNode;\n }\n\n allowDiagonals(allowDiagonals: boolean) {\n this._allowDiagonals = allowDiagonals;\n this._distanceFunction = allowDiagonals\n ? PathfindingRuntimeBehavior.euclideanDistance\n : PathfindingRuntimeBehavior.manhattanDistance;\n return this;\n }\n\n setStartPosition(\n x: float,\n y: float\n ): PathfindingRuntimeBehavior.SearchContext {\n this._startX = x;\n this._startY = y;\n return this;\n }\n\n setObjectSize(\n leftBorder: integer,\n topBorder: integer,\n rightBorder: integer,\n bottomBorder: integer\n ): PathfindingRuntimeBehavior.SearchContext {\n this._leftBorder = leftBorder;\n this._rightBorder = rightBorder;\n this._topBorder = topBorder;\n this._bottomBorder = bottomBorder;\n return this;\n }\n\n setCellSize(\n cellWidth: float,\n cellHeight: float\n ): PathfindingRuntimeBehavior.SearchContext {\n this._cellWidth = cellWidth;\n this._cellHeight = cellHeight;\n return this;\n }\n\n setGridOffset(\n gridOffsetX: float,\n gridOffsetY: float\n ): PathfindingRuntimeBehavior.SearchContext {\n this._gridOffsetX = gridOffsetX;\n this._gridOffsetY = gridOffsetY;\n return this;\n }\n\n computePathTo(targetX: float, targetY: float) {\n if (this._obstacles === null) {\n logger.log(\n 'You tried to compute a path without specifying the obstacles'\n );\n return;\n }\n this._destination[0] = Math.round(\n (targetX - this._gridOffsetX) / this._cellWidth\n );\n this._destination[1] = Math.round(\n (targetY - this._gridOffsetY) / this._cellHeight\n );\n this._start[0] = Math.round(\n (this._startX - this._gridOffsetX) / this._cellWidth\n );\n this._start[1] = Math.round(\n (this._startY - this._gridOffsetY) / this._cellHeight\n );\n\n //Initialize the algorithm\n this._freeAllNodes();\n const startNode = this._getNode(this._start[0], this._start[1]);\n startNode.smallestCost = 0;\n startNode.estimateCost =\n 0 + this._distanceFunction(this._start, this._destination);\n this._openNodes.length = 0;\n this._openNodes.push(startNode);\n\n //A* algorithm main loop\n let iterationCount = 0;\n const maxIterationCount =\n startNode.estimateCost * this._maxComplexityFactor;\n while (this._openNodes.length !== 0) {\n //Make sure we do not search forever.\n if (iterationCount++ > maxIterationCount) {\n console.warn(\n `No path was found after covering ${maxIterationCount} cells.`\n );\n return false;\n }\n\n //Get the most promising node...\n const n = this._openNodes.shift()!;\n //...and flag it as explored\n n.open = false;\n\n //Check if we reached destination?\n if (\n n.pos[0] == this._destination[0] &&\n n.pos[1] == this._destination[1]\n ) {\n this._finalNode = n;\n return true;\n }\n\n //No, so add neighbors to the nodes to explore.\n this._insertNeighbors(n);\n }\n return false;\n }\n\n _freeAllNodes() {\n if (this._nodeCache.length <= 32000) {\n for (const i in this._allNodes) {\n if (this._allNodes.hasOwnProperty(i)) {\n const nodeArray = this._allNodes[i];\n for (const j in nodeArray) {\n if (nodeArray.hasOwnProperty(j)) {\n this._nodeCache.push(nodeArray[j]);\n }\n }\n }\n }\n }\n this._allNodes = [];\n }\n\n /**\n * Insert the neighbors of the current node in the open list\n * (Only if they are not closed, and if the cost is better than the already existing smallest cost).\n */\n _insertNeighbors(currentNode: Node) {\n this._addOrUpdateNode(\n currentNode.pos[0] + 1,\n currentNode.pos[1],\n currentNode,\n 1\n );\n this._addOrUpdateNode(\n currentNode.pos[0] - 1,\n currentNode.pos[1],\n currentNode,\n 1\n );\n this._addOrUpdateNode(\n currentNode.pos[0],\n currentNode.pos[1] + 1,\n currentNode,\n 1\n );\n this._addOrUpdateNode(\n currentNode.pos[0],\n currentNode.pos[1] - 1,\n currentNode,\n 1\n );\n if (this._allowDiagonals) {\n this._addOrUpdateNode(\n currentNode.pos[0] + 1,\n currentNode.pos[1] + 1,\n currentNode,\n 1.414213562\n );\n this._addOrUpdateNode(\n currentNode.pos[0] + 1,\n currentNode.pos[1] - 1,\n currentNode,\n 1.414213562\n );\n this._addOrUpdateNode(\n currentNode.pos[0] - 1,\n currentNode.pos[1] - 1,\n currentNode,\n 1.414213562\n );\n this._addOrUpdateNode(\n currentNode.pos[0] - 1,\n currentNode.pos[1] + 1,\n currentNode,\n 1.414213562\n );\n }\n }\n\n /**\n * Get (or dynamically construct) a node.\n *\n * *All* nodes should be created using this method: The cost of the node is computed thanks\n * to the objects flagged as obstacles.\n */\n _getNode(xPos: integer, yPos: integer): Node {\n //First check if their is a node a the specified position.\n if (this._allNodes.hasOwnProperty(xPos)) {\n if (this._allNodes[xPos].hasOwnProperty(yPos)) {\n return this._allNodes[xPos][yPos];\n }\n } else {\n this._allNodes[xPos] = [];\n }\n\n //No so construct a new node (or get it from the cache)...\n let newNode: Node;\n if (this._nodeCache.length !== 0) {\n newNode = this._nodeCache.shift()!;\n newNode.reinitialize(xPos, yPos);\n } else {\n newNode = new Node(xPos, yPos);\n }\n\n const nodeCenterX = xPos * this._cellWidth + this._gridOffsetX;\n const nodeCenterY = yPos * this._cellHeight + this._gridOffsetY;\n\n //...and update its cost according to obstacles\n let objectsOnCell = false;\n const radius =\n this._cellHeight > this._cellWidth\n ? this._cellHeight * 2\n : this._cellWidth * 2;\n this._obstacles.getAllObstaclesAround(\n nodeCenterX,\n nodeCenterY,\n radius,\n this._closeObstacles\n );\n for (let k = 0; k < this._closeObstacles.length; ++k) {\n const obj = this._closeObstacles[k].owner;\n const topLeftCellX = Math.floor(\n (obj.getDrawableX() - this._rightBorder - this._gridOffsetX) /\n this._cellWidth\n );\n const topLeftCellY = Math.floor(\n (obj.getDrawableY() - this._bottomBorder - this._gridOffsetY) /\n this._cellHeight\n );\n const bottomRightCellX = Math.ceil(\n (obj.getDrawableX() +\n obj.getWidth() +\n this._leftBorder -\n this._gridOffsetX) /\n this._cellWidth\n );\n const bottomRightCellY = Math.ceil(\n (obj.getDrawableY() +\n obj.getHeight() +\n this._topBorder -\n this._gridOffsetY) /\n this._cellHeight\n );\n if (\n topLeftCellX < xPos &&\n xPos < bottomRightCellX &&\n topLeftCellY < yPos &&\n yPos < bottomRightCellY\n ) {\n objectsOnCell = true;\n if (this._closeObstacles[k].isImpassable()) {\n //The cell is impassable, stop here.\n newNode.cost = -1;\n break;\n } else {\n //Superimpose obstacles\n newNode.cost += this._closeObstacles[k].getCost();\n }\n }\n }\n if (!objectsOnCell) {\n newNode.cost = 1;\n }\n\n //Default cost when no objects put on the cell.\n this._allNodes[xPos][yPos] = newNode;\n return newNode;\n }\n\n /**\n * Add a node to the openNodes (only if the cost to reach it is less than the existing cost, if any).\n */\n _addOrUpdateNode(\n newNodeX: integer,\n newNodeY: integer,\n currentNode: Node,\n factor: float\n ) {\n const neighbor = this._getNode(newNodeX, newNodeY);\n\n //cost < 0 means impassable obstacle\n if (!neighbor.open || neighbor.cost < 0) {\n return;\n }\n\n //Update the node costs and parent if the path coming from currentNode is better:\n if (\n neighbor.smallestCost === -1 ||\n neighbor.smallestCost >\n currentNode.smallestCost +\n ((currentNode.cost + neighbor.cost) / 2.0) * factor\n ) {\n if (neighbor.smallestCost != -1) {\n //The node is already in the open list..\n for (let i = 0; i < this._openNodes.length; ++i) {\n if (\n this._openNodes[i].pos[0] == neighbor.pos[0] &&\n this._openNodes[i].pos[1] == neighbor.pos[1]\n ) {\n this._openNodes.splice(\n i,\n //..so remove it as its estimate cost will be updated.\n 1\n );\n break;\n }\n }\n }\n neighbor.smallestCost =\n currentNode.smallestCost +\n ((currentNode.cost + neighbor.cost) / 2.0) * factor;\n neighbor.parent = currentNode;\n neighbor.estimateCost =\n neighbor.smallestCost +\n this._distanceFunction(neighbor.pos, this._destination);\n\n //Add the neighbor to open nodes, which are sorted by their estimate cost:\n if (\n this._openNodes.length === 0 ||\n this._openNodes[this._openNodes.length - 1].estimateCost <\n neighbor.estimateCost\n ) {\n this._openNodes.push(neighbor);\n } else {\n for (let i = 0; i < this._openNodes.length; ++i) {\n if (this._openNodes[i].estimateCost >= neighbor.estimateCost) {\n this._openNodes.splice(i, 0, neighbor);\n break;\n }\n }\n }\n }\n }\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["gdjs", "logger", "PathfindingRuntimeBehavior", "instanceContainer", "behaviorData", "owner", "oldBehaviorData", "newBehaviorData", "width", "height", "gridOffsetX", "gridOffsetY", "acceleration", "maxSpeed", "speed", "degreeAngle", "tolerance", "angularMaxSpeed", "angleOffset", "extraBorder", "allow", "index", "x", "y", "targetCellX", "targetCellY", "startCellX", "startCellY", "node", "finalPathLength", "swapArray", "segmentNumber", "pathX", "pathY", "timeDelta", "previousSpeed", "remainingDistanceOnSegment", "newPos", "a", "b", "Node", "xPos", "yPos", "SearchContext", "obstacles", "allowDiagonals", "leftBorder", "topBorder", "rightBorder", "bottomBorder", "cellWidth", "cellHeight", "targetX", "targetY", "startNode", "iterationCount", "maxIterationCount", "n", "i", "nodeArray", "j", "currentNode", "newNode", "nodeCenterX", "nodeCenterY", "objectsOnCell", "radius", "k", "obj", "topLeftCellX", "topLeftCellY", "bottomRightCellX", "bottomRightCellY", "newNodeX", "newNodeY", "factor", "neighbor"]
7
+ }