@rb-games/core 0.1.0

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 (388) hide show
  1. package/README.md +488 -0
  2. package/dist/devtools/DraggableController.d.ts +10 -0
  3. package/dist/devtools/DraggableController.d.ts.map +1 -0
  4. package/dist/devtools/ResizableController.d.ts +19 -0
  5. package/dist/devtools/ResizableController.d.ts.map +1 -0
  6. package/dist/devtools/index.d.ts +7 -0
  7. package/dist/devtools/index.d.ts.map +1 -0
  8. package/dist/devtools/index.js +884 -0
  9. package/dist/devtools/index.js.map +1 -0
  10. package/dist/devtools/overlayPlugin.d.ts +3 -0
  11. package/dist/devtools/overlayPlugin.d.ts.map +1 -0
  12. package/dist/devtools/spinePropertiesPlugin.d.ts +3 -0
  13. package/dist/devtools/spinePropertiesPlugin.d.ts.map +1 -0
  14. package/dist/devtools/spriteTextPropertiesPlugin.d.ts +3 -0
  15. package/dist/devtools/spriteTextPropertiesPlugin.d.ts.map +1 -0
  16. package/dist/devtools/treePlugin.d.ts +7 -0
  17. package/dist/devtools/treePlugin.d.ts.map +1 -0
  18. package/dist/engine/PixiEngine.d.ts +404 -0
  19. package/dist/engine/PixiEngine.d.ts.map +1 -0
  20. package/dist/engine/index.d.ts +2 -0
  21. package/dist/engine/index.d.ts.map +1 -0
  22. package/dist/engine/index.js +1818 -0
  23. package/dist/engine/index.js.map +1 -0
  24. package/dist/filters/ChromaKeyFilter.d.ts +64 -0
  25. package/dist/filters/ChromaKeyFilter.d.ts.map +1 -0
  26. package/dist/filters/index.d.ts +2 -0
  27. package/dist/filters/index.d.ts.map +1 -0
  28. package/dist/filters/index.js +248 -0
  29. package/dist/filters/index.js.map +1 -0
  30. package/dist/helpers/AssetHelper.d.ts +117 -0
  31. package/dist/helpers/AssetHelper.d.ts.map +1 -0
  32. package/dist/helpers/SVGAssetHelper.d.ts +397 -0
  33. package/dist/helpers/SVGAssetHelper.d.ts.map +1 -0
  34. package/dist/helpers/SVGLoader.d.ts +46 -0
  35. package/dist/helpers/SVGLoader.d.ts.map +1 -0
  36. package/dist/helpers/SVGParser.d.ts +121 -0
  37. package/dist/helpers/SVGParser.d.ts.map +1 -0
  38. package/dist/helpers/eventBridge.d.ts +150 -0
  39. package/dist/helpers/eventBridge.d.ts.map +1 -0
  40. package/dist/helpers/index.d.ts +8 -0
  41. package/dist/helpers/index.d.ts.map +1 -0
  42. package/dist/helpers/index.js +702 -0
  43. package/dist/helpers/index.js.map +1 -0
  44. package/dist/helpers/mergeUtils.d.ts +21 -0
  45. package/dist/helpers/mergeUtils.d.ts.map +1 -0
  46. package/dist/helpers/resolvePublicPath.d.ts +6 -0
  47. package/dist/helpers/resolvePublicPath.d.ts.map +1 -0
  48. package/dist/i18n/index.d.ts +2 -0
  49. package/dist/i18n/index.d.ts.map +1 -0
  50. package/dist/i18n/index.js +527 -0
  51. package/dist/i18n/index.js.map +1 -0
  52. package/dist/i18n/sharedI18n.d.ts +11 -0
  53. package/dist/i18n/sharedI18n.d.ts.map +1 -0
  54. package/dist/layout/Align.d.ts +126 -0
  55. package/dist/layout/Align.d.ts.map +1 -0
  56. package/dist/layout/Bounds.d.ts +120 -0
  57. package/dist/layout/Bounds.d.ts.map +1 -0
  58. package/dist/layout/Distribute.d.ts +103 -0
  59. package/dist/layout/Distribute.d.ts.map +1 -0
  60. package/dist/layout/Flow.d.ts +213 -0
  61. package/dist/layout/Flow.d.ts.map +1 -0
  62. package/dist/layout/PositionUtils.d.ts +57 -0
  63. package/dist/layout/PositionUtils.d.ts.map +1 -0
  64. package/dist/layout/index.d.ts +6 -0
  65. package/dist/layout/index.d.ts.map +1 -0
  66. package/dist/layout/index.js +673 -0
  67. package/dist/layout/index.js.map +1 -0
  68. package/dist/particle/Emitter.d.ts +290 -0
  69. package/dist/particle/Emitter.d.ts.map +1 -0
  70. package/dist/particle/EmitterConfig.d.ts +228 -0
  71. package/dist/particle/EmitterConfig.d.ts.map +1 -0
  72. package/dist/particle/LinkedListContainer.d.ts +7 -0
  73. package/dist/particle/LinkedListContainer.d.ts.map +1 -0
  74. package/dist/particle/Particle.d.ts +63 -0
  75. package/dist/particle/Particle.d.ts.map +1 -0
  76. package/dist/particle/ParticleUtils.d.ts +97 -0
  77. package/dist/particle/ParticleUtils.d.ts.map +1 -0
  78. package/dist/particle/PropertyList.d.ts +40 -0
  79. package/dist/particle/PropertyList.d.ts.map +1 -0
  80. package/dist/particle/PropertyNode.d.ts +74 -0
  81. package/dist/particle/PropertyNode.d.ts.map +1 -0
  82. package/dist/particle/SpineEmitter.d.ts +55 -0
  83. package/dist/particle/SpineEmitter.d.ts.map +1 -0
  84. package/dist/particle/SpineParticle.d.ts +74 -0
  85. package/dist/particle/SpineParticle.d.ts.map +1 -0
  86. package/dist/particle/behaviors/AccelerationMovement.d.ts +62 -0
  87. package/dist/particle/behaviors/AccelerationMovement.d.ts.map +1 -0
  88. package/dist/particle/behaviors/Alpha.d.ts +60 -0
  89. package/dist/particle/behaviors/Alpha.d.ts.map +1 -0
  90. package/dist/particle/behaviors/AnimatedTexture.d.ts +111 -0
  91. package/dist/particle/behaviors/AnimatedTexture.d.ts.map +1 -0
  92. package/dist/particle/behaviors/Behaviors.d.ts +71 -0
  93. package/dist/particle/behaviors/Behaviors.d.ts.map +1 -0
  94. package/dist/particle/behaviors/BlendMode.d.ts +31 -0
  95. package/dist/particle/behaviors/BlendMode.d.ts.map +1 -0
  96. package/dist/particle/behaviors/BurstSpawn.d.ts +43 -0
  97. package/dist/particle/behaviors/BurstSpawn.d.ts.map +1 -0
  98. package/dist/particle/behaviors/Color.d.ts +60 -0
  99. package/dist/particle/behaviors/Color.d.ts.map +1 -0
  100. package/dist/particle/behaviors/MultiStateAnimatedTexture.d.ts +99 -0
  101. package/dist/particle/behaviors/MultiStateAnimatedTexture.d.ts.map +1 -0
  102. package/dist/particle/behaviors/OrderedTexture.d.ts +33 -0
  103. package/dist/particle/behaviors/OrderedTexture.d.ts.map +1 -0
  104. package/dist/particle/behaviors/PathMovement.d.ts +68 -0
  105. package/dist/particle/behaviors/PathMovement.d.ts.map +1 -0
  106. package/dist/particle/behaviors/PointSpawn.d.ts +21 -0
  107. package/dist/particle/behaviors/PointSpawn.d.ts.map +1 -0
  108. package/dist/particle/behaviors/RandomColor.d.ts +17 -0
  109. package/dist/particle/behaviors/RandomColor.d.ts.map +1 -0
  110. package/dist/particle/behaviors/RandomTexture.d.ts +32 -0
  111. package/dist/particle/behaviors/RandomTexture.d.ts.map +1 -0
  112. package/dist/particle/behaviors/Rotation.d.ts +114 -0
  113. package/dist/particle/behaviors/Rotation.d.ts.map +1 -0
  114. package/dist/particle/behaviors/Scale.d.ts +74 -0
  115. package/dist/particle/behaviors/Scale.d.ts.map +1 -0
  116. package/dist/particle/behaviors/ShapeSpawn.d.ts +58 -0
  117. package/dist/particle/behaviors/ShapeSpawn.d.ts.map +1 -0
  118. package/dist/particle/behaviors/SingleTexture.d.ts +32 -0
  119. package/dist/particle/behaviors/SingleTexture.d.ts.map +1 -0
  120. package/dist/particle/behaviors/SpeedMovement.d.ts +76 -0
  121. package/dist/particle/behaviors/SpeedMovement.d.ts.map +1 -0
  122. package/dist/particle/behaviors/SpineTexture.d.ts +173 -0
  123. package/dist/particle/behaviors/SpineTexture.d.ts.map +1 -0
  124. package/dist/particle/behaviors/ZindexBehavior.d.ts +16 -0
  125. package/dist/particle/behaviors/ZindexBehavior.d.ts.map +1 -0
  126. package/dist/particle/behaviors/editor/Types.d.ts +104 -0
  127. package/dist/particle/behaviors/editor/Types.d.ts.map +1 -0
  128. package/dist/particle/behaviors/editor/behaviors/AccelerationMovement.d.ts +2 -0
  129. package/dist/particle/behaviors/editor/behaviors/AccelerationMovement.d.ts.map +1 -0
  130. package/dist/particle/behaviors/editor/behaviors/Alpha.d.ts +2 -0
  131. package/dist/particle/behaviors/editor/behaviors/Alpha.d.ts.map +1 -0
  132. package/dist/particle/behaviors/editor/behaviors/AnimatedTexture.d.ts +2 -0
  133. package/dist/particle/behaviors/editor/behaviors/AnimatedTexture.d.ts.map +1 -0
  134. package/dist/particle/behaviors/editor/behaviors/BlendMode.d.ts +2 -0
  135. package/dist/particle/behaviors/editor/behaviors/BlendMode.d.ts.map +1 -0
  136. package/dist/particle/behaviors/editor/behaviors/BurstSpawn.d.ts +2 -0
  137. package/dist/particle/behaviors/editor/behaviors/BurstSpawn.d.ts.map +1 -0
  138. package/dist/particle/behaviors/editor/behaviors/Color.d.ts +2 -0
  139. package/dist/particle/behaviors/editor/behaviors/Color.d.ts.map +1 -0
  140. package/dist/particle/behaviors/editor/behaviors/OrderedTexture.d.ts +2 -0
  141. package/dist/particle/behaviors/editor/behaviors/OrderedTexture.d.ts.map +1 -0
  142. package/dist/particle/behaviors/editor/behaviors/PathMovement.d.ts +2 -0
  143. package/dist/particle/behaviors/editor/behaviors/PathMovement.d.ts.map +1 -0
  144. package/dist/particle/behaviors/editor/behaviors/PointSpawn.d.ts +2 -0
  145. package/dist/particle/behaviors/editor/behaviors/PointSpawn.d.ts.map +1 -0
  146. package/dist/particle/behaviors/editor/behaviors/RandomTexture.d.ts +2 -0
  147. package/dist/particle/behaviors/editor/behaviors/RandomTexture.d.ts.map +1 -0
  148. package/dist/particle/behaviors/editor/behaviors/Rotation.d.ts +2 -0
  149. package/dist/particle/behaviors/editor/behaviors/Rotation.d.ts.map +1 -0
  150. package/dist/particle/behaviors/editor/behaviors/Scale.d.ts +2 -0
  151. package/dist/particle/behaviors/editor/behaviors/Scale.d.ts.map +1 -0
  152. package/dist/particle/behaviors/editor/behaviors/ShapeSpawn.d.ts +2 -0
  153. package/dist/particle/behaviors/editor/behaviors/ShapeSpawn.d.ts.map +1 -0
  154. package/dist/particle/behaviors/editor/behaviors/SingleTexture.d.ts +2 -0
  155. package/dist/particle/behaviors/editor/behaviors/SingleTexture.d.ts.map +1 -0
  156. package/dist/particle/behaviors/editor/behaviors/SpeedMovement.d.ts +2 -0
  157. package/dist/particle/behaviors/editor/behaviors/SpeedMovement.d.ts.map +1 -0
  158. package/dist/particle/behaviors/editor/behaviors/index.d.ts +15 -0
  159. package/dist/particle/behaviors/editor/behaviors/index.d.ts.map +1 -0
  160. package/dist/particle/behaviors/editor/index.d.ts +5 -0
  161. package/dist/particle/behaviors/editor/index.d.ts.map +1 -0
  162. package/dist/particle/behaviors/editor/shapes/PolygonalChain.d.ts +2 -0
  163. package/dist/particle/behaviors/editor/shapes/PolygonalChain.d.ts.map +1 -0
  164. package/dist/particle/behaviors/editor/shapes/Rectangle.d.ts +2 -0
  165. package/dist/particle/behaviors/editor/shapes/Rectangle.d.ts.map +1 -0
  166. package/dist/particle/behaviors/editor/shapes/Torus.d.ts +2 -0
  167. package/dist/particle/behaviors/editor/shapes/Torus.d.ts.map +1 -0
  168. package/dist/particle/behaviors/index.d.ts +25 -0
  169. package/dist/particle/behaviors/index.d.ts.map +1 -0
  170. package/dist/particle/behaviors/shapes/PolygonalChain.d.ts +57 -0
  171. package/dist/particle/behaviors/shapes/PolygonalChain.d.ts.map +1 -0
  172. package/dist/particle/behaviors/shapes/Rectangle.d.ts +59 -0
  173. package/dist/particle/behaviors/shapes/Rectangle.d.ts.map +1 -0
  174. package/dist/particle/behaviors/shapes/SpawnShape.d.ts +32 -0
  175. package/dist/particle/behaviors/shapes/SpawnShape.d.ts.map +1 -0
  176. package/dist/particle/behaviors/shapes/Torus.d.ts +71 -0
  177. package/dist/particle/behaviors/shapes/Torus.d.ts.map +1 -0
  178. package/dist/particle/behaviors/shapes/index.d.ts +5 -0
  179. package/dist/particle/behaviors/shapes/index.d.ts.map +1 -0
  180. package/dist/particle/index.d.ts +11 -0
  181. package/dist/particle/index.d.ts.map +1 -0
  182. package/dist/particle/index.js +2845 -0
  183. package/dist/particle/index.js.map +1 -0
  184. package/dist/plugins/Plugin.types.d.ts +80 -0
  185. package/dist/plugins/Plugin.types.d.ts.map +1 -0
  186. package/dist/plugins/device/DeviceOptimizerPlugin.d.ts +187 -0
  187. package/dist/plugins/device/DeviceOptimizerPlugin.d.ts.map +1 -0
  188. package/dist/plugins/device/DeviceOptimizerPlugin.types.d.ts +134 -0
  189. package/dist/plugins/device/DeviceOptimizerPlugin.types.d.ts.map +1 -0
  190. package/dist/plugins/device/index.d.ts +3 -0
  191. package/dist/plugins/device/index.d.ts.map +1 -0
  192. package/dist/plugins/display/DisplayPlugin.d.ts +208 -0
  193. package/dist/plugins/display/DisplayPlugin.d.ts.map +1 -0
  194. package/dist/plugins/display/DisplayPlugin.types.d.ts +174 -0
  195. package/dist/plugins/display/DisplayPlugin.types.d.ts.map +1 -0
  196. package/dist/plugins/display/displayViewport.d.ts +10 -0
  197. package/dist/plugins/display/displayViewport.d.ts.map +1 -0
  198. package/dist/plugins/display/index.d.ts +4 -0
  199. package/dist/plugins/display/index.d.ts.map +1 -0
  200. package/dist/plugins/eventbus/EventBusPlugin.d.ts +21 -0
  201. package/dist/plugins/eventbus/EventBusPlugin.d.ts.map +1 -0
  202. package/dist/plugins/eventbus/EventBusPlugin.types.d.ts +24 -0
  203. package/dist/plugins/eventbus/EventBusPlugin.types.d.ts.map +1 -0
  204. package/dist/plugins/eventbus/index.d.ts +3 -0
  205. package/dist/plugins/eventbus/index.d.ts.map +1 -0
  206. package/dist/plugins/gsap/GsapPlugin.d.ts +307 -0
  207. package/dist/plugins/gsap/GsapPlugin.d.ts.map +1 -0
  208. package/dist/plugins/gsap/index.d.ts +2 -0
  209. package/dist/plugins/gsap/index.d.ts.map +1 -0
  210. package/dist/plugins/index.d.ts +13 -0
  211. package/dist/plugins/index.d.ts.map +1 -0
  212. package/dist/plugins/index.js +12806 -0
  213. package/dist/plugins/index.js.map +1 -0
  214. package/dist/plugins/input/InputPlugin.const.d.ts +80 -0
  215. package/dist/plugins/input/InputPlugin.const.d.ts.map +1 -0
  216. package/dist/plugins/input/InputPlugin.d.ts +141 -0
  217. package/dist/plugins/input/InputPlugin.d.ts.map +1 -0
  218. package/dist/plugins/input/InputPlugin.types.d.ts +41 -0
  219. package/dist/plugins/input/InputPlugin.types.d.ts.map +1 -0
  220. package/dist/plugins/input/KeyboardManager.d.ts +139 -0
  221. package/dist/plugins/input/KeyboardManager.d.ts.map +1 -0
  222. package/dist/plugins/input/KeyboardManager.types.d.ts +27 -0
  223. package/dist/plugins/input/KeyboardManager.types.d.ts.map +1 -0
  224. package/dist/plugins/input/index.d.ts +4 -0
  225. package/dist/plugins/input/index.d.ts.map +1 -0
  226. package/dist/plugins/language/I18NextPlugin.d.ts +30 -0
  227. package/dist/plugins/language/I18NextPlugin.d.ts.map +1 -0
  228. package/dist/plugins/language/I18NextPlugin.types.d.ts +29 -0
  229. package/dist/plugins/language/I18NextPlugin.types.d.ts.map +1 -0
  230. package/dist/plugins/language/index.d.ts +3 -0
  231. package/dist/plugins/language/index.d.ts.map +1 -0
  232. package/dist/plugins/resource/ResourcePlugin.d.ts +189 -0
  233. package/dist/plugins/resource/ResourcePlugin.d.ts.map +1 -0
  234. package/dist/plugins/resource/ResourcePlugin.types.d.ts +153 -0
  235. package/dist/plugins/resource/ResourcePlugin.types.d.ts.map +1 -0
  236. package/dist/plugins/resource/index.d.ts +3 -0
  237. package/dist/plugins/resource/index.d.ts.map +1 -0
  238. package/dist/plugins/scene/Scene.d.ts +203 -0
  239. package/dist/plugins/scene/Scene.d.ts.map +1 -0
  240. package/dist/plugins/scene/ScenePlugin.d.ts +162 -0
  241. package/dist/plugins/scene/ScenePlugin.d.ts.map +1 -0
  242. package/dist/plugins/scene/ScenePlugin.types.d.ts +35 -0
  243. package/dist/plugins/scene/ScenePlugin.types.d.ts.map +1 -0
  244. package/dist/plugins/scene/index.d.ts +4 -0
  245. package/dist/plugins/scene/index.d.ts.map +1 -0
  246. package/dist/plugins/sentry/SentryPlugin.d.ts +66 -0
  247. package/dist/plugins/sentry/SentryPlugin.d.ts.map +1 -0
  248. package/dist/plugins/sentry/SentryPlugin.types.d.ts +8 -0
  249. package/dist/plugins/sentry/SentryPlugin.types.d.ts.map +1 -0
  250. package/dist/plugins/sentry/index.d.ts +3 -0
  251. package/dist/plugins/sentry/index.d.ts.map +1 -0
  252. package/dist/plugins/service/ServiceAdapter.d.ts +88 -0
  253. package/dist/plugins/service/ServiceAdapter.d.ts.map +1 -0
  254. package/dist/plugins/service/ServiceEventHelper.d.ts +6 -0
  255. package/dist/plugins/service/ServiceEventHelper.d.ts.map +1 -0
  256. package/dist/plugins/service/ServicePlugin.d.ts +135 -0
  257. package/dist/plugins/service/ServicePlugin.d.ts.map +1 -0
  258. package/dist/plugins/service/ServicePlugin.types.d.ts +14 -0
  259. package/dist/plugins/service/ServicePlugin.types.d.ts.map +1 -0
  260. package/dist/plugins/service/adapters/DevAuthAdapter.d.ts +56 -0
  261. package/dist/plugins/service/adapters/DevAuthAdapter.d.ts.map +1 -0
  262. package/dist/plugins/service/adapters/RGSAdapter.d.ts +82 -0
  263. package/dist/plugins/service/adapters/RGSAdapter.d.ts.map +1 -0
  264. package/dist/plugins/service/adapters/index.d.ts +7 -0
  265. package/dist/plugins/service/adapters/index.d.ts.map +1 -0
  266. package/dist/plugins/service/adapters/resolvePublicIp.d.ts +10 -0
  267. package/dist/plugins/service/adapters/resolvePublicIp.d.ts.map +1 -0
  268. package/dist/plugins/service/index.d.ts +10 -0
  269. package/dist/plugins/service/index.d.ts.map +1 -0
  270. package/dist/plugins/service/types/api.types.d.ts +299 -0
  271. package/dist/plugins/service/types/api.types.d.ts.map +1 -0
  272. package/dist/plugins/service/types/index.d.ts +6 -0
  273. package/dist/plugins/service/types/index.d.ts.map +1 -0
  274. package/dist/plugins/skin/ISkin.d.ts +62 -0
  275. package/dist/plugins/skin/ISkin.d.ts.map +1 -0
  276. package/dist/plugins/skin/Skin.d.ts +155 -0
  277. package/dist/plugins/skin/Skin.d.ts.map +1 -0
  278. package/dist/plugins/skin/SkinPlugin.d.ts +285 -0
  279. package/dist/plugins/skin/SkinPlugin.d.ts.map +1 -0
  280. package/dist/plugins/skin/SkinPlugin.types.d.ts +56 -0
  281. package/dist/plugins/skin/SkinPlugin.types.d.ts.map +1 -0
  282. package/dist/plugins/skin/index.d.ts +5 -0
  283. package/dist/plugins/skin/index.d.ts.map +1 -0
  284. package/dist/plugins/sound/SoundPlugin.d.ts +319 -0
  285. package/dist/plugins/sound/SoundPlugin.d.ts.map +1 -0
  286. package/dist/plugins/sound/SoundPlugin.types.d.ts +102 -0
  287. package/dist/plugins/sound/SoundPlugin.types.d.ts.map +1 -0
  288. package/dist/plugins/sound/SoundTestGUI.d.ts +42 -0
  289. package/dist/plugins/sound/SoundTestGUI.d.ts.map +1 -0
  290. package/dist/plugins/sound/index.d.ts +4 -0
  291. package/dist/plugins/sound/index.d.ts.map +1 -0
  292. package/dist/state-machine/ConfigBuilder.d.ts +239 -0
  293. package/dist/state-machine/ConfigBuilder.d.ts.map +1 -0
  294. package/dist/state-machine/StateMachine.d.ts +251 -0
  295. package/dist/state-machine/StateMachine.d.ts.map +1 -0
  296. package/dist/state-machine/guards.d.ts +151 -0
  297. package/dist/state-machine/guards.d.ts.map +1 -0
  298. package/dist/state-machine/index.d.ts +5 -0
  299. package/dist/state-machine/index.d.ts.map +1 -0
  300. package/dist/state-machine/index.js +954 -0
  301. package/dist/state-machine/index.js.map +1 -0
  302. package/dist/state-machine/types.d.ts +65 -0
  303. package/dist/state-machine/types.d.ts.map +1 -0
  304. package/dist/store/DataStore.d.ts +167 -0
  305. package/dist/store/DataStore.d.ts.map +1 -0
  306. package/dist/store/index.d.ts +3 -0
  307. package/dist/store/index.d.ts.map +1 -0
  308. package/dist/store/index.js +197 -0
  309. package/dist/store/index.js.map +1 -0
  310. package/dist/ui/behaviors/ButtonBehavior.d.ts +245 -0
  311. package/dist/ui/behaviors/ButtonBehavior.d.ts.map +1 -0
  312. package/dist/ui/behaviors/InputBehavior.d.ts +169 -0
  313. package/dist/ui/behaviors/InputBehavior.d.ts.map +1 -0
  314. package/dist/ui/behaviors/ScrollbarBehavior.d.ts +371 -0
  315. package/dist/ui/behaviors/ScrollbarBehavior.d.ts.map +1 -0
  316. package/dist/ui/behaviors/index.d.ts +4 -0
  317. package/dist/ui/behaviors/index.d.ts.map +1 -0
  318. package/dist/ui/components/ButtonComp.d.ts +138 -0
  319. package/dist/ui/components/ButtonComp.d.ts.map +1 -0
  320. package/dist/ui/components/Comp.utils.d.ts +390 -0
  321. package/dist/ui/components/Comp.utils.d.ts.map +1 -0
  322. package/dist/ui/components/Component.types.d.ts +41 -0
  323. package/dist/ui/components/Component.types.d.ts.map +1 -0
  324. package/dist/ui/components/InputComp.d.ts +43 -0
  325. package/dist/ui/components/InputComp.d.ts.map +1 -0
  326. package/dist/ui/components/LabelBox.d.ts +49 -0
  327. package/dist/ui/components/LabelBox.d.ts.map +1 -0
  328. package/dist/ui/components/ListTableComp.d.ts +106 -0
  329. package/dist/ui/components/ListTableComp.d.ts.map +1 -0
  330. package/dist/ui/components/Skinable.d.ts +261 -0
  331. package/dist/ui/components/Skinable.d.ts.map +1 -0
  332. package/dist/ui/components/SliderComp.d.ts +60 -0
  333. package/dist/ui/components/SliderComp.d.ts.map +1 -0
  334. package/dist/ui/components/SpriteTextBBCode.d.ts +16 -0
  335. package/dist/ui/components/SpriteTextBBCode.d.ts.map +1 -0
  336. package/dist/ui/components/StepperComp.d.ts +89 -0
  337. package/dist/ui/components/StepperComp.d.ts.map +1 -0
  338. package/dist/ui/components/index.d.ts +12 -0
  339. package/dist/ui/components/index.d.ts.map +1 -0
  340. package/dist/ui/components/spriteText/SpriteText.d.ts +114 -0
  341. package/dist/ui/components/spriteText/SpriteText.d.ts.map +1 -0
  342. package/dist/ui/components/spriteText/SpriteText.types.d.ts +109 -0
  343. package/dist/ui/components/spriteText/SpriteText.types.d.ts.map +1 -0
  344. package/dist/ui/components/spriteText/SpriteTextAlignment.d.ts +25 -0
  345. package/dist/ui/components/spriteText/SpriteTextAlignment.d.ts.map +1 -0
  346. package/dist/ui/components/spriteText/SpriteTextBezier.d.ts +20 -0
  347. package/dist/ui/components/spriteText/SpriteTextBezier.d.ts.map +1 -0
  348. package/dist/ui/components/spriteText/SpriteTextCurve.d.ts +4 -0
  349. package/dist/ui/components/spriteText/SpriteTextCurve.d.ts.map +1 -0
  350. package/dist/ui/components/spriteText/SpriteTextKerning.d.ts +7 -0
  351. package/dist/ui/components/spriteText/SpriteTextKerning.d.ts.map +1 -0
  352. package/dist/ui/components/spriteText/SpriteTextTexture.d.ts +16 -0
  353. package/dist/ui/components/spriteText/SpriteTextTexture.d.ts.map +1 -0
  354. package/dist/ui/components/spriteText/SpriteTextWrap.d.ts +19 -0
  355. package/dist/ui/components/spriteText/SpriteTextWrap.d.ts.map +1 -0
  356. package/dist/ui/components/spriteText/index.d.ts +3 -0
  357. package/dist/ui/components/spriteText/index.d.ts.map +1 -0
  358. package/dist/ui/index.d.ts +3 -0
  359. package/dist/ui/index.d.ts.map +1 -0
  360. package/dist/ui/index.js +4778 -0
  361. package/dist/ui/index.js.map +1 -0
  362. package/dist/utils/ArrayUtils.d.ts +24 -0
  363. package/dist/utils/ArrayUtils.d.ts.map +1 -0
  364. package/dist/utils/ColorUtils.d.ts +34 -0
  365. package/dist/utils/ColorUtils.d.ts.map +1 -0
  366. package/dist/utils/DataInjector.d.ts +67 -0
  367. package/dist/utils/DataInjector.d.ts.map +1 -0
  368. package/dist/utils/Logger.d.ts +332 -0
  369. package/dist/utils/Logger.d.ts.map +1 -0
  370. package/dist/utils/NumberFormatter.d.ts +126 -0
  371. package/dist/utils/NumberFormatter.d.ts.map +1 -0
  372. package/dist/utils/ObjectUtils.d.ts +64 -0
  373. package/dist/utils/ObjectUtils.d.ts.map +1 -0
  374. package/dist/utils/PixiUtils.d.ts +118 -0
  375. package/dist/utils/PixiUtils.d.ts.map +1 -0
  376. package/dist/utils/Throttle.d.ts +103 -0
  377. package/dist/utils/Throttle.d.ts.map +1 -0
  378. package/dist/utils/index.d.ts +9 -0
  379. package/dist/utils/index.d.ts.map +1 -0
  380. package/dist/utils/index.js +899 -0
  381. package/dist/utils/index.js.map +1 -0
  382. package/dist/vite/index.d.ts +3 -0
  383. package/dist/vite/index.d.ts.map +1 -0
  384. package/dist/vite/index.js +126 -0
  385. package/dist/vite/index.js.map +1 -0
  386. package/dist/vite/mergeLocalesPlugin.d.ts +22 -0
  387. package/dist/vite/mergeLocalesPlugin.d.ts.map +1 -0
  388. package/package.json +143 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../layout/Bounds.ts","../../layout/Align.ts","../../layout/Distribute.ts","../../layout/Flow.ts","../../layout/PositionUtils.ts"],"names":["parent","Rectangle"],"mappings":"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","file":"index.js","sourcesContent":["// Bounds.ts\nimport { Container, Point, Rectangle } from 'pixi.js';\n\n/**\n * Configuration options for alignment operations.\n *\n * @example\n * ```typescript\n * // Align to selection (default, no options needed)\n * Align.hCenter([sprite1, sprite2]);\n *\n * // Align to container\n * Align.left([sprite1, sprite2], { container: myContainer });\n *\n * // Align to rectangle\n * Align.hCenter([sprite1], { container: new Rectangle(0, 0, 1920, 1080) });\n *\n * // Align to key object\n * Align.top([sprite1, sprite2], { key: mainSprite });\n * ```\n */\nexport interface AlignOptions {\n key?: Container;\n container?: Container | Rectangle;\n}\n\nfunction rectToBoundsLike(r: Rectangle): BoundsLike {\n const left = r.x;\n const top = r.y;\n const width = r.width;\n const height = r.height;\n const right = left + width;\n const bottom = top + height;\n return {\n left,\n right,\n top,\n bottom,\n width,\n height,\n centerX: left + width / 2,\n centerY: top + height / 2,\n };\n}\n\n/**\n * Represents the bounding box of a container with convenient access to edges and center points.\n *\n * This interface provides a virtual container that describes the bounds of one or more\n * PixiJS containers, useful for alignment and layout calculations.\n *\n * @example\n * ```typescript\n * const bounds: BoundsLike = {\n * left: 0,\n * right: 100,\n * top: 0,\n * bottom: 50,\n * width: 100,\n * height: 50,\n * centerX: 50,\n * centerY: 25\n * };\n * ```\n */\nexport interface BoundsLike {\n /** Left edge X coordinate */\n left: number;\n /** Right edge X coordinate */\n right: number;\n /** Top edge Y coordinate */\n top: number;\n /** Bottom edge Y coordinate */\n bottom: number;\n /** Total width (right - left) */\n width: number;\n /** Total height (bottom - top) */\n height: number;\n /** Horizontal center X coordinate */\n centerX: number;\n /** Vertical center Y coordinate */\n centerY: number;\n}\n\n/**\n * Gets the common parent container of all items.\n *\n * All items must share the same parent, otherwise an error is thrown.\n * This is essential for coordinate transformations in alignment operations.\n *\n * @param items - Array of containers to check\n * @returns The common parent container\n * @throws {Error} If items don't have a parent or don't share the same parent\n *\n * @example\n * ```typescript\n * const parent = getCommonParent([sprite1, sprite2, sprite3]);\n * ```\n */\nexport function getCommonParent(items: Container[]): Container {\n const parent = items[0]?.parent as Container | undefined;\n if (!parent) throw new Error('Items must have a parent');\n for (const it of items) {\n if (it.parent !== parent) throw new Error('All items must share the same parent');\n }\n return parent;\n}\n\n/**\n * Calculates the bounds of a child container in its parent's coordinate space.\n *\n * This function handles coordinate transformations correctly, accounting for\n * rotation, scale, and skew of the child relative to the parent.\n *\n * @param child - The child container to measure\n * @param parent - The parent container (coordinate space reference)\n * @returns Bounds of the child in parent's local coordinates\n *\n * @example\n * ```typescript\n * const bounds = getLocalBoundsInParent(sprite, container);\n * console.log(`Width: ${bounds.width}, Height: ${bounds.height}`);\n * console.log(`Center: (${bounds.centerX}, ${bounds.centerY})`);\n * ```\n */\nexport function getLocalBoundsInParent(child: Container, parent: Container): BoundsLike {\n const world = child.getBounds();\n const topLeft = parent.toLocal(new Point(world.x, world.y));\n const bottomRight = parent.toLocal(new Point(world.x + world.width, world.y + world.height));\n const left = Math.min(topLeft.x, bottomRight.x);\n const right = Math.max(topLeft.x, bottomRight.x);\n const top = Math.min(topLeft.y, bottomRight.y);\n const bottom = Math.max(topLeft.y, bottomRight.y);\n const width = right - left;\n const height = bottom - top;\n return {\n left,\n right,\n top,\n bottom,\n width,\n height,\n centerX: left + width / 2,\n centerY: top + height / 2,\n };\n}\n\n/**\n * Calculates the combined bounding box of multiple containers.\n *\n * This creates a virtual container that encompasses all provided items,\n * similar to selecting multiple objects in Photoshop and seeing their combined bounds.\n *\n * @param items - Array of containers to measure\n * @param parent - Optional parent container for coordinate space (defaults to common parent)\n * @returns Combined bounds of all items\n *\n * @example\n * ```typescript\n * const bounds = getSelectionBounds([sprite1, sprite2, sprite3]);\n * console.log(`Selection size: ${bounds.width} x ${bounds.height}`);\n * console.log(`Selection center: (${bounds.centerX}, ${bounds.centerY})`);\n * ```\n */\nexport function getSelectionBounds(items: Container[], parent?: Container): BoundsLike {\n const p = parent ?? getCommonParent(items);\n let left = Infinity,\n right = -Infinity,\n top = Infinity,\n bottom = -Infinity;\n for (const it of items) {\n const b = getLocalBoundsInParent(it, p);\n left = Math.min(left, b.left);\n right = Math.max(right, b.right);\n top = Math.min(top, b.top);\n bottom = Math.max(bottom, b.bottom);\n }\n const width = right - left;\n const height = bottom - top;\n return {\n left,\n right,\n top,\n bottom,\n width,\n height,\n centerX: left + width / 2,\n centerY: top + height / 2,\n };\n}\n\nexport function getReferenceBounds(\n items: Container[],\n options?: AlignOptions,\n): { ref: BoundsLike; parent: Container } {\n if (options?.container) {\n const box = options.container;\n if (box instanceof Container) {\n const parent = box;\n const world = parent.getBounds();\n const topLeft = parent.toLocal(new Point(world.x, world.y));\n const bottomRight = parent.toLocal(new Point(world.x + world.width, world.y + world.height));\n const left = Math.min(topLeft.x, bottomRight.x);\n const right = Math.max(topLeft.x, bottomRight.x);\n const top = Math.min(topLeft.y, bottomRight.y);\n const bottom = Math.max(topLeft.y, bottomRight.y);\n const width = right - left;\n const height = bottom - top;\n return {\n ref: {\n left,\n right,\n top,\n bottom,\n width,\n height,\n centerX: left + width / 2,\n centerY: top + height / 2,\n },\n parent,\n };\n } else {\n const parent = getCommonParent(items);\n return { ref: rectToBoundsLike(box), parent };\n }\n }\n\n const parent = getCommonParent(items);\n if (options?.key) {\n if (options.key.parent !== parent) throw new Error('key and items must share the same parent');\n return { ref: getLocalBoundsInParent(options.key, parent), parent };\n }\n\n return { ref: getSelectionBounds(items, parent), parent };\n}\n\nexport function nudgeX(child: Container, dx: number) {\n child.x += dx;\n}\nexport function nudgeY(child: Container, dy: number) {\n child.y += dy;\n}\n","// Align.ts\nimport { Container } from 'pixi.js';\nimport { AlignOptions, getReferenceBounds, getLocalBoundsInParent, nudgeX, nudgeY } from './Bounds';\n\n/**\n * Alignment utility for positioning PixiJS containers, similar to Photoshop's align tools.\n *\n * Provides methods to align multiple containers relative to each other or to a reference point.\n * All alignment operations modify the position of containers in-place.\n *\n * ## Features\n *\n * - **Horizontal Alignment**: Left, center, right\n * - **Vertical Alignment**: Top, center, bottom\n * - **Flexible Reference**: Align to selection bounds, specific container, or custom rectangle\n * - **Parent-aware**: Handles coordinate transformations correctly\n *\n * ## Alignment Modes\n *\n * The alignment reference can be controlled via {@link AlignOptions}:\n * - `selection` (default): Align to the bounding box of all selected items\n * - `container`: Align to a specific container's bounds\n * - `key`: Align to a specific key object\n * - `rectangle`: Align to a custom rectangle\n *\n * @example\n * ```typescript\n * import { Align } from '@rb-games/core/layout';\n * import { Container, Sprite } from 'pixi.js';\n *\n * // Create some sprites\n * const sprite1 = new Sprite();\n * const sprite2 = new Sprite();\n * const sprite3 = new Sprite();\n *\n * const container = new Container();\n * container.addChild(sprite1, sprite2, sprite3);\n *\n * // Align all sprites to the left edge of their selection\n * Align.left([sprite1, sprite2, sprite3]);\n *\n * // Align horizontally centered\n * Align.hCenter([sprite1, sprite2, sprite3]);\n *\n * // Align to a specific container\n * const bounds = new Container();\n * Align.left([sprite1, sprite2, sprite3], { container: bounds });\n * ```\n *\n * @example\n * ```typescript\n * // Align UI elements to screen center\n * const title = new Text('Game Title');\n * const button = new Sprite();\n * const logo = new Sprite();\n *\n * // Center all elements horizontally to screen bounds\n * Align.hCenter([title, button, logo], {\n * rect: new Rectangle(0, 0, 1920, 1080)\n * });\n *\n * // Align to top\n * Align.top([title, button, logo]);\n * ```\n *\n * @category Layout\n * @public\n */\nexport class Align {\n /**\n * Aligns containers to the left edge of the reference bounds.\n *\n * @param items - Array of containers to align\n * @param options - Alignment options to control the reference point\n *\n * @example\n * ```typescript\n * // Align to selection bounds (default)\n * Align.left([sprite1, sprite2, sprite3]);\n *\n * // Align to container\n * Align.left([sprite1, sprite2], { container: bounds });\n * ```\n */\n static left(items: Container[], options?: AlignOptions) {\n const { ref, parent } = getReferenceBounds(items, options);\n for (const it of items) {\n const b = getLocalBoundsInParent(it, parent);\n nudgeX(it, ref.left - b.left);\n }\n }\n /**\n * Aligns containers to the horizontal center of the reference bounds.\n *\n * @param items - Array of containers to align\n * @param options - Alignment options to control the reference point\n *\n * @example\n * ```typescript\n * // Center horizontally within selection\n * Align.hCenter([sprite1, sprite2, sprite3]);\n * ```\n */\n static hCenter(items: Container[], options?: AlignOptions) {\n const { ref, parent } = getReferenceBounds(items, options);\n for (const it of items) {\n const b = getLocalBoundsInParent(it, parent);\n nudgeX(it, ref.centerX - b.centerX);\n }\n }\n /**\n * Aligns containers to the right edge of the reference bounds.\n *\n * @param items - Array of containers to align\n * @param options - Alignment options to control the reference point\n */\n static right(items: Container[], options?: AlignOptions) {\n const { ref, parent } = getReferenceBounds(items, options);\n for (const it of items) {\n const b = getLocalBoundsInParent(it, parent);\n nudgeX(it, ref.right - b.right);\n }\n }\n /**\n * Aligns containers to the top edge of the reference bounds.\n *\n * @param items - Array of containers to align\n * @param options - Alignment options to control the reference point\n */\n static top(items: Container[], options?: AlignOptions) {\n const { ref, parent } = getReferenceBounds(items, options);\n for (const it of items) {\n const b = getLocalBoundsInParent(it, parent);\n nudgeY(it, ref.top - b.top);\n }\n }\n /**\n * Aligns containers to the vertical center of the reference bounds.\n *\n * @param items - Array of containers to align\n * @param options - Alignment options to control the reference point\n */\n static vCenter(items: Container[], options?: AlignOptions) {\n const { ref, parent } = getReferenceBounds(items, options);\n for (const it of items) {\n const b = getLocalBoundsInParent(it, parent);\n nudgeY(it, ref.centerY - b.centerY);\n }\n }\n /**\n * Aligns containers to the bottom edge of the reference bounds.\n *\n * @param items - Array of containers to align\n * @param options - Alignment options to control the reference point\n */\n static bottom(items: Container[], options?: AlignOptions) {\n const { ref, parent } = getReferenceBounds(items, options);\n for (const it of items) {\n const b = getLocalBoundsInParent(it, parent);\n nudgeY(it, ref.bottom - b.bottom);\n }\n }\n}\n","// Distribute.ts\nimport { Container, Rectangle } from 'pixi.js';\nimport {\n getLocalBoundsInParent,\n getSelectionBounds,\n nudgeX,\n nudgeY,\n getCommonParent,\n} from './Bounds';\n\n/**\n * Distribution utility for evenly spacing PixiJS containers, similar to Photoshop's distribute tools.\n *\n * Provides methods to distribute multiple containers with equal spacing between them,\n * either by edges, centers, or with equal gaps. All distribution operations modify\n * container positions in-place.\n *\n * ## Features\n *\n * - **Horizontal Distribution**: By left edges, centers, right edges, or spacing\n * - **Vertical Distribution**: By top edges, centers, bottom edges, or spacing\n * - **Auto-sorting**: Automatically sorts items before distributing\n * - **Minimum 3 items**: Requires at least 3 items (first and last act as anchors)\n *\n * ## Distribution Types\n *\n * ### Edge Distribution\n * Distributes items so their edges are evenly spaced:\n * - `hLeft()`, `hRight()`: Horizontal by left/right edges\n * - `vTop()`, `vBottom()`: Vertical by top/bottom edges\n *\n * ### Center Distribution\n * Distributes items so their centers are evenly spaced:\n * - `hCenters()`: Horizontal centers\n * - `vCenters()`: Vertical centers\n *\n * ### Spacing Distribution\n * Distributes items with equal gaps between them:\n * - `hSpacing()`: Equal horizontal gaps\n * - `vSpacing()`: Equal vertical gaps\n *\n * @example\n * ```typescript\n * import { Distribute } from '@rb-games/core/layout';\n * import { Container, Sprite } from 'pixi.js';\n *\n * // Create some sprites\n * const sprites = [\n * new Sprite(),\n * new Sprite(),\n * new Sprite(),\n * new Sprite()\n * ];\n *\n * const container = new Container();\n * container.addChild(...sprites);\n *\n * // Distribute horizontally by centers\n * Distribute.hCenters(sprites);\n *\n * // Distribute vertically with equal spacing\n * Distribute.vSpacing(sprites);\n *\n * // Distribute horizontally by left edges\n * Distribute.hLeft(sprites);\n * ```\n *\n * @example\n * ```typescript\n * // Distribute UI buttons with equal spacing\n * const buttons = [button1, button2, button3, button4];\n *\n * // Equal horizontal spacing between buttons\n * Distribute.hSpacing(buttons);\n *\n * // Distribute within a specific rectangle\n * Distribute.hSpacing(buttons, {\n * container: new Rectangle(100, 100, 800, 100)\n * });\n * ```\n *\n * @public\n */\nexport class Distribute {\n static hLeft(items: Container[], options?: { parent?: Container }) {\n const parent = options?.parent ?? getCommonParent(items);\n const sorted = [...items].sort(\n (a, b) => getLocalBoundsInParent(a, parent).left - getLocalBoundsInParent(b, parent).left,\n );\n if (sorted.length <= 2) return;\n const first = getLocalBoundsInParent(sorted[0], parent).left;\n const last = getLocalBoundsInParent(sorted[sorted.length - 1], parent).left;\n const step = (last - first) / (sorted.length - 1);\n sorted.forEach((it, i) => {\n const b = getLocalBoundsInParent(it, parent);\n nudgeX(it, first + step * i - b.left);\n });\n }\n\n static hCenters(items: Container[], options?: { parent?: Container }) {\n const parent = options?.parent ?? getCommonParent(items);\n const sorted = [...items].sort(\n (a, b) =>\n getLocalBoundsInParent(a, parent).centerX - getLocalBoundsInParent(b, parent).centerX,\n );\n if (sorted.length <= 2) return;\n const first = getLocalBoundsInParent(sorted[0], parent).centerX;\n const last = getLocalBoundsInParent(sorted[sorted.length - 1], parent).centerX;\n const step = (last - first) / (sorted.length - 1);\n sorted.forEach((it, i) => {\n const b = getLocalBoundsInParent(it, parent);\n nudgeX(it, first + step * i - b.centerX);\n });\n }\n\n static hRight(items: Container[], options?: { parent?: Container }) {\n const parent = options?.parent ?? getCommonParent(items);\n const sorted = [...items].sort(\n (a, b) => getLocalBoundsInParent(a, parent).right - getLocalBoundsInParent(b, parent).right,\n );\n if (sorted.length <= 2) return;\n const first = getLocalBoundsInParent(sorted[0], parent).right;\n const last = getLocalBoundsInParent(sorted[sorted.length - 1], parent).right;\n const step = (last - first) / (sorted.length - 1);\n sorted.forEach((it, i) => {\n const b = getLocalBoundsInParent(it, parent);\n nudgeX(it, first + step * i - b.right);\n });\n }\n\n static vTop(items: Container[], options?: { parent?: Container }) {\n const parent = options?.parent ?? getCommonParent(items);\n const sorted = [...items].sort(\n (a, b) => getLocalBoundsInParent(a, parent).top - getLocalBoundsInParent(b, parent).top,\n );\n if (sorted.length <= 2) return;\n const first = getLocalBoundsInParent(sorted[0], parent).top;\n const last = getLocalBoundsInParent(sorted[sorted.length - 1], parent).top;\n const step = (last - first) / (sorted.length - 1);\n sorted.forEach((it, i) => {\n const b = getLocalBoundsInParent(it, parent);\n nudgeY(it, first + step * i - b.top);\n });\n }\n\n static vCenters(items: Container[], options?: { parent?: Container }) {\n const parent = options?.parent ?? getCommonParent(items);\n const sorted = [...items].sort(\n (a, b) =>\n getLocalBoundsInParent(a, parent).centerY - getLocalBoundsInParent(b, parent).centerY,\n );\n if (sorted.length <= 2) return;\n const first = getLocalBoundsInParent(sorted[0], parent).centerY;\n const last = getLocalBoundsInParent(sorted[sorted.length - 1], parent).centerY;\n const step = (last - first) / (sorted.length - 1);\n sorted.forEach((it, i) => {\n const b = getLocalBoundsInParent(it, parent);\n nudgeY(it, first + step * i - b.centerY);\n });\n }\n\n static vBottom(items: Container[], options?: { parent?: Container }) {\n const parent = options?.parent ?? getCommonParent(items);\n const sorted = [...items].sort(\n (a, b) => getLocalBoundsInParent(a, parent).bottom - getLocalBoundsInParent(b, parent).bottom,\n );\n if (sorted.length <= 2) return;\n const first = getLocalBoundsInParent(sorted[0], parent).bottom;\n const last = getLocalBoundsInParent(sorted[sorted.length - 1], parent).bottom;\n const step = (last - first) / (sorted.length - 1);\n sorted.forEach((it, i) => {\n const b = getLocalBoundsInParent(it, parent);\n nudgeY(it, first + step * i - b.bottom);\n });\n }\n\n static hSpacing(items: Container[], options?: { parent?: Container; container?: Rectangle }) {\n const parent = options?.parent ?? getCommonParent(items);\n if (items.length <= 2) return;\n const sorted = [...items].sort(\n (a, b) => getLocalBoundsInParent(a, parent).left - getLocalBoundsInParent(b, parent).left,\n );\n const ref = options?.container ?? getSelectionBounds(sorted, parent);\n const totalWidth = sorted.reduce(\n (sum, it) => sum + getLocalBoundsInParent(it, parent).width,\n 0,\n );\n const width = ref instanceof Rectangle ? ref.width : ref.width;\n const left = ref instanceof Rectangle ? ref.x : ref.left;\n const gap = (width - totalWidth) / (sorted.length - 1);\n let cursor = left;\n sorted.forEach((it) => {\n const b = getLocalBoundsInParent(it, parent);\n nudgeX(it, cursor - b.left);\n const newB = getLocalBoundsInParent(it, parent);\n cursor = newB.right + gap;\n });\n }\n\n static vSpacing(items: Container[], options?: { parent?: Container; container?: Rectangle }) {\n const parent = options?.parent ?? getCommonParent(items);\n if (items.length <= 2) return;\n const sorted = [...items].sort(\n (a, b) => getLocalBoundsInParent(a, parent).top - getLocalBoundsInParent(b, parent).top,\n );\n const ref = options?.container ?? getSelectionBounds(sorted, parent);\n const totalHeight = sorted.reduce(\n (sum, it) => sum + getLocalBoundsInParent(it, parent).height,\n 0,\n );\n const height = ref instanceof Rectangle ? ref.height : ref.height;\n const top = ref instanceof Rectangle ? ref.y : ref.top;\n const gap = (height - totalHeight) / (sorted.length - 1);\n let cursor = top;\n sorted.forEach((it) => {\n const b = getLocalBoundsInParent(it, parent);\n nudgeY(it, cursor - b.top);\n const newB = getLocalBoundsInParent(it, parent);\n cursor = newB.bottom + gap;\n });\n }\n}\n","import { Container, Point, Rectangle } from 'pixi.js';\nimport {\n BoundsLike,\n getCommonParent,\n getLocalBoundsInParent,\n getSelectionBounds,\n nudgeX,\n nudgeY,\n} from './Bounds';\n\n/**\n * Flow direction for layout.\n * - `row`: Horizontal layout (left to right)\n * - `column`: Vertical layout (top to bottom)\n */\nexport type FlowDirection = 'row' | 'column';\n\n/**\n * Wrapping behavior for flow layout.\n * - `none`: No wrapping, single line/column\n * - `bounds`: Wrap when reaching bounds width/height\n * - `count`: Wrap after specific number of items\n */\nexport type FlowWrap = 'none' | 'bounds' | 'count';\n\n/**\n * Cross-axis alignment (perpendicular to flow direction).\n * - `start`: Align to start of line/column\n * - `center`: Center within line/column\n * - `end`: Align to end of line/column\n */\nexport type FlowAlign = 'start' | 'center' | 'end';\n\n/**\n * Main-axis justification (along flow direction).\n * - `start`: Pack items to start\n * - `center`: Center items\n * - `end`: Pack items to end\n * - `space-between`: Equal space between items\n * - `space-around`: Equal space around items\n * - `space-evenly`: Equal space including edges\n */\nexport type FlowJustify =\n | 'start'\n | 'center'\n | 'end'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\n\n/**\n * Individual item margin configuration.\n * Supports shorthand notations:\n * - `x`: Sets both left and right\n * - `y`: Sets both top and bottom\n * - Specific values (top, right, bottom, left) override shorthands\n */\nexport interface FlowItemMargin {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n x?: number;\n y?: number;\n}\n\n/**\n * Margin value for a single item.\n * - `number`: All sides get the same margin\n * - `FlowItemMargin`: Detailed control with optional shorthands\n * - `undefined`: No margin (all sides = 0)\n */\nexport type FlowItemMarginValue = number | FlowItemMargin | undefined;\n\n/**\n * Configuration options for flow layout.\n *\n * @example\n * ```typescript\n * const options: FlowOptions = {\n * direction: 'row',\n * wrap: 'bounds',\n * gap: 10,\n * justify: 'space-between',\n * align: 'center',\n * padding: 20,\n * margins: [10, 0, { y: 15 }]\n * };\n * ```\n */\nexport interface FlowOptions {\n direction?: FlowDirection;\n wrap?: FlowWrap;\n gap?: number | { h: number; v: number };\n rowGap?: number;\n columnGap?: number;\n justify?: FlowJustify;\n align?: FlowAlign;\n padding?: number | { top?: number; right?: number; bottom?: number; left?: number };\n bounds?: Container | Rectangle;\n rowCount?: number;\n columnCount?: number;\n order?: (a: Container, b: Container) => number;\n margins?: FlowItemMarginValue[];\n}\n\ntype HV = { h: number; v: number };\n\nfunction normalizeGap(opts: FlowOptions): HV {\n if (typeof opts.gap === 'number') return { h: opts.gap, v: opts.gap };\n if (typeof opts.gap === 'object' && opts.gap) return { h: opts.gap.h ?? 0, v: opts.gap.v ?? 0 };\n const h = opts.columnGap ?? 0;\n const v = opts.rowGap ?? 0;\n return { h, v };\n}\n\nfunction normalizePadding(\n p?: number | { top?: number; right?: number; bottom?: number; left?: number },\n) {\n if (typeof p === 'number') return { top: p, right: p, bottom: p, left: p };\n return { top: p?.top ?? 0, right: p?.right ?? 0, bottom: p?.bottom ?? 0, left: p?.left ?? 0 };\n}\n\nfunction normalizeMargin(value: FlowItemMarginValue): {\n top: number;\n right: number;\n bottom: number;\n left: number;\n} {\n if (value === undefined) {\n return { top: 0, right: 0, bottom: 0, left: 0 };\n }\n\n if (typeof value === 'number') {\n return { top: value, right: value, bottom: value, left: value };\n }\n\n const top = value.top ?? value.y ?? 0;\n const bottom = value.bottom ?? value.y ?? 0;\n const left = value.left ?? value.x ?? 0;\n const right = value.right ?? value.x ?? 0;\n\n return { top, right, bottom, left };\n}\n\nfunction getFlowBounds(items: Container[], opts: FlowOptions, parent: Container): Rectangle {\n const pad = normalizePadding(opts.padding);\n if (opts.wrap === 'bounds' && opts.bounds) {\n let r: Rectangle;\n if (opts.bounds instanceof Rectangle) {\n r = opts.bounds;\n } else {\n const b = getLocalBoundsInParent(opts.bounds, parent);\n r = new Rectangle(b.left, b.top, b.width, b.height);\n }\n return new Rectangle(\n r.x + pad.left,\n r.y + pad.top,\n Math.max(0, r.width - pad.left - pad.right),\n Math.max(0, r.height - pad.top - pad.bottom),\n );\n }\n const sel = getSelectionBounds(items, parent);\n return new Rectangle(\n // TODO Not sure side effects check this out latter\n /*sel.left +*/ pad.left,\n /*sel.top + */ pad.top,\n Math.max(0, sel.width - pad.left - pad.right),\n Math.max(0, sel.height - pad.top - pad.bottom),\n );\n}\n\n/**\n * Flexbox-like layout utility for arranging PixiJS containers in rows or columns.\n *\n * Flow provides a powerful layout system similar to CSS Flexbox, allowing you to\n * arrange containers horizontally or vertically with automatic wrapping, spacing,\n * alignment, and justification.\n *\n * ## Features\n *\n * - **Flexible Direction**: Row (horizontal) or column (vertical) layouts\n * - **Smart Wrapping**: No wrap, wrap by bounds, or wrap by count\n * - **Spacing Control**: Gaps between items, padding around container\n * - **Alignment**: Start, center, end alignment on cross-axis\n * - **Justification**: Start, center, end, space-between, space-around, space-evenly\n * - **Custom Sorting**: Optional custom order function\n *\n * ## Layout Modes\n *\n * ### Row Layout (Horizontal)\n * Items flow left to right, wrapping creates new rows below.\n * - Main axis: Horizontal (justify controls)\n * - Cross axis: Vertical (align controls)\n *\n * ### Column Layout (Vertical)\n * Items flow top to bottom, wrapping creates new columns to the right.\n * - Main axis: Vertical (justify controls)\n * - Cross axis: Horizontal (align controls)\n *\n * ## Wrapping Modes\n *\n * - **none**: Single line/column, no wrapping\n * - **bounds**: Wrap when reaching container bounds\n * - **count**: Wrap after specific number of items (rowCount/columnCount)\n *\n * @example\n * ```typescript\n * import { Flow } from '@rb-games/core/layout';\n * import { Container, Sprite } from 'pixi.js';\n *\n * // Create inventory grid\n * const items = Array.from({ length: 20 }, () => new Sprite());\n * const container = new Container();\n * container.addChild(...items);\n *\n * // Grid layout: 5 columns, wrap by count\n * Flow.layout(items, {\n * direction: 'row',\n * wrap: 'count',\n * columnCount: 5,\n * gap: 10,\n * padding: 20\n * });\n * ```\n *\n * @example\n * ```typescript\n * // Responsive horizontal menu with wrapping\n * const menuItems = [item1, item2, item3, item4, item5];\n *\n * Flow.layout(menuItems, {\n * direction: 'row',\n * wrap: 'bounds',\n * bounds: new Rectangle(0, 0, 800, 600),\n * gap: 15,\n * justify: 'space-between',\n * align: 'center',\n * padding: { top: 10, right: 20, bottom: 10, left: 20 }\n * });\n * ```\n *\n * @example\n * ```typescript\n * // Vertical button list\n * const buttons = [btn1, btn2, btn3];\n *\n * Flow.layout(buttons, {\n * direction: 'column',\n * wrap: 'none',\n * gap: 10,\n * align: 'center',\n * justify: 'start'\n * });\n * ```\n *\n * @public\n */\nexport class Flow {\n /**\n * Arranges containers in a flexbox-like layout.\n *\n * This method modifies container positions in-place to create the desired layout.\n * Items are sorted (if order function provided) and then arranged according to\n * direction, wrapping, alignment, and justification settings.\n *\n * @param items - Array of containers to layout\n * @param options - Layout configuration options\n *\n * @example\n * ```typescript\n * // Simple horizontal row\n * Flow.layout(items, { direction: 'row', gap: 10 });\n *\n * // Grid with 4 columns\n * Flow.layout(items, {\n * direction: 'row',\n * wrap: 'count',\n * columnCount: 4,\n * gap: { h: 10, v: 15 }\n * });\n *\n * // Centered vertical list\n * Flow.layout(items, {\n * direction: 'column',\n * align: 'center',\n * gap: 20\n * });\n * ```\n */\n static layout(items: Container[], options?: FlowOptions) {\n if (!items || items.length === 0) return;\n const opts: FlowOptions = {\n direction: 'row',\n wrap: 'none',\n gap: 0,\n justify: 'start',\n align: 'start',\n ...options,\n };\n\n const parent = getCommonParent(items);\n const gap = normalizeGap(opts);\n const dir = opts.direction ?? 'row';\n const wrap = opts.wrap ?? 'none';\n const ordered = opts.order ? [...items].sort(opts.order) : [...items];\n const area = getFlowBounds(ordered, opts, parent);\n\n if (wrap === 'count') {\n if (dir === 'row') {\n const cols =\n opts.columnCount ??\n (opts.rowCount ? Math.ceil(ordered.length / opts.rowCount) : ordered.length);\n const lines: Container[][] = [];\n for (let i = 0; i < ordered.length; i += cols) lines.push(ordered.slice(i, i + cols));\n layoutLinesRow(lines, parent, area, gap, opts.justify!, opts.align!, opts.margins);\n } else {\n const rows =\n opts.rowCount ??\n (opts.columnCount ? Math.ceil(ordered.length / opts.columnCount) : ordered.length);\n const columns: Container[][] = [];\n for (let i = 0; i < ordered.length; i += rows) columns.push(ordered.slice(i, i + rows));\n layoutLinesColumn(columns, parent, area, gap, opts.justify!, opts.align!, opts.margins);\n }\n return;\n }\n\n if (wrap === 'bounds') {\n if (dir === 'row') {\n const lines: Container[][] = [];\n let line: Container[] = [];\n let lineW = 0;\n for (const it of ordered) {\n const b = getLocalBoundsInParent(it, parent);\n const needed = line.length === 0 ? b.width : gap.h + b.width;\n if (line.length > 0 && lineW + needed > area.width) {\n lines.push(line);\n line = [it];\n lineW = b.width;\n } else {\n line.push(it);\n lineW += needed;\n }\n }\n if (line.length) lines.push(line);\n layoutLinesRow(lines, parent, area, gap, opts.justify!, opts.align!, opts.margins);\n } else {\n const columns: Container[][] = [];\n let col: Container[] = [];\n let colH = 0;\n for (const it of ordered) {\n const b = getLocalBoundsInParent(it, parent);\n const needed = col.length === 0 ? b.height : gap.v + b.height;\n if (col.length > 0 && colH + needed > area.height) {\n columns.push(col);\n col = [it];\n colH = b.height;\n } else {\n col.push(it);\n colH += needed;\n }\n }\n if (col.length) columns.push(col);\n layoutLinesColumn(columns, parent, area, gap, opts.justify!, opts.align!, opts.margins);\n }\n return;\n }\n\n if (wrap === 'none') {\n if (dir === 'row') {\n const lines = [ordered];\n layoutLinesRow(lines, parent, area, gap, opts.justify!, opts.align!, opts.margins);\n } else {\n const columns = [ordered];\n layoutLinesColumn(columns, parent, area, gap, opts.justify!, opts.align!, opts.margins);\n }\n }\n }\n}\n\nfunction layoutLinesRow(\n lines: Container[][],\n parent: Container,\n area: Rectangle,\n gap: HV,\n justify: FlowJustify,\n align: FlowAlign,\n margins?: FlowItemMarginValue[],\n) {\n let y = area.y;\n for (const line of lines) {\n let contentW = 0;\n let lineH = 0;\n const sizes = line.map((it) => {\n const b = getLocalBoundsInParent(it, parent);\n lineH = Math.max(lineH, b.height);\n return b;\n });\n if (line.length > 0) contentW = sizes.reduce((s, b, i) => s + b.width + (i > 0 ? gap.h : 0), 0);\n let x = area.x;\n if (justify === 'center') {\n x += Math.max(0, (area.width - contentW) / 2);\n } else if (justify === 'end') {\n x += Math.max(0, area.width - contentW);\n } else if (justify === 'space-between' && line.length > 1) {\n const free = Math.max(0, area.width - sizes.reduce((s, b) => s + b.width, 0));\n const g = free / (line.length - 1);\n positionRow(line, sizes, parent, x, y, lineH, { h: g, v: gap.v }, align, margins);\n y += lineH + gap.v;\n continue;\n } else if (justify === 'space-around' && line.length > 0) {\n const free = Math.max(0, area.width - sizes.reduce((s, b) => s + b.width, 0));\n const g = free / line.length;\n x += g / 2;\n positionRow(line, sizes, parent, x, y, lineH, { h: g, v: gap.v }, align, margins);\n y += lineH + gap.v;\n continue;\n } else if (justify === 'space-evenly' && line.length > 0) {\n const free = Math.max(0, area.width - sizes.reduce((s, b) => s + b.width, 0));\n const g = free / (line.length + 1);\n x += g;\n positionRow(line, sizes, parent, x, y, lineH, { h: g, v: gap.v }, align, margins);\n y += lineH + gap.v;\n continue;\n }\n positionRow(line, sizes, parent, x, y, lineH, gap, align, margins);\n y += lineH + gap.v;\n }\n}\n\nfunction positionRow(\n line: Container[],\n sizes: BoundsLike[],\n parent: Container,\n x: number,\n y: number,\n lineH: number,\n gap: HV,\n align: FlowAlign,\n margins?: FlowItemMarginValue[],\n) {\n let cursor = x;\n for (let i = 0; i < line.length; i++) {\n const it = line[i];\n const b = sizes[i];\n const margin = normalizeMargin(margins?.[i]);\n\n const dx = cursor + margin.left - b.left;\n let dy = 0;\n if (align === 'start') dy = y + margin.top - b.top;\n else if (align === 'center') dy = y + margin.top + (lineH - b.height) / 2 - b.top;\n else dy = y + margin.top + (lineH - b.height) - b.top;\n nudgeX(it, dx);\n nudgeY(it, dy);\n cursor += margin.left + b.width + margin.right + gap.h;\n }\n}\n\nfunction layoutLinesColumn(\n columns: Container[][],\n parent: Container,\n area: Rectangle,\n gap: HV,\n justify: FlowJustify,\n align: FlowAlign,\n margins?: FlowItemMarginValue[],\n) {\n let x = area.x;\n for (const col of columns) {\n let contentH = 0;\n let colW = 0;\n const sizes = col.map((it) => {\n const b = getLocalBoundsInParent(it, parent);\n colW = Math.max(colW, b.width);\n return b;\n });\n if (col.length > 0) contentH = sizes.reduce((s, b, i) => s + b.height + (i > 0 ? gap.v : 0), 0);\n let y = area.y;\n if (justify === 'center') {\n y += Math.max(0, (area.height - contentH) / 2);\n } else if (justify === 'end') {\n y += Math.max(0, area.height - contentH);\n } else if (justify === 'space-between' && col.length > 1) {\n const free = Math.max(0, area.height - sizes.reduce((s, b) => s + b.height, 0));\n const g = free / (col.length - 1);\n positionColumn(col, sizes, parent, x, y, colW, { h: gap.h, v: g }, align, margins);\n x += colW + gap.h;\n continue;\n } else if (justify === 'space-around' && col.length > 0) {\n const free = Math.max(0, area.height - sizes.reduce((s, b) => s + b.height, 0));\n const g = free / col.length;\n y += g / 2;\n positionColumn(col, sizes, parent, x, y, colW, { h: gap.h, v: g }, align, margins);\n x += colW + gap.h;\n continue;\n } else if (justify === 'space-evenly' && col.length > 0) {\n const free = Math.max(0, area.height - sizes.reduce((s, b) => s + b.height, 0));\n const g = free / (col.length + 1);\n y += g;\n positionColumn(col, sizes, parent, x, y, colW, { h: gap.h, v: g }, align, margins);\n x += colW + gap.h;\n continue;\n }\n positionColumn(col, sizes, parent, x, y, colW, gap, align, margins);\n x += colW + gap.h;\n }\n}\n\nfunction positionColumn(\n col: Container[],\n sizes: BoundsLike[],\n parent: Container,\n x: number,\n y: number,\n colW: number,\n gap: HV,\n align: FlowAlign,\n margins?: FlowItemMarginValue[],\n) {\n let cursor = y;\n for (let i = 0; i < col.length; i++) {\n const it = col[i];\n const b = sizes[i];\n const margin = normalizeMargin(margins?.[i]);\n\n let dx = 0;\n if (align === 'start') dx = x + margin.left - b.left;\n else if (align === 'center') dx = x + margin.left + (colW - b.width) / 2 - b.left;\n else dx = x + margin.left + (colW - b.width) - b.left;\n const dy = cursor + margin.top - b.top;\n nudgeX(it, dx);\n nudgeY(it, dy);\n cursor += margin.top + b.height + margin.bottom + gap.v;\n }\n}\n","/**\n * Position utility types and functions for CSS-like positioning.\n * Supports keywords (center, top, bottom, left, right), percentages, and numbers.\n */\n\n// Position type definitions\ntype PositionKeyword = 'center' | 'top' | 'bottom' | 'left' | 'right';\ntype NumberPercent = `${number}%`;\ntype NumberString = `${number}`;\ntype SinglePositionValue = PositionKeyword | NumberPercent | NumberString;\ntype TwoPositionValue = `${string} ${string}`;\n\nexport type PositionValue = SinglePositionValue | TwoPositionValue | number;\n\n/**\n * Resolves a single position value to pixels.\n * Assumes pivot/anchor is at (0, 0).\n *\n * @param value - Position value (keyword, percentage, or number)\n * @param axis - Which axis this value applies to ('x' or 'y')\n * @param viewportSize - Size of the viewport/container on this axis\n * @param sourceScaledSize - Size of the source element (after scaling) on this axis\n * @returns Resolved pixel position\n */\nexport function resolvePositionValue(\n value: string | number,\n axis: 'x' | 'y',\n viewportSize: number,\n sourceScaledSize: number\n): number {\n if (typeof value === 'number') {\n return value;\n }\n\n const trimmed = value.trim();\n\n // Percentage value\n if (trimmed.endsWith('%')) {\n const percent = parseFloat(trimmed) / 100;\n // For pivot (0,0): position = viewport * percent - source * percent\n return viewportSize * percent - sourceScaledSize * percent;\n }\n\n // Keyword values\n switch (trimmed) {\n case 'center':\n return (viewportSize - sourceScaledSize) / 2;\n case 'top':\n return axis === 'y' ? 0 : (viewportSize - sourceScaledSize) / 2;\n case 'bottom':\n return axis === 'y' ? viewportSize - sourceScaledSize : (viewportSize - sourceScaledSize) / 2;\n case 'left':\n return axis === 'x' ? 0 : (viewportSize - sourceScaledSize) / 2;\n case 'right':\n return axis === 'x' ? viewportSize - sourceScaledSize : (viewportSize - sourceScaledSize) / 2;\n default:\n // Try parsing as number\n const num = parseFloat(trimmed);\n return isNaN(num) ? 0 : num;\n }\n}\n\n/**\n * Resolves a position string to x, y coordinates.\n * Supports: \"center\", \"center top\", \"50%\", \"50% 0\", 0\n *\n * @param position - Position value (string or number)\n * @param viewportWidth - Width of the viewport/container\n * @param viewportHeight - Height of the viewport/container\n * @param sourceScaledWidth - Width of the source element (after scaling)\n * @param sourceScaledHeight - Height of the source element (after scaling)\n * @returns Object with x and y pixel coordinates\n *\n * @example\n * ```typescript\n * // Center on both axes\n * resolvePosition(\"center\", 1920, 1080, 800, 600);\n * // { x: 560, y: 240 }\n *\n * // Center horizontally, top vertically\n * resolvePosition(\"center top\", 1920, 1080, 800, 600);\n * // { x: 560, y: 0 }\n *\n * // 50% on both axes (same as center for pivot 0,0)\n * resolvePosition(\"50%\", 1920, 1080, 800, 600);\n * // { x: 560, y: 240 }\n *\n * // Fixed position\n * resolvePosition(100, 1920, 1080, 800, 600);\n * // { x: 100, y: 100 }\n * ```\n */\nexport function resolvePosition(\n position: PositionValue,\n viewportWidth: number,\n viewportHeight: number,\n sourceScaledWidth: number,\n sourceScaledHeight: number\n): { x: number; y: number } {\n // Number - same value for both axes\n if (typeof position === 'number') {\n return { x: position, y: position };\n }\n\n const parts = position.trim().split(/\\s+/);\n\n if (parts.length === 1) {\n // Single value - apply to both axes\n const val = parts[0];\n return {\n x: resolvePositionValue(val, 'x', viewportWidth, sourceScaledWidth),\n y: resolvePositionValue(val, 'y', viewportHeight, sourceScaledHeight),\n };\n }\n\n // Two values - first is x, second is y\n return {\n x: resolvePositionValue(parts[0], 'x', viewportWidth, sourceScaledWidth),\n y: resolvePositionValue(parts[1], 'y', viewportHeight, sourceScaledHeight),\n };\n}\n"]}
@@ -0,0 +1,290 @@
1
+ import { SimpleEase } from './ParticleUtils';
2
+ import { Particle } from './Particle';
3
+ import { EmitterConfigV3 } from './EmitterConfig';
4
+ import { IEmitterBehavior, IEmitterBehaviorClass } from './behaviors/Behaviors';
5
+ import { Container, Point } from 'pixi.js';
6
+ /**
7
+ * Key used in sorted order to determine when to set particle position from the emitter position
8
+ * and rotation.
9
+ */
10
+ declare const PositionParticle: unique symbol;
11
+ /**
12
+ * A particle emitter.
13
+ */
14
+ export declare class Emitter {
15
+ private static knownBehaviors;
16
+ /**
17
+ * Registers a new behavior, so that it will be recognized when initializing emitters.
18
+ * Behaviors registered later with duplicate types will override older ones, although there is no limit on
19
+ * the allowed types.
20
+ * @param constructor The behavior class to register.
21
+ */
22
+ static registerBehavior(constructor: IEmitterBehaviorClass): void;
23
+ /**
24
+ * Active initialization behaviors for this emitter.
25
+ */
26
+ protected initBehaviors: (IEmitterBehavior | typeof PositionParticle)[];
27
+ /**
28
+ * Active update behaviors for this emitter.
29
+ */
30
+ protected updateBehaviors: IEmitterBehavior[];
31
+ /**
32
+ * Active recycle behaviors for this emitter.
33
+ */
34
+ protected recycleBehaviors: IEmitterBehavior[];
35
+ /**
36
+ * The minimum lifetime for a particle, in seconds.
37
+ */
38
+ minLifetime: number;
39
+ /**
40
+ * The maximum lifetime for a particle, in seconds.
41
+ */
42
+ maxLifetime: number;
43
+ /**
44
+ * An easing function for nonlinear interpolation of values. Accepts a single
45
+ * parameter of time as a value from 0-1, inclusive. Expected outputs are values
46
+ * from 0-1, inclusive.
47
+ */
48
+ customEase: SimpleEase;
49
+ /**
50
+ * Time between particle spawns in seconds.
51
+ */
52
+ protected _frequency: number;
53
+ /**
54
+ * Chance that a particle will be spawned on each opportunity to spawn one.
55
+ * 0 is 0%, 1 is 100%.
56
+ */
57
+ spawnChance: number;
58
+ /**
59
+ * Maximum number of particles to keep alive at a time. If this limit
60
+ * is reached, no more particles will spawn until some have died.
61
+ */
62
+ maxParticles: number;
63
+ /**
64
+ * The amount of time in seconds to emit for before setting emit to false.
65
+ * A value of -1 is an unlimited amount of time.
66
+ */
67
+ emitterLifetime: number;
68
+ /**
69
+ * Position at which to spawn particles, relative to the emitter's owner's origin.
70
+ * For example, the flames of a rocket travelling right might have a spawnPos
71
+ * of {x:-50, y:0}.
72
+ * to spawn at the rear of the rocket.
73
+ * To change this, use updateSpawnPos().
74
+ */
75
+ spawnPos: Point;
76
+ /**
77
+ * Number of particles to spawn time that the frequency allows for particles to spawn.
78
+ */
79
+ particlesPerWave: number;
80
+ /**
81
+ * Rotation of the emitter or emitter's owner in degrees. This is added to
82
+ * the calculated spawn angle.
83
+ * To change this, use rotate().
84
+ */
85
+ protected rotation: number;
86
+ /**
87
+ * The world position of the emitter's owner, to add spawnPos to when
88
+ * spawning particles. To change this, use updateOwnerPos().
89
+ */
90
+ protected ownerPos: Point;
91
+ /**
92
+ * The origin + spawnPos in the previous update, so that the spawn position
93
+ * can be interpolated to space out particles better.
94
+ */
95
+ protected _prevEmitterPos: Point;
96
+ /**
97
+ * If _prevEmitterPos is valid, to prevent interpolation on the first update
98
+ */
99
+ protected _prevPosIsValid: boolean;
100
+ /**
101
+ * If either ownerPos or spawnPos has changed since the previous update.
102
+ */
103
+ protected _posChanged: boolean;
104
+ /**
105
+ * The container to add particles to.
106
+ */
107
+ protected _parent: Container;
108
+ /**
109
+ * If particles should be added at the back of the display list instead of the front.
110
+ */
111
+ addAtBack: boolean;
112
+ /**
113
+ * The current number of active particles.
114
+ */
115
+ particleCount: number;
116
+ /**
117
+ * If particles should be emitted during update() calls. Setting this to false
118
+ * stops new particles from being created, but allows existing ones to die out.
119
+ */
120
+ protected _emit: boolean;
121
+ /**
122
+ * The timer for when to spawn particles in seconds, where numbers less
123
+ * than 0 mean that particles should be spawned.
124
+ */
125
+ protected _spawnTimer: number;
126
+ /**
127
+ * The life of the emitter in seconds.
128
+ */
129
+ protected _emitterLife: number;
130
+ /**
131
+ * The particles that are active and on the display list. This is the first particle in a
132
+ * linked list.
133
+ */
134
+ protected _activeParticlesFirst: Particle;
135
+ /**
136
+ * The particles that are active and on the display list. This is the last particle in a
137
+ * linked list.
138
+ */
139
+ protected _activeParticlesLast: Particle;
140
+ /**
141
+ * The particles that are not currently being used. This is the first particle in a
142
+ * linked list.
143
+ */
144
+ protected _poolFirst: Particle;
145
+ /**
146
+ * The original config object that this emitter was initialized with.
147
+ */
148
+ protected _origConfig: any;
149
+ /**
150
+ * If the update function is called automatically from the shared ticker.
151
+ * Setting this to false requires calling the update function manually.
152
+ */
153
+ protected _autoUpdate: boolean;
154
+ /**
155
+ * If the emitter should destroy itself when all particles have died out. This is set by
156
+ * playOnceAndDestroy();
157
+ */
158
+ protected _destroyWhenComplete: boolean;
159
+ /**
160
+ * A callback for when all particles have died out. This is set by
161
+ * playOnceAndDestroy() or playOnce();
162
+ */
163
+ protected _completeCallback: () => void;
164
+ /**
165
+ * Factory method to create a new particle. Override this in subclasses
166
+ * to create custom particle types (e.g., SpineParticle).
167
+ */
168
+ protected createParticle(): Particle;
169
+ /**
170
+ * @param particleParent The container to add the particles to.
171
+ * @param particleImages A texture or array of textures to use
172
+ * for the particles. Strings will be turned
173
+ * into textures via Texture.from().
174
+ * @param config A configuration object containing settings for the emitter.
175
+ * @param config.emit If config.emit is explicitly passed as false, the
176
+ * Emitter will start disabled.
177
+ * @param config.autoUpdate If config.autoUpdate is explicitly passed as
178
+ * true, the Emitter will automatically call
179
+ * update via the PIXI shared ticker.
180
+ */
181
+ constructor(particleParent: Container, config: EmitterConfigV3);
182
+ /**
183
+ * Time between particle spawns in seconds. If this value is not a number greater than 0,
184
+ * it will be set to 1 (particle per second) to prevent infinite loops.
185
+ */
186
+ get frequency(): number;
187
+ set frequency(value: number);
188
+ /**
189
+ * The container to add particles to. Settings this will dump any active particles.
190
+ */
191
+ get parent(): Container;
192
+ set parent(value: Container);
193
+ /**
194
+ * Sets up the emitter based on the config settings.
195
+ * @param config A configuration object containing settings for the emitter.
196
+ */
197
+ init(config: EmitterConfigV3): void;
198
+ /**
199
+ * Gets the instantiated behavior of the specified type, if it is present on this emitter.
200
+ * @param type The behavior type to find.
201
+ */
202
+ getBehavior(type: string): IEmitterBehavior | null;
203
+ /**
204
+ * Fills the pool with the specified number of particles, so that they don't have to be instantiated later.
205
+ * @param count The number of particles to create.
206
+ */
207
+ fillPool(count: number): void;
208
+ /**
209
+ * Recycles an individual particle. For internal use only.
210
+ * @param particle The particle to recycle.
211
+ * @param fromCleanup If this is being called to manually clean up all particles.
212
+ * @internal
213
+ */
214
+ recycle(particle: Particle, fromCleanup?: boolean): void;
215
+ /**
216
+ * Sets the rotation of the emitter to a new value. This rotates the spawn position in addition
217
+ * to particle direction.
218
+ * @param newRot The new rotation, in degrees.
219
+ */
220
+ rotate(newRot: number): void;
221
+ /**
222
+ * Changes the spawn position of the emitter.
223
+ * @param x The new x value of the spawn position for the emitter.
224
+ * @param y The new y value of the spawn position for the emitter.
225
+ */
226
+ updateSpawnPos(x: number, y: number): void;
227
+ /**
228
+ * Changes the position of the emitter's owner. You should call this if you are adding
229
+ * particles to the world container that your emitter's owner is moving around in.
230
+ * @param x The new x value of the emitter's owner.
231
+ * @param y The new y value of the emitter's owner.
232
+ */
233
+ updateOwnerPos(x: number, y: number): void;
234
+ /**
235
+ * Prevents emitter position interpolation in the next update.
236
+ * This should be used if you made a major position change of your emitter's owner
237
+ * that was not normal movement.
238
+ */
239
+ resetPositionTracking(): void;
240
+ /**
241
+ * If particles should be emitted during update() calls. Setting this to false
242
+ * stops new particles from being created, but allows existing ones to die out.
243
+ */
244
+ get emit(): boolean;
245
+ set emit(value: boolean);
246
+ /**
247
+ * If the update function is called automatically from the shared ticker.
248
+ * Setting this to false requires calling the update function manually.
249
+ */
250
+ get autoUpdate(): boolean;
251
+ set autoUpdate(value: boolean);
252
+ /**
253
+ * Starts emitting particles, sets autoUpdate to true, and sets up the Emitter to destroy itself
254
+ * when particle emission is complete.
255
+ * @param callback Callback for when emission is complete (all particles have died off)
256
+ */
257
+ playOnceAndDestroy(callback?: () => void): void;
258
+ /**
259
+ * Starts emitting particles and optionally calls a callback when particle emission is complete.
260
+ * @param callback Callback for when emission is complete (all particles have died off)
261
+ */
262
+ playOnce(callback?: () => void): void;
263
+ private _update;
264
+ /**
265
+ * Updates all particles spawned by this emitter and emits new ones.
266
+ * @param delta Time elapsed since the previous frame, in __seconds__.
267
+ */
268
+ update(delta: number): void;
269
+ /**
270
+ * Emits a single wave of particles, using standard spawnChance & particlesPerWave settings. Does not affect
271
+ * regular spawning through the frequency, and ignores the emit property. The max particle count is respected, however,
272
+ * so if there are already too many particles then nothing will happen.
273
+ */
274
+ emitNow(): void;
275
+ /**
276
+ * Kills all active particles immediately.
277
+ */
278
+ cleanup(): void;
279
+ /**
280
+ * If this emitter has been destroyed. Note that a destroyed emitter can still be reused, after
281
+ * having a new parent set and being reinitialized.
282
+ */
283
+ get destroyed(): boolean;
284
+ /**
285
+ * Destroys the emitter and all of its particles.
286
+ */
287
+ destroy(): void;
288
+ }
289
+ export {};
290
+ //# sourceMappingURL=Emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Emitter.d.ts","sourceRoot":"","sources":["../../particle/Emitter.ts"],"names":[],"mappings":"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"}