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,125 @@
1
+ import { Container as f, Sprite as w, Graphics as F } from "pixi.js";
2
+ import { Skeleton as k } from "./Skeleton.js";
3
+ const B = ["upperArmB", "forearmB", "thighB", "shinB", "torso", "thighF", "shinF", "head", "upperArmF", "forearmF"], g = {
4
+ upperArmB: 6983888,
5
+ forearmB: 1578e4,
6
+ thighB: 3813448,
7
+ shinB: 3813448,
8
+ torso: 4878256,
9
+ thighF: 3813448,
10
+ shinF: 3813448,
11
+ head: 1578e4,
12
+ upperArmF: 6983888,
13
+ forearmF: 1578e4
14
+ }, b = /* @__PURE__ */ new Set(["upperArmB", "forearmB", "thighB", "shinB"]), R = {
15
+ upperArmB: ["shoulderB", "elbowB"],
16
+ forearmB: ["elbowB", "wristB"],
17
+ thighB: ["hipB", "kneeB"],
18
+ shinB: ["kneeB", "ankleB"],
19
+ thighF: ["hipF", "kneeF"],
20
+ shinF: ["kneeF", "ankleF"],
21
+ upperArmF: ["shoulderF", "elbowF"],
22
+ forearmF: ["elbowF", "wristF"]
23
+ };
24
+ function A(d, t) {
25
+ const s = Math.round((d >> 16 & 255) * t), n = Math.round((d >> 8 & 255) * t), h = Math.round((d & 255) * t);
26
+ return s << 16 | n << 8 | h;
27
+ }
28
+ class S extends f {
29
+ constructor(t, s = {}, n, h = {}) {
30
+ super(), this.def = t, this.skin = s, this.skeleton = new k(t), this.scaleGrid = h.scale ?? 1, this.headRadius = h.headRadius ?? 5, this.headRise = h.headRise ?? 5.5, this.bulky = h.bulky === !0;
31
+ const r = new f();
32
+ r.position.set(-t.width / 2, -t.height), this.addChild(r);
33
+ for (const i of B) {
34
+ const o = new f();
35
+ this.layers.set(i, o), r.addChild(o);
36
+ const l = s[i];
37
+ if (l?.texture && n) {
38
+ const e = new w(n.get(l.texture, l.frame));
39
+ e.anchor.set(l.anchorX ?? 0.5, l.anchorY ?? 0), e.scale.set(1 / this.scaleGrid), this.sprites.set(i, e), o.addChild(e);
40
+ }
41
+ }
42
+ this.scale.set(this.scaleGrid);
43
+ }
44
+ def;
45
+ skin;
46
+ skeleton;
47
+ sprites = /* @__PURE__ */ new Map();
48
+ layers = /* @__PURE__ */ new Map();
49
+ joints = null;
50
+ curl;
51
+ scaleGrid;
52
+ headRadius;
53
+ headRise;
54
+ bulky;
55
+ /** 1 faces right, -1 faces left. */
56
+ set facing(t) {
57
+ this.scale.x = this.scaleGrid * t;
58
+ }
59
+ get facing() {
60
+ return this.scale.x < 0 ? -1 : 1;
61
+ }
62
+ /** The joints of the last pose, in grid px of the rig's frame (for attaching a held item, an effect). */
63
+ get lastJoints() {
64
+ return this.joints;
65
+ }
66
+ /** Where a joint of the last pose is in this view's parent, in world px. */
67
+ jointInParent(t) {
68
+ if (!this.joints) return null;
69
+ const s = this.joints[t];
70
+ return { x: this.x + (s.x - this.def.width / 2) * this.scale.x, y: this.y + (s.y - this.def.height) * this.scale.y };
71
+ }
72
+ setPose(t) {
73
+ const s = this.skeleton.solve(t, this.bulky);
74
+ this.joints = s, this.curl = t.curl;
75
+ for (const n of B) this.place(n, s);
76
+ return this;
77
+ }
78
+ destroy(t) {
79
+ super.destroy(t ?? { children: !0 });
80
+ }
81
+ place(t, s) {
82
+ const n = this.layers.get(t), h = this.skin[t] ?? {}, r = this.sprites.get(t), [i, o] = this.ends(t, s), l = Math.atan2(o.y - i.y, o.x - i.x);
83
+ if (r) {
84
+ r.position.set(i.x, i.y), r.rotation = l - Math.PI / 2, h.stretch && r.texture.height > 0 && (r.scale.y = Math.hypot(o.x - i.x, o.y - i.y) / r.texture.height);
85
+ return;
86
+ }
87
+ let e = n.children[0];
88
+ e || (e = new F(), n.addChild(e)), e.clear();
89
+ const y = h.color ?? g[t], u = b.has(t) ? A(y, t.endsWith("ArmB") || t === "forearmB" ? this.def.backArmShade : this.def.backShade) : y, p = h.outline === void 0 ? 1709092 : h.outline, a = p === null ? null : { color: p, width: 0.6 };
90
+ if (t === "head") {
91
+ const c = h.width !== void 0 ? h.width / 2 : this.headRadius;
92
+ e.circle(i.x, i.y, c).fill(u), a && e.stroke(a);
93
+ return;
94
+ }
95
+ if (t === "torso") {
96
+ const c = h.width ?? Math.abs(this.def.shoulderF[0] - this.def.shoulderB[0]) + 1;
97
+ if (this.curl)
98
+ e.circle(this.curl[0], this.curl[1], c / 2 + 1).fill(u);
99
+ else {
100
+ const m = Math.hypot(o.x - i.x, o.y - i.y);
101
+ e.roundRect(-c / 2, -0.5, c, m + 1, Math.min(2, c / 3)).fill(u), e.position.set(i.x, i.y), e.rotation = l - Math.PI / 2, a && e.stroke(a);
102
+ return;
103
+ }
104
+ e.position.set(0, 0), e.rotation = 0, a && e.stroke(a);
105
+ return;
106
+ }
107
+ const x = h.width ?? this.def.limbWidth;
108
+ e.position.set(0, 0), e.rotation = 0, a && e.moveTo(i.x, i.y).lineTo(o.x, o.y).stroke({ color: a.color, width: x + a.width * 2, cap: "round" }), e.moveTo(i.x, i.y).lineTo(o.x, o.y).stroke({ color: u, width: x, cap: "round" });
109
+ }
110
+ /** The two points a part spans: a limb's joints, the torso from chest to hips, the head's centre (twice). */
111
+ ends(t, s) {
112
+ if (t === "head") {
113
+ const r = { x: s.head.x, y: s.head.y - this.headRise };
114
+ return [r, { x: r.x, y: r.y + 1 }];
115
+ }
116
+ if (t === "torso") return [s.chest, { x: (s.hipF.x + s.hipB.x) / 2, y: (s.hipF.y + s.hipB.y) / 2 }];
117
+ const [n, h] = R[t];
118
+ return [s[n], s[h]];
119
+ }
120
+ }
121
+ export {
122
+ B as RIG_PARTS,
123
+ S as RigView
124
+ };
125
+ //# sourceMappingURL=RigView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RigView.js","sources":["../../src/rig/RigView.ts"],"sourcesContent":["import { Container, Graphics, Sprite } from 'pixi.js';\nimport type { TextureRegistry } from '../core/TextureRegistry';\nimport { Skeleton } from './Skeleton';\nimport type { Joints, Point, RigDef, RigPose } from './rigTypes';\n\n/** The parts a humanoid rig is drawn with, back to front in this order. */\nexport const RIG_PARTS = ['upperArmB', 'forearmB', 'thighB', 'shinB', 'torso', 'thighF', 'shinF', 'head', 'upperArmF', 'forearmF'] as const;\nexport type RigPart = (typeof RIG_PARTS)[number];\n\n/**\n * How one part looks. A textured part is an image drawn with its top-centre on the bone's root joint and turned to\n * follow the bone (cut-out animation, any art style); a vector part is a capsule (limbs), a rounded box (torso) or a\n * circle (head) in `color`.\n */\nexport interface PartSkin {\n /** Texture key (and frame) in the stage's registry; leave out for a vector part. */\n texture?: string;\n frame?: string | number;\n /** Stretch the image along the bone to the next joint instead of drawing it at its own size. */\n stretch?: boolean;\n /** Where on the image the root joint sits, as a share of its size (default 0.5, 0). */\n anchorX?: number;\n anchorY?: number;\n /** Vector fill (default by part). */\n color?: number;\n /** Vector thickness in grid px (default the rig's `limbWidth`; the torso's width; the head's diameter). */\n width?: number;\n /** Vector outline colour, or null for none (default a dark outline). */\n outline?: number | null;\n}\n\nexport type RigSkin = Partial<Record<RigPart, PartSkin>>;\n\nexport interface RigViewOptions {\n /** World px per grid px (default 1). */\n scale?: number;\n /** Head radius in grid px (default 5) and how far above the chest point its centre sits (default 5.5). */\n headRadius?: number;\n headRise?: number;\n /** A broader build: shoulders set wider. */\n bulky?: boolean;\n}\n\nconst DEFAULT_COLORS: Record<RigPart, number> = {\n upperArmB: 0x6a90d0,\n forearmB: 0xf0c8a0,\n thighB: 0x3a3048,\n shinB: 0x3a3048,\n torso: 0x4a6fb0,\n thighF: 0x3a3048,\n shinF: 0x3a3048,\n head: 0xf0c8a0,\n upperArmF: 0x6a90d0,\n forearmF: 0xf0c8a0,\n};\n\nconst BACK = new Set<RigPart>(['upperArmB', 'forearmB', 'thighB', 'shinB']);\n\n/** Which joints each limb part runs between. */\nconst BONES: Record<Exclude<RigPart, 'torso' | 'head'>, [keyof Joints, keyof Joints]> = {\n upperArmB: ['shoulderB', 'elbowB'],\n forearmB: ['elbowB', 'wristB'],\n thighB: ['hipB', 'kneeB'],\n shinB: ['kneeB', 'ankleB'],\n thighF: ['hipF', 'kneeF'],\n shinF: ['kneeF', 'ankleF'],\n upperArmF: ['shoulderF', 'elbowF'],\n forearmF: ['elbowF', 'wristF'],\n};\n\nfunction shadeOf(color: number, k: number): number {\n const r = Math.round(((color >> 16) & 255) * k);\n const g = Math.round(((color >> 8) & 255) * k);\n const b = Math.round((color & 255) * k);\n return (r << 16) | (g << 8) | b;\n}\n\n/**\n * A character drawn from a rig pose: give it a pose each frame (`setPose`, from a `PosePlayer`) and it places every\n * part. The container's origin is the character's feet (bottom centre of the rig's frame); `facing` mirrors it.\n */\nexport class RigView extends Container {\n private readonly skeleton: Skeleton;\n private readonly sprites = new Map<RigPart, Sprite>();\n private readonly layers = new Map<RigPart, Container>();\n private joints: Joints | null = null;\n private curl: [number, number] | undefined;\n private readonly scaleGrid: number;\n private readonly headRadius: number;\n private readonly headRise: number;\n private readonly bulky: boolean;\n\n constructor(\n private readonly def: RigDef,\n private readonly skin: RigSkin = {},\n textures?: TextureRegistry,\n options: RigViewOptions = {},\n ) {\n super();\n this.skeleton = new Skeleton(def);\n this.scaleGrid = options.scale ?? 1;\n this.headRadius = options.headRadius ?? 5;\n this.headRise = options.headRise ?? 5.5;\n this.bulky = options.bulky === true;\n // one container per part keeps the back-to-front order whatever mixes sprites and vectors\n const body = new Container();\n body.position.set(-def.width / 2, -def.height);\n this.addChild(body);\n for (const part of RIG_PARTS) {\n const layer = new Container();\n this.layers.set(part, layer);\n body.addChild(layer);\n const s = skin[part];\n if (s?.texture && textures) {\n const sprite = new Sprite(textures.get(s.texture, s.frame));\n sprite.anchor.set(s.anchorX ?? 0.5, s.anchorY ?? 0);\n // images are drawn at the world's scale, while the rig works in grid px\n sprite.scale.set(1 / this.scaleGrid);\n this.sprites.set(part, sprite);\n layer.addChild(sprite);\n }\n }\n // vector parts are drawn into a graphics in their own layer on each pose\n this.scale.set(this.scaleGrid);\n }\n\n /** 1 faces right, -1 faces left. */\n set facing(dir: 1 | -1) {\n this.scale.x = this.scaleGrid * dir;\n }\n\n get facing(): 1 | -1 {\n return this.scale.x < 0 ? -1 : 1;\n }\n\n /** The joints of the last pose, in grid px of the rig's frame (for attaching a held item, an effect). */\n get lastJoints(): Joints | null {\n return this.joints;\n }\n\n /** Where a joint of the last pose is in this view's parent, in world px. */\n jointInParent(name: keyof Omit<Joints, 'forearm'>): Point | null {\n if (!this.joints) return null;\n const j = this.joints[name];\n return { x: this.x + (j.x - this.def.width / 2) * this.scale.x, y: this.y + (j.y - this.def.height) * this.scale.y };\n }\n\n setPose(pose: RigPose): this {\n const j = this.skeleton.solve(pose, this.bulky);\n this.joints = j;\n this.curl = pose.curl;\n for (const part of RIG_PARTS) this.place(part, j);\n return this;\n }\n\n override destroy(options?: Parameters<Container['destroy']>[0]): void {\n super.destroy(options ?? { children: true });\n }\n\n private place(part: RigPart, j: Joints): void {\n const layer = this.layers.get(part)!;\n const skin = this.skin[part] ?? {};\n const sprite = this.sprites.get(part);\n const [a, b] = this.ends(part, j);\n const angle = Math.atan2(b.y - a.y, b.x - a.x);\n if (sprite) {\n sprite.position.set(a.x, a.y);\n sprite.rotation = angle - Math.PI / 2;\n if (skin.stretch && sprite.texture.height > 0) sprite.scale.y = Math.hypot(b.x - a.x, b.y - a.y) / sprite.texture.height;\n return;\n }\n let g = layer.children[0] as Graphics | undefined;\n if (!g) {\n g = new Graphics();\n layer.addChild(g);\n }\n g.clear();\n const base = skin.color ?? DEFAULT_COLORS[part];\n const color = BACK.has(part) ? shadeOf(base, part.endsWith('ArmB') || part === 'forearmB' ? this.def.backArmShade : this.def.backShade) : base;\n const outline = skin.outline === undefined ? 0x1a1424 : skin.outline;\n const stroke = outline === null ? null : { color: outline, width: 0.6 };\n if (part === 'head') {\n const r = skin.width !== undefined ? skin.width / 2 : this.headRadius;\n g.circle(a.x, a.y, r).fill(color);\n if (stroke) g.stroke(stroke);\n return;\n }\n if (part === 'torso') {\n const w = skin.width ?? Math.abs(this.def.shoulderF[0] - this.def.shoulderB[0]) + 1;\n if (this.curl) {\n g.circle(this.curl[0], this.curl[1], w / 2 + 1).fill(color);\n } else {\n const len = Math.hypot(b.x - a.x, b.y - a.y);\n g.roundRect(-w / 2, -0.5, w, len + 1, Math.min(2, w / 3)).fill(color);\n g.position.set(a.x, a.y);\n g.rotation = angle - Math.PI / 2;\n if (stroke) g.stroke(stroke);\n return;\n }\n g.position.set(0, 0);\n g.rotation = 0;\n if (stroke) g.stroke(stroke);\n return;\n }\n const w = skin.width ?? this.def.limbWidth;\n g.position.set(0, 0);\n g.rotation = 0;\n // the outline is a wider line in its colour drawn first, the limb over it\n if (stroke) g.moveTo(a.x, a.y).lineTo(b.x, b.y).stroke({ color: stroke.color, width: w + stroke.width * 2, cap: 'round' });\n g.moveTo(a.x, a.y).lineTo(b.x, b.y).stroke({ color, width: w, cap: 'round' });\n }\n\n /** The two points a part spans: a limb's joints, the torso from chest to hips, the head's centre (twice). */\n private ends(part: RigPart, j: Joints): [Point, Point] {\n if (part === 'head') {\n const c = { x: j.head.x, y: j.head.y - this.headRise };\n return [c, { x: c.x, y: c.y + 1 }];\n }\n if (part === 'torso') return [j.chest, { x: (j.hipF.x + j.hipB.x) / 2, y: (j.hipF.y + j.hipB.y) / 2 }];\n const [from, to] = BONES[part];\n return [j[from] as Point, j[to] as Point];\n }\n}\n"],"names":["RIG_PARTS","DEFAULT_COLORS","BACK","BONES","shadeOf","color","k","r","g","b","RigView","Container","def","skin","textures","options","Skeleton","body","part","layer","s","sprite","Sprite","dir","name","j","pose","a","angle","Graphics","base","outline","stroke","w","len","c","from","to"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ const f = Math.PI / 180, a = [90, 2, 0, 2];
2
+ function c(i, t, h) {
3
+ return { x: i.x + t, y: i.y + h };
4
+ }
5
+ function d(i, t) {
6
+ const [h, n, r, o] = t, e = h * f, s = (h + r) * f, l = c(i, Math.cos(e) * n, Math.sin(e) * n);
7
+ return [l, c(l, Math.cos(s) * o, Math.sin(s) * o), s];
8
+ }
9
+ class p {
10
+ def;
11
+ constructor(t) {
12
+ this.def = t;
13
+ }
14
+ solve(t, h = !1) {
15
+ const n = this.def, r = h ? n.bulkyShoulder : 0, o = { x: n.chest[0], y: n.chest[1] + (t.by ?? 0) }, e = c(o, n.shoulderF[0] + r, n.shoulderF[1]), s = c(o, n.shoulderB[0] - r, n.shoulderB[1]), l = t.hipDx ?? 0, u = t.hipDy ?? 0, B = { x: n.hipF[0] + l, y: n.hipF[1] + u }, F = { x: n.hipB[0] + l, y: n.hipB[1] + u }, [x, y, m] = this.frontArm(e, t.armF ?? a), [w, b] = d(s, t.armB ?? a), [k, D] = d(B, t.legF ?? a), [M, A] = d(F, t.legB ?? a), g = c(o, t.headDx ?? 0, t.headDy ?? 0);
16
+ return { chest: o, head: g, shoulderF: e, elbowF: x, wristF: y, shoulderB: s, elbowB: w, wristB: b, hipF: B, kneeF: k, ankleF: D, hipB: F, kneeB: M, ankleB: A, forearm: m };
17
+ }
18
+ /**
19
+ * Elbow, wrist and forearm direction of the front arm (or of its motion smear) hung from `shoulder`. The fist keeps
20
+ * the frame's last column for its outline: an arm reaching past that (a swing, a thrust, a draw on a bulky body) is
21
+ * pulled back whole, so the forearm — and the weapon laid along it — keeps its angle.
22
+ */
23
+ frontArm(t, h) {
24
+ const n = this.def, [r, o, e] = d(t, h), s = Math.max(0, o.x - (n.width - n.limbWidth - 1));
25
+ return [c(r, -s, 0), c(o, -s, 0), e];
26
+ }
27
+ }
28
+ export {
29
+ p as Skeleton
30
+ };
31
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.js","sources":["../../src/rig/Skeleton.ts"],"sourcesContent":["import type { Joints, Limb, Point, RigDef, RigPose } from './rigTypes';\n\nconst RAD = Math.PI / 180;\nconst DOWN: Limb = [90, 2, 0, 2];\n\nfunction add(p: Point, dx: number, dy: number): Point {\n return { x: p.x + dx, y: p.y + dy };\n}\n\n/** Elbow and wrist (or knee and ankle) of a limb hung from `root`. */\nfunction chain(root: Point, limb: Limb): [Point, Point, number] {\n const [a1, l1, a2, l2] = limb;\n const upper = a1 * RAD;\n const lower = (a1 + a2) * RAD;\n const mid = add(root, Math.cos(upper) * l1, Math.sin(upper) * l1);\n return [mid, add(mid, Math.cos(lower) * l2, Math.sin(lower) * l2), lower];\n}\n\n/** Turns a pose (bone angles and lengths) into joint positions on the character's 20x24 grid. */\nexport class Skeleton {\n private readonly def: RigDef;\n\n constructor(def: RigDef) {\n this.def = def;\n }\n\n solve(pose: RigPose, bulky = false): Joints {\n const d = this.def;\n const wide = bulky ? d.bulkyShoulder : 0;\n const chest = { x: d.chest[0], y: d.chest[1] + (pose.by ?? 0) };\n const shoulderF = add(chest, d.shoulderF[0] + wide, d.shoulderF[1]);\n const shoulderB = add(chest, d.shoulderB[0] - wide, d.shoulderB[1]);\n const hx = pose.hipDx ?? 0;\n const hy = pose.hipDy ?? 0;\n const hipF = { x: d.hipF[0] + hx, y: d.hipF[1] + hy };\n const hipB = { x: d.hipB[0] + hx, y: d.hipB[1] + hy };\n const [elbowF, wristF, forearm] = this.frontArm(shoulderF, pose.armF ?? DOWN);\n const [elbowB, wristB] = chain(shoulderB, pose.armB ?? DOWN);\n const [kneeF, ankleF] = chain(hipF, pose.legF ?? DOWN);\n const [kneeB, ankleB] = chain(hipB, pose.legB ?? DOWN);\n const head = add(chest, pose.headDx ?? 0, pose.headDy ?? 0);\n return { chest, head, shoulderF, elbowF, wristF, shoulderB, elbowB, wristB, hipF, kneeF, ankleF, hipB, kneeB, ankleB, forearm };\n }\n\n /**\n * Elbow, wrist and forearm direction of the front arm (or of its motion smear) hung from `shoulder`. The fist keeps\n * the frame's last column for its outline: an arm reaching past that (a swing, a thrust, a draw on a bulky body) is\n * pulled back whole, so the forearm — and the weapon laid along it — keeps its angle.\n */\n frontArm(shoulder: Point, limb: Limb): [Point, Point, number] {\n const d = this.def;\n const [elbow, wrist, forearm] = chain(shoulder, limb);\n const over = Math.max(0, wrist.x - (d.width - d.limbWidth - 1));\n return [add(elbow, -over, 0), add(wrist, -over, 0), forearm];\n }\n}\n"],"names":["RAD","DOWN","add","p","dx","dy","chain","root","limb","a1","l1","a2","l2","upper","lower","mid","Skeleton","def","pose","bulky","d","wide","chest","shoulderF","shoulderB","hx","hy","hipF","hipB","elbowF","wristF","forearm","elbowB","wristB","kneeF","ankleF","kneeB","ankleB","head","shoulder","elbow","wrist","over"],"mappings":"AAEA,MAAMA,IAAM,KAAK,KAAK,KAChBC,IAAa,CAAC,IAAI,GAAG,GAAG,CAAC;AAE/B,SAASC,EAAIC,GAAUC,GAAYC,GAAmB;AACpD,SAAO,EAAE,GAAGF,EAAE,IAAIC,GAAI,GAAGD,EAAE,IAAIE,EAAA;AACjC;AAGA,SAASC,EAAMC,GAAaC,GAAoC;AAC9D,QAAM,CAACC,GAAIC,GAAIC,GAAIC,CAAE,IAAIJ,GACnBK,IAAQJ,IAAKT,GACbc,KAASL,IAAKE,KAAMX,GACpBe,IAAMb,EAAIK,GAAM,KAAK,IAAIM,CAAK,IAAIH,GAAI,KAAK,IAAIG,CAAK,IAAIH,CAAE;AAChE,SAAO,CAACK,GAAKb,EAAIa,GAAK,KAAK,IAAID,CAAK,IAAIF,GAAI,KAAK,IAAIE,CAAK,IAAIF,CAAE,GAAGE,CAAK;AAC1E;AAGO,MAAME,EAAS;AAAA,EACH;AAAA,EAEjB,YAAYC,GAAa;AACvB,SAAK,MAAMA;AAAA,EACb;AAAA,EAEA,MAAMC,GAAeC,IAAQ,IAAe;AAC1C,UAAMC,IAAI,KAAK,KACTC,IAAOF,IAAQC,EAAE,gBAAgB,GACjCE,IAAQ,EAAE,GAAGF,EAAE,MAAM,CAAC,GAAG,GAAGA,EAAE,MAAM,CAAC,KAAKF,EAAK,MAAM,GAAA,GACrDK,IAAYrB,EAAIoB,GAAOF,EAAE,UAAU,CAAC,IAAIC,GAAMD,EAAE,UAAU,CAAC,CAAC,GAC5DI,IAAYtB,EAAIoB,GAAOF,EAAE,UAAU,CAAC,IAAIC,GAAMD,EAAE,UAAU,CAAC,CAAC,GAC5DK,IAAKP,EAAK,SAAS,GACnBQ,IAAKR,EAAK,SAAS,GACnBS,IAAO,EAAE,GAAGP,EAAE,KAAK,CAAC,IAAIK,GAAI,GAAGL,EAAE,KAAK,CAAC,IAAIM,EAAA,GAC3CE,IAAO,EAAE,GAAGR,EAAE,KAAK,CAAC,IAAIK,GAAI,GAAGL,EAAE,KAAK,CAAC,IAAIM,EAAA,GAC3C,CAACG,GAAQC,GAAQC,CAAO,IAAI,KAAK,SAASR,GAAWL,EAAK,QAAQjB,CAAI,GACtE,CAAC+B,GAAQC,CAAM,IAAI3B,EAAMkB,GAAWN,EAAK,QAAQjB,CAAI,GACrD,CAACiC,GAAOC,CAAM,IAAI7B,EAAMqB,GAAMT,EAAK,QAAQjB,CAAI,GAC/C,CAACmC,GAAOC,CAAM,IAAI/B,EAAMsB,GAAMV,EAAK,QAAQjB,CAAI,GAC/CqC,IAAOpC,EAAIoB,GAAOJ,EAAK,UAAU,GAAGA,EAAK,UAAU,CAAC;AAC1D,WAAO,EAAE,OAAAI,GAAO,MAAAgB,GAAM,WAAAf,GAAW,QAAAM,GAAQ,QAAAC,GAAQ,WAAAN,GAAW,QAAAQ,GAAQ,QAAAC,GAAQ,MAAAN,GAAM,OAAAO,GAAO,QAAAC,GAAQ,MAAAP,GAAM,OAAAQ,GAAO,QAAAC,GAAQ,SAAAN,EAAA;AAAA,EACxH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAASQ,GAAiB/B,GAAoC;AAC5D,UAAMY,IAAI,KAAK,KACT,CAACoB,GAAOC,GAAOV,CAAO,IAAIzB,EAAMiC,GAAU/B,CAAI,GAC9CkC,IAAO,KAAK,IAAI,GAAGD,EAAM,KAAKrB,EAAE,QAAQA,EAAE,YAAY,EAAE;AAC9D,WAAO,CAAClB,EAAIsC,GAAO,CAACE,GAAM,CAAC,GAAGxC,EAAIuC,GAAO,CAACC,GAAM,CAAC,GAAGX,CAAO;AAAA,EAC7D;AACF;"}
@@ -0,0 +1,6 @@
1
+ import o from "./humanoid.json.js";
2
+ const t = o;
3
+ export {
4
+ t as HUMANOID_RIG
5
+ };
6
+ //# sourceMappingURL=humanoid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanoid.js","sources":["../../src/rig/humanoid.ts"],"sourcesContent":["import type { RigDef } from './rigTypes';\nimport def from './humanoid.json';\n\n/** The proportions of the built-in 20×24 humanoid: chest, shoulders, hips and limb width. */\nexport const HUMANOID_RIG: RigDef = def as RigDef;\n"],"names":["HUMANOID_RIG","def"],"mappings":";AAIO,MAAMA,IAAuBC;"}
@@ -0,0 +1,30 @@
1
+ const i = 1, l = 20, r = 24, t = [10, 13], s = [3, 1], c = [-4, 1], o = 1, h = [11, 19], e = [9, 19], n = 2, d = 0.75, a = 0.72, u = {
2
+ scale: 1,
3
+ width: 20,
4
+ height: 24,
5
+ chest: t,
6
+ shoulderF: s,
7
+ shoulderB: c,
8
+ bulkyShoulder: o,
9
+ hipF: h,
10
+ hipB: e,
11
+ limbWidth: n,
12
+ backShade: d,
13
+ backArmShade: a
14
+ };
15
+ export {
16
+ a as backArmShade,
17
+ d as backShade,
18
+ o as bulkyShoulder,
19
+ t as chest,
20
+ u as default,
21
+ r as height,
22
+ e as hipB,
23
+ h as hipF,
24
+ n as limbWidth,
25
+ i as scale,
26
+ c as shoulderB,
27
+ s as shoulderF,
28
+ l as width
29
+ };
30
+ //# sourceMappingURL=humanoid.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanoid.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
@@ -0,0 +1,30 @@
1
+ import e from "./poses.json.js";
2
+ const A = e, s = (o, p) => Array.from({ length: p }, (R, E) => `${o}${E}`), H = {
3
+ idle: { poses: s("BREATHE", 6), fps: 6 },
4
+ walk: { poses: s("STRIDE", 6), fps: 10 },
5
+ run: { poses: s("JOG", 8), fps: 14 },
6
+ roll: { poses: s("ROLL", 12), fps: 30, loop: !1, blend: !1 },
7
+ dash: { poses: ["DASH"], fps: 1, loop: !1 },
8
+ hurt: { poses: ["HURT", "BREATHE0"], fps: 5, loop: !1 },
9
+ dizzy: { poses: ["DIZZY", "BREATHE0"], fps: 2 },
10
+ crouch: { poses: ["CROUCH"], fps: 1, loop: !1 },
11
+ kneel: { poses: ["KNEEL"], fps: 1, loop: !1 },
12
+ sit: { poses: ["SIT"], fps: 1, loop: !1 },
13
+ sitGround: { poses: ["SIT_GROUND"], fps: 1, loop: !1 },
14
+ pick: { poses: ["CROUCH", "PICK", "CROUCH"], fps: 6, loop: !1 },
15
+ lookBack: { poses: ["LOOK_BACK"], fps: 1, loop: !1 },
16
+ stretch: { poses: ["BREATHE0", "STRETCH", "STRETCH", "BREATHE0"], fps: 3, loop: !1 },
17
+ cheer: { poses: ["BREATHE0", "CHEER", "CHEER"], fps: 6, loop: !1 },
18
+ wave: { poses: ["WAVE_A", "WAVE_B"], fps: 4 },
19
+ dance: { poses: ["DANCE_A", "DANCE_B"], fps: 3 },
20
+ slash: { poses: ["SLASH_READY", "SLASH_WIND", "SLASH_SWEEP", "SLASH_FOLLOW", "SLASH_END", "SLASH_RECOVER"], durations: [60, 90, 40, 60, 90, 120], loop: !1 },
21
+ thrust: { poses: ["THRUST_READY", "THRUST_LUNGE", "THRUST_MID", "THRUST_END", "THRUST_RECOVER"], durations: [80, 50, 60, 100, 120], loop: !1 },
22
+ overhead: { poses: ["OVERHEAD_READY", "OVERHEAD", "OVERHEAD_MID", "OVERHEAD_FALL"], durations: [90, 140, 50, 160], loop: !1 },
23
+ cast: { poses: ["CAST_CHARGE", "CAST", "CAST_RELEASE"], durations: [220, 120, 200], loop: !1 },
24
+ throw: { poses: ["THROW_READY", "THROW_WIND", "THROW_RELEASE", "THROW_MID", "THROW_RECOVER"], durations: [70, 110, 40, 70, 120], loop: !1 }
25
+ };
26
+ export {
27
+ H as HUMANOID_CLIPS,
28
+ A as HUMANOID_POSES
29
+ };
30
+ //# sourceMappingURL=humanoidPoses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanoidPoses.js","sources":["../../src/rig/humanoidPoses.ts"],"sourcesContent":["import type { RigPose } from './rigTypes';\nimport poses from './poses.json';\nimport type { PoseClip } from './PosePlayer';\n\n/**\n * The built-in humanoid's pose library: 72 poses for `HUMANOID_RIG`, made for a 20×24 character facing right, and\n * clips that string them into motion. Use them as they are, mix them (`overlay`, `upperOver`), or as the starting\n * point for your own.\n */\nexport const HUMANOID_POSES: Readonly<Record<string, RigPose>> = poses as unknown as Record<string, RigPose>;\n\nconst seq = (prefix: string, n: number) => Array.from({ length: n }, (_, i) => `${prefix}${i}`);\n\n/** Ready-made clips over `HUMANOID_POSES`. Looping clips blend from their last pose back into the first. */\nexport const HUMANOID_CLIPS = {\n idle: { poses: seq('BREATHE', 6), fps: 6 },\n walk: { poses: seq('STRIDE', 6), fps: 10 },\n run: { poses: seq('JOG', 8), fps: 14 },\n roll: { poses: seq('ROLL', 12), fps: 30, loop: false, blend: false },\n dash: { poses: ['DASH'], fps: 1, loop: false },\n hurt: { poses: ['HURT', 'BREATHE0'], fps: 5, loop: false },\n dizzy: { poses: ['DIZZY', 'BREATHE0'], fps: 2 },\n crouch: { poses: ['CROUCH'], fps: 1, loop: false },\n kneel: { poses: ['KNEEL'], fps: 1, loop: false },\n sit: { poses: ['SIT'], fps: 1, loop: false },\n sitGround: { poses: ['SIT_GROUND'], fps: 1, loop: false },\n pick: { poses: ['CROUCH', 'PICK', 'CROUCH'], fps: 6, loop: false },\n lookBack: { poses: ['LOOK_BACK'], fps: 1, loop: false },\n stretch: { poses: ['BREATHE0', 'STRETCH', 'STRETCH', 'BREATHE0'], fps: 3, loop: false },\n cheer: { poses: ['BREATHE0', 'CHEER', 'CHEER'], fps: 6, loop: false },\n wave: { poses: ['WAVE_A', 'WAVE_B'], fps: 4 },\n dance: { poses: ['DANCE_A', 'DANCE_B'], fps: 3 },\n slash: { poses: ['SLASH_READY', 'SLASH_WIND', 'SLASH_SWEEP', 'SLASH_FOLLOW', 'SLASH_END', 'SLASH_RECOVER'], durations: [60, 90, 40, 60, 90, 120], loop: false },\n thrust: { poses: ['THRUST_READY', 'THRUST_LUNGE', 'THRUST_MID', 'THRUST_END', 'THRUST_RECOVER'], durations: [80, 50, 60, 100, 120], loop: false },\n overhead: { poses: ['OVERHEAD_READY', 'OVERHEAD', 'OVERHEAD_MID', 'OVERHEAD_FALL'], durations: [90, 140, 50, 160], loop: false },\n cast: { poses: ['CAST_CHARGE', 'CAST', 'CAST_RELEASE'], durations: [220, 120, 200], loop: false },\n throw: { poses: ['THROW_READY', 'THROW_WIND', 'THROW_RELEASE', 'THROW_MID', 'THROW_RECOVER'], durations: [70, 110, 40, 70, 120], loop: false },\n} satisfies Record<string, PoseClip>;\n\nexport type HumanoidClip = keyof typeof HUMANOID_CLIPS;\n"],"names":["HUMANOID_POSES","poses","seq","prefix","n","_","i","HUMANOID_CLIPS"],"mappings":";AASO,MAAMA,IAAoDC,GAE3DC,IAAM,CAACC,GAAgBC,MAAc,MAAM,KAAK,EAAE,QAAQA,EAAA,GAAK,CAACC,GAAGC,MAAM,GAAGH,CAAM,GAAGG,CAAC,EAAE,GAGjFC,IAAiB;AAAA,EAC5B,MAAM,EAAE,OAAOL,EAAI,WAAW,CAAC,GAAG,KAAK,EAAA;AAAA,EACvC,MAAM,EAAE,OAAOA,EAAI,UAAU,CAAC,GAAG,KAAK,GAAA;AAAA,EACtC,KAAK,EAAE,OAAOA,EAAI,OAAO,CAAC,GAAG,KAAK,GAAA;AAAA,EAClC,MAAM,EAAE,OAAOA,EAAI,QAAQ,EAAE,GAAG,KAAK,IAAI,MAAM,IAAO,OAAO,GAAA;AAAA,EAC7D,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EACvC,MAAM,EAAE,OAAO,CAAC,QAAQ,UAAU,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EACnD,OAAO,EAAE,OAAO,CAAC,SAAS,UAAU,GAAG,KAAK,EAAA;AAAA,EAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EACzC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EACrC,WAAW,EAAE,OAAO,CAAC,YAAY,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EAClD,MAAM,EAAE,OAAO,CAAC,UAAU,QAAQ,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EAC3D,UAAU,EAAE,OAAO,CAAC,WAAW,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EAChD,SAAS,EAAE,OAAO,CAAC,YAAY,WAAW,WAAW,UAAU,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EAChF,OAAO,EAAE,OAAO,CAAC,YAAY,SAAS,OAAO,GAAG,KAAK,GAAG,MAAM,GAAA;AAAA,EAC9D,MAAM,EAAE,OAAO,CAAC,UAAU,QAAQ,GAAG,KAAK,EAAA;AAAA,EAC1C,OAAO,EAAE,OAAO,CAAC,WAAW,SAAS,GAAG,KAAK,EAAA;AAAA,EAC7C,OAAO,EAAE,OAAO,CAAC,eAAe,cAAc,eAAe,gBAAgB,aAAa,eAAe,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,MAAM,GAAA;AAAA,EACxJ,QAAQ,EAAE,OAAO,CAAC,gBAAgB,gBAAgB,cAAc,cAAc,gBAAgB,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,MAAM,GAAA;AAAA,EAC1I,UAAU,EAAE,OAAO,CAAC,kBAAkB,YAAY,gBAAgB,eAAe,GAAG,WAAW,CAAC,IAAI,KAAK,IAAI,GAAG,GAAG,MAAM,GAAA;AAAA,EACzH,MAAM,EAAE,OAAO,CAAC,eAAe,QAAQ,cAAc,GAAG,WAAW,CAAC,KAAK,KAAK,GAAG,GAAG,MAAM,GAAA;AAAA,EAC1F,OAAO,EAAE,OAAO,CAAC,eAAe,cAAc,iBAAiB,aAAa,eAAe,GAAG,WAAW,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,MAAM,GAAA;AACzI;"}
@@ -0,0 +1,54 @@
1
+ function n(r, e, i) {
2
+ return r + (e - r) * i;
3
+ }
4
+ function c(r, e, i) {
5
+ let t = (e - r) % 360;
6
+ return t > 180 && (t -= 360), t < -180 && (t += 360), r + t * i;
7
+ }
8
+ function l(r, e, i) {
9
+ return !r || !e ? i < 1 ? r ?? e : e ?? r : [c(r[0], e[0], i), n(r[1], e[1], i), c(r[2], e[2], i), n(r[3], e[3], i)];
10
+ }
11
+ function u(r, e, i) {
12
+ if (!(r === void 0 && e === void 0))
13
+ return n(r ?? 0, e ?? 0, i);
14
+ }
15
+ function h(r, e, i) {
16
+ return i <= 0 ? r : i >= 1 ? e : {
17
+ ...r,
18
+ by: u(r.by, e.by, i),
19
+ armF: l(r.armF, e.armF, i),
20
+ armB: l(r.armB, e.armB, i),
21
+ legF: l(r.legF, e.legF, i),
22
+ legB: l(r.legB, e.legB, i),
23
+ hipDx: u(r.hipDx, e.hipDx, i),
24
+ hipDy: u(r.hipDy, e.hipDy, i),
25
+ headDx: u(r.headDx, e.headDx, i),
26
+ headDy: u(r.headDy, e.headDy, i),
27
+ smearArm: r.smearArm,
28
+ curl: r.curl && e.curl ? [n(r.curl[0], e.curl[0], i), n(r.curl[1], e.curl[1], i)] : r.curl
29
+ };
30
+ }
31
+ function o(r, e) {
32
+ const i = { ...r };
33
+ for (const [t, p] of Object.entries(e)) p !== void 0 && (i[t] = p);
34
+ return i;
35
+ }
36
+ function D(r, e) {
37
+ return {
38
+ ...r,
39
+ by: Math.max(-1, (r.by ?? 0) + (e.by ?? 0)),
40
+ legF: e.legF,
41
+ legB: e.legB,
42
+ hipDx: e.hipDx,
43
+ hipDy: e.hipDy,
44
+ // the far arm swings with the run, unless it holds the bow the action draws
45
+ armB: r.armBFront ? r.armB : e.armB,
46
+ trail: e.trail ?? r.trail
47
+ };
48
+ }
49
+ export {
50
+ h as blendPose,
51
+ o as overlay,
52
+ D as upperOver
53
+ };
54
+ //# sourceMappingURL=poseMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poseMath.js","sources":["../../src/rig/poseMath.ts"],"sourcesContent":["import type { Limb, RigPose } from './rigTypes';\n\nfunction lerp(a: number, b: number, k: number): number {\n return a + (b - a) * k;\n}\n\n/** Shortest turn from angle a to b, in degrees. */\nfunction lerpDeg(a: number, b: number, k: number): number {\n let d = (b - a) % 360;\n if (d > 180) d -= 360;\n if (d < -180) d += 360;\n return a + d * k;\n}\n\nfunction lerpLimb(a: Limb | undefined, b: Limb | undefined, k: number): Limb | undefined {\n if (!a || !b) return k < 1 ? a ?? b : b ?? a;\n return [lerpDeg(a[0], b[0], k), lerp(a[1], b[1], k), lerpDeg(a[2], b[2], k), lerp(a[3], b[3], k)];\n}\n\nfunction lerpOpt(a: number | undefined, b: number | undefined, k: number): number | undefined {\n if (a === undefined && b === undefined) return undefined;\n return lerp(a ?? 0, b ?? 0, k);\n}\n\n/**\n * The in-between of two poses at `k` (0 = a, 1 = b): bones turn along the shortest way and stretch, offsets slide.\n * What cannot be in between (face, cape trail, the curled torso) stays `a`'s until `b` is reached.\n */\nexport function blendPose(a: RigPose, b: RigPose, k: number): RigPose {\n if (k <= 0) return a;\n if (k >= 1) return b;\n const discrete = a;\n return {\n ...discrete,\n by: lerpOpt(a.by, b.by, k),\n armF: lerpLimb(a.armF, b.armF, k),\n armB: lerpLimb(a.armB, b.armB, k),\n legF: lerpLimb(a.legF, b.legF, k),\n legB: lerpLimb(a.legB, b.legB, k),\n hipDx: lerpOpt(a.hipDx, b.hipDx, k),\n hipDy: lerpOpt(a.hipDy, b.hipDy, k),\n headDx: lerpOpt(a.headDx, b.headDx, k),\n headDy: lerpOpt(a.headDy, b.headDy, k),\n smearArm: a.smearArm,\n curl: a.curl && b.curl ? [lerp(a.curl[0], b.curl[0], k), lerp(a.curl[1], b.curl[1], k)] : a.curl,\n };\n}\n\n/** `top` laid over `base`: every field `top` sets wins. */\nexport function overlay(base: RigPose, top: RigPose): RigPose {\n const out: RigPose = { ...base };\n for (const [key, value] of Object.entries(top)) if (value !== undefined) (out as Record<string, unknown>)[key] = value;\n return out;\n}\n\n/**\n * An action's upper body over a moving (or seated) body: the arms, head and face act while the legs keep the gait.\n * The chest takes both bobs, but rises at most a pixel so a tall hat keeps its headroom.\n */\nexport function upperOver(action: RigPose, legs: RigPose): RigPose {\n return {\n ...action,\n by: Math.max(-1, (action.by ?? 0) + (legs.by ?? 0)),\n legF: legs.legF,\n legB: legs.legB,\n hipDx: legs.hipDx,\n hipDy: legs.hipDy,\n // the far arm swings with the run, unless it holds the bow the action draws\n armB: action.armBFront ? action.armB : legs.armB,\n trail: legs.trail ?? action.trail,\n };\n}\n"],"names":["lerp","a","b","k","lerpDeg","d","lerpLimb","lerpOpt","blendPose","overlay","base","top","out","key","value","upperOver","action","legs"],"mappings":"AAEA,SAASA,EAAKC,GAAWC,GAAWC,GAAmB;AACrD,SAAOF,KAAKC,IAAID,KAAKE;AACvB;AAGA,SAASC,EAAQH,GAAWC,GAAWC,GAAmB;AACxD,MAAIE,KAAKH,IAAID,KAAK;AAClB,SAAII,IAAI,QAAKA,KAAK,MACdA,IAAI,SAAMA,KAAK,MACZJ,IAAII,IAAIF;AACjB;AAEA,SAASG,EAASL,GAAqBC,GAAqBC,GAA6B;AACvF,SAAI,CAACF,KAAK,CAACC,IAAUC,IAAI,IAAIF,KAAKC,IAAIA,KAAKD,IACpC,CAACG,EAAQH,EAAE,CAAC,GAAGC,EAAE,CAAC,GAAGC,CAAC,GAAGH,EAAKC,EAAE,CAAC,GAAGC,EAAE,CAAC,GAAGC,CAAC,GAAGC,EAAQH,EAAE,CAAC,GAAGC,EAAE,CAAC,GAAGC,CAAC,GAAGH,EAAKC,EAAE,CAAC,GAAGC,EAAE,CAAC,GAAGC,CAAC,CAAC;AAClG;AAEA,SAASI,EAAQN,GAAuBC,GAAuBC,GAA+B;AAC5F,MAAI,EAAAF,MAAM,UAAaC,MAAM;AAC7B,WAAOF,EAAKC,KAAK,GAAGC,KAAK,GAAGC,CAAC;AAC/B;AAMO,SAASK,EAAUP,GAAYC,GAAYC,GAAoB;AACpE,SAAIA,KAAK,IAAUF,IACfE,KAAK,IAAUD,IAEZ;AAAA,IACL,GAFeD;AAAA,IAGf,IAAIM,EAAQN,EAAE,IAAIC,EAAE,IAAIC,CAAC;AAAA,IACzB,MAAMG,EAASL,EAAE,MAAMC,EAAE,MAAMC,CAAC;AAAA,IAChC,MAAMG,EAASL,EAAE,MAAMC,EAAE,MAAMC,CAAC;AAAA,IAChC,MAAMG,EAASL,EAAE,MAAMC,EAAE,MAAMC,CAAC;AAAA,IAChC,MAAMG,EAASL,EAAE,MAAMC,EAAE,MAAMC,CAAC;AAAA,IAChC,OAAOI,EAAQN,EAAE,OAAOC,EAAE,OAAOC,CAAC;AAAA,IAClC,OAAOI,EAAQN,EAAE,OAAOC,EAAE,OAAOC,CAAC;AAAA,IAClC,QAAQI,EAAQN,EAAE,QAAQC,EAAE,QAAQC,CAAC;AAAA,IACrC,QAAQI,EAAQN,EAAE,QAAQC,EAAE,QAAQC,CAAC;AAAA,IACrC,UAAUF,EAAE;AAAA,IACZ,MAAMA,EAAE,QAAQC,EAAE,OAAO,CAACF,EAAKC,EAAE,KAAK,CAAC,GAAGC,EAAE,KAAK,CAAC,GAAGC,CAAC,GAAGH,EAAKC,EAAE,KAAK,CAAC,GAAGC,EAAE,KAAK,CAAC,GAAGC,CAAC,CAAC,IAAIF,EAAE;AAAA,EAAA;AAEhG;AAGO,SAASQ,EAAQC,GAAeC,GAAuB;AAC5D,QAAMC,IAAe,EAAE,GAAGF,EAAA;AAC1B,aAAW,CAACG,GAAKC,CAAK,KAAK,OAAO,QAAQH,CAAG,EAAG,CAAIG,MAAU,WAAYF,EAAgCC,CAAG,IAAIC;AACjH,SAAOF;AACT;AAMO,SAASG,EAAUC,GAAiBC,GAAwB;AACjE,SAAO;AAAA,IACL,GAAGD;AAAA,IACH,IAAI,KAAK,IAAI,KAAKA,EAAO,MAAM,MAAMC,EAAK,MAAM,EAAE;AAAA,IAClD,MAAMA,EAAK;AAAA,IACX,MAAMA,EAAK;AAAA,IACX,OAAOA,EAAK;AAAA,IACZ,OAAOA,EAAK;AAAA;AAAA,IAEZ,MAAMD,EAAO,YAAYA,EAAO,OAAOC,EAAK;AAAA,IAC5C,OAAOA,EAAK,SAASD,EAAO;AAAA,EAAA;AAEhC;"}
@@ -0,0 +1,150 @@
1
+ const a = { by: 0, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2] }, e = { by: 0, armF: [45, 2.41, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], breathe: !0, sway: 1 }, r = { by: -1, armF: [45, 2.41, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], breathe: !0, sway: 1 }, l = { by: 0, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], sway: -1 }, m = { by: -1, armF: [45, 2.41, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], breathe: !0, sway: 2 }, B = { by: 1, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], sway: -1 }, F = { by: 0, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2] }, g = { by: 1, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2] }, y = { by: 0, armF: [90, 1.7, 0, 0.85], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 1], legF: [45, 1.41, 45, 2], trail: 1 }, t = { by: -1, armF: [90, 1.7, 0, 0.85], armB: [90, 2, 0, 1], legB: [90, 1, 0, 1], legF: [90, 1, 0, 2], trail: 2 }, c = { by: 0, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [26.6, 2.24, 63.4, 1], legF: [153.4, 2.24, -63.4, 2], trail: 1 }, s = { by: 0, armF: [45, 1.2, 0, 1.2], armB: [90, 1, 45, 1.41], legB: [18.4, 3.16, 71.6, 2], legF: [166, 4.12, -76, 1], trail: 1 }, D = { by: -1, armF: [45, 1.2, 0, 1.2], armB: [90, 1, 45, 1.41], legB: [26.6, 2.24, 63.4, 2], legF: [153.4, 2.24, -63.4, 1], trail: 2 }, b = { by: 0, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [90, 1, 0, 2], legF: [90, 1, 0, 1], trail: 1 }, o = { by: 0, armF: [135, 2.41, 71.6, 1.9], armB: [21.8, 2.69, -55.5, 1.8], legB: [116.6, 2.24, 45, 3.16], legF: [90, 2, -71.6, 3.16], trail: 1 }, n = { by: 1, armF: [135, 2.41, 71.6, 1.9], armB: [21.8, 2.69, -55.5, 1.8], legB: [153.4, 2.24, 26.6, 2], legF: [63.4, 2.24, -18.4, 1.41], trail: 1 }, E = { by: 0, armF: [63.4, 1.9, -108.4, 1.2], armB: [21.8, 2.69, -55.5, 1.8], legB: [90, 0, 45, 1.41], legF: [90, 2, 45, 1.41], trail: 2 }, h = { by: -1, armF: [18.4, 2.69, -90, 2.69], armB: [21.8, 2.69, -55.5, 1.8], legB: [18.4, 3.16, -18.4, 1], legF: [153.4, 2.24, 0, 2.24], trail: 2 }, R = { by: 0, armF: [18.4, 2.69, -90, 2.69], armB: [116.6, 1.12, 63.4, 1.5], legB: [45, 2.83, -26.6, 3.16], legF: [146.3, 3.61, 15.3, 3.16], trail: 1 }, i = { by: 1, armF: [18.4, 2.69, -90, 2.69], armB: [116.6, 1.12, 63.4, 1.5], legB: [33.7, 3.61, 11.3, 1.41], legF: [166, 4.12, 14, 2], trail: 1 }, A = { by: 0, armF: [63.4, 1.9, -108.4, 1.2], armB: [116.6, 1.12, 63.4, 1.5], legB: [45, 2.83, 90, 1.41], legF: [180, 2, -45, 1.41], trail: 2 }, L = { by: -1, armF: [135, 2.41, 71.6, 1.9], armB: [116.6, 1.12, 63.4, 1.5], legB: [90, 1, 63.4, 2.24], legF: [45, 1.41, -45, 1], trail: 2 }, O = { by: 0, curl: [10, 18], hipDx: -1, hipDy: -1, headDx: 0, headDy: 5, legB: [14, 4.12, 57.5, 3.16], legF: [14, 4.12, 57.5, 3.16], armF: [94.4, 2.77, -17.4, 2.84], armB: [90, 2, 0, 1] }, p = { by: 0, curl: [10, 17], hipDx: -1, hipDy: -2, headDx: 3, headDy: 8, legB: [-9.5, 6.08, -80.5, 4], legF: [-9.5, 6.08, -80.5, 4], armF: [-45, 0.6, 63.4, 1.34], armB: [90, 2, 0, 1] }, T = { by: 0, curl: [9, 16], hipDx: -2, hipDy: -3, headDx: 3, headDy: 10, legB: [-39.8, 7.81, -103.3, 5], legF: [-39.8, 7.81, -103.3, 5], armF: [-114.8, 3.04, 46.6, 1.15], armB: [90, 2, 0, 1] }, S = { by: 0, curl: [8, 16], hipDx: -3, hipDy: -3, headDx: 1, headDy: 10, legB: [-74.1, 7.28, -117.3, 5.1], legF: [-74.1, 7.28, -117.3, 5.1], armF: [-145.6, 4.9, 1.2, 1.83], armB: [90, 2, 0, 1] }, H = { by: 0, curl: [9, 17], hipDx: -2, hipDy: -2, headDx: 0, headDy: 8, legB: [-135, 4.24, -135, 5], legF: [-135, 4.24, -135, 5], armF: [171.5, 4.3, -21.7, 2.95], armB: [90, 2, 0, 1] }, d = { by: 0, curl: [10, 18], hipDx: -1, hipDy: -1, headDx: 0, headDy: 5, legB: [90, 1, 18.4, 3.16], legF: [90, 1, 18.4, 3.16], armF: [130.2, 3.62, -11.9, 3.14], armB: [90, 2, 0, 1] }, _ = { by: 0, curl: [10, 18], hipDx: -1, hipDy: -1, headDx: 2, headDy: 7, legB: [0, 5, -45, 1.41], legF: [0, 5, -45, 1.41], armF: [81.9, 1.5, -27.4, 1.83], armB: [90, 2, 0, 1] }, x = { by: 0, curl: [10, 17], hipDx: -1, hipDy: -2, headDx: 3, headDy: 9, legB: [-26.6, 6.71, -90, 4.47], legF: [-26.6, 6.71, -90, 4.47], armF: [-90, 1.27, 63.4, 0.95], armB: [90, 2, 0, 1] }, u = { by: 0, curl: [9, 16], hipDx: -2, hipDy: -3, headDx: 2, headDy: 10, legB: [-56.3, 7.21, -112.4, 5.1], legF: [-56.3, 7.21, -112.4, 5.1], armF: [-130.2, 3.62, 9.3, 1.24], armB: [90, 2, 0, 1] }, I = { by: 0, curl: [9, 17], hipDx: -2, hipDy: -2, headDx: 1, headDy: 9, legB: [-101.3, 5.1, -135, 3.61], legF: [-101.3, 5.1, -135, 3.61], armF: [-170.5, 3.88, -15.2, 2.13], armB: [90, 2, 0, 1] }, C = { by: 0, curl: [10, 18], hipDx: -1, hipDy: -1, headDx: 0, headDy: 7, legB: [-153.4, 2.24, -116.6, 4], legF: [-153.4, 2.24, -116.6, 4], armF: [144.5, 3.66, -9.5, 3.01], armB: [90, 2, 0, 1] }, G = { by: 0, curl: [10, 18], hipDx: -1, hipDy: -1, headDx: 0, headDy: 3, legB: [45, 2.83, 45, 2], legF: [45, 2.83, 45, 2], armF: [113.2, 3.24, -15.1, 3.01], armB: [90, 2, 0, 1] }, W = { by: 1, armF: [90, 1.7, 0, 0.85], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 1], legF: [45, 1.41, 45, 2] }, f = { by: 0, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], face: "blink", headDx: -1 }, N = { by: 1, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], face: "dizzy" }, U = { by: 2, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, V = { by: 2, armF: [45, 1.2, 0, 1.2], armB: [90, 1, 45, 1.41], legB: [116.6, 2.24, 45, 3.16], legF: [26.6, 2.24, 63.4, 2] }, J = { by: 0, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [0, 2, 63.4, 2.24], legF: [0, 1, 63.4, 2.24] }, w = { by: 5, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], hipDy: 3, legB: [0, 2, -26.6, 2.24], legF: [0, 3, -26.6, 2.24] }, Y = { by: 2, armF: [63.4, 1.9, 8.1, 2.69], armB: [90, 2, 0, 1], legB: [116.6, 2.24, 45, 3.16], legF: [26.6, 2.24, 63.4, 2] }, k = { by: 0, armF: [45, 1.2, 45, 1.7], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], lookBack: !0 }, K = { by: -1, armF: [-63.4, 1.9, -26.6, 1.7], armB: [-90, 2, 0, 2], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], face: "blink" }, M = { by: -1, armF: [-63.4, 1.9, -26.6, 1.7], armB: [-90, 2, 0, 2], legB: [135, 1.41, -45, 1], legF: [90, 1, 0, 1], face: "happy" }, z = { by: 0, armF: [-45, 2.41, -18.4, 3.8], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], face: "happy" }, P = { by: 0, armF: [-45, 2.41, -56.3, 4.34], armB: [90, 2, 0, 1], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2], face: "happy" }, Z = { by: -1, armF: [-63.4, 1.9, -26.6, 1.7], armB: [-90, 2, 0, 2], legB: [153.4, 2.24, -63.4, 1], legF: [45, 1.41, 45, 2], face: "happy" }, j = { by: 0, armF: [-45, 2.41, -18.4, 3.8], armB: [90, 2, 0, 1], legB: [18.4, 3.16, 71.6, 2], legF: [161.6, 3.16, -71.6, 1], face: "happy" }, q = { by: 1, armF: [-110, 1.9, 63, 3.06], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, v = { by: 1, armF: [-90, 1.7, 11.3, 4.34], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2], smearArm: [-110, 1.9, 63, 3.06] }, Q = { by: 0, armF: [-33.7, 3.07, 15.3, 2.69], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, X = { by: 1, armF: [33.7, 3.07, 22.6, 3.07], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2], smearArm: [33.7, 3.07, 11.3, 2.41] }, $ = { by: 1, armF: [33.7, 3.07, 11.3, 2.41], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, a1 = { by: 0, armF: [45, 2.41, 18.4, 1.9], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, e1 = { by: 1, armF: [116.6, 1.9, -180, 1.9], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, r1 = { by: 1, armF: [0, 2.55, 0, 2.55], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2], smearArm: [0, 1.7, 0, 1.7] }, l1 = { by: 0, armF: [45, 1.2, -90, 1.2], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2], smearArm: [116.6, 1.9, -180, 1.9] }, m1 = { by: 0, armF: [0, 1.7, 0, 1.7], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, B1 = { by: 0, armF: [45, 1.2, 0, 1.2], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, F1 = { by: 1, armF: [-71.6, 2.69, -45, 1.9], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, g1 = { by: 0, armF: [-59, 4.96, -40.4, 5.17], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, y1 = { by: 0, armF: [-36.9, 4.25, 10.3, 1.9], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2], smearArm: [-59, 4.96, -40.4, 5.17] }, t1 = { by: 0, armF: [-26.6, 3.8, 53.1, 1.9], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2], smearArm: [-36.9, 4.25, 10.3, 1.9] }, c1 = { by: 1, armF: [45, 1.2, 0, 1.2], armB: [90, 1, 45, 1.41], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2] }, s1 = { by: 0, armF: [-63.4, 1.9, -26.6, 1.7], armB: [-90, 2, 0, 2], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2] }, D1 = { by: -1, armF: [-63.4, 1.9, -26.6, 1.7], armB: [-90, 2, 0, 2], legB: [135, 1.41, -45, 2], legF: [90, 1, 0, 2] }, b1 = { by: 1, armF: [-130, 2.41, 26.6, 2.69], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, o1 = { by: 1, armF: [-123.7, 3.07, 0, 3.07], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, n1 = { by: 0, armF: [-45, 2.41, 45, 1.7], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, E1 = { by: 1, armF: [-90, 3.4, 18.4, 2.69], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2], smearArm: [-135, 2.41, 26.6, 2.69] }, h1 = { by: 0, armF: [26.6, 1.9, 63.4, 1.7], armB: [90, 2, 0, 1], legB: [153.4, 2.24, -63.4, 2], legF: [45, 1.41, 45, 2] }, R1 = {
2
+ BREATHE0: a,
3
+ BREATHE1: e,
4
+ BREATHE2: r,
5
+ BREATHE3: l,
6
+ BREATHE4: m,
7
+ BREATHE5: B,
8
+ IDLE0: F,
9
+ IDLE1: g,
10
+ STRIDE0: y,
11
+ STRIDE1: t,
12
+ STRIDE2: c,
13
+ STRIDE3: s,
14
+ STRIDE4: D,
15
+ STRIDE5: b,
16
+ JOG0: o,
17
+ JOG1: n,
18
+ JOG2: E,
19
+ JOG3: h,
20
+ JOG4: R,
21
+ JOG5: i,
22
+ JOG6: A,
23
+ JOG7: L,
24
+ ROLL0: O,
25
+ ROLL1: p,
26
+ ROLL2: T,
27
+ ROLL3: S,
28
+ ROLL4: H,
29
+ ROLL5: d,
30
+ ROLL6: _,
31
+ ROLL7: x,
32
+ ROLL8: u,
33
+ ROLL9: I,
34
+ ROLL10: C,
35
+ ROLL11: G,
36
+ DASH: W,
37
+ HURT: f,
38
+ DIZZY: N,
39
+ CROUCH: U,
40
+ KNEEL: V,
41
+ SIT: J,
42
+ SIT_GROUND: w,
43
+ PICK: Y,
44
+ LOOK_BACK: k,
45
+ STRETCH: K,
46
+ CHEER: M,
47
+ WAVE_A: z,
48
+ WAVE_B: P,
49
+ DANCE_A: Z,
50
+ DANCE_B: j,
51
+ SLASH_READY: q,
52
+ SLASH_WIND: v,
53
+ SLASH_SWEEP: Q,
54
+ SLASH_FOLLOW: X,
55
+ SLASH_END: $,
56
+ SLASH_RECOVER: a1,
57
+ THRUST_READY: e1,
58
+ THRUST_LUNGE: r1,
59
+ THRUST_MID: l1,
60
+ THRUST_END: m1,
61
+ THRUST_RECOVER: B1,
62
+ OVERHEAD_READY: F1,
63
+ OVERHEAD: g1,
64
+ OVERHEAD_MID: y1,
65
+ OVERHEAD_FALL: t1,
66
+ CAST_CHARGE: c1,
67
+ CAST: s1,
68
+ CAST_RELEASE: D1,
69
+ THROW_READY: b1,
70
+ THROW_WIND: o1,
71
+ THROW_RELEASE: n1,
72
+ THROW_MID: E1,
73
+ THROW_RECOVER: h1
74
+ };
75
+ export {
76
+ a as BREATHE0,
77
+ e as BREATHE1,
78
+ r as BREATHE2,
79
+ l as BREATHE3,
80
+ m as BREATHE4,
81
+ B as BREATHE5,
82
+ s1 as CAST,
83
+ c1 as CAST_CHARGE,
84
+ D1 as CAST_RELEASE,
85
+ M as CHEER,
86
+ U as CROUCH,
87
+ Z as DANCE_A,
88
+ j as DANCE_B,
89
+ W as DASH,
90
+ N as DIZZY,
91
+ f as HURT,
92
+ F as IDLE0,
93
+ g as IDLE1,
94
+ o as JOG0,
95
+ n as JOG1,
96
+ E as JOG2,
97
+ h as JOG3,
98
+ R as JOG4,
99
+ i as JOG5,
100
+ A as JOG6,
101
+ L as JOG7,
102
+ V as KNEEL,
103
+ k as LOOK_BACK,
104
+ g1 as OVERHEAD,
105
+ t1 as OVERHEAD_FALL,
106
+ y1 as OVERHEAD_MID,
107
+ F1 as OVERHEAD_READY,
108
+ Y as PICK,
109
+ O as ROLL0,
110
+ p as ROLL1,
111
+ C as ROLL10,
112
+ G as ROLL11,
113
+ T as ROLL2,
114
+ S as ROLL3,
115
+ H as ROLL4,
116
+ d as ROLL5,
117
+ _ as ROLL6,
118
+ x as ROLL7,
119
+ u as ROLL8,
120
+ I as ROLL9,
121
+ J as SIT,
122
+ w as SIT_GROUND,
123
+ $ as SLASH_END,
124
+ X as SLASH_FOLLOW,
125
+ q as SLASH_READY,
126
+ a1 as SLASH_RECOVER,
127
+ Q as SLASH_SWEEP,
128
+ v as SLASH_WIND,
129
+ K as STRETCH,
130
+ y as STRIDE0,
131
+ t as STRIDE1,
132
+ c as STRIDE2,
133
+ s as STRIDE3,
134
+ D as STRIDE4,
135
+ b as STRIDE5,
136
+ E1 as THROW_MID,
137
+ b1 as THROW_READY,
138
+ h1 as THROW_RECOVER,
139
+ n1 as THROW_RELEASE,
140
+ o1 as THROW_WIND,
141
+ m1 as THRUST_END,
142
+ r1 as THRUST_LUNGE,
143
+ l1 as THRUST_MID,
144
+ e1 as THRUST_READY,
145
+ B1 as THRUST_RECOVER,
146
+ z as WAVE_A,
147
+ P as WAVE_B,
148
+ R1 as default
149
+ };
150
+ //# sourceMappingURL=poses.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poses.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,54 @@
1
+ const h = {
2
+ now: () => Date.now(),
3
+ setTimeout: (i, t) => setTimeout(i, t),
4
+ clearTimeout: (i) => clearTimeout(i)
5
+ };
6
+ class l {
7
+ constructor(t, s, r, e = {}) {
8
+ this.store = t, this.slot = s, this.snapshot = r, this.options = e, this.intervalMs = e.intervalMs ?? 3e4, this.timers = e.timers ?? h;
9
+ }
10
+ store;
11
+ slot;
12
+ snapshot;
13
+ options;
14
+ intervalMs;
15
+ timers;
16
+ lastSave = -1 / 0;
17
+ dirty = !1;
18
+ timer = null;
19
+ inFlight = null;
20
+ disposed = !1;
21
+ /** Something worth saving changed. */
22
+ request() {
23
+ if (this.disposed || (this.dirty = !0, this.timer !== null || this.inFlight)) return;
24
+ const t = this.lastSave + this.intervalMs - this.timers.now();
25
+ t <= 0 ? this.run() : this.timer = this.timers.setTimeout(() => {
26
+ this.timer = null, this.run();
27
+ }, t);
28
+ }
29
+ /** Saves now if anything is waiting (leaving the game, a scene change); resolves when it is written. */
30
+ async flush() {
31
+ this.timer !== null && (this.timers.clearTimeout(this.timer), this.timer = null), this.inFlight && await this.inFlight, this.dirty && await this.run();
32
+ }
33
+ /** Stops autosaving; a pending trailing save is dropped (call `flush` first to keep it). */
34
+ dispose() {
35
+ this.disposed = !0, this.timer !== null && this.timers.clearTimeout(this.timer), this.timer = null;
36
+ }
37
+ run() {
38
+ this.dirty = !1, this.lastSave = this.timers.now();
39
+ const t = (async () => {
40
+ try {
41
+ await this.store.save(this.slot, this.snapshot(), this.options.meta?.() ?? null);
42
+ } catch (s) {
43
+ this.options.onError ? this.options.onError(s) : console.error("[autosave] failed", s);
44
+ }
45
+ })();
46
+ return this.inFlight = t, t.then(() => {
47
+ this.inFlight = null, this.dirty && !this.disposed && (this.dirty = !1, this.request());
48
+ }), t;
49
+ }
50
+ }
51
+ export {
52
+ l as Autosaver
53
+ };
54
+ //# sourceMappingURL=Autosaver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Autosaver.js","sources":["../../src/save/Autosaver.ts"],"sourcesContent":["import type { SaveStore } from './SaveStore';\n\n/** The clock and timers the autosaver uses; tests hand in fake ones. */\nexport interface AutosaveTimers {\n now(): number;\n setTimeout(fn: () => void, ms: number): unknown;\n clearTimeout(handle: unknown): void;\n}\n\nexport interface AutosaverOptions {\n /** Least time between two saves, ms (default 30,000). */\n intervalMs?: number;\n /** Small summary stored beside each save (see `SaveStore.save`). */\n meta?: () => unknown;\n /** Told when a save fails; autosaving carries on. */\n onError?: (err: unknown) => void;\n timers?: AutosaveTimers;\n}\n\nconst REAL_TIMERS: AutosaveTimers = {\n now: () => Date.now(),\n setTimeout: (fn, ms) => setTimeout(fn, ms),\n clearTimeout: (h) => clearTimeout(h as ReturnType<typeof setTimeout>),\n};\n\n/**\n * Saves a slot when the game says something changed, but never more often than `intervalMs`: a burst of changes\n * (every pickup in a fight) becomes one save now and one trailing save at the end of the interval with the newest\n * state. `snapshot` is read when the save happens, not when it was asked for, so the trailing save is never stale.\n */\nexport class Autosaver {\n private readonly intervalMs: number;\n private readonly timers: AutosaveTimers;\n private lastSave = -Infinity;\n private dirty = false;\n private timer: unknown = null;\n private inFlight: Promise<void> | null = null;\n private disposed = false;\n\n constructor(\n private readonly store: SaveStore,\n private readonly slot: string,\n private readonly snapshot: () => unknown,\n private readonly options: AutosaverOptions = {},\n ) {\n this.intervalMs = options.intervalMs ?? 30_000;\n this.timers = options.timers ?? REAL_TIMERS;\n }\n\n /** Something worth saving changed. */\n request(): void {\n if (this.disposed) return;\n this.dirty = true;\n if (this.timer !== null || this.inFlight) return;\n const wait = this.lastSave + this.intervalMs - this.timers.now();\n if (wait <= 0) void this.run();\n else this.timer = this.timers.setTimeout(() => {\n this.timer = null;\n void this.run();\n }, wait);\n }\n\n /** Saves now if anything is waiting (leaving the game, a scene change); resolves when it is written. */\n async flush(): Promise<void> {\n if (this.timer !== null) {\n this.timers.clearTimeout(this.timer);\n this.timer = null;\n }\n if (this.inFlight) await this.inFlight;\n if (this.dirty) await this.run();\n }\n\n /** Stops autosaving; a pending trailing save is dropped (call `flush` first to keep it). */\n dispose(): void {\n this.disposed = true;\n if (this.timer !== null) this.timers.clearTimeout(this.timer);\n this.timer = null;\n }\n\n private run(): Promise<void> {\n this.dirty = false;\n this.lastSave = this.timers.now();\n const job = (async () => {\n try {\n await this.store.save(this.slot, this.snapshot(), this.options.meta?.() ?? null);\n } catch (err) {\n if (this.options.onError) this.options.onError(err);\n else console.error('[autosave] failed', err);\n }\n })();\n this.inFlight = job;\n void job.then(() => {\n this.inFlight = null;\n // changes made while the save was being written wait for the next interval\n if (this.dirty && !this.disposed) {\n this.dirty = false;\n this.request();\n }\n });\n return job;\n }\n}\n"],"names":["REAL_TIMERS","fn","ms","h","Autosaver","store","slot","snapshot","options","wait","job","err"],"mappings":"AAmBA,MAAMA,IAA8B;AAAA,EAClC,KAAK,MAAM,KAAK,IAAA;AAAA,EAChB,YAAY,CAACC,GAAIC,MAAO,WAAWD,GAAIC,CAAE;AAAA,EACzC,cAAc,CAACC,MAAM,aAAaA,CAAkC;AACtE;AAOO,MAAMC,EAAU;AAAA,EASrB,YACmBC,GACAC,GACAC,GACAC,IAA4B,CAAA,GAC7C;AAJiB,SAAA,QAAAH,GACA,KAAA,OAAAC,GACA,KAAA,WAAAC,GACA,KAAA,UAAAC,GAEjB,KAAK,aAAaA,EAAQ,cAAc,KACxC,KAAK,SAASA,EAAQ,UAAUR;AAAA,EAClC;AAAA,EAPmB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAZF;AAAA,EACA;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAiB;AAAA,EACjB,WAAiC;AAAA,EACjC,WAAW;AAAA;AAAA,EAanB,UAAgB;AAGd,QAFI,KAAK,aACT,KAAK,QAAQ,IACT,KAAK,UAAU,QAAQ,KAAK,UAAU;AAC1C,UAAMS,IAAO,KAAK,WAAW,KAAK,aAAa,KAAK,OAAO,IAAA;AAC3D,IAAIA,KAAQ,IAAQ,KAAK,IAAA,IACpB,KAAK,QAAQ,KAAK,OAAO,WAAW,MAAM;AAC7C,WAAK,QAAQ,MACR,KAAK,IAAA;AAAA,IACZ,GAAGA,CAAI;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,QAAuB;AAC3B,IAAI,KAAK,UAAU,SACjB,KAAK,OAAO,aAAa,KAAK,KAAK,GACnC,KAAK,QAAQ,OAEX,KAAK,YAAU,MAAM,KAAK,UAC1B,KAAK,SAAO,MAAM,KAAK,IAAA;AAAA,EAC7B;AAAA;AAAA,EAGA,UAAgB;AACd,SAAK,WAAW,IACZ,KAAK,UAAU,aAAW,OAAO,aAAa,KAAK,KAAK,GAC5D,KAAK,QAAQ;AAAA,EACf;AAAA,EAEQ,MAAqB;AAC3B,SAAK,QAAQ,IACb,KAAK,WAAW,KAAK,OAAO,IAAA;AAC5B,UAAMC,KAAO,YAAY;AACvB,UAAI;AACF,cAAM,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK,SAAA,GAAY,KAAK,QAAQ,OAAA,KAAY,IAAI;AAAA,MACjF,SAASC,GAAK;AACZ,QAAI,KAAK,QAAQ,UAAS,KAAK,QAAQ,QAAQA,CAAG,IAC7C,QAAQ,MAAM,qBAAqBA,CAAG;AAAA,MAC7C;AAAA,IACF,GAAA;AACA,gBAAK,WAAWD,GACXA,EAAI,KAAK,MAAM;AAClB,WAAK,WAAW,MAEZ,KAAK,SAAS,CAAC,KAAK,aACtB,KAAK,QAAQ,IACb,KAAK,QAAA;AAAA,IAET,CAAC,GACMA;AAAA,EACT;AACF;"}
@@ -0,0 +1,19 @@
1
+ class r {
2
+ entries = /* @__PURE__ */ new Map();
3
+ async read(e) {
4
+ return this.entries.get(e) ?? null;
5
+ }
6
+ async write(e, s) {
7
+ this.entries.set(e, s);
8
+ }
9
+ async remove(e) {
10
+ this.entries.delete(e);
11
+ }
12
+ async keys(e) {
13
+ return [...this.entries.keys()].filter((s) => s.startsWith(e));
14
+ }
15
+ }
16
+ export {
17
+ r as MemoryBackend
18
+ };
19
+ //# sourceMappingURL=MemoryBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryBackend.js","sources":["../../src/save/MemoryBackend.ts"],"sourcesContent":["import type { SaveBackend } from './SaveBackend';\n\n/** Slots kept in a map for the life of the page: for tests, tools and a browser that refuses storage. */\nexport class MemoryBackend implements SaveBackend {\n readonly entries = new Map<string, string>();\n\n async read(key: string): Promise<string | null> {\n return this.entries.get(key) ?? null;\n }\n\n async write(key: string, value: string): Promise<void> {\n this.entries.set(key, value);\n }\n\n async remove(key: string): Promise<void> {\n this.entries.delete(key);\n }\n\n async keys(prefix: string): Promise<string[]> {\n return [...this.entries.keys()].filter((k) => k.startsWith(prefix));\n }\n}\n"],"names":["MemoryBackend","key","value","prefix","k"],"mappings":"AAGO,MAAMA,EAAqC;AAAA,EACvC,8BAAc,IAAA;AAAA,EAEvB,MAAM,KAAKC,GAAqC;AAC9C,WAAO,KAAK,QAAQ,IAAIA,CAAG,KAAK;AAAA,EAClC;AAAA,EAEA,MAAM,MAAMA,GAAaC,GAA8B;AACrD,SAAK,QAAQ,IAAID,GAAKC,CAAK;AAAA,EAC7B;AAAA,EAEA,MAAM,OAAOD,GAA4B;AACvC,SAAK,QAAQ,OAAOA,CAAG;AAAA,EACzB;AAAA,EAEA,MAAM,KAAKE,GAAmC;AAC5C,WAAO,CAAC,GAAG,KAAK,QAAQ,KAAA,CAAM,EAAE,OAAO,CAACC,MAAMA,EAAE,WAAWD,CAAM,CAAC;AAAA,EACpE;AACF;"}