1681-engine 0.0.0-stage → 0.5.8

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 (1014) hide show
  1. package/CHANGELOG.md +304 -0
  2. package/LICENSE +21 -0
  3. package/README.md +164 -2
  4. package/dist/1681-engine.js +417 -0
  5. package/dist/1681-engine.js.map +1 -0
  6. package/dist/ambient/ColorGrade.js +41 -0
  7. package/dist/ambient/ColorGrade.js.map +1 -0
  8. package/dist/ambient/DayClock.js +57 -0
  9. package/dist/ambient/DayClock.js.map +1 -0
  10. package/dist/ambient/WeatherLayer.js +91 -0
  11. package/dist/ambient/WeatherLayer.js.map +1 -0
  12. package/dist/ambient/grade.js +13 -0
  13. package/dist/ambient/grade.js.map +1 -0
  14. package/dist/ambient/weather.js +52 -0
  15. package/dist/ambient/weather.js.map +1 -0
  16. package/dist/anim/AnimStateMachine.js +164 -0
  17. package/dist/anim/AnimStateMachine.js.map +1 -0
  18. package/dist/anim/Animator.js +67 -0
  19. package/dist/anim/Animator.js.map +1 -0
  20. package/dist/anim/animStateCompile.js +113 -0
  21. package/dist/anim/animStateCompile.js.map +1 -0
  22. package/dist/anim/animStateSystem.js +17 -0
  23. package/dist/anim/animStateSystem.js.map +1 -0
  24. package/dist/anim/animationSystem.js +15 -0
  25. package/dist/anim/animationSystem.js.map +1 -0
  26. package/dist/anim/asepriteSlices.js +22 -0
  27. package/dist/anim/asepriteSlices.js.map +1 -0
  28. package/dist/anim/asepriteTags.js +35 -0
  29. package/dist/anim/asepriteTags.js.map +1 -0
  30. package/dist/anim/parseAseprite.js +83 -0
  31. package/dist/anim/parseAseprite.js.map +1 -0
  32. package/dist/assets/AssetLoader.js +104 -0
  33. package/dist/assets/AssetLoader.js.map +1 -0
  34. package/dist/assets/loadAseprite.js +50 -0
  35. package/dist/assets/loadAseprite.js.map +1 -0
  36. package/dist/assets/takeCleanerWorker-DTcI_Jqr.js +31 -0
  37. package/dist/assets/takeCleanerWorker-DTcI_Jqr.js.map +1 -0
  38. package/dist/audio/Footsteps.js +26 -0
  39. package/dist/audio/Footsteps.js.map +1 -0
  40. package/dist/audio/MusicPlayer.js +78 -0
  41. package/dist/audio/MusicPlayer.js.map +1 -0
  42. package/dist/audio/SoundEngine.js +119 -0
  43. package/dist/audio/SoundEngine.js.map +1 -0
  44. package/dist/audio/cleanTake.js +30 -0
  45. package/dist/audio/cleanTake.js.map +1 -0
  46. package/dist/audio/music/ElementVoice.js +35 -0
  47. package/dist/audio/music/ElementVoice.js.map +1 -0
  48. package/dist/audio/music/GraphVoice.js +39 -0
  49. package/dist/audio/music/GraphVoice.js.map +1 -0
  50. package/dist/audio/music/MusicChannel.js +58 -0
  51. package/dist/audio/music/MusicChannel.js.map +1 -0
  52. package/dist/audio/music/musicVoice.js +13 -0
  53. package/dist/audio/music/musicVoice.js.map +1 -0
  54. package/dist/audio/sampleBank.js +82 -0
  55. package/dist/audio/sampleBank.js.map +1 -0
  56. package/dist/audio/soundTable.js +9 -0
  57. package/dist/audio/soundTable.js.map +1 -0
  58. package/dist/audio/synth.js +36 -0
  59. package/dist/audio/synth.js.map +1 -0
  60. package/dist/core/BitmapLabel.js +49 -0
  61. package/dist/core/BitmapLabel.js.map +1 -0
  62. package/dist/core/Camera.js +150 -0
  63. package/dist/core/Camera.js.map +1 -0
  64. package/dist/core/Clock.js +30 -0
  65. package/dist/core/Clock.js.map +1 -0
  66. package/dist/core/Graphics.js +69 -0
  67. package/dist/core/Graphics.js.map +1 -0
  68. package/dist/core/Group.js +29 -0
  69. package/dist/core/Group.js.map +1 -0
  70. package/dist/core/Image.js +51 -0
  71. package/dist/core/Image.js.map +1 -0
  72. package/dist/core/ObjectFactory.js +55 -0
  73. package/dist/core/ObjectFactory.js.map +1 -0
  74. package/dist/core/Pointer.js +58 -0
  75. package/dist/core/Pointer.js.map +1 -0
  76. package/dist/core/Rectangle.js +51 -0
  77. package/dist/core/Rectangle.js.map +1 -0
  78. package/dist/core/Stage.js +86 -0
  79. package/dist/core/Stage.js.map +1 -0
  80. package/dist/core/Text.js +22 -0
  81. package/dist/core/Text.js.map +1 -0
  82. package/dist/core/TextureRegistry.js +111 -0
  83. package/dist/core/TextureRegistry.js.map +1 -0
  84. package/dist/core/Timeline.js +211 -0
  85. package/dist/core/Timeline.js.map +1 -0
  86. package/dist/core/TimelineBuilder.js +73 -0
  87. package/dist/core/TimelineBuilder.js.map +1 -0
  88. package/dist/core/TimelineChild.js +84 -0
  89. package/dist/core/TimelineChild.js.map +1 -0
  90. package/dist/core/Tweener.js +136 -0
  91. package/dist/core/Tweener.js.map +1 -0
  92. package/dist/core/atlas.js +38 -0
  93. package/dist/core/atlas.js.map +1 -0
  94. package/dist/core/atlasPlan.js +22 -0
  95. package/dist/core/atlasPlan.js.map +1 -0
  96. package/dist/core/eases.js +21 -0
  97. package/dist/core/eases.js.map +1 -0
  98. package/dist/core/gameObject.js +115 -0
  99. package/dist/core/gameObject.js.map +1 -0
  100. package/dist/core/pixiPatches.js +18 -0
  101. package/dist/core/pixiPatches.js.map +1 -0
  102. package/dist/core/timelinePlace.js +24 -0
  103. package/dist/core/timelinePlace.js.map +1 -0
  104. package/dist/core/tweenProps.js +12 -0
  105. package/dist/core/tweenProps.js.map +1 -0
  106. package/dist/debug/DebugOverlay.js +94 -0
  107. package/dist/debug/DebugOverlay.js.map +1 -0
  108. package/dist/debug/DrawCallCounter.js +41 -0
  109. package/dist/debug/DrawCallCounter.js.map +1 -0
  110. package/dist/debug/ErrorLog.js +22 -0
  111. package/dist/debug/ErrorLog.js.map +1 -0
  112. package/dist/debug/FrameStats.js +42 -0
  113. package/dist/debug/FrameStats.js.map +1 -0
  114. package/dist/debug/inspectWorld.js +29 -0
  115. package/dist/debug/inspectWorld.js.map +1 -0
  116. package/dist/diagnostics/ErrorDeduper.js +27 -0
  117. package/dist/diagnostics/ErrorDeduper.js.map +1 -0
  118. package/dist/diagnostics/FrameSampler.js +42 -0
  119. package/dist/diagnostics/FrameSampler.js.map +1 -0
  120. package/dist/diagnostics/bootWatch.js +21 -0
  121. package/dist/diagnostics/bootWatch.js.map +1 -0
  122. package/dist/diagnostics/captureErrors.js +27 -0
  123. package/dist/diagnostics/captureErrors.js.map +1 -0
  124. package/dist/diagnostics/contextLoss.js +25 -0
  125. package/dist/diagnostics/contextLoss.js.map +1 -0
  126. package/dist/diagnostics/frameStats.js +31 -0
  127. package/dist/diagnostics/frameStats.js.map +1 -0
  128. package/dist/diagnostics/gpuInfo.js +22 -0
  129. package/dist/diagnostics/gpuInfo.js.map +1 -0
  130. package/dist/diagnostics/renderGuard.js +24 -0
  131. package/dist/diagnostics/renderGuard.js.map +1 -0
  132. package/dist/ecs/SparseSet.js +55 -0
  133. package/dist/ecs/SparseSet.js.map +1 -0
  134. package/dist/ecs/World.js +307 -0
  135. package/dist/ecs/World.js.map +1 -0
  136. package/dist/ecs/fields.js +26 -0
  137. package/dist/ecs/fields.js.map +1 -0
  138. package/dist/engine/Engine.js +82 -0
  139. package/dist/engine/Engine.js.map +1 -0
  140. package/dist/engine/FixedLoop.js +37 -0
  141. package/dist/engine/FixedLoop.js.map +1 -0
  142. package/dist/engine/Scene.js +79 -0
  143. package/dist/engine/Scene.js.map +1 -0
  144. package/dist/engine/SceneManager.js +73 -0
  145. package/dist/engine/SceneManager.js.map +1 -0
  146. package/dist/events/EventBus.js +42 -0
  147. package/dist/events/EventBus.js.map +1 -0
  148. package/dist/fx/FloatingText.js +72 -0
  149. package/dist/fx/FloatingText.js.map +1 -0
  150. package/dist/fx/hitStop.js +28 -0
  151. package/dist/fx/hitStop.js.map +1 -0
  152. package/dist/fx/viewCull.js +10 -0
  153. package/dist/fx/viewCull.js.map +1 -0
  154. package/dist/i18n/Translator.js +72 -0
  155. package/dist/i18n/Translator.js.map +1 -0
  156. package/dist/i18n/extractStrings.js +58 -0
  157. package/dist/i18n/extractStrings.js.map +1 -0
  158. package/dist/i18n/formatMessage.js +19 -0
  159. package/dist/i18n/formatMessage.js.map +1 -0
  160. package/dist/input/Actions.js +131 -0
  161. package/dist/input/Actions.js.map +1 -0
  162. package/dist/input/AimGesture.js +75 -0
  163. package/dist/input/AimGesture.js.map +1 -0
  164. package/dist/input/Keyboard.js +54 -0
  165. package/dist/input/Keyboard.js.map +1 -0
  166. package/dist/input/Keymap.js +171 -0
  167. package/dist/input/Keymap.js.map +1 -0
  168. package/dist/input/TargetLock.js +73 -0
  169. package/dist/input/TargetLock.js.map +1 -0
  170. package/dist/input/aimAxis.js +8 -0
  171. package/dist/input/aimAxis.js.map +1 -0
  172. package/dist/input/keyChord.js +29 -0
  173. package/dist/input/keyChord.js.map +1 -0
  174. package/dist/input/longPress.js +32 -0
  175. package/dist/input/longPress.js.map +1 -0
  176. package/dist/input/stickAxis.js +23 -0
  177. package/dist/input/stickAxis.js.map +1 -0
  178. package/dist/input/touchDetect.js +7 -0
  179. package/dist/input/touchDetect.js.map +1 -0
  180. package/dist/light/LightLayer.js +84 -0
  181. package/dist/light/LightLayer.js.map +1 -0
  182. package/dist/nav/MinHeap.js +39 -0
  183. package/dist/nav/MinHeap.js.map +1 -0
  184. package/dist/nav/findPath.js +78 -0
  185. package/dist/nav/findPath.js.map +1 -0
  186. package/dist/nav/navGrid.js +36 -0
  187. package/dist/nav/navGrid.js.map +1 -0
  188. package/dist/nav/nearestOpen.js +19 -0
  189. package/dist/nav/nearestOpen.js.map +1 -0
  190. package/dist/nav/straightenPath.js +51 -0
  191. package/dist/nav/straightenPath.js.map +1 -0
  192. package/dist/net/Connection.js +84 -0
  193. package/dist/net/Connection.js.map +1 -0
  194. package/dist/net/InterpolationBuffer.js +57 -0
  195. package/dist/net/InterpolationBuffer.js.map +1 -0
  196. package/dist/net/PredictedMover.js +61 -0
  197. package/dist/net/PredictedMover.js.map +1 -0
  198. package/dist/net/Room.js +92 -0
  199. package/dist/net/Room.js.map +1 -0
  200. package/dist/net/RoomHost.js +101 -0
  201. package/dist/net/RoomHost.js.map +1 -0
  202. package/dist/net/cadence.js +22 -0
  203. package/dist/net/cadence.js.map +1 -0
  204. package/dist/net/constants.js +11 -0
  205. package/dist/net/constants.js.map +1 -0
  206. package/dist/net/lobby/LobbyClient.js +124 -0
  207. package/dist/net/lobby/LobbyClient.js.map +1 -0
  208. package/dist/net/lobby/LobbyHost.js +366 -0
  209. package/dist/net/lobby/LobbyHost.js.map +1 -0
  210. package/dist/net/lobby/LobbyRooms.js +66 -0
  211. package/dist/net/lobby/LobbyRooms.js.map +1 -0
  212. package/dist/net/lobby/Matchmaker.js +106 -0
  213. package/dist/net/lobby/Matchmaker.js.map +1 -0
  214. package/dist/net/movement.js +83 -0
  215. package/dist/net/movement.js.map +1 -0
  216. package/dist/net/protocol.js +11 -0
  217. package/dist/net/protocol.js.map +1 -0
  218. package/dist/net/serverClock.js +22 -0
  219. package/dist/net/serverClock.js.map +1 -0
  220. package/dist/net/snapshotCodec.js +92 -0
  221. package/dist/net/snapshotCodec.js.map +1 -0
  222. package/dist/parallax/Parallax.js +32 -0
  223. package/dist/parallax/Parallax.js.map +1 -0
  224. package/dist/parallax/ParallaxLayer.js +70 -0
  225. package/dist/parallax/ParallaxLayer.js.map +1 -0
  226. package/dist/parallax/parallaxMath.js +27 -0
  227. package/dist/parallax/parallaxMath.js.map +1 -0
  228. package/dist/particles/Emitter.js +108 -0
  229. package/dist/particles/Emitter.js.map +1 -0
  230. package/dist/particles/ParticleBudget.js +32 -0
  231. package/dist/particles/ParticleBudget.js.map +1 -0
  232. package/dist/particles/ParticleSim.js +60 -0
  233. package/dist/particles/ParticleSim.js.map +1 -0
  234. package/dist/particles/particleCurves.js +48 -0
  235. package/dist/particles/particleCurves.js.map +1 -0
  236. package/dist/particles/particleSampling.js +30 -0
  237. package/dist/particles/particleSampling.js.map +1 -0
  238. package/dist/physics/Body.js +202 -0
  239. package/dist/physics/Body.js.map +1 -0
  240. package/dist/physics/BroadPhase.js +56 -0
  241. package/dist/physics/BroadPhase.js.map +1 -0
  242. package/dist/physics/Contact.js +76 -0
  243. package/dist/physics/Contact.js.map +1 -0
  244. package/dist/physics/ContactSolver.js +70 -0
  245. package/dist/physics/ContactSolver.js.map +1 -0
  246. package/dist/physics/PhysicsWorld.js +221 -0
  247. package/dist/physics/PhysicsWorld.js.map +1 -0
  248. package/dist/physics/SpatialHash.js +39 -0
  249. package/dist/physics/SpatialHash.js.map +1 -0
  250. package/dist/physics/collide.js +76 -0
  251. package/dist/physics/collide.js.map +1 -0
  252. package/dist/physics/collidePolygon.js +94 -0
  253. package/dist/physics/collidePolygon.js.map +1 -0
  254. package/dist/physics/contactReport.js +14 -0
  255. package/dist/physics/contactReport.js.map +1 -0
  256. package/dist/physics/drawColliders.js +31 -0
  257. package/dist/physics/drawColliders.js.map +1 -0
  258. package/dist/physics/physicsSystem.js +8 -0
  259. package/dist/physics/physicsSystem.js.map +1 -0
  260. package/dist/physics/polygon.js +80 -0
  261. package/dist/physics/polygon.js.map +1 -0
  262. package/dist/physics/raycast.js +62 -0
  263. package/dist/physics/raycast.js.map +1 -0
  264. package/dist/physics/syncToBody.js +19 -0
  265. package/dist/physics/syncToBody.js.map +1 -0
  266. package/dist/physics/tileBodies.js +59 -0
  267. package/dist/physics/tileBodies.js.map +1 -0
  268. package/dist/physics/types.js +8 -0
  269. package/dist/physics/types.js.map +1 -0
  270. package/dist/pixel/Darkness.js +166 -0
  271. package/dist/pixel/Darkness.js.map +1 -0
  272. package/dist/pixel/DitherVignette.js +57 -0
  273. package/dist/pixel/DitherVignette.js.map +1 -0
  274. package/dist/pixel/Evaporation.js +85 -0
  275. package/dist/pixel/Evaporation.js.map +1 -0
  276. package/dist/pixel/NightShade.js +34 -0
  277. package/dist/pixel/NightShade.js.map +1 -0
  278. package/dist/pixel/PixelLayer.js +211 -0
  279. package/dist/pixel/PixelLayer.js.map +1 -0
  280. package/dist/pixel/SwayProp.js +75 -0
  281. package/dist/pixel/SwayProp.js.map +1 -0
  282. package/dist/pixel/lights.js +44 -0
  283. package/dist/pixel/lights.js.map +1 -0
  284. package/dist/pixel/nineSlice.js +62 -0
  285. package/dist/pixel/nineSlice.js.map +1 -0
  286. package/dist/pixel/paintLayer.js +36 -0
  287. package/dist/pixel/paintLayer.js.map +1 -0
  288. package/dist/pixel/palette.js +57 -0
  289. package/dist/pixel/palette.js.map +1 -0
  290. package/dist/pixel/pixel.js +278 -0
  291. package/dist/pixel/pixel.js.map +1 -0
  292. package/dist/pixel/pixelPaint.js +194 -0
  293. package/dist/pixel/pixelPaint.js.map +1 -0
  294. package/dist/pixel/pixelTone.js +164 -0
  295. package/dist/pixel/pixelTone.js.map +1 -0
  296. package/dist/pixel/propKit.js +41 -0
  297. package/dist/pixel/propKit.js.map +1 -0
  298. package/dist/pixel/ramp.js +102 -0
  299. package/dist/pixel/ramp.js.map +1 -0
  300. package/dist/pixel/selout.js +35 -0
  301. package/dist/pixel/selout.js.map +1 -0
  302. package/dist/pixel/spritePixels.js +59 -0
  303. package/dist/pixel/spritePixels.js.map +1 -0
  304. package/dist/pixel/swayRig.js +87 -0
  305. package/dist/pixel/swayRig.js.map +1 -0
  306. package/dist/pixel/vignetteMask.js +24 -0
  307. package/dist/pixel/vignetteMask.js.map +1 -0
  308. package/dist/pixel/weatherArt.js +61 -0
  309. package/dist/pixel/weatherArt.js.map +1 -0
  310. package/dist/pixel.js +90 -0
  311. package/dist/pixel.js.map +1 -0
  312. package/dist/platform/touch.js +33 -0
  313. package/dist/platform/touch.js.map +1 -0
  314. package/dist/postfx/BloomFilter.js +65 -0
  315. package/dist/postfx/BloomFilter.js.map +1 -0
  316. package/dist/postfx/ChromaticAberrationFilter.js +25 -0
  317. package/dist/postfx/ChromaticAberrationFilter.js.map +1 -0
  318. package/dist/postfx/ColorAdjustFilter.js +76 -0
  319. package/dist/postfx/ColorAdjustFilter.js.map +1 -0
  320. package/dist/postfx/CrtFilter.js +42 -0
  321. package/dist/postfx/CrtFilter.js.map +1 -0
  322. package/dist/postfx/PixelateFilter.js +27 -0
  323. package/dist/postfx/PixelateFilter.js.map +1 -0
  324. package/dist/postfx/PostFx.js +123 -0
  325. package/dist/postfx/PostFx.js.map +1 -0
  326. package/dist/postfx/ShockwaveFilter.js +49 -0
  327. package/dist/postfx/ShockwaveFilter.js.map +1 -0
  328. package/dist/postfx/VignetteFilter.js +37 -0
  329. package/dist/postfx/VignetteFilter.js.map +1 -0
  330. package/dist/postfx/fxAnimator.js +38 -0
  331. package/dist/postfx/fxAnimator.js.map +1 -0
  332. package/dist/postfx/fxShader.js +128 -0
  333. package/dist/postfx/fxShader.js.map +1 -0
  334. package/dist/postfx.js +26 -0
  335. package/dist/postfx.js.map +1 -0
  336. package/dist/react/ChoiceDialog.js +51 -0
  337. package/dist/react/ChoiceDialog.js.map +1 -0
  338. package/dist/react/ConfirmDialog.js +53 -0
  339. package/dist/react/ConfirmDialog.js.map +1 -0
  340. package/dist/react/Glyph.js +63 -0
  341. package/dist/react/Glyph.js.map +1 -0
  342. package/dist/react/Modal.js +38 -0
  343. package/dist/react/Modal.js.map +1 -0
  344. package/dist/react/Panel.js +24 -0
  345. package/dist/react/Panel.js.map +1 -0
  346. package/dist/react/PixelImage.js +24 -0
  347. package/dist/react/PixelImage.js.map +1 -0
  348. package/dist/react/Select.js +99 -0
  349. package/dist/react/Select.js.map +1 -0
  350. package/dist/react/Slider.js +62 -0
  351. package/dist/react/Slider.js.map +1 -0
  352. package/dist/react/SplitPane.js +24 -0
  353. package/dist/react/SplitPane.js.map +1 -0
  354. package/dist/react/TabStrip.js +32 -0
  355. package/dist/react/TabStrip.js.map +1 -0
  356. package/dist/react/TitleTips.js +42 -0
  357. package/dist/react/TitleTips.js.map +1 -0
  358. package/dist/react/Tooltip.js +28 -0
  359. package/dist/react/Tooltip.js.map +1 -0
  360. package/dist/react/UiProvider.js +50 -0
  361. package/dist/react/UiProvider.js.map +1 -0
  362. package/dist/react/baseCss.js +222 -0
  363. package/dist/react/baseCss.js.map +1 -0
  364. package/dist/react/choiceStore.js +23 -0
  365. package/dist/react/choiceStore.js.map +1 -0
  366. package/dist/react/classNames.js +19 -0
  367. package/dist/react/classNames.js.map +1 -0
  368. package/dist/react/confirmStore.js +30 -0
  369. package/dist/react/confirmStore.js.map +1 -0
  370. package/dist/react/labels.js +18 -0
  371. package/dist/react/labels.js.map +1 -0
  372. package/dist/react/placement.js +49 -0
  373. package/dist/react/placement.js.map +1 -0
  374. package/dist/react/useFillSheet.js +23 -0
  375. package/dist/react/useFillSheet.js.map +1 -0
  376. package/dist/react/useFitToViewport.js +29 -0
  377. package/dist/react/useFitToViewport.js.map +1 -0
  378. package/dist/react/usePicked.js +13 -0
  379. package/dist/react/usePicked.js.map +1 -0
  380. package/dist/react/useStore.js +9 -0
  381. package/dist/react/useStore.js.map +1 -0
  382. package/dist/react/useViewport.js +17 -0
  383. package/dist/react/useViewport.js.map +1 -0
  384. package/dist/react.js +78 -0
  385. package/dist/react.js.map +1 -0
  386. package/dist/rig/PosePlayer.js +92 -0
  387. package/dist/rig/PosePlayer.js.map +1 -0
  388. package/dist/rig/RigView.js +125 -0
  389. package/dist/rig/RigView.js.map +1 -0
  390. package/dist/rig/Skeleton.js +31 -0
  391. package/dist/rig/Skeleton.js.map +1 -0
  392. package/dist/rig/humanoid.js +6 -0
  393. package/dist/rig/humanoid.js.map +1 -0
  394. package/dist/rig/humanoid.json.js +30 -0
  395. package/dist/rig/humanoid.json.js.map +1 -0
  396. package/dist/rig/humanoidPoses.js +30 -0
  397. package/dist/rig/humanoidPoses.js.map +1 -0
  398. package/dist/rig/poseMath.js +54 -0
  399. package/dist/rig/poseMath.js.map +1 -0
  400. package/dist/rig/poses.json.js +150 -0
  401. package/dist/rig/poses.json.js.map +1 -0
  402. package/dist/save/Autosaver.js +54 -0
  403. package/dist/save/Autosaver.js.map +1 -0
  404. package/dist/save/MemoryBackend.js +19 -0
  405. package/dist/save/MemoryBackend.js.map +1 -0
  406. package/dist/save/SaveStore.js +103 -0
  407. package/dist/save/SaveStore.js.map +1 -0
  408. package/dist/save/WebStorageBackend.js +27 -0
  409. package/dist/save/WebStorageBackend.js.map +1 -0
  410. package/dist/save/checksum.js +10 -0
  411. package/dist/save/checksum.js.map +1 -0
  412. package/dist/save/migrateSave.js +27 -0
  413. package/dist/save/migrateSave.js.map +1 -0
  414. package/dist/settings.js +27 -0
  415. package/dist/settings.js.map +1 -0
  416. package/dist/tilemap/TilemapView.js +69 -0
  417. package/dist/tilemap/TilemapView.js.map +1 -0
  418. package/dist/tilemap/collision.js +25 -0
  419. package/dist/tilemap/collision.js.map +1 -0
  420. package/dist/tilemap/tiled.js +138 -0
  421. package/dist/tilemap/tiled.js.map +1 -0
  422. package/dist/transitions/CrossfadeTransition.js +24 -0
  423. package/dist/transitions/CrossfadeTransition.js.map +1 -0
  424. package/dist/transitions/DitherWipeTransition.js +70 -0
  425. package/dist/transitions/DitherWipeTransition.js.map +1 -0
  426. package/dist/transitions/FadeTransition.js +34 -0
  427. package/dist/transitions/FadeTransition.js.map +1 -0
  428. package/dist/transitions/Letterbox.js +42 -0
  429. package/dist/transitions/Letterbox.js.map +1 -0
  430. package/dist/transitions/ditherMask.js +15 -0
  431. package/dist/transitions/ditherMask.js.map +1 -0
  432. package/dist/transitions/transitionTo.js +28 -0
  433. package/dist/transitions/transitionTo.js.map +1 -0
  434. package/dist/transitions/tweenDone.js +15 -0
  435. package/dist/transitions/tweenDone.js.map +1 -0
  436. package/dist/types/ambient/ColorGrade.d.ts +41 -0
  437. package/dist/types/ambient/ColorGrade.d.ts.map +1 -0
  438. package/dist/types/ambient/DayClock.d.ts +80 -0
  439. package/dist/types/ambient/DayClock.d.ts.map +1 -0
  440. package/dist/types/ambient/WeatherLayer.d.ts +78 -0
  441. package/dist/types/ambient/WeatherLayer.d.ts.map +1 -0
  442. package/dist/types/ambient/grade.d.ts +22 -0
  443. package/dist/types/ambient/grade.d.ts.map +1 -0
  444. package/dist/types/ambient/weather.d.ts +49 -0
  445. package/dist/types/ambient/weather.d.ts.map +1 -0
  446. package/dist/types/anim/AnimStateMachine.d.ts +80 -0
  447. package/dist/types/anim/AnimStateMachine.d.ts.map +1 -0
  448. package/dist/types/anim/Animator.d.ts +50 -0
  449. package/dist/types/anim/Animator.d.ts.map +1 -0
  450. package/dist/types/anim/animStateCompile.d.ts +52 -0
  451. package/dist/types/anim/animStateCompile.d.ts.map +1 -0
  452. package/dist/types/anim/animStateSystem.d.ts +10 -0
  453. package/dist/types/anim/animStateSystem.d.ts.map +1 -0
  454. package/dist/types/anim/animStateTypes.d.ts +50 -0
  455. package/dist/types/anim/animStateTypes.d.ts.map +1 -0
  456. package/dist/types/anim/animationSystem.d.ts +13 -0
  457. package/dist/types/anim/animationSystem.d.ts.map +1 -0
  458. package/dist/types/anim/asepriteSlices.d.ts +19 -0
  459. package/dist/types/anim/asepriteSlices.d.ts.map +1 -0
  460. package/dist/types/anim/asepriteTags.d.ts +16 -0
  461. package/dist/types/anim/asepriteTags.d.ts.map +1 -0
  462. package/dist/types/anim/asepriteTypes.d.ts +159 -0
  463. package/dist/types/anim/asepriteTypes.d.ts.map +1 -0
  464. package/dist/types/anim/parseAseprite.d.ts +21 -0
  465. package/dist/types/anim/parseAseprite.d.ts.map +1 -0
  466. package/dist/types/assets/AssetLoader.d.ts +85 -0
  467. package/dist/types/assets/AssetLoader.d.ts.map +1 -0
  468. package/dist/types/assets/loadAseprite.d.ts +27 -0
  469. package/dist/types/assets/loadAseprite.d.ts.map +1 -0
  470. package/dist/types/audio/Footsteps.d.ts +33 -0
  471. package/dist/types/audio/Footsteps.d.ts.map +1 -0
  472. package/dist/types/audio/MusicPlayer.d.ts +65 -0
  473. package/dist/types/audio/MusicPlayer.d.ts.map +1 -0
  474. package/dist/types/audio/SoundEngine.d.ts +42 -0
  475. package/dist/types/audio/SoundEngine.d.ts.map +1 -0
  476. package/dist/types/audio/cleanTake.d.ts +3 -0
  477. package/dist/types/audio/cleanTake.d.ts.map +1 -0
  478. package/dist/types/audio/music/ElementVoice.d.ts +14 -0
  479. package/dist/types/audio/music/ElementVoice.d.ts.map +1 -0
  480. package/dist/types/audio/music/GraphVoice.d.ts +22 -0
  481. package/dist/types/audio/music/GraphVoice.d.ts.map +1 -0
  482. package/dist/types/audio/music/MusicChannel.d.ts +35 -0
  483. package/dist/types/audio/music/MusicChannel.d.ts.map +1 -0
  484. package/dist/types/audio/music/musicVoice.d.ts +26 -0
  485. package/dist/types/audio/music/musicVoice.d.ts.map +1 -0
  486. package/dist/types/audio/sampleBank.d.ts +27 -0
  487. package/dist/types/audio/sampleBank.d.ts.map +1 -0
  488. package/dist/types/audio/soundTable.d.ts +14 -0
  489. package/dist/types/audio/soundTable.d.ts.map +1 -0
  490. package/dist/types/audio/synth.d.ts +34 -0
  491. package/dist/types/audio/synth.d.ts.map +1 -0
  492. package/dist/types/audio/takeCleanerWorker.d.ts +2 -0
  493. package/dist/types/audio/takeCleanerWorker.d.ts.map +1 -0
  494. package/dist/types/core/BitmapLabel.d.ts +36 -0
  495. package/dist/types/core/BitmapLabel.d.ts.map +1 -0
  496. package/dist/types/core/Camera.d.ts +115 -0
  497. package/dist/types/core/Camera.d.ts.map +1 -0
  498. package/dist/types/core/Clock.d.ts +11 -0
  499. package/dist/types/core/Clock.d.ts.map +1 -0
  500. package/dist/types/core/Graphics.d.ts +37 -0
  501. package/dist/types/core/Graphics.d.ts.map +1 -0
  502. package/dist/types/core/Group.d.ts +15 -0
  503. package/dist/types/core/Group.d.ts.map +1 -0
  504. package/dist/types/core/Image.d.ts +25 -0
  505. package/dist/types/core/Image.d.ts.map +1 -0
  506. package/dist/types/core/ObjectFactory.d.ts +34 -0
  507. package/dist/types/core/ObjectFactory.d.ts.map +1 -0
  508. package/dist/types/core/Pointer.d.ts +27 -0
  509. package/dist/types/core/Pointer.d.ts.map +1 -0
  510. package/dist/types/core/Rectangle.d.ts +26 -0
  511. package/dist/types/core/Rectangle.d.ts.map +1 -0
  512. package/dist/types/core/Stage.d.ts +58 -0
  513. package/dist/types/core/Stage.d.ts.map +1 -0
  514. package/dist/types/core/Text.d.ts +22 -0
  515. package/dist/types/core/Text.d.ts.map +1 -0
  516. package/dist/types/core/TextureRegistry.d.ts +51 -0
  517. package/dist/types/core/TextureRegistry.d.ts.map +1 -0
  518. package/dist/types/core/Timeline.d.ts +115 -0
  519. package/dist/types/core/Timeline.d.ts.map +1 -0
  520. package/dist/types/core/TimelineBuilder.d.ts +53 -0
  521. package/dist/types/core/TimelineBuilder.d.ts.map +1 -0
  522. package/dist/types/core/TimelineChild.d.ts +51 -0
  523. package/dist/types/core/TimelineChild.d.ts.map +1 -0
  524. package/dist/types/core/Tweener.d.ts +70 -0
  525. package/dist/types/core/Tweener.d.ts.map +1 -0
  526. package/dist/types/core/atlas.d.ts +16 -0
  527. package/dist/types/core/atlas.d.ts.map +1 -0
  528. package/dist/types/core/atlasPlan.d.ts +34 -0
  529. package/dist/types/core/atlasPlan.d.ts.map +1 -0
  530. package/dist/types/core/eases.d.ts +3 -0
  531. package/dist/types/core/eases.d.ts.map +1 -0
  532. package/dist/types/core/gameObject.d.ts +42 -0
  533. package/dist/types/core/gameObject.d.ts.map +1 -0
  534. package/dist/types/core/pixiPatches.d.ts +9 -0
  535. package/dist/types/core/pixiPatches.d.ts.map +1 -0
  536. package/dist/types/core/timelinePlace.d.ts +23 -0
  537. package/dist/types/core/timelinePlace.d.ts.map +1 -0
  538. package/dist/types/core/tweenProps.d.ts +8 -0
  539. package/dist/types/core/tweenProps.d.ts.map +1 -0
  540. package/dist/types/core/types.d.ts +4 -0
  541. package/dist/types/core/types.d.ts.map +1 -0
  542. package/dist/types/debug/DebugOverlay.d.ts +63 -0
  543. package/dist/types/debug/DebugOverlay.d.ts.map +1 -0
  544. package/dist/types/debug/DrawCallCounter.d.ts +20 -0
  545. package/dist/types/debug/DrawCallCounter.d.ts.map +1 -0
  546. package/dist/types/debug/ErrorLog.d.ts +20 -0
  547. package/dist/types/debug/ErrorLog.d.ts.map +1 -0
  548. package/dist/types/debug/FrameStats.d.ts +21 -0
  549. package/dist/types/debug/FrameStats.d.ts.map +1 -0
  550. package/dist/types/debug/inspectWorld.d.ts +14 -0
  551. package/dist/types/debug/inspectWorld.d.ts.map +1 -0
  552. package/dist/types/diagnostics/ErrorDeduper.d.ts +17 -0
  553. package/dist/types/diagnostics/ErrorDeduper.d.ts.map +1 -0
  554. package/dist/types/diagnostics/FrameSampler.d.ts +37 -0
  555. package/dist/types/diagnostics/FrameSampler.d.ts.map +1 -0
  556. package/dist/types/diagnostics/bootWatch.d.ts +25 -0
  557. package/dist/types/diagnostics/bootWatch.d.ts.map +1 -0
  558. package/dist/types/diagnostics/captureErrors.d.ts +24 -0
  559. package/dist/types/diagnostics/captureErrors.d.ts.map +1 -0
  560. package/dist/types/diagnostics/contextLoss.d.ts +35 -0
  561. package/dist/types/diagnostics/contextLoss.d.ts.map +1 -0
  562. package/dist/types/diagnostics/frameStats.d.ts +30 -0
  563. package/dist/types/diagnostics/frameStats.d.ts.map +1 -0
  564. package/dist/types/diagnostics/gpuInfo.d.ts +9 -0
  565. package/dist/types/diagnostics/gpuInfo.d.ts.map +1 -0
  566. package/dist/types/diagnostics/renderGuard.d.ts +12 -0
  567. package/dist/types/diagnostics/renderGuard.d.ts.map +1 -0
  568. package/dist/types/ecs/SparseSet.d.ts +25 -0
  569. package/dist/types/ecs/SparseSet.d.ts.map +1 -0
  570. package/dist/types/ecs/World.d.ts +137 -0
  571. package/dist/types/ecs/World.d.ts.map +1 -0
  572. package/dist/types/ecs/fields.d.ts +34 -0
  573. package/dist/types/ecs/fields.d.ts.map +1 -0
  574. package/dist/types/engine/Engine.d.ts +80 -0
  575. package/dist/types/engine/Engine.d.ts.map +1 -0
  576. package/dist/types/engine/FixedLoop.d.ts +32 -0
  577. package/dist/types/engine/FixedLoop.d.ts.map +1 -0
  578. package/dist/types/engine/Scene.d.ts +67 -0
  579. package/dist/types/engine/Scene.d.ts.map +1 -0
  580. package/dist/types/engine/SceneManager.d.ts +36 -0
  581. package/dist/types/engine/SceneManager.d.ts.map +1 -0
  582. package/dist/types/events/EventBus.d.ts +20 -0
  583. package/dist/types/events/EventBus.d.ts.map +1 -0
  584. package/dist/types/fx/FloatingText.d.ts +71 -0
  585. package/dist/types/fx/FloatingText.d.ts.map +1 -0
  586. package/dist/types/fx/hitStop.d.ts +20 -0
  587. package/dist/types/fx/hitStop.d.ts.map +1 -0
  588. package/dist/types/fx/viewCull.d.ts +14 -0
  589. package/dist/types/fx/viewCull.d.ts.map +1 -0
  590. package/dist/types/i18n/Translator.d.ts +52 -0
  591. package/dist/types/i18n/Translator.d.ts.map +1 -0
  592. package/dist/types/i18n/extractStrings.d.ts +25 -0
  593. package/dist/types/i18n/extractStrings.d.ts.map +1 -0
  594. package/dist/types/i18n/formatMessage.d.ts +10 -0
  595. package/dist/types/i18n/formatMessage.d.ts.map +1 -0
  596. package/dist/types/index.d.ts +149 -0
  597. package/dist/types/index.d.ts.map +1 -0
  598. package/dist/types/input/Actions.d.ts +94 -0
  599. package/dist/types/input/Actions.d.ts.map +1 -0
  600. package/dist/types/input/AimGesture.d.ts +106 -0
  601. package/dist/types/input/AimGesture.d.ts.map +1 -0
  602. package/dist/types/input/Keyboard.d.ts +30 -0
  603. package/dist/types/input/Keyboard.d.ts.map +1 -0
  604. package/dist/types/input/Keymap.d.ts +85 -0
  605. package/dist/types/input/Keymap.d.ts.map +1 -0
  606. package/dist/types/input/TargetLock.d.ts +56 -0
  607. package/dist/types/input/TargetLock.d.ts.map +1 -0
  608. package/dist/types/input/aimAxis.d.ts +9 -0
  609. package/dist/types/input/aimAxis.d.ts.map +1 -0
  610. package/dist/types/input/keyChord.d.ts +15 -0
  611. package/dist/types/input/keyChord.d.ts.map +1 -0
  612. package/dist/types/input/longPress.d.ts +21 -0
  613. package/dist/types/input/longPress.d.ts.map +1 -0
  614. package/dist/types/input/stickAxis.d.ts +26 -0
  615. package/dist/types/input/stickAxis.d.ts.map +1 -0
  616. package/dist/types/input/touchDetect.d.ts +18 -0
  617. package/dist/types/input/touchDetect.d.ts.map +1 -0
  618. package/dist/types/light/LightLayer.d.ts +65 -0
  619. package/dist/types/light/LightLayer.d.ts.map +1 -0
  620. package/dist/types/nav/MinHeap.d.ts +15 -0
  621. package/dist/types/nav/MinHeap.d.ts.map +1 -0
  622. package/dist/types/nav/findPath.d.ts +38 -0
  623. package/dist/types/nav/findPath.d.ts.map +1 -0
  624. package/dist/types/nav/navGrid.d.ts +48 -0
  625. package/dist/types/nav/navGrid.d.ts.map +1 -0
  626. package/dist/types/nav/nearestOpen.d.ts +8 -0
  627. package/dist/types/nav/nearestOpen.d.ts.map +1 -0
  628. package/dist/types/nav/straightenPath.d.ts +13 -0
  629. package/dist/types/nav/straightenPath.d.ts.map +1 -0
  630. package/dist/types/net/Connection.d.ts +66 -0
  631. package/dist/types/net/Connection.d.ts.map +1 -0
  632. package/dist/types/net/InterpolationBuffer.d.ts +36 -0
  633. package/dist/types/net/InterpolationBuffer.d.ts.map +1 -0
  634. package/dist/types/net/PredictedMover.d.ts +43 -0
  635. package/dist/types/net/PredictedMover.d.ts.map +1 -0
  636. package/dist/types/net/Room.d.ts +69 -0
  637. package/dist/types/net/Room.d.ts.map +1 -0
  638. package/dist/types/net/RoomHost.d.ts +74 -0
  639. package/dist/types/net/RoomHost.d.ts.map +1 -0
  640. package/dist/types/net/cadence.d.ts +22 -0
  641. package/dist/types/net/cadence.d.ts.map +1 -0
  642. package/dist/types/net/constants.d.ts +24 -0
  643. package/dist/types/net/constants.d.ts.map +1 -0
  644. package/dist/types/net/lobby/LobbyClient.d.ts +107 -0
  645. package/dist/types/net/lobby/LobbyClient.d.ts.map +1 -0
  646. package/dist/types/net/lobby/LobbyHost.d.ts +147 -0
  647. package/dist/types/net/lobby/LobbyHost.d.ts.map +1 -0
  648. package/dist/types/net/lobby/LobbyRooms.d.ts +56 -0
  649. package/dist/types/net/lobby/LobbyRooms.d.ts.map +1 -0
  650. package/dist/types/net/lobby/Matchmaker.d.ts +57 -0
  651. package/dist/types/net/lobby/Matchmaker.d.ts.map +1 -0
  652. package/dist/types/net/lobby/index.d.ts +6 -0
  653. package/dist/types/net/lobby/index.d.ts.map +1 -0
  654. package/dist/types/net/lobby/lobbyProtocol.d.ts +143 -0
  655. package/dist/types/net/lobby/lobbyProtocol.d.ts.map +1 -0
  656. package/dist/types/net/movement.d.ts +50 -0
  657. package/dist/types/net/movement.d.ts.map +1 -0
  658. package/dist/types/net/protocol.d.ts +59 -0
  659. package/dist/types/net/protocol.d.ts.map +1 -0
  660. package/dist/types/net/serverClock.d.ts +14 -0
  661. package/dist/types/net/serverClock.d.ts.map +1 -0
  662. package/dist/types/net/snapshotCodec.d.ts +55 -0
  663. package/dist/types/net/snapshotCodec.d.ts.map +1 -0
  664. package/dist/types/parallax/Parallax.d.ts +37 -0
  665. package/dist/types/parallax/Parallax.d.ts.map +1 -0
  666. package/dist/types/parallax/ParallaxLayer.d.ts +80 -0
  667. package/dist/types/parallax/ParallaxLayer.d.ts.map +1 -0
  668. package/dist/types/parallax/parallaxMath.d.ts +50 -0
  669. package/dist/types/parallax/parallaxMath.d.ts.map +1 -0
  670. package/dist/types/particles/Emitter.d.ts +97 -0
  671. package/dist/types/particles/Emitter.d.ts.map +1 -0
  672. package/dist/types/particles/ParticleBudget.d.ts +28 -0
  673. package/dist/types/particles/ParticleBudget.d.ts.map +1 -0
  674. package/dist/types/particles/ParticleSim.d.ts +38 -0
  675. package/dist/types/particles/ParticleSim.d.ts.map +1 -0
  676. package/dist/types/particles/particleCurves.d.ts +21 -0
  677. package/dist/types/particles/particleCurves.d.ts.map +1 -0
  678. package/dist/types/particles/particleSampling.d.ts +20 -0
  679. package/dist/types/particles/particleSampling.d.ts.map +1 -0
  680. package/dist/types/physics/Body.d.ts +130 -0
  681. package/dist/types/physics/Body.d.ts.map +1 -0
  682. package/dist/types/physics/BroadPhase.d.ts +26 -0
  683. package/dist/types/physics/BroadPhase.d.ts.map +1 -0
  684. package/dist/types/physics/Contact.d.ts +62 -0
  685. package/dist/types/physics/Contact.d.ts.map +1 -0
  686. package/dist/types/physics/ContactSolver.d.ts +29 -0
  687. package/dist/types/physics/ContactSolver.d.ts.map +1 -0
  688. package/dist/types/physics/PhysicsWorld.d.ts +78 -0
  689. package/dist/types/physics/PhysicsWorld.d.ts.map +1 -0
  690. package/dist/types/physics/PhysicsWorldOptions.d.ts +24 -0
  691. package/dist/types/physics/PhysicsWorldOptions.d.ts.map +1 -0
  692. package/dist/types/physics/SpatialHash.d.ts +23 -0
  693. package/dist/types/physics/SpatialHash.d.ts.map +1 -0
  694. package/dist/types/physics/collide.d.ts +27 -0
  695. package/dist/types/physics/collide.d.ts.map +1 -0
  696. package/dist/types/physics/collidePolygon.d.ts +14 -0
  697. package/dist/types/physics/collidePolygon.d.ts.map +1 -0
  698. package/dist/types/physics/contactReport.d.ts +8 -0
  699. package/dist/types/physics/contactReport.d.ts.map +1 -0
  700. package/dist/types/physics/drawColliders.d.ts +43 -0
  701. package/dist/types/physics/drawColliders.d.ts.map +1 -0
  702. package/dist/types/physics/physicsSystem.d.ts +5 -0
  703. package/dist/types/physics/physicsSystem.d.ts.map +1 -0
  704. package/dist/types/physics/polygon.d.ts +28 -0
  705. package/dist/types/physics/polygon.d.ts.map +1 -0
  706. package/dist/types/physics/raycast.d.ts +19 -0
  707. package/dist/types/physics/raycast.d.ts.map +1 -0
  708. package/dist/types/physics/syncToBody.d.ts +16 -0
  709. package/dist/types/physics/syncToBody.d.ts.map +1 -0
  710. package/dist/types/physics/tileBodies.d.ts +36 -0
  711. package/dist/types/physics/tileBodies.d.ts.map +1 -0
  712. package/dist/types/physics/types.d.ts +116 -0
  713. package/dist/types/physics/types.d.ts.map +1 -0
  714. package/dist/types/pixel/Darkness.d.ts +78 -0
  715. package/dist/types/pixel/Darkness.d.ts.map +1 -0
  716. package/dist/types/pixel/DitherVignette.d.ts +35 -0
  717. package/dist/types/pixel/DitherVignette.d.ts.map +1 -0
  718. package/dist/types/pixel/Evaporation.d.ts +30 -0
  719. package/dist/types/pixel/Evaporation.d.ts.map +1 -0
  720. package/dist/types/pixel/NightShade.d.ts +38 -0
  721. package/dist/types/pixel/NightShade.d.ts.map +1 -0
  722. package/dist/types/pixel/PixelLayer.d.ts +85 -0
  723. package/dist/types/pixel/PixelLayer.d.ts.map +1 -0
  724. package/dist/types/pixel/SwayProp.d.ts +52 -0
  725. package/dist/types/pixel/SwayProp.d.ts.map +1 -0
  726. package/dist/types/pixel/index.d.ts +31 -0
  727. package/dist/types/pixel/index.d.ts.map +1 -0
  728. package/dist/types/pixel/lights.d.ts +34 -0
  729. package/dist/types/pixel/lights.d.ts.map +1 -0
  730. package/dist/types/pixel/nineSlice.d.ts +71 -0
  731. package/dist/types/pixel/nineSlice.d.ts.map +1 -0
  732. package/dist/types/pixel/paintLayer.d.ts +35 -0
  733. package/dist/types/pixel/paintLayer.d.ts.map +1 -0
  734. package/dist/types/pixel/palette.d.ts +58 -0
  735. package/dist/types/pixel/palette.d.ts.map +1 -0
  736. package/dist/types/pixel/pixel.d.ts +80 -0
  737. package/dist/types/pixel/pixel.d.ts.map +1 -0
  738. package/dist/types/pixel/pixelPaint.d.ts +43 -0
  739. package/dist/types/pixel/pixelPaint.d.ts.map +1 -0
  740. package/dist/types/pixel/pixelTone.d.ts +51 -0
  741. package/dist/types/pixel/pixelTone.d.ts.map +1 -0
  742. package/dist/types/pixel/propKit.d.ts +26 -0
  743. package/dist/types/pixel/propKit.d.ts.map +1 -0
  744. package/dist/types/pixel/ramp.d.ts +57 -0
  745. package/dist/types/pixel/ramp.d.ts.map +1 -0
  746. package/dist/types/pixel/selout.d.ts +3 -0
  747. package/dist/types/pixel/selout.d.ts.map +1 -0
  748. package/dist/types/pixel/spritePixels.d.ts +29 -0
  749. package/dist/types/pixel/spritePixels.d.ts.map +1 -0
  750. package/dist/types/pixel/swayRig.d.ts +72 -0
  751. package/dist/types/pixel/swayRig.d.ts.map +1 -0
  752. package/dist/types/pixel/vignetteMask.d.ts +16 -0
  753. package/dist/types/pixel/vignetteMask.d.ts.map +1 -0
  754. package/dist/types/pixel/weatherArt.d.ts +29 -0
  755. package/dist/types/pixel/weatherArt.d.ts.map +1 -0
  756. package/dist/types/platform/touch.d.ts +10 -0
  757. package/dist/types/platform/touch.d.ts.map +1 -0
  758. package/dist/types/postfx/BloomFilter.d.ts +33 -0
  759. package/dist/types/postfx/BloomFilter.d.ts.map +1 -0
  760. package/dist/types/postfx/ChromaticAberrationFilter.d.ts +11 -0
  761. package/dist/types/postfx/ChromaticAberrationFilter.d.ts.map +1 -0
  762. package/dist/types/postfx/ColorAdjustFilter.d.ts +32 -0
  763. package/dist/types/postfx/ColorAdjustFilter.d.ts.map +1 -0
  764. package/dist/types/postfx/CrtFilter.d.ts +16 -0
  765. package/dist/types/postfx/CrtFilter.d.ts.map +1 -0
  766. package/dist/types/postfx/PixelateFilter.d.ts +8 -0
  767. package/dist/types/postfx/PixelateFilter.d.ts.map +1 -0
  768. package/dist/types/postfx/PostFx.d.ts +92 -0
  769. package/dist/types/postfx/PostFx.d.ts.map +1 -0
  770. package/dist/types/postfx/ShockwaveFilter.d.ts +20 -0
  771. package/dist/types/postfx/ShockwaveFilter.d.ts.map +1 -0
  772. package/dist/types/postfx/VignetteFilter.d.ts +19 -0
  773. package/dist/types/postfx/VignetteFilter.d.ts.map +1 -0
  774. package/dist/types/postfx/fxAnimator.d.ts +32 -0
  775. package/dist/types/postfx/fxAnimator.d.ts.map +1 -0
  776. package/dist/types/postfx/fxShader.d.ts +49 -0
  777. package/dist/types/postfx/fxShader.d.ts.map +1 -0
  778. package/dist/types/postfx/index.d.ts +11 -0
  779. package/dist/types/postfx/index.d.ts.map +1 -0
  780. package/dist/types/react/ChoiceDialog.d.ts +8 -0
  781. package/dist/types/react/ChoiceDialog.d.ts.map +1 -0
  782. package/dist/types/react/ConfirmDialog.d.ts +9 -0
  783. package/dist/types/react/ConfirmDialog.d.ts.map +1 -0
  784. package/dist/types/react/Glyph.d.ts +54 -0
  785. package/dist/types/react/Glyph.d.ts.map +1 -0
  786. package/dist/types/react/Modal.d.ts +22 -0
  787. package/dist/types/react/Modal.d.ts.map +1 -0
  788. package/dist/types/react/Panel.d.ts +29 -0
  789. package/dist/types/react/Panel.d.ts.map +1 -0
  790. package/dist/types/react/PixelImage.d.ts +19 -0
  791. package/dist/types/react/PixelImage.d.ts.map +1 -0
  792. package/dist/types/react/Select.d.ts +27 -0
  793. package/dist/types/react/Select.d.ts.map +1 -0
  794. package/dist/types/react/Slider.d.ts +24 -0
  795. package/dist/types/react/Slider.d.ts.map +1 -0
  796. package/dist/types/react/SplitPane.d.ts +26 -0
  797. package/dist/types/react/SplitPane.d.ts.map +1 -0
  798. package/dist/types/react/TabStrip.d.ts +31 -0
  799. package/dist/types/react/TabStrip.d.ts.map +1 -0
  800. package/dist/types/react/TitleTips.d.ts +15 -0
  801. package/dist/types/react/TitleTips.d.ts.map +1 -0
  802. package/dist/types/react/Tooltip.d.ts +22 -0
  803. package/dist/types/react/Tooltip.d.ts.map +1 -0
  804. package/dist/types/react/UiProvider.d.ts +52 -0
  805. package/dist/types/react/UiProvider.d.ts.map +1 -0
  806. package/dist/types/react/baseCss.d.ts +27 -0
  807. package/dist/types/react/baseCss.d.ts.map +1 -0
  808. package/dist/types/react/choiceStore.d.ts +34 -0
  809. package/dist/types/react/choiceStore.d.ts.map +1 -0
  810. package/dist/types/react/classNames.d.ts +12 -0
  811. package/dist/types/react/classNames.d.ts.map +1 -0
  812. package/dist/types/react/confirmStore.d.ts +30 -0
  813. package/dist/types/react/confirmStore.d.ts.map +1 -0
  814. package/dist/types/react/index.d.ts +33 -0
  815. package/dist/types/react/index.d.ts.map +1 -0
  816. package/dist/types/react/labels.d.ts +24 -0
  817. package/dist/types/react/labels.d.ts.map +1 -0
  818. package/dist/types/react/placement.d.ts +59 -0
  819. package/dist/types/react/placement.d.ts.map +1 -0
  820. package/dist/types/react/useFillSheet.d.ts +9 -0
  821. package/dist/types/react/useFillSheet.d.ts.map +1 -0
  822. package/dist/types/react/useFitToViewport.d.ts +20 -0
  823. package/dist/types/react/useFitToViewport.d.ts.map +1 -0
  824. package/dist/types/react/usePicked.d.ts +9 -0
  825. package/dist/types/react/usePicked.d.ts.map +1 -0
  826. package/dist/types/react/useStore.d.ts +8 -0
  827. package/dist/types/react/useStore.d.ts.map +1 -0
  828. package/dist/types/react/useViewport.d.ts +4 -0
  829. package/dist/types/react/useViewport.d.ts.map +1 -0
  830. package/dist/types/rig/PosePlayer.d.ts +64 -0
  831. package/dist/types/rig/PosePlayer.d.ts.map +1 -0
  832. package/dist/types/rig/RigView.d.ts +68 -0
  833. package/dist/types/rig/RigView.d.ts.map +1 -0
  834. package/dist/types/rig/Skeleton.d.ts +14 -0
  835. package/dist/types/rig/Skeleton.d.ts.map +1 -0
  836. package/dist/types/rig/humanoid.d.ts +4 -0
  837. package/dist/types/rig/humanoid.d.ts.map +1 -0
  838. package/dist/types/rig/humanoidPoses.d.ts +117 -0
  839. package/dist/types/rig/humanoidPoses.d.ts.map +1 -0
  840. package/dist/types/rig/poseMath.d.ts +14 -0
  841. package/dist/types/rig/poseMath.d.ts.map +1 -0
  842. package/dist/types/rig/rigTypes.d.ts +82 -0
  843. package/dist/types/rig/rigTypes.d.ts.map +1 -0
  844. package/dist/types/save/Autosaver.d.ts +43 -0
  845. package/dist/types/save/Autosaver.d.ts.map +1 -0
  846. package/dist/types/save/MemoryBackend.d.ts +10 -0
  847. package/dist/types/save/MemoryBackend.d.ts.map +1 -0
  848. package/dist/types/save/SaveBackend.d.ts +14 -0
  849. package/dist/types/save/SaveBackend.d.ts.map +1 -0
  850. package/dist/types/save/SaveStore.d.ts +73 -0
  851. package/dist/types/save/SaveStore.d.ts.map +1 -0
  852. package/dist/types/save/WebStorageBackend.d.ts +14 -0
  853. package/dist/types/save/WebStorageBackend.d.ts.map +1 -0
  854. package/dist/types/save/checksum.d.ts +7 -0
  855. package/dist/types/save/checksum.d.ts.map +1 -0
  856. package/dist/types/save/migrateSave.d.ts +17 -0
  857. package/dist/types/save/migrateSave.d.ts.map +1 -0
  858. package/dist/types/settings.d.ts +25 -0
  859. package/dist/types/settings.d.ts.map +1 -0
  860. package/dist/types/tilemap/TilemapView.d.ts +42 -0
  861. package/dist/types/tilemap/TilemapView.d.ts.map +1 -0
  862. package/dist/types/tilemap/collision.d.ts +16 -0
  863. package/dist/types/tilemap/collision.d.ts.map +1 -0
  864. package/dist/types/tilemap/tiled.d.ts +104 -0
  865. package/dist/types/tilemap/tiled.d.ts.map +1 -0
  866. package/dist/types/transitions/CrossfadeTransition.d.ts +20 -0
  867. package/dist/types/transitions/CrossfadeTransition.d.ts.map +1 -0
  868. package/dist/types/transitions/DitherWipeTransition.d.ts +35 -0
  869. package/dist/types/transitions/DitherWipeTransition.d.ts.map +1 -0
  870. package/dist/types/transitions/FadeTransition.d.ts +20 -0
  871. package/dist/types/transitions/FadeTransition.d.ts.map +1 -0
  872. package/dist/types/transitions/Letterbox.d.ts +33 -0
  873. package/dist/types/transitions/Letterbox.d.ts.map +1 -0
  874. package/dist/types/transitions/Transition.d.ts +22 -0
  875. package/dist/types/transitions/Transition.d.ts.map +1 -0
  876. package/dist/types/transitions/ditherMask.d.ts +13 -0
  877. package/dist/types/transitions/ditherMask.d.ts.map +1 -0
  878. package/dist/types/transitions/transitionTo.d.ts +16 -0
  879. package/dist/types/transitions/transitionTo.d.ts.map +1 -0
  880. package/dist/types/transitions/tweenDone.d.ts +5 -0
  881. package/dist/types/transitions/tweenDone.d.ts.map +1 -0
  882. package/dist/types/ui/Bar.d.ts +41 -0
  883. package/dist/types/ui/Bar.d.ts.map +1 -0
  884. package/dist/types/ui/Button.d.ts +47 -0
  885. package/dist/types/ui/Button.d.ts.map +1 -0
  886. package/dist/types/ui/Dialog.d.ts +47 -0
  887. package/dist/types/ui/Dialog.d.ts.map +1 -0
  888. package/dist/types/ui/FocusManager.d.ts +53 -0
  889. package/dist/types/ui/FocusManager.d.ts.map +1 -0
  890. package/dist/types/ui/Label.d.ts +24 -0
  891. package/dist/types/ui/Label.d.ts.map +1 -0
  892. package/dist/types/ui/List.d.ts +23 -0
  893. package/dist/types/ui/List.d.ts.map +1 -0
  894. package/dist/types/ui/Panel.d.ts +38 -0
  895. package/dist/types/ui/Panel.d.ts.map +1 -0
  896. package/dist/types/ui/ScrollView.d.ts +56 -0
  897. package/dist/types/ui/ScrollView.d.ts.map +1 -0
  898. package/dist/types/ui/Slider.d.ts +47 -0
  899. package/dist/types/ui/Slider.d.ts.map +1 -0
  900. package/dist/types/ui/Stack.d.ts +16 -0
  901. package/dist/types/ui/Stack.d.ts.map +1 -0
  902. package/dist/types/ui/Toggle.d.ts +31 -0
  903. package/dist/types/ui/Toggle.d.ts.map +1 -0
  904. package/dist/types/ui/UiHost.d.ts +18 -0
  905. package/dist/types/ui/UiHost.d.ts.map +1 -0
  906. package/dist/types/ui/UiPointerGate.d.ts +17 -0
  907. package/dist/types/ui/UiPointerGate.d.ts.map +1 -0
  908. package/dist/types/ui/UiRoot.d.ts +73 -0
  909. package/dist/types/ui/UiRoot.d.ts.map +1 -0
  910. package/dist/types/ui/Widget.d.ts +56 -0
  911. package/dist/types/ui/Widget.d.ts.map +1 -0
  912. package/dist/types/ui/dom/DomOverlay.d.ts +52 -0
  913. package/dist/types/ui/dom/DomOverlay.d.ts.map +1 -0
  914. package/dist/types/ui/dom/DomWorldAnchors.d.ts +50 -0
  915. package/dist/types/ui/dom/DomWorldAnchors.d.ts.map +1 -0
  916. package/dist/types/ui/dom/InputShield.d.ts +20 -0
  917. package/dist/types/ui/dom/InputShield.d.ts.map +1 -0
  918. package/dist/types/ui/dom/createStore.d.ts +22 -0
  919. package/dist/types/ui/dom/createStore.d.ts.map +1 -0
  920. package/dist/types/ui/dom/shieldDecision.d.ts +34 -0
  921. package/dist/types/ui/dom/shieldDecision.d.ts.map +1 -0
  922. package/dist/types/ui/dom/worldToScreen.d.ts +24 -0
  923. package/dist/types/ui/dom/worldToScreen.d.ts.map +1 -0
  924. package/dist/types/ui/index.d.ts +38 -0
  925. package/dist/types/ui/index.d.ts.map +1 -0
  926. package/dist/types/ui/layout/anchor.d.ts +9 -0
  927. package/dist/types/ui/layout/anchor.d.ts.map +1 -0
  928. package/dist/types/ui/layout/barDrain.d.ts +25 -0
  929. package/dist/types/ui/layout/barDrain.d.ts.map +1 -0
  930. package/dist/types/ui/layout/fitToViewport.d.ts +32 -0
  931. package/dist/types/ui/layout/fitToViewport.d.ts.map +1 -0
  932. package/dist/types/ui/layout/focusNav.d.ts +13 -0
  933. package/dist/types/ui/layout/focusNav.d.ts.map +1 -0
  934. package/dist/types/ui/layout/geometry.d.ts +35 -0
  935. package/dist/types/ui/layout/geometry.d.ts.map +1 -0
  936. package/dist/types/ui/layout/listWidth.d.ts +13 -0
  937. package/dist/types/ui/layout/listWidth.d.ts.map +1 -0
  938. package/dist/types/ui/layout/placeTooltip.d.ts +23 -0
  939. package/dist/types/ui/layout/placeTooltip.d.ts.map +1 -0
  940. package/dist/types/ui/layout/scroll.d.ts +17 -0
  941. package/dist/types/ui/layout/scroll.d.ts.map +1 -0
  942. package/dist/types/ui/layout/slider.d.ts +7 -0
  943. package/dist/types/ui/layout/slider.d.ts.map +1 -0
  944. package/dist/types/ui/layout/stack.d.ts +26 -0
  945. package/dist/types/ui/layout/stack.d.ts.map +1 -0
  946. package/dist/types/ui/layout/wrapRow.d.ts +6 -0
  947. package/dist/types/ui/layout/wrapRow.d.ts.map +1 -0
  948. package/dist/ui/Bar.js +54 -0
  949. package/dist/ui/Bar.js.map +1 -0
  950. package/dist/ui/Button.js +58 -0
  951. package/dist/ui/Button.js.map +1 -0
  952. package/dist/ui/Dialog.js +56 -0
  953. package/dist/ui/Dialog.js.map +1 -0
  954. package/dist/ui/FocusManager.js +97 -0
  955. package/dist/ui/FocusManager.js.map +1 -0
  956. package/dist/ui/Label.js +36 -0
  957. package/dist/ui/Label.js.map +1 -0
  958. package/dist/ui/List.js +45 -0
  959. package/dist/ui/List.js.map +1 -0
  960. package/dist/ui/Panel.js +38 -0
  961. package/dist/ui/Panel.js.map +1 -0
  962. package/dist/ui/ScrollView.js +96 -0
  963. package/dist/ui/ScrollView.js.map +1 -0
  964. package/dist/ui/Slider.js +55 -0
  965. package/dist/ui/Slider.js.map +1 -0
  966. package/dist/ui/Stack.js +28 -0
  967. package/dist/ui/Stack.js.map +1 -0
  968. package/dist/ui/Toggle.js +37 -0
  969. package/dist/ui/Toggle.js.map +1 -0
  970. package/dist/ui/UiHost.js +9 -0
  971. package/dist/ui/UiHost.js.map +1 -0
  972. package/dist/ui/UiPointerGate.js +25 -0
  973. package/dist/ui/UiPointerGate.js.map +1 -0
  974. package/dist/ui/UiRoot.js +93 -0
  975. package/dist/ui/UiRoot.js.map +1 -0
  976. package/dist/ui/Widget.js +90 -0
  977. package/dist/ui/Widget.js.map +1 -0
  978. package/dist/ui/dom/DomOverlay.js +59 -0
  979. package/dist/ui/dom/DomOverlay.js.map +1 -0
  980. package/dist/ui/dom/DomWorldAnchors.js +59 -0
  981. package/dist/ui/dom/DomWorldAnchors.js.map +1 -0
  982. package/dist/ui/dom/InputShield.js +27 -0
  983. package/dist/ui/dom/InputShield.js.map +1 -0
  984. package/dist/ui/dom/createStore.js +42 -0
  985. package/dist/ui/dom/createStore.js.map +1 -0
  986. package/dist/ui/dom/shieldDecision.js +36 -0
  987. package/dist/ui/dom/shieldDecision.js.map +1 -0
  988. package/dist/ui/dom/worldToScreen.js +11 -0
  989. package/dist/ui/dom/worldToScreen.js.map +1 -0
  990. package/dist/ui/layout/anchor.js +20 -0
  991. package/dist/ui/layout/anchor.js.map +1 -0
  992. package/dist/ui/layout/barDrain.js +25 -0
  993. package/dist/ui/layout/barDrain.js.map +1 -0
  994. package/dist/ui/layout/fitToViewport.js +17 -0
  995. package/dist/ui/layout/fitToViewport.js.map +1 -0
  996. package/dist/ui/layout/focusNav.js +42 -0
  997. package/dist/ui/layout/focusNav.js.map +1 -0
  998. package/dist/ui/layout/geometry.js +21 -0
  999. package/dist/ui/layout/geometry.js.map +1 -0
  1000. package/dist/ui/layout/listWidth.js +10 -0
  1001. package/dist/ui/layout/listWidth.js.map +1 -0
  1002. package/dist/ui/layout/placeTooltip.js +28 -0
  1003. package/dist/ui/layout/placeTooltip.js.map +1 -0
  1004. package/dist/ui/layout/scroll.js +24 -0
  1005. package/dist/ui/layout/scroll.js.map +1 -0
  1006. package/dist/ui/layout/slider.js +20 -0
  1007. package/dist/ui/layout/slider.js.map +1 -0
  1008. package/dist/ui/layout/stack.js +27 -0
  1009. package/dist/ui/layout/stack.js.map +1 -0
  1010. package/dist/ui/layout/wrapRow.js +13 -0
  1011. package/dist/ui/layout/wrapRow.js.map +1 -0
  1012. package/dist/ui.js +85 -0
  1013. package/dist/ui.js.map +1 -0
  1014. package/package.json +115 -4
@@ -0,0 +1,84 @@
1
+ import { writeProp as f, readProp as u } from "./tweenProps.js";
2
+ class m {
3
+ constructor(s, t, i, e = [], h = [], a = [], r = [], n = null, o = null, l = null) {
4
+ this.kind = s, this.start = t, this.duration = i, this.targets = e, this.props = h, this.ends = a, this.givenFrom = r, this.ease = n, this.fn = o, this.nested = l;
5
+ }
6
+ kind;
7
+ start;
8
+ duration;
9
+ targets;
10
+ props;
11
+ ends;
12
+ givenFrom;
13
+ ease;
14
+ fn;
15
+ nested;
16
+ /** Every target × prop start value, captured once (`inited`). */
17
+ froms = [];
18
+ inited = !1;
19
+ /** Progress (tween) or own time (nested) last written; NaN before the first, so the first always writes. */
20
+ last = Number.NaN;
21
+ get end() {
22
+ return this.start + this.duration;
23
+ }
24
+ /**
25
+ * The playhead moved from `a` to `b` (the parent's own time, either way). Calls fire when `fire` is set and their
26
+ * time lies in the span with its start left out and its end kept — so a call met at the end of one frame does not
27
+ * fire again at the start of the next — unless `includeStart` keeps the start too (a run or a repeat beginning).
28
+ */
29
+ play(s, t, i, e) {
30
+ switch (this.kind) {
31
+ case "tween":
32
+ this.playTween(t);
33
+ break;
34
+ case "call":
35
+ i && this.fn && p(s, t, this.start, e) && this.fn();
36
+ break;
37
+ case "nested":
38
+ this.playNested(s, t, i, e);
39
+ break;
40
+ }
41
+ }
42
+ playTween(s) {
43
+ if (!this.inited) {
44
+ if (s < this.start) return;
45
+ this.capture();
46
+ }
47
+ let t;
48
+ if (this.duration > 0 ? t = Math.min(1, Math.max(0, (s - this.start) / this.duration)) : t = s >= this.start ? 1 : 0, t === this.last) return;
49
+ this.last = t;
50
+ const i = this.ease ? this.ease(t) : t, e = this.props, h = e.length, a = this.targets;
51
+ for (let r = 0; r < a.length; r++) {
52
+ const n = a[r];
53
+ if (n.destroyed !== !0)
54
+ for (let o = 0; o < h; o++) {
55
+ const l = this.froms[r * h + o];
56
+ f(n, e[o], l + (this.ends[o] - l) * i);
57
+ }
58
+ }
59
+ }
60
+ capture() {
61
+ this.inited = !0;
62
+ const s = this.props;
63
+ for (const t of this.targets)
64
+ for (let i = 0; i < s.length; i++) this.froms.push(this.givenFrom[i] ?? u(t, s[i]));
65
+ }
66
+ playNested(s, t, i, e) {
67
+ const h = this.nested;
68
+ if (!h) return;
69
+ if (!this.inited) {
70
+ if (t < this.start) return;
71
+ this.inited = !0;
72
+ }
73
+ const a = h.totalDuration, r = Math.min(a, Math.max(0, s - this.start)), n = Math.min(a, Math.max(0, t - this.start)), l = t >= s ? s < this.start || s === this.start && e : s > this.end || s === this.end && e;
74
+ r === n && n === this.last && !l || (this.last = n, h.playNested(r, n, i, l));
75
+ }
76
+ }
77
+ function p(d, s, t, i) {
78
+ return t === d ? i : s >= d ? t > d && t <= s : t < d && t >= s;
79
+ }
80
+ export {
81
+ m as TimelineChild,
82
+ p as crossed
83
+ };
84
+ //# sourceMappingURL=TimelineChild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineChild.js","sources":["../../src/core/TimelineChild.ts"],"sourcesContent":["import type { EaseFn } from './eases';\nimport type { TweenTarget } from './Tweener';\nimport { readProp, writeProp } from './tweenProps';\n\n/** What a nested timeline offers the timeline playing it. */\nexport interface NestedPlay {\n readonly totalDuration: number;\n /** Plays from `from` to `to` (its own time, ms); `includeStart` fires a call standing exactly at `from`. */\n playNested(from: number, to: number, fire: boolean, includeStart: boolean): void;\n}\n\nexport type ChildKind = 'tween' | 'call' | 'gap' | 'nested';\n\n/**\n * One thing on a timeline: a tween, a call, an empty gap (`wait`) or a nested timeline, at `start` for `duration` ms.\n * A tween reads its start values the first time the playhead reaches it — not when it is added — so a tween that\n * follows another on the same property starts where that one ended, and keeps those values for seeking and reversing.\n */\nexport class TimelineChild {\n /** Every target × prop start value, captured once (`inited`). */\n private readonly froms: number[] = [];\n private inited = false;\n /** Progress (tween) or own time (nested) last written; NaN before the first, so the first always writes. */\n private last = Number.NaN;\n\n constructor(\n readonly kind: ChildKind,\n readonly start: number,\n readonly duration: number,\n readonly targets: readonly TweenTarget[] = [],\n private readonly props: readonly string[] = [],\n private readonly ends: readonly number[] = [],\n /** A start value given as `{ from, to }`, per prop; undefined reads the target's own. */\n private readonly givenFrom: readonly (number | undefined)[] = [],\n private readonly ease: EaseFn | null = null,\n private readonly fn: (() => void) | null = null,\n private readonly nested: NestedPlay | null = null,\n ) {}\n\n get end(): number {\n return this.start + this.duration;\n }\n\n /**\n * The playhead moved from `a` to `b` (the parent's own time, either way). Calls fire when `fire` is set and their\n * time lies in the span with its start left out and its end kept — so a call met at the end of one frame does not\n * fire again at the start of the next — unless `includeStart` keeps the start too (a run or a repeat beginning).\n */\n play(a: number, b: number, fire: boolean, includeStart: boolean): void {\n switch (this.kind) {\n case 'tween':\n this.playTween(b);\n break;\n case 'call':\n if (fire && this.fn && crossed(a, b, this.start, includeStart)) this.fn();\n break;\n case 'nested':\n this.playNested(a, b, fire, includeStart);\n break;\n case 'gap':\n break;\n }\n }\n\n private playTween(b: number): void {\n if (!this.inited) {\n if (b < this.start) return;\n this.capture();\n }\n let p: number;\n if (this.duration > 0) p = Math.min(1, Math.max(0, (b - this.start) / this.duration));\n else p = b >= this.start ? 1 : 0;\n if (p === this.last) return;\n this.last = p;\n const k = this.ease ? this.ease(p) : p;\n const props = this.props;\n const np = props.length;\n const targets = this.targets;\n for (let t = 0; t < targets.length; t++) {\n const target = targets[t]!;\n // a destroyed display object is skipped, as Tweener does: its owner freed it, nothing is left to move\n if (target.destroyed === true) continue;\n for (let i = 0; i < np; i++) {\n const from = this.froms[t * np + i]!;\n writeProp(target, props[i]!, from + (this.ends[i]! - from) * k);\n }\n }\n }\n\n private capture(): void {\n this.inited = true;\n const props = this.props;\n for (const target of this.targets) {\n for (let i = 0; i < props.length; i++) this.froms.push(this.givenFrom[i] ?? readProp(target, props[i]!));\n }\n }\n\n private playNested(a: number, b: number, fire: boolean, includeStart: boolean): void {\n const sub = this.nested;\n if (!sub) return;\n if (!this.inited) {\n if (b < this.start) return;\n this.inited = true;\n }\n const total = sub.totalDuration;\n const la = Math.min(total, Math.max(0, a - this.start));\n const lb = Math.min(total, Math.max(0, b - this.start));\n // the nested timeline's own start point is \"crossed\" when the parent came from outside its span\n const forward = b >= a;\n const subInclude = forward ? a < this.start || (a === this.start && includeStart) : a > this.end || (a === this.end && includeStart);\n if (la === lb && lb === this.last && !subInclude) return;\n this.last = lb;\n sub.playNested(la, lb, fire, subInclude);\n }\n}\n\n/**\n * Whether a call at `at` lies in the span the playhead swept from `a` to `b`: the end kept, the start only when\n * `includeStart` says so.\n */\nexport function crossed(a: number, b: number, at: number, includeStart: boolean): boolean {\n if (at === a) return includeStart;\n return b >= a ? at > a && at <= b : at < a && at >= b;\n}\n"],"names":["TimelineChild","kind","start","duration","targets","props","ends","givenFrom","ease","fn","nested","a","b","fire","includeStart","crossed","p","k","np","t","target","i","from","writeProp","readProp","sub","total","la","lb","subInclude","at"],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { easeByName as m } from "./eases.js";
2
+ import { Timeline as y } from "./Timeline.js";
3
+ import { readProp as w, writeProp as g } from "./tweenProps.js";
4
+ const v = /* @__PURE__ */ new Set([
5
+ "targets",
6
+ "duration",
7
+ "delay",
8
+ "hold",
9
+ "yoyo",
10
+ "repeat",
11
+ "ease",
12
+ "props",
13
+ "onStart",
14
+ "onUpdate",
15
+ "onComplete"
16
+ ]);
17
+ class k {
18
+ constructor(e, t) {
19
+ this.cfg = e, this.ends = t;
20
+ const s = e.targets;
21
+ this.targets = Array.isArray(s) ? s : [s];
22
+ }
23
+ cfg;
24
+ ends;
25
+ tracks = null;
26
+ elapsed = 0;
27
+ plays = 0;
28
+ removed = !1;
29
+ targets;
30
+ /**
31
+ * Every target is a destroyed display object: nothing is left to move. A forever tween (`repeat: -1`) on a sprite
32
+ * its owner freed used to stay in the list for good, holding the sprite, and the list grew with every map loaded.
33
+ * A plain object (a clock a callback reads) has no `destroyed` and is never taken for one. Only a forever tween is
34
+ * dropped this way: a finite one still runs out and calls its `onComplete`, which may clean up more than the sprite.
35
+ */
36
+ orphaned() {
37
+ if (this.cfg.repeat !== -1) return !1;
38
+ const e = this.targets;
39
+ if (e.length === 0) return !1;
40
+ for (const t of e) if (t.destroyed !== !0) return !1;
41
+ return !0;
42
+ }
43
+ remove() {
44
+ this.removed = !0;
45
+ }
46
+ stop() {
47
+ this.removed = !0;
48
+ }
49
+ /** Advances by `dt` ms; returns false once the tween is finished. */
50
+ step(e) {
51
+ if (this.removed) return !1;
52
+ if (this.orphaned())
53
+ return this.removed = !0, !1;
54
+ const t = this.cfg, s = t.delay ?? 0;
55
+ if (this.elapsed += e, this.elapsed < s) return !0;
56
+ if (!this.tracks) {
57
+ this.tracks = [];
58
+ for (const i of this.targets)
59
+ for (const [p, u] of Object.entries(this.ends)) this.tracks.push({ target: i, prop: p, from: w(i, p), to: u });
60
+ t.onStart?.();
61
+ }
62
+ const n = Math.max(1, t.duration ?? 1e3), a = t.yoyo ? t.hold ?? 0 : 0, o = t.yoyo ? n * 2 + a : n;
63
+ let r = this.elapsed - s - this.plays * o;
64
+ const f = t.repeat ?? 0;
65
+ let h = !1;
66
+ r >= o && (f === -1 || this.plays < f ? (this.plays++, r -= o) : (r = o, h = !0));
67
+ let l;
68
+ t.yoyo ? r <= n ? l = r / n : r <= n + a ? l = 1 : l = 1 - (r - n - a) / n : l = r / n;
69
+ const d = m(t.ease)(Math.min(1, Math.max(0, l)));
70
+ for (const i of this.tracks) i.target.destroyed || g(i.target, i.prop, i.from + (i.to - i.from) * d);
71
+ return t.onUpdate?.(), h ? (this.removed = !0, t.onComplete?.(), !1) : !0;
72
+ }
73
+ }
74
+ class O {
75
+ /** Global speed factor; hit-stop slows every tween at once. */
76
+ timeScale = 1;
77
+ tweens = [];
78
+ add(e) {
79
+ const t = { ...e.props ?? {} }, s = {};
80
+ for (const [o, r] of Object.entries(e))
81
+ if (!v.has(o)) {
82
+ if (typeof r == "number") t[o] = r;
83
+ else if (r && typeof r == "object" && "to" in r) {
84
+ const f = r;
85
+ t[o] = f.to, f.from !== void 0 && (s[o] = f.from);
86
+ }
87
+ }
88
+ const n = Array.isArray(e.targets) ? e.targets : [e.targets];
89
+ for (const o of n) for (const [r, f] of Object.entries(s)) o[r] = f;
90
+ const a = new k(e, t);
91
+ return this.tweens.push(a), a;
92
+ }
93
+ /**
94
+ * Steps `item` every frame from the next one on, at this manager's `timeScale`, until its `step` answers false or
95
+ * the manager is cleared (a stage's manager is cleared when the stage is destroyed).
96
+ */
97
+ run(e) {
98
+ return this.tweens.push(e), e;
99
+ }
100
+ /** A `Timeline` driven by this manager: it follows `timeScale` and stops with `clear`. */
101
+ timeline(e = {}) {
102
+ return new y({ ...e, tweens: this });
103
+ }
104
+ killTweensOf(e) {
105
+ const t = new Set(Array.isArray(e) ? e : [e]);
106
+ for (const s of this.tweens) s.targets.some((n) => t.has(n)) && s.remove();
107
+ }
108
+ update(e) {
109
+ const t = e * this.timeScale, s = this.tweens, n = s.length;
110
+ let a = 0;
111
+ for (let o = 0; o < n; o++) {
112
+ const r = s[o];
113
+ S(r, t) && (s[a++] = r);
114
+ }
115
+ if (this.tweens === s) {
116
+ for (let o = n; o < s.length; o++) s[a++] = s[o];
117
+ s.length = a;
118
+ }
119
+ }
120
+ clear() {
121
+ for (const e of this.tweens) e.remove();
122
+ this.tweens = [];
123
+ }
124
+ }
125
+ function S(c, e) {
126
+ try {
127
+ return c.step(e);
128
+ } catch (t) {
129
+ return console.error("[tween] dropped after an error", t), !1;
130
+ }
131
+ }
132
+ export {
133
+ k as Tween,
134
+ O as Tweener
135
+ };
136
+ //# sourceMappingURL=Tweener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tweener.js","sources":["../../src/core/Tweener.ts"],"sourcesContent":["import { easeByName } from './eases';\nimport { Timeline, type TimelineOptions } from './Timeline';\nimport { readProp as read, writeProp as write } from './tweenProps';\n\nexport type TweenTarget = Record<string, unknown> & { destroyed?: boolean };\n\n/** Tween config in the shape the renderer has always used: numeric props at the top level or under `props`. */\nexport interface TweenConfig {\n targets: object | object[];\n duration?: number;\n delay?: number;\n /** Ms to stay at the end values before a yoyo plays back. */\n hold?: number;\n yoyo?: boolean;\n /** Extra plays after the first (-1 = forever). */\n repeat?: number;\n ease?: string;\n props?: Record<string, number>;\n onStart?: () => void;\n onUpdate?: () => void;\n onComplete?: () => void;\n [prop: string]: unknown;\n}\n\nconst RESERVED = new Set([\n 'targets', 'duration', 'delay', 'hold', 'yoyo', 'repeat', 'ease', 'props', 'onStart', 'onUpdate', 'onComplete',\n]);\n\ninterface Track {\n target: TweenTarget;\n prop: string;\n from: number;\n to: number;\n}\n\n/** One running tween; `remove()` stops it without calling onComplete. */\nexport class Tween {\n private tracks: Track[] | null = null;\n private elapsed = 0;\n private plays = 0;\n removed = false;\n readonly targets: TweenTarget[];\n\n constructor(\n private readonly cfg: TweenConfig,\n private readonly ends: Record<string, number>,\n ) {\n const t = cfg.targets;\n this.targets = (Array.isArray(t) ? t : [t]) as TweenTarget[];\n }\n\n /**\n * Every target is a destroyed display object: nothing is left to move. A forever tween (`repeat: -1`) on a sprite\n * its owner freed used to stay in the list for good, holding the sprite, and the list grew with every map loaded.\n * A plain object (a clock a callback reads) has no `destroyed` and is never taken for one. Only a forever tween is\n * dropped this way: a finite one still runs out and calls its `onComplete`, which may clean up more than the sprite.\n */\n private orphaned(): boolean {\n if (this.cfg.repeat !== -1) return false;\n const ts = this.targets;\n if (ts.length === 0) return false;\n for (const t of ts) if (t.destroyed !== true) return false;\n return true;\n }\n\n remove(): void {\n this.removed = true;\n }\n\n stop(): void {\n this.removed = true;\n }\n\n /** Advances by `dt` ms; returns false once the tween is finished. */\n step(dt: number): boolean {\n if (this.removed) return false;\n if (this.orphaned()) {\n this.removed = true;\n return false;\n }\n const cfg = this.cfg;\n const delay = cfg.delay ?? 0;\n this.elapsed += dt;\n if (this.elapsed < delay) return true;\n if (!this.tracks) {\n this.tracks = [];\n for (const target of this.targets) {\n for (const [prop, to] of Object.entries(this.ends)) this.tracks.push({ target, prop, from: read(target, prop), to });\n }\n cfg.onStart?.();\n }\n const duration = Math.max(1, cfg.duration ?? 1000);\n const hold = cfg.yoyo ? cfg.hold ?? 0 : 0;\n const cycle = cfg.yoyo ? duration * 2 + hold : duration;\n let local = this.elapsed - delay - this.plays * cycle;\n const repeat = cfg.repeat ?? 0;\n let finished = false;\n if (local >= cycle) {\n if (repeat === -1 || this.plays < repeat) {\n this.plays++;\n local -= cycle;\n } else {\n local = cycle;\n finished = true;\n }\n }\n let p: number;\n if (!cfg.yoyo) p = local / duration;\n else if (local <= duration) p = local / duration;\n else if (local <= duration + hold) p = 1;\n else p = 1 - (local - duration - hold) / duration;\n const k = easeByName(cfg.ease)(Math.min(1, Math.max(0, p)));\n for (const t of this.tracks) if (!t.target.destroyed) write(t.target, t.prop, t.from + (t.to - t.from) * k);\n cfg.onUpdate?.();\n if (finished) {\n this.removed = true;\n cfg.onComplete?.();\n return false;\n }\n return true;\n }\n}\n\n/**\n * Anything the manager can step each frame: a `Tween`, or a `Timeline` it drives. `step` answers false once finished\n * (the manager then drops it); `remove` stops it for good; `targets` is what `killTweensOf` matches against.\n */\nexport interface Steppable {\n step(dt: number): boolean;\n remove(): void;\n readonly targets: readonly object[];\n}\n\n/** Frame-driven tween manager (the renderer's replacement for Phaser's TweenManager). */\nexport class Tweener {\n /** Global speed factor; hit-stop slows every tween at once. */\n timeScale = 1;\n private tweens: Steppable[] = [];\n\n add(cfg: TweenConfig): Tween {\n const ends: Record<string, number> = { ...(cfg.props ?? {}) };\n const starts: Record<string, number> = {};\n for (const [k, v] of Object.entries(cfg)) {\n if (RESERVED.has(k)) continue;\n if (typeof v === 'number') ends[k] = v;\n else if (v && typeof v === 'object' && 'to' in v) {\n const range = v as { from?: number; to: number };\n ends[k] = range.to;\n if (range.from !== undefined) starts[k] = range.from;\n }\n }\n // `{ from, to }` jumps to `from` right away, before any delay\n const targets = (Array.isArray(cfg.targets) ? cfg.targets : [cfg.targets]) as Record<string, unknown>[];\n for (const t of targets) for (const [k, v] of Object.entries(starts)) t[k] = v;\n const tween = new Tween(cfg, ends);\n this.tweens.push(tween);\n return tween;\n }\n\n /**\n * Steps `item` every frame from the next one on, at this manager's `timeScale`, until its `step` answers false or\n * the manager is cleared (a stage's manager is cleared when the stage is destroyed).\n */\n run<T extends Steppable>(item: T): T {\n this.tweens.push(item);\n return item;\n }\n\n /** A `Timeline` driven by this manager: it follows `timeScale` and stops with `clear`. */\n timeline(options: Omit<TimelineOptions, 'tweens'> = {}): Timeline {\n return new Timeline({ ...options, tweens: this });\n }\n\n killTweensOf(target: object | object[]): void {\n const set = new Set(Array.isArray(target) ? target : [target]);\n for (const t of this.tweens) if (t.targets.some((x) => set.has(x))) t.remove();\n }\n\n update(dt: number): void {\n const scaled = dt * this.timeScale;\n // tweens started from a callback run from the next frame on, like Phaser's\n // compacted in place: the ones added meanwhile sit past `n` and keep their order after the survivors\n const list = this.tweens;\n const n = list.length;\n let kept = 0;\n for (let i = 0; i < n; i++) {\n const t = list[i]!;\n if (stepSafely(t, scaled)) list[kept++] = t;\n }\n // a callback that cleared the manager dropped this list, and every tween on it was removed\n if (this.tweens !== list) return;\n for (let i = n; i < list.length; i++) list[kept++] = list[i]!;\n list.length = kept;\n }\n\n clear(): void {\n for (const t of this.tweens) t.remove();\n this.tweens = [];\n }\n}\n\n/** A tween whose step or callback throws is dropped, so it neither throws every frame nor leaves the list half compacted. */\nfunction stepSafely(t: { step(dt: number): boolean }, dt: number): boolean {\n try {\n return t.step(dt);\n } catch (err) {\n console.error('[tween] dropped after an error', err);\n return false;\n }\n}\n"],"names":["RESERVED","Tween","cfg","ends","t","ts","dt","delay","target","prop","to","read","duration","hold","cycle","local","repeat","finished","p","k","easeByName","write","Tweener","starts","v","range","targets","tween","item","options","Timeline","set","x","scaled","list","kept","i","stepSafely","err"],"mappings":";;;AAwBA,MAAMA,wBAAe,IAAI;AAAA,EACvB;AAAA,EAAW;AAAA,EAAY;AAAA,EAAS;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAU;AAAA,EAAQ;AAAA,EAAS;AAAA,EAAW;AAAA,EAAY;AACpG,CAAC;AAUM,MAAMC,EAAM;AAAA,EAOjB,YACmBC,GACAC,GACjB;AAFiB,SAAA,MAAAD,GACA,KAAA,OAAAC;AAEjB,UAAMC,IAAIF,EAAI;AACd,SAAK,UAAW,MAAM,QAAQE,CAAC,IAAIA,IAAI,CAACA,CAAC;AAAA,EAC3C;AAAA,EALmB;AAAA,EACA;AAAA,EARX,SAAyB;AAAA,EACzB,UAAU;AAAA,EACV,QAAQ;AAAA,EAChB,UAAU;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBD,WAAoB;AAC1B,QAAI,KAAK,IAAI,WAAW,GAAI,QAAO;AACnC,UAAMC,IAAK,KAAK;AAChB,QAAIA,EAAG,WAAW,EAAG,QAAO;AAC5B,eAAW,KAAKA,EAAI,KAAI,EAAE,cAAc,GAAM,QAAO;AACrD,WAAO;AAAA,EACT;AAAA,EAEA,SAAe;AACb,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,OAAa;AACX,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA,EAGA,KAAKC,GAAqB;AACxB,QAAI,KAAK,QAAS,QAAO;AACzB,QAAI,KAAK;AACP,kBAAK,UAAU,IACR;AAET,UAAMJ,IAAM,KAAK,KACXK,IAAQL,EAAI,SAAS;AAE3B,QADA,KAAK,WAAWI,GACZ,KAAK,UAAUC,EAAO,QAAO;AACjC,QAAI,CAAC,KAAK,QAAQ;AAChB,WAAK,SAAS,CAAA;AACd,iBAAWC,KAAU,KAAK;AACxB,mBAAW,CAACC,GAAMC,CAAE,KAAK,OAAO,QAAQ,KAAK,IAAI,EAAG,MAAK,OAAO,KAAK,EAAE,QAAAF,GAAQ,MAAAC,GAAM,MAAME,EAAKH,GAAQC,CAAI,GAAG,IAAAC,GAAI;AAErH,MAAAR,EAAI,UAAA;AAAA,IACN;AACA,UAAMU,IAAW,KAAK,IAAI,GAAGV,EAAI,YAAY,GAAI,GAC3CW,IAAOX,EAAI,OAAOA,EAAI,QAAQ,IAAI,GAClCY,IAAQZ,EAAI,OAAOU,IAAW,IAAIC,IAAOD;AAC/C,QAAIG,IAAQ,KAAK,UAAUR,IAAQ,KAAK,QAAQO;AAChD,UAAME,IAASd,EAAI,UAAU;AAC7B,QAAIe,IAAW;AACf,IAAIF,KAASD,MACPE,MAAW,MAAM,KAAK,QAAQA,KAChC,KAAK,SACLD,KAASD,MAETC,IAAQD,GACRG,IAAW;AAGf,QAAIC;AACJ,IAAKhB,EAAI,OACAa,KAASH,IAAUM,IAAIH,IAAQH,IAC/BG,KAASH,IAAWC,IAAMK,IAAI,IAClCA,IAAI,KAAKH,IAAQH,IAAWC,KAAQD,IAH1BM,IAAIH,IAAQH;AAI3B,UAAMO,IAAIC,EAAWlB,EAAI,IAAI,EAAE,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGgB,CAAC,CAAC,CAAC;AAC1D,eAAWd,KAAK,KAAK,QAAaA,EAAE,OAAO,aAAWiB,EAAMjB,EAAE,QAAQA,EAAE,MAAMA,EAAE,QAAQA,EAAE,KAAKA,EAAE,QAAQe,CAAC;AAE1G,WADAjB,EAAI,WAAA,GACAe,KACF,KAAK,UAAU,IACff,EAAI,aAAA,GACG,MAEF;AAAA,EACT;AACF;AAaO,MAAMoB,EAAQ;AAAA;AAAA,EAEnB,YAAY;AAAA,EACJ,SAAsB,CAAA;AAAA,EAE9B,IAAIpB,GAAyB;AAC3B,UAAMC,IAA+B,EAAE,GAAID,EAAI,SAAS,CAAA,EAAC,GACnDqB,IAAiC,CAAA;AACvC,eAAW,CAACJ,GAAGK,CAAC,KAAK,OAAO,QAAQtB,CAAG;AACrC,UAAI,CAAAF,EAAS,IAAImB,CAAC;AAClB,YAAI,OAAOK,KAAM,SAAU,CAAArB,EAAKgB,CAAC,IAAIK;AAAA,iBAC5BA,KAAK,OAAOA,KAAM,YAAY,QAAQA,GAAG;AAChD,gBAAMC,IAAQD;AACd,UAAArB,EAAKgB,CAAC,IAAIM,EAAM,IACZA,EAAM,SAAS,WAAWF,EAAOJ,CAAC,IAAIM,EAAM;AAAA,QAClD;AAAA;AAGF,UAAMC,IAAW,MAAM,QAAQxB,EAAI,OAAO,IAAIA,EAAI,UAAU,CAACA,EAAI,OAAO;AACxE,eAAWE,KAAKsB,EAAS,YAAW,CAACP,GAAGK,CAAC,KAAK,OAAO,QAAQD,CAAM,EAAG,CAAAnB,EAAEe,CAAC,IAAIK;AAC7E,UAAMG,IAAQ,IAAI1B,EAAMC,GAAKC,CAAI;AACjC,gBAAK,OAAO,KAAKwB,CAAK,GACfA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAyBC,GAAY;AACnC,gBAAK,OAAO,KAAKA,CAAI,GACdA;AAAA,EACT;AAAA;AAAA,EAGA,SAASC,IAA2C,IAAc;AAChE,WAAO,IAAIC,EAAS,EAAE,GAAGD,GAAS,QAAQ,MAAM;AAAA,EAClD;AAAA,EAEA,aAAarB,GAAiC;AAC5C,UAAMuB,IAAM,IAAI,IAAI,MAAM,QAAQvB,CAAM,IAAIA,IAAS,CAACA,CAAM,CAAC;AAC7D,eAAWJ,KAAK,KAAK,OAAQ,CAAIA,EAAE,QAAQ,KAAK,CAAC4B,MAAMD,EAAI,IAAIC,CAAC,CAAC,OAAK,OAAA;AAAA,EACxE;AAAA,EAEA,OAAO1B,GAAkB;AACvB,UAAM2B,IAAS3B,IAAK,KAAK,WAGnB4B,IAAO,KAAK,QACZ,IAAIA,EAAK;AACf,QAAIC,IAAO;AACX,aAASC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,YAAMhC,IAAI8B,EAAKE,CAAC;AAChB,MAAIC,EAAWjC,GAAG6B,CAAM,MAAGC,EAAKC,GAAM,IAAI/B;AAAA,IAC5C;AAEA,QAAI,KAAK,WAAW8B,GACpB;AAAA,eAASE,IAAI,GAAGA,IAAIF,EAAK,QAAQE,IAAK,CAAAF,EAAKC,GAAM,IAAID,EAAKE,CAAC;AAC3D,MAAAF,EAAK,SAASC;AAAA;AAAA,EAChB;AAAA,EAEA,QAAc;AACZ,eAAW/B,KAAK,KAAK,OAAQ,CAAAA,EAAE,OAAA;AAC/B,SAAK,SAAS,CAAA;AAAA,EAChB;AACF;AAGA,SAASiC,EAAWjC,GAAkCE,GAAqB;AACzE,MAAI;AACF,WAAOF,EAAE,KAAKE,CAAE;AAAA,EAClB,SAASgC,GAAK;AACZ,mBAAQ,MAAM,kCAAkCA,CAAG,GAC5C;AAAA,EACT;AACF;"}
@@ -0,0 +1,38 @@
1
+ import { ATLAS_PAGE_FULL as x, planAtlas as u } from "./atlasPlan.js";
2
+ class H {
3
+ items = [];
4
+ add(n, s) {
5
+ this.items.push({ name: n, canvas: s });
6
+ }
7
+ addSheet(n, s, r, c) {
8
+ this.items.push({ name: n, canvas: s, frameWidth: r, frameHeight: c });
9
+ }
10
+ build(n, s, r = x) {
11
+ const c = this.items, d = u(c.map((a) => ({ w: a.canvas.width, h: a.canvas.height })), r), g = d.pages.map((a, t) => {
12
+ const e = document.createElement("canvas");
13
+ return e.width = a.width, e.height = a.height, { canvas: e, ctx: e.getContext("2d", { willReadFrequently: !0 }), key: t === 0 ? s : `${s}~${t}` };
14
+ });
15
+ c.forEach((a, t) => {
16
+ const e = d.places[t];
17
+ g[e.page].ctx.drawImage(a.canvas, e.x, e.y);
18
+ });
19
+ const i = n.addCanvas(s, g[0].canvas), p = g.map((a, t) => t === 0 ? i : n.addCanvas(a.key, a.canvas));
20
+ c.forEach((a, t) => {
21
+ const e = d.places[t], f = p[e.page], l = (o, m, h, $, w) => {
22
+ f.add(o, 0, m, h, $, w), e.page > 0 && i.adopt(o, f);
23
+ };
24
+ if (a.frameWidth && a.frameHeight) {
25
+ const o = Math.floor(a.canvas.width / a.frameWidth), m = Math.max(1, Math.floor(a.canvas.height / a.frameHeight));
26
+ for (let h = 0; h < o * m; h++)
27
+ l(`${a.name}#${h}`, e.x + h % o * a.frameWidth, e.y + Math.floor(h / o) * a.frameHeight, a.frameWidth, a.frameHeight);
28
+ } else
29
+ l(a.name, e.x, e.y, a.canvas.width, a.canvas.height);
30
+ });
31
+ const v = d.pages.map((a) => `${a.width}x${a.height}`).join(" + ");
32
+ console.info(`[atlas] ${s}: ${c.length} images packed into ${v}${d.pages.length > 1 ? ` (pages of ${r})` : ""}`);
33
+ }
34
+ }
35
+ export {
36
+ H as AtlasBuilder
37
+ };
38
+ //# sourceMappingURL=atlas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atlas.js","sources":["../../src/core/atlas.ts"],"sourcesContent":["import type { TextureRegistry } from './TextureRegistry';\nimport { ATLAS_PAGE_FULL, planAtlas } from './atlasPlan';\n\ninterface AtlasItem {\n name: string;\n canvas: HTMLCanvasElement;\n frameWidth?: number;\n frameHeight?: number;\n}\n\n/**\n * Packs many small procedurally painted canvases into as few textures as the GPU allows, so Pixi can batch every\n * sprite of the world into very few draw calls. One page on every desktop (up to 8192 square); a device whose GPU\n * takes less gets pages of `limit` (`atlasPageLimit`, `planAtlas`). Every frame is registered under the one `key`\n * whichever page holds it — the pages after the first are textures of their own (`key~1`, `key~2`…) whose frames\n * the first page's texture adopts — so the world keeps asking for `atlas` and a frame name, and never knows.\n * Frame names: `name` for single images, `name#i` for sheet frames.\n */\nexport class AtlasBuilder {\n private items: AtlasItem[] = [];\n\n add(name: string, canvas: HTMLCanvasElement): void {\n this.items.push({ name, canvas });\n }\n\n addSheet(name: string, canvas: HTMLCanvasElement, frameWidth: number, frameHeight: number): void {\n this.items.push({ name, canvas, frameWidth, frameHeight });\n }\n\n build(textures: TextureRegistry, key: string, limit = ATLAS_PAGE_FULL): void {\n const items = this.items;\n const plan = planAtlas(items.map((it) => ({ w: it.canvas.width, h: it.canvas.height })), limit);\n const pages = plan.pages.map((p, i) => {\n const canvas = document.createElement('canvas');\n canvas.width = p.width;\n canvas.height = p.height;\n // kept on the CPU (`willReadFrequently`): the atlas is drawn once, then read many times — the sway rigs' trunks,\n // a death's evaporating pixels, a hit's white silhouette — and on a GPU canvas the first read pulled the whole\n // page back, 300 ms on entering a new map (profiled)\n return { canvas, ctx: canvas.getContext('2d', { willReadFrequently: true })!, key: i === 0 ? key : `${key}~${i}` };\n });\n items.forEach((it, i) => {\n const at = plan.places[i]!;\n pages[at.page]!.ctx.drawImage(it.canvas, at.x, at.y);\n });\n const first = textures.addCanvas(key, pages[0]!.canvas);\n const texOf = pages.map((p, i) => (i === 0 ? first : textures.addCanvas(p.key, p.canvas)));\n items.forEach((it, i) => {\n const at = plan.places[i]!;\n const page = texOf[at.page]!;\n // a frame on a later page is also registered on the first, so `atlas` + its name finds it\n const add = (name: string, x: number, y: number, w: number, h: number) => {\n page.add(name, 0, x, y, w, h);\n if (at.page > 0) first.adopt(name, page);\n };\n if (it.frameWidth && it.frameHeight) {\n // a sheet may wrap into rows (`makeSheet`'s `maxWidth`, a very large creature's); frames are read row by row\n const cols = Math.floor(it.canvas.width / it.frameWidth);\n const rows = Math.max(1, Math.floor(it.canvas.height / it.frameHeight));\n for (let f = 0; f < cols * rows; f++)\n add(`${it.name}#${f}`, at.x + (f % cols) * it.frameWidth, at.y + Math.floor(f / cols) * it.frameHeight, it.frameWidth, it.frameHeight);\n } else {\n add(it.name, at.x, at.y, it.canvas.width, it.canvas.height);\n }\n });\n const sizes = plan.pages.map((p) => `${p.width}x${p.height}`).join(' + ');\n console.info(`[atlas] ${key}: ${items.length} images packed into ${sizes}${plan.pages.length > 1 ? ` (pages of ${limit})` : ''}`);\n }\n}\n"],"names":["AtlasBuilder","name","canvas","frameWidth","frameHeight","textures","key","limit","ATLAS_PAGE_FULL","items","plan","planAtlas","it","pages","p","i","at","first","texOf","page","add","x","y","w","h","cols","rows","f","sizes"],"mappings":";AAkBO,MAAMA,EAAa;AAAA,EAChB,QAAqB,CAAA;AAAA,EAE7B,IAAIC,GAAcC,GAAiC;AACjD,SAAK,MAAM,KAAK,EAAE,MAAAD,GAAM,QAAAC,GAAQ;AAAA,EAClC;AAAA,EAEA,SAASD,GAAcC,GAA2BC,GAAoBC,GAA2B;AAC/F,SAAK,MAAM,KAAK,EAAE,MAAAH,GAAM,QAAAC,GAAQ,YAAAC,GAAY,aAAAC,GAAa;AAAA,EAC3D;AAAA,EAEA,MAAMC,GAA2BC,GAAaC,IAAQC,GAAuB;AAC3E,UAAMC,IAAQ,KAAK,OACbC,IAAOC,EAAUF,EAAM,IAAI,CAACG,OAAQ,EAAE,GAAGA,EAAG,OAAO,OAAO,GAAGA,EAAG,OAAO,OAAA,EAAS,GAAGL,CAAK,GACxFM,IAAQH,EAAK,MAAM,IAAI,CAACI,GAAGC,MAAM;AACrC,YAAMb,IAAS,SAAS,cAAc,QAAQ;AAC9C,aAAAA,EAAO,QAAQY,EAAE,OACjBZ,EAAO,SAASY,EAAE,QAIX,EAAE,QAAAZ,GAAQ,KAAKA,EAAO,WAAW,MAAM,EAAE,oBAAoB,GAAA,CAAM,GAAI,KAAKa,MAAM,IAAIT,IAAM,GAAGA,CAAG,IAAIS,CAAC,GAAA;AAAA,IAChH,CAAC;AACD,IAAAN,EAAM,QAAQ,CAACG,GAAIG,MAAM;AACvB,YAAMC,IAAKN,EAAK,OAAOK,CAAC;AACxB,MAAAF,EAAMG,EAAG,IAAI,EAAG,IAAI,UAAUJ,EAAG,QAAQI,EAAG,GAAGA,EAAG,CAAC;AAAA,IACrD,CAAC;AACD,UAAMC,IAAQZ,EAAS,UAAUC,GAAKO,EAAM,CAAC,EAAG,MAAM,GAChDK,IAAQL,EAAM,IAAI,CAACC,GAAGC,MAAOA,MAAM,IAAIE,IAAQZ,EAAS,UAAUS,EAAE,KAAKA,EAAE,MAAM,CAAE;AACzF,IAAAL,EAAM,QAAQ,CAACG,GAAIG,MAAM;AACvB,YAAMC,IAAKN,EAAK,OAAOK,CAAC,GAClBI,IAAOD,EAAMF,EAAG,IAAI,GAEpBI,IAAM,CAACnB,GAAcoB,GAAWC,GAAWC,GAAWC,MAAc;AACxE,QAAAL,EAAK,IAAIlB,GAAM,GAAGoB,GAAGC,GAAGC,GAAGC,CAAC,GACxBR,EAAG,OAAO,KAAGC,EAAM,MAAMhB,GAAMkB,CAAI;AAAA,MACzC;AACA,UAAIP,EAAG,cAAcA,EAAG,aAAa;AAEnC,cAAMa,IAAO,KAAK,MAAMb,EAAG,OAAO,QAAQA,EAAG,UAAU,GACjDc,IAAO,KAAK,IAAI,GAAG,KAAK,MAAMd,EAAG,OAAO,SAASA,EAAG,WAAW,CAAC;AACtE,iBAASe,IAAI,GAAGA,IAAIF,IAAOC,GAAMC;AAC/B,UAAAP,EAAI,GAAGR,EAAG,IAAI,IAAIe,CAAC,IAAIX,EAAG,IAAKW,IAAIF,IAAQb,EAAG,YAAYI,EAAG,IAAI,KAAK,MAAMW,IAAIF,CAAI,IAAIb,EAAG,aAAaA,EAAG,YAAYA,EAAG,WAAW;AAAA,MACzI;AACE,QAAAQ,EAAIR,EAAG,MAAMI,EAAG,GAAGA,EAAG,GAAGJ,EAAG,OAAO,OAAOA,EAAG,OAAO,MAAM;AAAA,IAE9D,CAAC;AACD,UAAMgB,IAAQlB,EAAK,MAAM,IAAI,CAACI,MAAM,GAAGA,EAAE,KAAK,IAAIA,EAAE,MAAM,EAAE,EAAE,KAAK,KAAK;AACxE,YAAQ,KAAK,WAAWR,CAAG,KAAKG,EAAM,MAAM,uBAAuBmB,CAAK,GAAGlB,EAAK,MAAM,SAAS,IAAI,cAAcH,CAAK,MAAM,EAAE,EAAE;AAAA,EAClI;AACF;"}
@@ -0,0 +1,22 @@
1
+ const g = 2;
2
+ const p = 8192;
3
+ function w(t) {
4
+ return t === null || t >= 8192 ? 8192 : Math.min(4096, 2 ** Math.floor(Math.log2(Math.max(1, t))));
5
+ }
6
+ function D(t, _) {
7
+ const e = t.map((a, A) => A).sort((a, A) => t[A].h - t[a].h), P = t.reduce((a, A) => a + (A.w + 2) * (A.h + 2), 0), f = Math.max(1, ...t.map((a) => a.w + 2)), c = Math.min(_, Math.max(1024, 2 ** Math.ceil(Math.log2(Math.max(f, Math.sqrt(P)))))), l = new Array(t.length), M = [];
8
+ let r = 0, n = 0, h = 0, o = 0, L = c;
9
+ const S = () => M.push({ width: L, height: h + o });
10
+ for (const a of e) {
11
+ const A = t[a].w + 2, T = t[a].h + 2;
12
+ n > 0 && n + A > L && (n = 0, h += o, o = 0), h > 0 && h + T > _ && (S(), r++, n = 0, h = 0, o = 0, L = c), A > L && (L = A), l[a] = { page: r, x: n, y: h }, n += A, o = Math.max(o, T);
13
+ }
14
+ return t.length > 0 && S(), { pages: M, places: l };
15
+ }
16
+ export {
17
+ g as ATLAS_PAD,
18
+ p as ATLAS_PAGE_FULL,
19
+ w as atlasPageLimit,
20
+ D as planAtlas
21
+ };
22
+ //# sourceMappingURL=atlasPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atlasPlan.js","sources":["../../src/core/atlasPlan.ts"],"sourcesContent":["/*\n * Where every image goes in the world atlas, kept pure (no canvas) so the packing decision is unit-tested. The\n * builder (`atlas.ts`) paints what this plans.\n */\n\nexport const ATLAS_PAD = 2;\nconst MIN_ATLAS_WIDTH = 1024;\n/** The page side every desktop GPU takes, and the one the atlas was built to before pages existed. */\nexport const ATLAS_PAGE_FULL = 8192;\n/** The page side on a GPU that reports less than `ATLAS_PAGE_FULL` (older iPhones and iPads: 4096). */\nconst ATLAS_PAGE_SMALL = 4096;\n\n/**\n * How big an atlas page may be on this device: 8192 wherever the GPU takes it (every desktop — unchanged), else\n * split at 4096, or at the largest power of two the GPU does take if that is smaller still. Unknown: 8192, as before.\n */\nexport function atlasPageLimit(maxTextureSize: number | null): number {\n if (maxTextureSize === null || maxTextureSize >= ATLAS_PAGE_FULL) return ATLAS_PAGE_FULL;\n return Math.min(ATLAS_PAGE_SMALL, 2 ** Math.floor(Math.log2(Math.max(1, maxTextureSize))));\n}\n\nexport interface AtlasSize {\n w: number;\n h: number;\n}\n\nexport interface AtlasPage {\n width: number;\n height: number;\n}\n\nexport interface AtlasPlan {\n pages: AtlasPage[];\n /** One per input, in input order: the page and the top-left corner. */\n places: { page: number; x: number; y: number }[];\n}\n\n/**\n * Shelf-packs the images, tallest first, into pages no larger than `limit` on either side. The page width is the\n * power of two that fits the widest image and the square root of the total area (at least 1024), capped at `limit`;\n * a shelf that would run past `limit` starts a new page. With everything fitting under `limit` this is exactly the\n * single page the atlas always was. An image larger than `limit` itself is given a page of its own (the GPU will\n * refuse it, but nothing else is lost with it).\n */\nexport function planAtlas(sizes: readonly AtlasSize[], limit: number): AtlasPlan {\n const order = sizes.map((_, i) => i).sort((a, b) => sizes[b]!.h - sizes[a]!.h);\n const area = sizes.reduce((sum, s) => sum + (s.w + ATLAS_PAD) * (s.h + ATLAS_PAD), 0);\n const widest = Math.max(1, ...sizes.map((s) => s.w + ATLAS_PAD));\n const width = Math.min(limit, Math.max(MIN_ATLAS_WIDTH, 2 ** Math.ceil(Math.log2(Math.max(widest, Math.sqrt(area))))));\n const places: AtlasPlan['places'] = new Array(sizes.length);\n const pages: AtlasPage[] = [];\n let page = 0;\n let x = 0;\n let y = 0;\n let shelf = 0;\n let pageWidth = width;\n const close = () => pages.push({ width: pageWidth, height: y + shelf });\n for (const i of order) {\n const w = sizes[i]!.w + ATLAS_PAD;\n const h = sizes[i]!.h + ATLAS_PAD;\n if (x > 0 && x + w > pageWidth) {\n x = 0;\n y += shelf;\n shelf = 0;\n }\n if (y > 0 && y + h > limit) {\n close();\n page++;\n x = 0;\n y = 0;\n shelf = 0;\n pageWidth = width;\n }\n // an image wider than the page (only past `limit`) widens its own page rather than overlapping the edge\n if (w > pageWidth) pageWidth = w;\n places[i] = { page, x, y };\n x += w;\n shelf = Math.max(shelf, h);\n }\n if (sizes.length > 0) close();\n return { pages, places };\n}\n"],"names":["ATLAS_PAD","ATLAS_PAGE_FULL","atlasPageLimit","maxTextureSize","planAtlas","sizes","limit","order","_","i","b","area","sum","s","widest","width","places","pages","page","x","y","shelf","pageWidth","close","w","h"],"mappings":"AAKO,MAAMA,IAAY;AAGlB,MAAMC,IAAkB;AAQxB,SAASC,EAAeC,GAAuC;AACpE,SAAIA,MAAmB,QAAQA,KAAkB,OAAwB,OAClE,KAAK,IAAI,MAAkB,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,IAAI,GAAGA,CAAc,CAAC,CAAC,CAAC;AAC3F;AAyBO,SAASC,EAAUC,GAA6BC,GAA0B;AAC/E,QAAMC,IAAQF,EAAM,IAAI,CAACG,GAAGC,MAAMA,CAAC,EAAE,KAAK,CAAC,GAAGC,MAAML,EAAMK,CAAC,EAAG,IAAIL,EAAM,CAAC,EAAG,CAAC,GACvEM,IAAON,EAAM,OAAO,CAACO,GAAKC,MAAMD,KAAOC,EAAE,IAAI,MAAcA,EAAE,IAAI,IAAY,CAAC,GAC9EC,IAAS,KAAK,IAAI,GAAG,GAAGT,EAAM,IAAI,CAACQ,MAAMA,EAAE,IAAI,CAAS,CAAC,GACzDE,IAAQ,KAAK,IAAIT,GAAO,KAAK,IAAI,MAAiB,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAIQ,GAAQ,KAAK,KAAKH,CAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/GK,IAA8B,IAAI,MAAMX,EAAM,MAAM,GACpDY,IAAqB,CAAA;AAC3B,MAAIC,IAAO,GACPC,IAAI,GACJC,IAAI,GACJC,IAAQ,GACRC,IAAYP;AAChB,QAAMQ,IAAQ,MAAMN,EAAM,KAAK,EAAE,OAAOK,GAAW,QAAQF,IAAIC,GAAO;AACtE,aAAWZ,KAAKF,GAAO;AACrB,UAAMiB,IAAInB,EAAMI,CAAC,EAAG,IAAI,GAClBgB,IAAIpB,EAAMI,CAAC,EAAG,IAAI;AACxB,IAAIU,IAAI,KAAKA,IAAIK,IAAIF,MACnBH,IAAI,GACJC,KAAKC,GACLA,IAAQ,IAEND,IAAI,KAAKA,IAAIK,IAAInB,MACnBiB,EAAA,GACAL,KACAC,IAAI,GACJC,IAAI,GACJC,IAAQ,GACRC,IAAYP,IAGVS,IAAIF,MAAWA,IAAYE,IAC/BR,EAAOP,CAAC,IAAI,EAAE,MAAAS,GAAM,GAAAC,GAAG,GAAAC,EAAA,GACvBD,KAAKK,GACLH,IAAQ,KAAK,IAAIA,GAAOI,CAAC;AAAA,EAC3B;AACA,SAAIpB,EAAM,SAAS,KAAGkB,EAAA,GACf,EAAE,OAAAN,GAAO,QAAAD,EAAA;AAClB;"}
@@ -0,0 +1,21 @@
1
+ const a = (n) => n, e = {
2
+ Linear: a,
3
+ "Quad.In": (n) => n * n,
4
+ "Quad.Out": (n) => n * (2 - n),
5
+ "Cubic.Out": (n) => 1 - Math.pow(1 - n, 3),
6
+ "Sine.In": (n) => 1 - Math.cos(n * Math.PI / 2),
7
+ "Sine.InOut": (n) => -(Math.cos(Math.PI * n) - 1) / 2,
8
+ "Back.Out": (n) => {
9
+ const u = n - 1;
10
+ return u * u * (2.70158 * u + 1.70158) + 1;
11
+ }
12
+ };
13
+ function o(n) {
14
+ if (!n) return e["Quad.Out"];
15
+ const t = e[n];
16
+ return t || console.warn(`[tween] unknown ease ${n}`), t ?? a;
17
+ }
18
+ export {
19
+ o as easeByName
20
+ };
21
+ //# sourceMappingURL=eases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eases.js","sources":["../../src/core/eases.ts"],"sourcesContent":["export type EaseFn = (t: number) => number;\n\nconst linear: EaseFn = (t) => t;\n\n/** Easing functions by the names tween configs use ('Cubic.Out', 'Back.Out', ...). */\nconst EASES: Record<string, EaseFn> = {\n Linear: linear,\n 'Quad.In': (t) => t * t,\n 'Quad.Out': (t) => t * (2 - t),\n 'Cubic.Out': (t) => 1 - Math.pow(1 - t, 3),\n 'Sine.In': (t) => 1 - Math.cos((t * Math.PI) / 2),\n 'Sine.InOut': (t) => -(Math.cos(Math.PI * t) - 1) / 2,\n 'Back.Out': (t) => {\n const s = 1.70158;\n const u = t - 1;\n return u * u * ((s + 1) * u + s) + 1;\n },\n};\n\nexport function easeByName(name: string | undefined): EaseFn {\n if (!name) return EASES['Quad.Out']!; // Phaser's default tween ease is Power1 = Quad.Out\n const fn = EASES[name];\n if (!fn) console.warn(`[tween] unknown ease ${name}`);\n return fn ?? linear;\n}\n"],"names":["linear","t","EASES","easeByName","name","fn"],"mappings":"AAEA,MAAMA,IAAiB,CAACC,MAAMA,GAGxBC,IAAgC;AAAA,EACpC,QAAQF;AAAA,EACR,WAAW,CAACC,MAAMA,IAAIA;AAAA,EACtB,YAAY,CAACA,MAAMA,KAAK,IAAIA;AAAA,EAC5B,aAAa,CAACA,MAAM,IAAI,KAAK,IAAI,IAAIA,GAAG,CAAC;AAAA,EACzC,WAAW,CAACA,MAAM,IAAI,KAAK,IAAKA,IAAI,KAAK,KAAM,CAAC;AAAA,EAChD,cAAc,CAACA,MAAM,EAAE,KAAK,IAAI,KAAK,KAAKA,CAAC,IAAI,KAAK;AAAA,EACpD,YAAY,CAACA,MAAM;AAEjB,UAAM,IAAIA,IAAI;AACd,WAAO,IAAI,KAAM,UAAS,IAAI,WAAK;AAAA,EACrC;AACF;AAEO,SAASE,EAAWC,GAAkC;AAC3D,MAAI,CAACA,EAAM,QAAOF,EAAM,UAAU;AAClC,QAAMG,IAAKH,EAAME,CAAI;AACrB,SAAKC,KAAI,QAAQ,KAAK,wBAAwBD,CAAI,EAAE,GAC7CC,KAAML;AACf;"}
@@ -0,0 +1,115 @@
1
+ import { ColorMatrixFilter as n } from "pixi.js";
2
+ const e = /* @__PURE__ */ new Map();
3
+ function a(i) {
4
+ let t = e.get(i);
5
+ if (t) return t;
6
+ const s = new n();
7
+ s.antialias = "off";
8
+ const l = (i >> 16 & 255) / 255, r = (i >> 8 & 255) / 255, h = (i & 255) / 255;
9
+ return s.matrix = [0, 0, 0, 0, l, 0, 0, 0, 0, r, 0, 0, 0, 0, h, 0, 0, 0, 1, 0], e.set(i, t = [s]), t;
10
+ }
11
+ function u(i) {
12
+ return class extends i {
13
+ scene;
14
+ sx = 1;
15
+ sy = 1;
16
+ fx = !1;
17
+ fy = !1;
18
+ /** The colour this object is filled with (`setTintFill`), or null. */
19
+ solidFillColor = null;
20
+ /** False once destroyed. */
21
+ get active() {
22
+ return !this.destroyed;
23
+ }
24
+ get depth() {
25
+ return this.zIndex;
26
+ }
27
+ set depth(t) {
28
+ this.zIndex = t;
29
+ }
30
+ get scaleX() {
31
+ return this.sx;
32
+ }
33
+ set scaleX(t) {
34
+ this.sx = t, this.applyScale();
35
+ }
36
+ get scaleY() {
37
+ return this.sy;
38
+ }
39
+ set scaleY(t) {
40
+ this.sy = t, this.applyScale();
41
+ }
42
+ get flipX() {
43
+ return this.fx;
44
+ }
45
+ set flipX(t) {
46
+ this.fx = t, this.applyScale();
47
+ }
48
+ get flipY() {
49
+ return this.fy;
50
+ }
51
+ set flipY(t) {
52
+ this.fy = t, this.applyScale();
53
+ }
54
+ applyScale() {
55
+ this.destroyed || this.scale.set(this.sx * (this.fx ? -1 : 1), this.sy * (this.fy ? -1 : 1));
56
+ }
57
+ setScale(t, s = t) {
58
+ return this.sx = t, this.sy = s, this.applyScale(), this;
59
+ }
60
+ setFlipX(t) {
61
+ return this.flipX = t, this;
62
+ }
63
+ setFlipY(t) {
64
+ return this.flipY = t, this;
65
+ }
66
+ setFlip(t, s) {
67
+ return this.fx = t, this.fy = s, this.applyScale(), this;
68
+ }
69
+ setDepth(t) {
70
+ return this.zIndex = t, this;
71
+ }
72
+ setAlpha(t = 1) {
73
+ return this.alpha = t, this;
74
+ }
75
+ setVisible(t) {
76
+ return this.visible = t, this;
77
+ }
78
+ setPosition(t = 0, s = t) {
79
+ return this.position.set(t, s), this;
80
+ }
81
+ setRotation(t = 0) {
82
+ return this.rotation = t, this;
83
+ }
84
+ setAngle(t = 0) {
85
+ return this.angle = t, this;
86
+ }
87
+ setBlendMode(t) {
88
+ return this.blendMode = t, this;
89
+ }
90
+ setTint(t = 16777215) {
91
+ return this.clearFill(), this.tint = t, this;
92
+ }
93
+ /** Paints every opaque pixel in one solid colour (hit flash, silhouettes). */
94
+ setTintFill(t) {
95
+ return this.tint = 16777215, this.solidFillColor === t ? this : (this.solidFillColor = t, this.filters = a(t), this);
96
+ }
97
+ clearTint() {
98
+ return this.clearFill(), this.tint = 16777215, this;
99
+ }
100
+ clearFill() {
101
+ this.solidFillColor !== null && (this.filters = null, this.solidFillColor = null);
102
+ }
103
+ /** 0 pins the object to the screen instead of the world (full-screen flashes). */
104
+ setScrollFactor(t) {
105
+ return t === 0 && this.scene.screen.addChild(this), this;
106
+ }
107
+ destroy() {
108
+ this.destroyed || (this.solidFillColor !== null && (this.filters = null), this.solidFillColor = null, super.destroy({ children: !0, context: !0 }));
109
+ }
110
+ };
111
+ }
112
+ export {
113
+ u as GameObject
114
+ };
115
+ //# sourceMappingURL=gameObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gameObject.js","sources":["../../src/core/gameObject.ts"],"sourcesContent":["import { ColorMatrixFilter, type BLEND_MODES, type Container } from 'pixi.js';\nimport type { Stage } from './Stage';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Ctor<T> = new (...args: any[]) => T;\n\n/**\n * One solid-fill filter list per colour, shared by every object filled with it (a hit flash, a silhouette): a filter\n * made and destroyed on every hit of every body was garbage and shader state a blow. Kept for good —\n * a handful of colours are ever used.\n */\nconst FILLS = new Map<number, ColorMatrixFilter[]>();\n\nfunction fillFilters(color: number): ColorMatrixFilter[] {\n let list = FILLS.get(color);\n if (list) return list;\n const f = new ColorMatrixFilter();\n f.antialias = 'off';\n const r = ((color >> 16) & 0xff) / 255;\n const g = ((color >> 8) & 0xff) / 255;\n const b = (color & 0xff) / 255;\n f.matrix = [0, 0, 0, 0, r, 0, 0, 0, 0, g, 0, 0, 0, 0, b, 0, 0, 0, 1, 0];\n FILLS.set(color, (list = [f]));\n return list;\n}\n\n/** What `GameObject` adds to a Pixi display object. */\nexport interface GameObjectMembers {\n scene: Stage;\n /** False once destroyed. */\n readonly active: boolean;\n /** The draw order in the world layer (`zIndex`): bigger is in front. */\n depth: number;\n /** Scale without the flip: stays positive on a mirrored sprite. */\n scaleX: number;\n scaleY: number;\n flipX: boolean;\n flipY: boolean;\n setScale(x: number, y?: number): this;\n setFlipX(v: boolean): this;\n setFlipY(v: boolean): this;\n setFlip(x: boolean, y: boolean): this;\n setDepth(d: number): this;\n setAlpha(a?: number): this;\n setVisible(v: boolean): this;\n setPosition(x?: number, y?: number): this;\n setRotation(r?: number): this;\n setAngle(a?: number): this;\n setBlendMode(mode: BLEND_MODES): this;\n setTint(color?: number): this;\n /** Paints every opaque pixel in one solid colour (hit flash, silhouettes). */\n setTintFill(color: number): this;\n clearTint(): this;\n /** 0 pins the object to the screen instead of the world. */\n setScrollFactor(f: number): this;\n destroy(): void;\n}\n\n/**\n * The chainable setters the world code was written against (setDepth, setAlpha, setTintFill...), added onto a Pixi\n * display object. Scale is kept apart from flipping, so `scaleX` stays positive on a mirrored sprite as it did\n * before, and a tween on scale cannot undo a flip.\n */\nexport function GameObject<TBase extends Ctor<Container>>(Base: TBase): TBase & Ctor<GameObjectMembers> {\n return class extends Base {\n scene!: Stage;\n private sx = 1;\n private sy = 1;\n private fx = false;\n private fy = false;\n /** The colour this object is filled with (`setTintFill`), or null. */\n private solidFillColor: number | null = null;\n\n /** False once destroyed. */\n get active(): boolean {\n return !this.destroyed;\n }\n\n get depth(): number {\n return this.zIndex;\n }\n\n set depth(d: number) {\n this.zIndex = d;\n }\n\n get scaleX(): number {\n return this.sx;\n }\n\n set scaleX(v: number) {\n this.sx = v;\n this.applyScale();\n }\n\n get scaleY(): number {\n return this.sy;\n }\n\n set scaleY(v: number) {\n this.sy = v;\n this.applyScale();\n }\n\n get flipX(): boolean {\n return this.fx;\n }\n\n set flipX(v: boolean) {\n this.fx = v;\n this.applyScale();\n }\n\n get flipY(): boolean {\n return this.fy;\n }\n\n set flipY(v: boolean) {\n this.fy = v;\n this.applyScale();\n }\n\n private applyScale(): void {\n if (!this.destroyed) this.scale.set(this.sx * (this.fx ? -1 : 1), this.sy * (this.fy ? -1 : 1));\n }\n\n setScale(x: number, y = x): this {\n this.sx = x;\n this.sy = y;\n this.applyScale();\n return this;\n }\n\n setFlipX(v: boolean): this {\n this.flipX = v;\n return this;\n }\n\n setFlipY(v: boolean): this {\n this.flipY = v;\n return this;\n }\n\n setFlip(x: boolean, y: boolean): this {\n this.fx = x;\n this.fy = y;\n this.applyScale();\n return this;\n }\n\n setDepth(d: number): this {\n this.zIndex = d;\n return this;\n }\n\n setAlpha(a = 1): this {\n this.alpha = a;\n return this;\n }\n\n setVisible(v: boolean): this {\n this.visible = v;\n return this;\n }\n\n setPosition(x = 0, y = x): this {\n this.position.set(x, y);\n return this;\n }\n\n setRotation(r = 0): this {\n this.rotation = r;\n return this;\n }\n\n setAngle(a = 0): this {\n this.angle = a;\n return this;\n }\n\n setBlendMode(mode: BLEND_MODES): this {\n this.blendMode = mode;\n return this;\n }\n\n setTint(color = 0xffffff): this {\n this.clearFill();\n this.tint = color;\n return this;\n }\n\n /** Paints every opaque pixel in one solid colour (hit flash, silhouettes). */\n setTintFill(color: number): this {\n this.tint = 0xffffff;\n if (this.solidFillColor === color) return this;\n this.solidFillColor = color;\n this.filters = fillFilters(color);\n return this;\n }\n\n clearTint(): this {\n this.clearFill();\n this.tint = 0xffffff;\n return this;\n }\n\n private clearFill(): void {\n if (this.solidFillColor === null) return;\n this.filters = null;\n this.solidFillColor = null;\n }\n\n /** 0 pins the object to the screen instead of the world (full-screen flashes). */\n setScrollFactor(f: number): this {\n if (f === 0) this.scene.screen.addChild(this);\n return this;\n }\n\n override destroy(): void {\n if (this.destroyed) return;\n // the fill filters are shared (`FILLS`): let go of them, never destroy them\n if (this.solidFillColor !== null) this.filters = null;\n this.solidFillColor = null;\n // `context`: a Pixi Graphics destroyed with options keeps its GraphicsContext — and that context's GPU buffers —\n // until Pixi's own GC sweeps it a minute or more later. Every effect layer is a Graphics, so a crowded fight left\n // hundreds a second on the GPU, and a phone that ran out dropped the WebGL context (the world rebuilt, seconds\n // frozen, the socket timed out).\n super.destroy({ children: true, context: true });\n }\n };\n}\n"],"names":["FILLS","fillFilters","color","list","f","ColorMatrixFilter","r","g","b","GameObject","Base","d","v","x","y","a","mode"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { BatchTextureArray as n } from "pixi.js";
2
+ let i = !1;
3
+ function l() {
4
+ if (i) return !0;
5
+ const e = n.prototype, r = new n();
6
+ return !(typeof e.clear == "function" && typeof r.ids == "object" && Array.isArray(r.textures) && typeof r.count == "number") || !/ids\[[^\]]+\]\s*=\s*null/.test(String(e.clear)) ? !1 : (e.clear = function() {
7
+ const c = this.ids, o = this.textures;
8
+ for (let t = 0; t < this.count; t++) {
9
+ const s = o[t];
10
+ o[t] = null, s && delete c[s.uid];
11
+ }
12
+ this.count = 0;
13
+ }, i = !0, !0);
14
+ }
15
+ export {
16
+ l as patchPixi
17
+ };
18
+ //# sourceMappingURL=pixiPatches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixiPatches.js","sources":["../../src/core/pixiPatches.ts"],"sourcesContent":["import { BatchTextureArray } from 'pixi.js';\n\nlet patched = false;\n\n/**\n * Pixi 8's `BatchTextureArray.clear` sets `ids[source.uid] = null` instead of deleting the key, and its batches are\n * pooled, so every pooled batch keeps one key for every texture source ever drawn through it — about 70% of what a\n * fight's heap grew by in an hour (Pixi 8.21.0). The replacement deletes the key, which reads the\n * same to Pixi (`checkAndUpdateTexture` treats null and a missing key alike). Applied once, and only while `clear`\n * still has the shape it was written against, so a Pixi that fixed or changed it is left alone.\n */\nexport function patchPixi(): boolean {\n if (patched) return true;\n const proto = BatchTextureArray.prototype as unknown as { clear: () => void };\n const probe = new BatchTextureArray() as unknown as { ids: unknown; textures: unknown; count: unknown };\n const shaped = typeof proto.clear === 'function' && typeof probe.ids === 'object' && Array.isArray(probe.textures) && typeof probe.count === 'number';\n if (!shaped || !/ids\\[[^\\]]+\\]\\s*=\\s*null/.test(String(proto.clear))) return false;\n proto.clear = function clear(this: { ids: Record<number, number | null>; textures: ({ uid: number } | null)[]; count: number }): void {\n const ids = this.ids;\n const textures = this.textures;\n for (let i = 0; i < this.count; i++) {\n const t = textures[i];\n textures[i] = null;\n if (t) delete ids[t.uid];\n }\n this.count = 0;\n };\n patched = true;\n return true;\n}\n"],"names":["patched","patchPixi","proto","BatchTextureArray","probe","ids","textures","i","t"],"mappings":";AAEA,IAAIA,IAAU;AASP,SAASC,IAAqB;AACnC,MAAID,EAAS,QAAO;AACpB,QAAME,IAAQC,EAAkB,WAC1BC,IAAQ,IAAID,EAAA;AAElB,SAAI,EADW,OAAOD,EAAM,SAAU,cAAc,OAAOE,EAAM,OAAQ,YAAY,MAAM,QAAQA,EAAM,QAAQ,KAAK,OAAOA,EAAM,SAAU,aAC9H,CAAC,2BAA2B,KAAK,OAAOF,EAAM,KAAK,CAAC,IAAU,MAC7EA,EAAM,QAAQ,WAAwH;AACpI,UAAMG,IAAM,KAAK,KACXC,IAAW,KAAK;AACtB,aAASC,IAAI,GAAGA,IAAI,KAAK,OAAOA,KAAK;AACnC,YAAMC,IAAIF,EAASC,CAAC;AACpB,MAAAD,EAASC,CAAC,IAAI,MACVC,KAAG,OAAOH,EAAIG,EAAE,GAAG;AAAA,IACzB;AACA,SAAK,QAAQ;AAAA,EACf,GACAR,IAAU,IACH;AACT;"}
@@ -0,0 +1,24 @@
1
+ const f = /^(.*?)(?:([+-])=(\d+(?:\.\d+)?))?$/, i = /^\d+(?:\.\d+)?$/;
2
+ function b(s, e) {
3
+ if (s === void 0) return e.fallback;
4
+ if (typeof s == "number") return Math.max(0, s);
5
+ const a = s.trim();
6
+ if (i.test(a)) return Number(a);
7
+ const n = f.exec(a);
8
+ if (!n) return e.fallback;
9
+ const t = n[1] ?? "";
10
+ let l;
11
+ if (t === "") l = e.fallback;
12
+ else if (t === "<") l = e.lastStart;
13
+ else if (t === ">") l = e.lastEnd;
14
+ else {
15
+ const r = e.labels.get(t);
16
+ r === void 0 ? (e.labels.set(t, e.end), l = e.end) : l = r;
17
+ }
18
+ const o = n[3] === void 0 ? 0 : Number(n[3]) * (n[2] === "-" ? -1 : 1);
19
+ return Math.max(0, l + o);
20
+ }
21
+ export {
22
+ b as placeAt
23
+ };
24
+ //# sourceMappingURL=timelinePlace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timelinePlace.js","sources":["../../src/core/timelinePlace.ts"],"sourcesContent":["/**\n * Where a child goes on a timeline: a time in ms from its start, or a string —\n * `'<'` the start of the child added last, `'>'` its end, `'+=200'` / `'-=100'` 200 ms after / 100 ms before the\n * default place (the timeline's end, or a `parallel` group's start), `'intro'` a label, and any of `'<'`, `'>'` or a\n * label followed by `+=n` / `-=n`. A string of digits is a time.\n */\nexport type TimelinePosition = number | string;\n\n/** What a position is measured against; `labels` is written to when a position names a label not yet set. */\nexport interface PlaceContext {\n /** Where a child goes when no position is given: the timeline's end, or the open `parallel` group's start. */\n fallback: number;\n /** The end of the timeline as built so far: where a label first named in a position is set. */\n end: number;\n lastStart: number;\n lastEnd: number;\n labels: Map<string, number>;\n}\n\nconst SHAPE = /^(.*?)(?:([+-])=(\\d+(?:\\.\\d+)?))?$/;\nconst DIGITS = /^\\d+(?:\\.\\d+)?$/;\n\n/**\n * The start time (ms, never below 0) `at` names. A label not set yet is set at the timeline's end, the way GSAP does,\n * so `to(a, …, { at: 'hit' })` both places the child and names the spot for the children after it.\n */\nexport function placeAt(at: TimelinePosition | undefined, ctx: PlaceContext): number {\n if (at === undefined) return ctx.fallback;\n if (typeof at === 'number') return Math.max(0, at);\n const text = at.trim();\n if (DIGITS.test(text)) return Number(text);\n const m = SHAPE.exec(text);\n // the pattern matches any string (both parts may be empty), so this is only for the type checker\n if (!m) return ctx.fallback;\n const anchor = m[1] ?? '';\n let base: number;\n if (anchor === '') base = ctx.fallback;\n else if (anchor === '<') base = ctx.lastStart;\n else if (anchor === '>') base = ctx.lastEnd;\n else {\n const label = ctx.labels.get(anchor);\n if (label === undefined) {\n ctx.labels.set(anchor, ctx.end);\n base = ctx.end;\n } else base = label;\n }\n const amount = m[3] === undefined ? 0 : Number(m[3]) * (m[2] === '-' ? -1 : 1);\n return Math.max(0, base + amount);\n}\n"],"names":["SHAPE","DIGITS","placeAt","at","ctx","text","m","anchor","base","label","amount"],"mappings":"AAmBA,MAAMA,IAAQ,sCACRC,IAAS;AAMR,SAASC,EAAQC,GAAkCC,GAA2B;AACnF,MAAID,MAAO,OAAW,QAAOC,EAAI;AACjC,MAAI,OAAOD,KAAO,iBAAiB,KAAK,IAAI,GAAGA,CAAE;AACjD,QAAME,IAAOF,EAAG,KAAA;AAChB,MAAIF,EAAO,KAAKI,CAAI,EAAG,QAAO,OAAOA,CAAI;AACzC,QAAMC,IAAIN,EAAM,KAAKK,CAAI;AAEzB,MAAI,CAACC,EAAG,QAAOF,EAAI;AACnB,QAAMG,IAASD,EAAE,CAAC,KAAK;AACvB,MAAIE;AACJ,MAAID,MAAW,GAAI,CAAAC,IAAOJ,EAAI;AAAA,WACrBG,MAAW,IAAK,CAAAC,IAAOJ,EAAI;AAAA,WAC3BG,MAAW,IAAK,CAAAC,IAAOJ,EAAI;AAAA,OAC/B;AACH,UAAMK,IAAQL,EAAI,OAAO,IAAIG,CAAM;AACnC,IAAIE,MAAU,UACZL,EAAI,OAAO,IAAIG,GAAQH,EAAI,GAAG,GAC9BI,IAAOJ,EAAI,OACNI,IAAOC;AAAA,EAChB;AACA,QAAMC,IAASJ,EAAE,CAAC,MAAM,SAAY,IAAI,OAAOA,EAAE,CAAC,CAAC,KAAKA,EAAE,CAAC,MAAM,MAAM,KAAK;AAC5E,SAAO,KAAK,IAAI,GAAGE,IAAOE,CAAM;AAClC;"}
@@ -0,0 +1,12 @@
1
+ function s(c, n) {
2
+ const e = n === "scale" ? c.scaleX : c[n];
3
+ return typeof e == "number" ? e : 0;
4
+ }
5
+ function o(c, n, e) {
6
+ n === "scale" ? (c.scaleX = e, c.scaleY = e) : c[n] = e;
7
+ }
8
+ export {
9
+ s as readProp,
10
+ o as writeProp
11
+ };
12
+ //# sourceMappingURL=tweenProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tweenProps.js","sources":["../../src/core/tweenProps.ts"],"sourcesContent":["import type { TweenTarget } from './Tweener';\n\n/**\n * How a tween reads and writes one property, shared by `Tweener` and `Timeline` so both treat `scale` the same way:\n * one number written to `scaleX` and `scaleY`, the shape every display object here exposes.\n */\nexport function readProp(target: TweenTarget, prop: string): number {\n const v = prop === 'scale' ? target['scaleX'] : target[prop];\n return typeof v === 'number' ? v : 0;\n}\n\nexport function writeProp(target: TweenTarget, prop: string, value: number): void {\n if (prop === 'scale') {\n target['scaleX'] = value;\n target['scaleY'] = value;\n } else target[prop] = value;\n}\n"],"names":["readProp","target","prop","v","writeProp","value"],"mappings":"AAMO,SAASA,EAASC,GAAqBC,GAAsB;AAClE,QAAMC,IAAID,MAAS,UAAUD,EAAO,SAAYA,EAAOC,CAAI;AAC3D,SAAO,OAAOC,KAAM,WAAWA,IAAI;AACrC;AAEO,SAASC,EAAUH,GAAqBC,GAAcG,GAAqB;AAChF,EAAIH,MAAS,WACXD,EAAO,SAAYI,GACnBJ,EAAO,SAAYI,KACdJ,EAAOC,CAAI,IAAIG;AACxB;"}