@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":["../../devtools/DraggableController.ts","../../devtools/ResizableController.ts","../../devtools/treePlugin.ts","../../devtools/overlayPlugin.ts","../../devtools/spriteTextPropertiesPlugin.ts","../../devtools/spinePropertiesPlugin.ts","../../devtools/index.ts"],"names":["_a","SECTION"],"mappings":"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","file":"index.js","sourcesContent":["import type { Container, FederatedPointerEvent } from 'pixi.js';\n\nexport interface DraggableContainer extends Container {\n __draggable?: boolean;\n __dragging?: boolean;\n}\n\ninterface DragState {\n offsetX: number;\n offsetY: number;\n}\n\nconst dragStates = new WeakMap<Container, DragState>();\nconst originalEventModes = new WeakMap<Container, string>();\nconst originalCursors = new WeakMap<Container, string>();\n\nfunction onDragStart(this: DraggableContainer, e: FederatedPointerEvent) {\n if (!this.__draggable) return;\n\n this.__dragging = true;\n this.cursor = 'grabbing';\n\n const parent = this.parent;\n if (!parent) return;\n\n const localPos = parent.toLocal(e.global);\n\n dragStates.set(this, {\n offsetX: localPos.x - this.x,\n offsetY: localPos.y - this.y,\n });\n\n e.stopPropagation();\n}\n\nfunction onDragMove(this: DraggableContainer, e: FederatedPointerEvent) {\n if (!this.__dragging) return;\n\n const state = dragStates.get(this);\n if (!state) return;\n\n const parent = this.parent;\n if (!parent) return;\n\n const localPos = parent.toLocal(e.global);\n\n this.x = localPos.x - state.offsetX;\n this.y = localPos.y - state.offsetY;\n}\n\nfunction onDragEnd(this: DraggableContainer) {\n if (!this.__dragging) return;\n\n this.__dragging = false;\n this.cursor = 'grab';\n dragStates.delete(this);\n}\n\nexport function enableDrag(container: DraggableContainer): void {\n originalEventModes.set(container, container.eventMode as string);\n originalCursors.set(container, container.cursor as string);\n\n container.eventMode = 'static';\n container.cursor = 'grab';\n\n container.on('pointerdown', onDragStart, container);\n container.on('globalpointermove', onDragMove, container);\n container.on('pointerup', onDragEnd, container);\n container.on('pointerupoutside', onDragEnd, container);\n}\n\nexport function disableDrag(container: DraggableContainer): void {\n container.off('pointerdown', onDragStart, container);\n container.off('globalpointermove', onDragMove, container);\n container.off('pointerup', onDragEnd, container);\n container.off('pointerupoutside', onDragEnd, container);\n\n const originalMode = originalEventModes.get(container);\n if (originalMode !== undefined) {\n container.eventMode = originalMode as Container['eventMode'];\n }\n\n const originalCursor = originalCursors.get(container);\n if (originalCursor !== undefined) {\n container.cursor = originalCursor;\n }\n\n container.__dragging = false;\n dragStates.delete(container);\n originalEventModes.delete(container);\n originalCursors.delete(container);\n}\n\nexport function isDraggable(container: DraggableContainer): boolean {\n return container.__draggable === true;\n}\n\nexport function isDragging(container: DraggableContainer): boolean {\n return container.__dragging === true;\n}\n","import type { Container } from 'pixi.js';\n\nexport interface ResizableContainer extends Container {\n __resizable?: boolean;\n __resizing?: boolean;\n __resizeOverlay?: ResizeOverlay;\n}\n\ntype HandlePosition = 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w';\n\ninterface ResizeState {\n handle: HandlePosition;\n startX: number;\n startY: number;\n startScaleX: number;\n startScaleY: number;\n startPosX: number;\n startPosY: number;\n startBounds: { width: number; height: number };\n}\n\ninterface ResizeOverlay {\n container: HTMLDivElement;\n handles: Map<HandlePosition, HTMLDivElement>;\n border: HTMLDivElement;\n animationId: number | null;\n}\n\nconst resizeStates = new WeakMap<Container, ResizeState>();\nconst HANDLE_SIZE = 10;\n\nconst cursors: Record<HandlePosition, string> = {\n nw: 'nwse-resize',\n n: 'ns-resize',\n ne: 'nesw-resize',\n e: 'ew-resize',\n se: 'nwse-resize',\n s: 'ns-resize',\n sw: 'nesw-resize',\n w: 'ew-resize',\n};\n\nfunction getCanvasElement(container: Container): HTMLCanvasElement | null {\n try {\n const renderer = (container as any).__pixiApp?.renderer ??\n (globalThis as any).__PIXI_APP__?.renderer;\n if (renderer?.canvas) return renderer.canvas;\n\n // Fallback: find canvas in DOM\n return document.querySelector('canvas');\n } catch {\n return document.querySelector('canvas');\n }\n}\n\nfunction createOverlayContainer(canvas: HTMLCanvasElement): HTMLDivElement {\n const div = document.createElement('div');\n div.className = '__pixi_resize_overlay__';\n div.style.cssText = `\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10000;\n `;\n\n // Insert after canvas\n canvas.parentElement?.appendChild(div);\n\n return div;\n}\n\nfunction createBorderDiv(): HTMLDivElement {\n const div = document.createElement('div');\n div.style.cssText = `\n position: absolute;\n border: 2px dashed #00aaff;\n pointer-events: none;\n box-sizing: border-box;\n `;\n return div;\n}\n\nfunction createHandleDiv(pos: HandlePosition): HTMLDivElement {\n const div = document.createElement('div');\n div.dataset.handle = pos;\n div.style.cssText = `\n position: absolute;\n width: ${HANDLE_SIZE}px;\n height: ${HANDLE_SIZE}px;\n background: #00aaff;\n border: 1px solid white;\n border-radius: 2px;\n cursor: ${cursors[pos]};\n pointer-events: auto;\n transform: translate(-50%, -50%);\n transition: background 0.1s;\n `;\n\n div.addEventListener('mouseenter', () => {\n div.style.background = '#ff6600';\n });\n\n div.addEventListener('mouseleave', () => {\n div.style.background = '#00aaff';\n });\n\n return div;\n}\n\nfunction createResizeOverlay(container: ResizableContainer, canvas: HTMLCanvasElement): ResizeOverlay {\n const overlayContainer = createOverlayContainer(canvas);\n const border = createBorderDiv();\n overlayContainer.appendChild(border);\n\n const handles = new Map<HandlePosition, HTMLDivElement>();\n const positions: HandlePosition[] = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];\n\n positions.forEach((pos) => {\n const handle = createHandleDiv(pos);\n handles.set(pos, handle);\n overlayContainer.appendChild(handle);\n\n handle.addEventListener('pointerdown', (e) => {\n e.preventDefault();\n e.stopPropagation();\n onResizeStart(container, pos, e);\n });\n });\n\n return {\n container: overlayContainer,\n handles,\n border,\n animationId: null,\n };\n}\n\nfunction updateOverlayPositions(container: ResizableContainer, canvas: HTMLCanvasElement): void {\n const overlay = container.__resizeOverlay;\n if (!overlay) return;\n\n const bounds = container.getBounds();\n const canvasRect = canvas.getBoundingClientRect();\n\n // Calculate position relative to canvas\n const renderer = (globalThis as any).__PIXI_APP__?.renderer ??\n (container as any).__pixiApp?.renderer;\n\n let scaleX = 1;\n let scaleY = 1;\n\n if (renderer) {\n scaleX = canvasRect.width / renderer.width;\n scaleY = canvasRect.height / renderer.height;\n }\n\n const x = bounds.x * scaleX;\n const y = bounds.y * scaleY;\n const w = bounds.width * scaleX;\n const h = bounds.height * scaleY;\n\n // Update border\n overlay.border.style.left = `${x}px`;\n overlay.border.style.top = `${y}px`;\n overlay.border.style.width = `${w}px`;\n overlay.border.style.height = `${h}px`;\n\n // Update handles\n const handlePositions: Record<HandlePosition, { x: number; y: number }> = {\n nw: { x: x, y: y },\n n: { x: x + w / 2, y: y },\n ne: { x: x + w, y: y },\n e: { x: x + w, y: y + h / 2 },\n se: { x: x + w, y: y + h },\n s: { x: x + w / 2, y: y + h },\n sw: { x: x, y: y + h },\n w: { x: x, y: y + h / 2 },\n };\n\n overlay.handles.forEach((handle, pos) => {\n const { x: hx, y: hy } = handlePositions[pos];\n handle.style.left = `${hx}px`;\n handle.style.top = `${hy}px`;\n });\n}\n\nfunction startUpdateLoop(container: ResizableContainer, canvas: HTMLCanvasElement): void {\n const overlay = container.__resizeOverlay;\n if (!overlay) return;\n\n const update = () => {\n if (!container.__resizable || !container.__resizeOverlay) return;\n updateOverlayPositions(container, canvas);\n overlay.animationId = requestAnimationFrame(update);\n };\n\n overlay.animationId = requestAnimationFrame(update);\n}\n\nfunction stopUpdateLoop(overlay: ResizeOverlay): void {\n if (overlay.animationId !== null) {\n cancelAnimationFrame(overlay.animationId);\n overlay.animationId = null;\n }\n}\n\nfunction onResizeStart(container: ResizableContainer, handle: HandlePosition, e: PointerEvent): void {\n if (!container.__resizable) return;\n\n container.__resizing = true;\n\n const bounds = container.getLocalBounds();\n\n resizeStates.set(container, {\n handle,\n startX: e.clientX,\n startY: e.clientY,\n startScaleX: container.scale.x,\n startScaleY: container.scale.y,\n startPosX: container.x,\n startPosY: container.y,\n startBounds: { width: bounds.width, height: bounds.height },\n });\n\n const onMove = (moveEvent: PointerEvent) => {\n onResizeMove(container, moveEvent);\n };\n\n const onUp = () => {\n onResizeEnd(container);\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n };\n\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n}\n\nfunction onResizeMove(container: ResizableContainer, e: PointerEvent): void {\n const state = resizeStates.get(container);\n if (!state || !container.__resizing) return;\n\n const dx = e.clientX - state.startX;\n const dy = e.clientY - state.startY;\n\n const baseWidth = state.startBounds.width;\n const baseHeight = state.startBounds.height;\n const startWidth = baseWidth * state.startScaleX;\n const startHeight = baseHeight * state.startScaleY;\n\n let newScaleX = state.startScaleX;\n let newScaleY = state.startScaleY;\n let newX = state.startPosX;\n let newY = state.startPosY;\n\n switch (state.handle) {\n case 'e':\n newScaleX = (startWidth + dx) / baseWidth;\n break;\n case 'w':\n newScaleX = (startWidth - dx) / baseWidth;\n newX = state.startPosX + dx;\n break;\n case 's':\n newScaleY = (startHeight + dy) / baseHeight;\n break;\n case 'n':\n newScaleY = (startHeight - dy) / baseHeight;\n newY = state.startPosY + dy;\n break;\n case 'se':\n newScaleX = (startWidth + dx) / baseWidth;\n newScaleY = (startHeight + dy) / baseHeight;\n break;\n case 'sw':\n newScaleX = (startWidth - dx) / baseWidth;\n newScaleY = (startHeight + dy) / baseHeight;\n newX = state.startPosX + dx;\n break;\n case 'ne':\n newScaleX = (startWidth + dx) / baseWidth;\n newScaleY = (startHeight - dy) / baseHeight;\n newY = state.startPosY + dy;\n break;\n case 'nw':\n newScaleX = (startWidth - dx) / baseWidth;\n newScaleY = (startHeight - dy) / baseHeight;\n newX = state.startPosX + dx;\n newY = state.startPosY + dy;\n break;\n }\n\n // Minimum scale limit\n if (newScaleX > 0.1) {\n container.scale.x = newScaleX;\n container.x = newX;\n }\n if (newScaleY > 0.1) {\n container.scale.y = newScaleY;\n container.y = newY;\n }\n}\n\nfunction onResizeEnd(container: ResizableContainer): void {\n container.__resizing = false;\n resizeStates.delete(container);\n}\n\nexport function enableResize(container: ResizableContainer): void {\n if (container.__resizeOverlay) return;\n\n const canvas = getCanvasElement(container);\n if (!canvas) {\n console.warn('[ResizableController] Canvas not found');\n return;\n }\n\n const overlay = createResizeOverlay(container, canvas);\n container.__resizeOverlay = overlay;\n\n updateOverlayPositions(container, canvas);\n startUpdateLoop(container, canvas);\n}\n\nexport function disableResize(container: ResizableContainer): void {\n const overlay = container.__resizeOverlay;\n if (overlay) {\n stopUpdateLoop(overlay);\n overlay.container.remove();\n container.__resizeOverlay = undefined;\n }\n container.__resizing = false;\n resizeStates.delete(container);\n}\n\nexport function isResizable(container: ResizableContainer): boolean {\n return container.__resizable === true;\n}\n\nexport function isResizing(container: ResizableContainer): boolean {\n return container.__resizing === true;\n}\n","import type { Container } from 'pixi.js';\nimport type { PixiMetadata, TreeExtension } from '@pixi/devtools';\nimport { enableDrag, disableDrag, type DraggableContainer } from './DraggableController';\nimport { enableResize, disableResize, type ResizableContainer } from './ResizableController';\n\nexport interface TransformableContainer extends DraggableContainer, ResizableContainer { }\n\nexport const draggableTreePlugin: TreeExtension = {\n extension: {\n name: 'draggable-tree',\n type: 'sceneTree',\n },\n updateNodeMetadata(node: TransformableContainer, metadata: PixiMetadata) {\n // Drag toggle button\n metadata.buttons!.push({\n name: 'drag',\n icon: '✋',\n type: 'toggle',\n value: node.__draggable ?? false,\n });\n\n // Resize toggle button\n metadata.buttons!.push({\n name: 'resize',\n icon: '⤡',\n type: 'toggle',\n value: node.__resizable ?? false,\n });\n\n // Suffix indicators\n const suffixes: string[] = [];\n if (node.__draggable) suffixes.push('🔀');\n if (node.__resizable) suffixes.push('📐');\n\n if (suffixes.length > 0) {\n metadata.suffix = (metadata.suffix ?? '') + ' ' + suffixes.join('');\n }\n\n return metadata;\n },\n onButtonPress(container: TransformableContainer, buttonName: string, pressed?: boolean) {\n if (buttonName === 'drag') {\n container.__draggable = pressed;\n if (pressed) {\n enableDrag(container);\n } else {\n disableDrag(container);\n }\n } else if (buttonName === 'resize') {\n container.__resizable = pressed;\n if (pressed) {\n enableResize(container);\n } else {\n disableResize(container);\n }\n }\n },\n};\n","import type { Container } from 'pixi.js';\nimport type { OverlayExtension } from '@pixi/devtools';\nimport { isDragging, type DraggableContainer } from './DraggableController';\nimport { isResizing, type ResizableContainer } from './ResizableController';\n\ntype TransformableNode = DraggableContainer & ResizableContainer;\n\n// Default DevTools styles (from pixijs/devtools overlayExtension.ts)\nconst defaultSelectedStyle: Partial<CSSStyleDeclaration> = {\n backgroundColor: 'hsla(340, 70%, 44%, 0.35)',\n border: '1px solid hsla(0, 0%, 100%, 0.5)',\n};\n\nconst defaultHoverStyle: Partial<CSSStyleDeclaration> = {\n backgroundColor: 'hsla(192, 84%, 40%, 0.40)',\n border: '1px solid hsla(0, 0%, 100%, 0.5)',\n};\n\nexport const draggableOverlayPlugin: OverlayExtension = {\n extension: {\n name: 'draggable-overlay',\n type: 'overlay',\n },\n getSelectedStyle(node: Container | null) {\n const n = node as TransformableNode | null;\n\n // Dragging state - orange dashed\n if (n && isDragging(n)) {\n return {\n backgroundColor: 'rgba(255, 165, 0, 0.3)',\n border: '2px dashed orange',\n };\n }\n\n // Resizing state - orange dashed\n if (n && isResizing(n)) {\n return {\n backgroundColor: 'rgba(255, 165, 0, 0.3)',\n border: '2px dashed orange',\n };\n }\n\n // Draggable/Resizable enabled - orange solid\n if (n && (n.__draggable || n.__resizable)) {\n return {\n backgroundColor: 'rgba(255, 165, 0, 0.2)',\n border: '2px solid orange',\n };\n }\n\n // Default - return standard DevTools style\n return defaultSelectedStyle;\n },\n getHoverStyle(node: Container | null) {\n const n = node as TransformableNode | null;\n\n // Draggable/Resizable enabled - light orange\n if (n && (n.__draggable || n.__resizable)) {\n return {\n backgroundColor: 'rgba(255, 165, 0, 0.15)',\n border: '1px dashed orange',\n };\n }\n\n // Default - return standard DevTools style\n return defaultHoverStyle;\n },\n};","import type { Container } from 'pixi.js';\nimport type { PropertiesExtension, PropertiesEntry } from '@pixi/devtools';\n\nconst SECTION = 'SpriteText';\n\ninterface SpriteTextLike {\n text: string;\n plainText: string;\n font: string;\n fonts: string[];\n bbcodeEnabled: boolean;\n tint: number;\n fontSize: number;\n pivotHorizontal: string;\n pivotVertical: string;\n lineAlign: string;\n letterSpacing: number;\n spaceWidth: number;\n wordWrap: boolean;\n wordWrapWidth: number;\n breakWord: boolean;\n allowLineBreak: boolean;\n kerningEnabled: boolean;\n curveEnabled: boolean;\n curveControlXPercent: number;\n curveControlYPercent: number;\n}\n\nconst spriteTextProps: string[] = [\n 'spriteText.text',\n 'spriteText.font',\n 'spriteText.tint',\n 'spriteText.fontSize',\n 'spriteText.pivotHorizontal',\n 'spriteText.pivotVertical',\n 'spriteText.lineAlign',\n 'spriteText.letterSpacing',\n 'spriteText.spaceWidth',\n 'spriteText.wordWrap',\n 'spriteText.wordWrapWidth',\n 'spriteText.breakWord',\n 'spriteText.allowLineBreak',\n 'spriteText.kerningEnabled',\n 'spriteText.curveEnabled',\n 'spriteText.curveControlXPercent',\n 'spriteText.curveControlYPercent',\n];\n\nfunction isSpriteText(container: Container): boolean {\n // Check by constructor name or duck typing\n const name = container.constructor.name;\n if (name === 'SpriteText') return true;\n\n // Duck typing fallback\n const c = container as any;\n const isDuck = c._text !== undefined &&\n c._font !== undefined &&\n c._glyphs !== undefined;\n\n if (isDuck) {\n console.log('[SpriteText Plugin] Detected via duck typing:', name);\n }\n\n return isDuck;\n}\n\nexport const spriteTextPropertiesPlugin: PropertiesExtension = {\n extension: {\n type: 'sceneProperties' as any,\n name: 'spritetext-properties',\n priority: 10,\n },\n\n testNode(container: Container): boolean {\n return isSpriteText(container);\n },\n\n testProp(prop: string): boolean {\n return spriteTextProps.includes(prop);\n },\n\n setProperty(container: Container, prop: string, value: any): void {\n const spriteText = container as unknown as SpriteTextLike;\n const propName = prop.replace('spriteText.', '');\n\n switch (propName) {\n case 'text':\n spriteText.text = value;\n break;\n case 'font':\n spriteText.font = value;\n break;\n case 'tint':\n // DevTools sends color as number or hex string\n if (typeof value === 'string') {\n // Convert hex string (#ffffff) to number\n spriteText.tint = parseInt(value.replace('#', ''), 16);\n } else {\n spriteText.tint = value;\n }\n break;\n case 'fontSize':\n spriteText.fontSize = value;\n break;\n case 'pivotHorizontal':\n spriteText.pivotHorizontal = value;\n break;\n case 'pivotVertical':\n spriteText.pivotVertical = value;\n break;\n case 'lineAlign':\n spriteText.lineAlign = value;\n break;\n case 'letterSpacing':\n spriteText.letterSpacing = value;\n break;\n case 'spaceWidth':\n spriteText.spaceWidth = value;\n break;\n case 'wordWrap':\n spriteText.wordWrap = value;\n break;\n case 'wordWrapWidth':\n spriteText.wordWrapWidth = value;\n break;\n case 'breakWord':\n spriteText.breakWord = value;\n break;\n case 'allowLineBreak':\n spriteText.allowLineBreak = value;\n break;\n case 'kerningEnabled':\n spriteText.kerningEnabled = value;\n break;\n case 'curveEnabled':\n spriteText.curveEnabled = value;\n break;\n case 'curveControlXPercent':\n spriteText.curveControlXPercent = value;\n break;\n case 'curveControlYPercent':\n spriteText.curveControlYPercent = value;\n break;\n }\n },\n\n getProperties(container: Container): PropertiesEntry[] {\n try {\n const spriteText = container as unknown as SpriteTextLike;\n\n return [\n {\n prop: 'spriteText.text',\n value: spriteText.text,\n entry: {\n section: SECTION,\n label: 'Text',\n type: 'text',\n },\n },\n {\n prop: 'spriteText.plainText',\n value: spriteText.plainText,\n entry: {\n section: SECTION,\n label: 'Plain Text',\n type: 'text',\n },\n },\n {\n prop: 'spriteText.bbcodeEnabled',\n value: spriteText.bbcodeEnabled,\n entry: {\n section: SECTION,\n label: 'BBCode Enabled',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.font',\n value: spriteText.font,\n entry: {\n section: SECTION,\n label: 'Font',\n type: 'text',\n },\n },\n {\n prop: 'spriteText.fonts',\n value: spriteText.fonts.join(', '),\n entry: {\n section: SECTION,\n label: 'Fonts',\n type: 'text',\n },\n },\n {\n prop: 'spriteText.tint',\n // DevTools color picker expects number\n value: spriteText.tint,\n entry: {\n section: SECTION,\n label: 'Tint',\n type: 'color',\n },\n },\n {\n prop: 'spriteText.fontSize',\n value: spriteText.fontSize,\n entry: {\n section: SECTION,\n label: 'Font Size',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.pivotHorizontal',\n value: spriteText.pivotHorizontal,\n entry: {\n section: SECTION,\n label: 'Pivot H',\n type: 'select',\n options: { options: ['left', 'center', 'right'] },\n },\n },\n {\n prop: 'spriteText.pivotVertical',\n value: spriteText.pivotVertical,\n entry: {\n section: SECTION,\n label: 'Pivot V',\n type: 'select',\n options: { options: ['top', 'middle', 'bottom'] },\n },\n },\n {\n prop: 'spriteText.lineAlign',\n value: spriteText.lineAlign,\n entry: {\n section: SECTION,\n label: 'Line Align',\n type: 'select',\n options: { options: ['left', 'center', 'right'] },\n },\n },\n {\n prop: 'spriteText.letterSpacing',\n value: spriteText.letterSpacing,\n entry: {\n section: SECTION,\n label: 'Letter Spacing',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.spaceWidth',\n value: spriteText.spaceWidth,\n entry: {\n section: SECTION,\n label: 'Space Width',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.wordWrap',\n value: spriteText.wordWrap,\n entry: {\n section: SECTION,\n label: 'Word Wrap',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.wordWrapWidth',\n value: spriteText.wordWrapWidth,\n entry: {\n section: SECTION,\n label: 'Wrap Width',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.breakWord',\n value: spriteText.breakWord,\n entry: {\n section: SECTION,\n label: 'Break Word',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.allowLineBreak',\n value: spriteText.allowLineBreak,\n entry: {\n section: SECTION,\n label: 'Allow Line Break',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.kerningEnabled',\n value: spriteText.kerningEnabled,\n entry: {\n section: SECTION,\n label: 'Kerning',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.curveEnabled',\n value: spriteText.curveEnabled,\n entry: {\n section: SECTION,\n label: 'Curve Enabled',\n type: 'boolean',\n },\n },\n {\n prop: 'spriteText.curveControlXPercent',\n value: spriteText.curveControlXPercent,\n entry: {\n section: SECTION,\n label: 'Curve X %',\n type: 'number',\n },\n },\n {\n prop: 'spriteText.curveControlYPercent',\n value: spriteText.curveControlYPercent,\n entry: {\n section: SECTION,\n label: 'Curve Y %',\n type: 'number',\n },\n },\n ];\n } catch (e) {\n console.error('[SpriteText Plugin] Error getting properties:', e);\n return [];\n }\n },\n};\n","import type { Container } from 'pixi.js';\nimport type { PropertiesExtension, PropertiesEntry } from '@pixi/devtools';\n\nconst SECTION = 'Spine';\n\ninterface SpineLike {\n skeleton: {\n data: {\n animations: Array<{ name: string }>;\n skins: Array<{ name: string }>;\n };\n skin: { name: string } | null;\n };\n state: {\n tracks: Array<{ animation?: { name: string } } | null>;\n setAnimation: (trackIndex: number, animationName: string, loop: boolean) => void;\n setEmptyAnimation: (trackIndex: number, mixDuration: number) => void;\n };\n autoUpdate: boolean;\n}\n\nconst spineProps: string[] = [\n 'spine.currentAnimation',\n 'spine.currentSkin',\n 'spine.autoUpdate',\n 'spine.playAnimation',\n];\n\nfunction isSpine(container: Container): boolean {\n const name = container.constructor.name;\n if (name === 'Spine') return true;\n\n // Duck typing fallback\n const c = container as any;\n return c.skeleton !== undefined &&\n c.state !== undefined &&\n c.skeleton?.data?.animations !== undefined;\n}\n\nfunction getAnimationNames(spine: SpineLike): string[] {\n try {\n return spine.skeleton.data.animations.map(a => a.name);\n } catch {\n return [];\n }\n}\n\nfunction getSkinNames(spine: SpineLike): string[] {\n try {\n return spine.skeleton.data.skins.map(s => s.name);\n } catch {\n return [];\n }\n}\n\nfunction getCurrentAnimation(spine: SpineLike): string {\n try {\n const track = spine.state.tracks[0];\n return track?.animation?.name ?? '(none)';\n } catch {\n return '(none)';\n }\n}\n\nfunction getCurrentSkin(spine: SpineLike): string {\n try {\n return spine.skeleton.skin?.name ?? 'default';\n } catch {\n return 'default';\n }\n}\n\nexport const spinePropertiesPlugin: PropertiesExtension = {\n extension: {\n type: 'sceneProperties' as any,\n name: 'spine-properties',\n priority: 10,\n },\n\n testNode(container: Container): boolean {\n return isSpine(container);\n },\n\n testProp(prop: string): boolean {\n return spineProps.includes(prop);\n },\n\n setProperty(container: Container, prop: string, value: any): void {\n const spine = container as unknown as SpineLike;\n const propName = prop.replace('spine.', '');\n\n switch (propName) {\n case 'currentSkin':\n try {\n (spine.skeleton as any).setSkinByName(value);\n (spine.skeleton as any).setSlotsToSetupPose();\n } catch (e) {\n console.error('[Spine Plugin] Error setting skin:', e);\n }\n break;\n case 'playAnimation':\n try {\n if (value && value !== '(none)') {\n spine.state.setAnimation(0, value, true);\n } else {\n spine.state.setEmptyAnimation(0, 0.2);\n }\n } catch (e) {\n console.error('[Spine Plugin] Error playing animation:', e);\n }\n break;\n case 'autoUpdate':\n spine.autoUpdate = value;\n break;\n }\n },\n\n getProperties(container: Container): PropertiesEntry[] {\n try {\n const spine = container as unknown as SpineLike;\n const animations = getAnimationNames(spine);\n const skins = getSkinNames(spine);\n const currentAnim = getCurrentAnimation(spine);\n const currentSkin = getCurrentSkin(spine);\n\n return [\n {\n prop: 'spine.currentAnimation',\n value: currentAnim,\n entry: {\n section: SECTION,\n label: 'Current Animation',\n type: 'text',\n options: { disabled: true },\n },\n },\n {\n prop: 'spine.playAnimation',\n value: currentAnim,\n entry: {\n section: SECTION,\n label: 'Play Animation',\n type: 'select',\n options: { options: ['(none)', ...animations] },\n },\n },\n {\n prop: 'spine.currentSkin',\n value: currentSkin,\n entry: {\n section: SECTION,\n label: 'Skin',\n type: 'select',\n options: { options: skins },\n },\n },\n {\n prop: 'spine.autoUpdate',\n value: spine.autoUpdate,\n entry: {\n section: SECTION,\n label: 'Auto Update',\n type: 'boolean',\n },\n },\n ];\n } catch (e) {\n console.error('[Spine Plugin] Error getting properties:', e);\n return [];\n }\n },\n};\n","import { draggableTreePlugin } from './treePlugin';\nimport { draggableOverlayPlugin } from './overlayPlugin';\nimport { spriteTextPropertiesPlugin } from './spriteTextPropertiesPlugin';\nimport { spinePropertiesPlugin } from './spinePropertiesPlugin';\n\nexport * from './treePlugin';\nexport * from './overlayPlugin';\nexport * from './DraggableController';\nexport * from './ResizableController';\nexport * from './spriteTextPropertiesPlugin';\nexport * from './spinePropertiesPlugin';\n\ninterface Devtools {\n __PIXI_DEVTOOLS__: {\n extensions: any[];\n };\n}\n\nconst gThis = globalThis as unknown as Devtools;\n\ngThis.__PIXI_DEVTOOLS__ = {\n ...gThis.__PIXI_DEVTOOLS__,\n extensions: [\n ...(gThis.__PIXI_DEVTOOLS__?.extensions ?? []),\n draggableTreePlugin,\n draggableOverlayPlugin,\n spriteTextPropertiesPlugin,\n spinePropertiesPlugin,\n ],\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import type { OverlayExtension } from '@pixi/devtools';
2
+ export declare const draggableOverlayPlugin: OverlayExtension;
3
+ //# sourceMappingURL=overlayPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlayPlugin.d.ts","sourceRoot":"","sources":["../../devtools/overlayPlugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAiBvD,eAAO,MAAM,sBAAsB,EAAE,gBAiDpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PropertiesExtension } from '@pixi/devtools';
2
+ export declare const spinePropertiesPlugin: PropertiesExtension;
3
+ //# sourceMappingURL=spinePropertiesPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinePropertiesPlugin.d.ts","sourceRoot":"","sources":["../../devtools/spinePropertiesPlugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAmB,MAAM,gBAAgB,CAAC;AAuE3E,eAAO,MAAM,qBAAqB,EAAE,mBAmGnC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PropertiesExtension } from '@pixi/devtools';
2
+ export declare const spriteTextPropertiesPlugin: PropertiesExtension;
3
+ //# sourceMappingURL=spriteTextPropertiesPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spriteTextPropertiesPlugin.d.ts","sourceRoot":"","sources":["../../devtools/spriteTextPropertiesPlugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAmB,MAAM,gBAAgB,CAAC;AAiE3E,eAAO,MAAM,0BAA0B,EAAE,mBAmRxC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { TreeExtension } from '@pixi/devtools';
2
+ import { type DraggableContainer } from './DraggableController';
3
+ import { type ResizableContainer } from './ResizableController';
4
+ export interface TransformableContainer extends DraggableContainer, ResizableContainer {
5
+ }
6
+ export declare const draggableTreePlugin: TreeExtension;
7
+ //# sourceMappingURL=treePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treePlugin.d.ts","sourceRoot":"","sources":["../../devtools/treePlugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAA+B,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE7F,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB,EAAE,kBAAkB;CAAI;AAE1F,eAAO,MAAM,mBAAmB,EAAE,aAkDjC,CAAC"}
@@ -0,0 +1,404 @@
1
+ import '@pixi/layout';
2
+ import '@pixi/layout/devtools';
3
+ import '../devtools';
4
+ import { Application as PixiApplication, ApplicationOptions } from 'pixi.js';
5
+ import { EnginePlugin } from '../plugins/Plugin.types';
6
+ export type PlatformType = 'mobile' | 'desktop';
7
+ /**
8
+ * Configuration interface for the PixiEngine.
9
+ * Extends PixiJS ApplicationOptions to provide additional engine-specific settings.
10
+ *
11
+ * @public
12
+ */
13
+ export interface EngineConfig extends ApplicationOptions {
14
+ appendTo?: HTMLElement;
15
+ }
16
+ /**
17
+ * Core game engine built on top of PixiJS with a plugin-based architecture.
18
+ *
19
+ * PixiEngine provides a robust foundation for building casino games by managing:
20
+ * - PixiJS application lifecycle
21
+ * - Plugin registration and initialization with dependency resolution
22
+ * - Data storage and retrieval
23
+ * - Automatic window resizing
24
+ * - Frame update loop integration
25
+ *
26
+ * ## Architecture
27
+ *
28
+ * The engine follows a plugin-based architecture where functionality is added through
29
+ * plugins that implement the {@link EnginePlugin} interface. Plugins can:
30
+ * - Depend on other plugins (dependency resolution)
31
+ * - Have initialization priorities
32
+ * - Hook into lifecycle events (initialize, ready, update, resize)
33
+ *
34
+ * ## Plugin Lifecycle
35
+ *
36
+ * 1. **REGISTERED** - Plugin is registered but not initialized
37
+ * 2. **INITIALIZING** - Plugin's initialize() method is being called
38
+ * 3. **INITIALIZED** - Plugin initialization complete
39
+ * 4. **READY** - Plugin's onReady() called, fully operational
40
+ * 5. **ERROR** - Plugin failed to initialize
41
+ *
42
+ * ## Usage Example
43
+ *
44
+ * ```typescript
45
+ * // Create engine instance
46
+ * const engine = new PixiEngine({
47
+ * width: 1920,
48
+ * height: 1080,
49
+ * backgroundColor: 0x1a1a1a,
50
+ * antialias: true
51
+ * });
52
+ *
53
+ * // Register plugins
54
+ * engine.registerPlugin(new ScenePlugin());
55
+ * engine.registerPlugin(new AudioPlugin());
56
+ * engine.registerPlugin(new GameStatePlugin());
57
+ *
58
+ * // Initialize engine (initializes all plugins)
59
+ * await engine.initialize();
60
+ *
61
+ * // Access plugins
62
+ * const scenePlugin = engine.getPlugin<ScenePlugin>('ScenePlugin');
63
+ * scenePlugin?.loadScene('MainMenu');
64
+ *
65
+ * // Store/retrieve data
66
+ * engine.setData('playerScore', 1000);
67
+ * const score = engine.getData<number>('playerScore');
68
+ *
69
+ * // Update loop (typically called by GSAP ticker)
70
+ * gsap.ticker.add((time, deltaTime) => {
71
+ * engine.onUpdate(deltaTime);
72
+ * });
73
+ * ```
74
+ *
75
+ * @category Engine
76
+ * @public
77
+ */
78
+ export declare class PixiEngine {
79
+ protected config: Partial<EngineConfig>;
80
+ private _pixiApp;
81
+ private plugins;
82
+ private isInitialized;
83
+ private pluginStates;
84
+ private readyPlugins;
85
+ /**
86
+ * Creates a new PixiEngine instance.
87
+ *
88
+ * The constructor creates the underlying PixiJS application but does not initialize it.
89
+ * Call {@link initialize} after registering all plugins to start the engine.
90
+ *
91
+ * @param config - Engine configuration options extending PixiJS ApplicationOptions
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const engine = new PixiEngine({
96
+ * width: 1920,
97
+ * height: 1080,
98
+ * backgroundColor: 0x1a1a1a,
99
+ * antialias: true,
100
+ * resolution: window.devicePixelRatio
101
+ * });
102
+ * ```
103
+ */
104
+ constructor(config: Partial<EngineConfig>);
105
+ /**
106
+ * Registers a plugin with the engine.
107
+ *
108
+ * Plugins must be registered before calling {@link initialize}. If the engine is already
109
+ * initialized, the plugin will be initialized immediately upon registration.
110
+ *
111
+ * The plugin's state is set to {@link PluginState.REGISTERED} and it will be initialized
112
+ * during the engine's initialization phase based on its priority and dependencies.
113
+ *
114
+ * @param plugin - The plugin instance to register
115
+ * @returns `true` if the plugin was successfully registered, `false` if a plugin with the same name already exists
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * const scenePlugin = new ScenePlugin();
120
+ * const success = engine.registerPlugin(scenePlugin);
121
+ *
122
+ * if (!success) {
123
+ * console.warn('Plugin already registered');
124
+ * }
125
+ * ```
126
+ *
127
+ * @see {@link EnginePlugin} for plugin interface details
128
+ * @see {@link getPlugin} to retrieve registered plugins
129
+ */
130
+ registerPlugin(plugin: EnginePlugin): boolean;
131
+ /**
132
+ * Checks if a plugin has completed initialization and is ready to use.
133
+ *
134
+ * A plugin is considered ready when it has successfully completed both its
135
+ * `initialize()` and `onReady()` lifecycle methods.
136
+ *
137
+ * @param name - The name of the plugin to check
138
+ * @returns `true` if the plugin is in the {@link PluginState.READY} state, `false` otherwise
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * if (engine.isPluginReady('ScenePlugin')) {
143
+ * const scenePlugin = engine.getPlugin<ScenePlugin>('ScenePlugin');
144
+ * scenePlugin?.loadScene('MainMenu');
145
+ * }
146
+ * ```
147
+ */
148
+ isPluginReady(name: string): boolean;
149
+ /**
150
+ * Waits asynchronously for specific plugins to reach the ready state.
151
+ *
152
+ * This method is useful when you need to ensure certain plugins are fully initialized
153
+ * before proceeding with game logic. It polls every 10ms until all specified plugins
154
+ * are ready.
155
+ *
156
+ * @param pluginNames - Array of plugin names to wait for
157
+ * @returns A promise that resolves when all specified plugins are ready
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * // Wait for multiple plugins before starting the game
162
+ * await engine.waitForPlugins(['ScenePlugin', 'AudioPlugin', 'GameStatePlugin']);
163
+ *
164
+ * // Now safe to use these plugins
165
+ * const scenePlugin = engine.getPlugin<ScenePlugin>('ScenePlugin');
166
+ * scenePlugin?.loadScene('MainMenu');
167
+ * ```
168
+ *
169
+ * @remarks
170
+ * If any of the specified plugins are not registered, this method will wait indefinitely.
171
+ * Ensure all required plugins are registered before calling this method.
172
+ */
173
+ waitForPlugins(pluginNames: string[]): Promise<void>;
174
+ /**
175
+ * Initialize a single plugin with dependency checking
176
+ */
177
+ private initializePlugin;
178
+ /**
179
+ * Call onReady for all plugins after initialization is complete
180
+ */
181
+ private finalizePlugins;
182
+ /**
183
+ * Initializes all plugins.
184
+ */
185
+ private initializePlugins;
186
+ /**
187
+ * Get plugins sorted by priority and dependency order
188
+ */
189
+ private getPluginsSortedByPriorityAndDependencies;
190
+ /**
191
+ * Initializes the engine and all registered plugins.
192
+ *
193
+ * This method performs the complete engine startup sequence:
194
+ * 1. Initializes the PixiJS application with the provided configuration
195
+ * 2. Appends the canvas to the document body
196
+ * 3. Initializes all plugins in dependency order (respecting priorities)
197
+ * 4. Calls `onReady()` on all plugins after initialization
198
+ * 5. Sets up window resize event handling
199
+ *
200
+ * Plugins are initialized in order based on:
201
+ * - Dependencies (plugins wait for their dependencies)
202
+ * - Priority (lower numbers = higher priority)
203
+ *
204
+ * @returns A promise that resolves when the engine and all plugins are fully initialized
205
+ * @throws {Error} If plugin dependencies are missing or circular dependencies are detected
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * const engine = new PixiEngine({ width: 1920, height: 1080 });
210
+ *
211
+ * // Register plugins
212
+ * engine.registerPlugin(new ScenePlugin());
213
+ * engine.registerPlugin(new AudioPlugin());
214
+ *
215
+ * // Initialize everything
216
+ * await engine.initialize();
217
+ *
218
+ * // Engine is now ready to use
219
+ * console.log('Engine initialized successfully');
220
+ * ```
221
+ *
222
+ * @remarks
223
+ * - This method should only be called once
224
+ * - All plugins should be registered before calling this method
225
+ * - The canvas will be automatically appended to `document.body`
226
+ * - Window resize events are automatically handled
227
+ */
228
+ initialize(): Promise<void>;
229
+ /**
230
+ * Handles window resize events and notifies plugins.
231
+ *
232
+ * This method is automatically called when the window is resized and during
233
+ * engine initialization. It updates the renderer size and notifies all plugins
234
+ * about the resize event in priority order.
235
+ *
236
+ * If a plugin's `onResize` method returns `true`, it indicates that the plugin
237
+ * has handled the resize and propagation stops. Otherwise, the engine will
238
+ * resize the renderer to match the window dimensions.
239
+ *
240
+ * @remarks
241
+ * This is a private method called automatically by the engine.
242
+ * Plugins can implement `onResize(width, height)` to handle custom resize logic.
243
+ */
244
+ private onResize;
245
+ /**
246
+ * Notifies all plugins that the engine is fully ready
247
+ * This is called after all plugins are initialized and ready
248
+ */
249
+ private notifyEngineReady;
250
+ /**
251
+ * Retrieves a registered plugin by name with type safety.
252
+ *
253
+ * This method allows you to access registered plugins with proper TypeScript typing.
254
+ * Returns `undefined` if the plugin is not found.
255
+ *
256
+ * @typeParam T - The plugin type extending {@link EnginePlugin}
257
+ * @param name - The unique name of the plugin to retrieve
258
+ * @returns The plugin instance if found, `undefined` otherwise
259
+ *
260
+ * @example
261
+ * ```typescript
262
+ * // Get plugin with type safety
263
+ * const scenePlugin = engine.getPlugin<ScenePlugin>('ScenePlugin');
264
+ *
265
+ * if (scenePlugin) {
266
+ * scenePlugin.loadScene('MainMenu');
267
+ * } else {
268
+ * console.warn('ScenePlugin not found');
269
+ * }
270
+ * ```
271
+ *
272
+ * @see {@link getPluginThrow} for a version that throws an error if plugin is not found
273
+ */
274
+ getPlugin<T extends EnginePlugin>(name: string): T | undefined;
275
+ /**
276
+ * Retrieves a registered plugin by name, throwing an error if not found.
277
+ *
278
+ * This is a convenience method for cases where you expect the plugin to exist
279
+ * and want to avoid null checks.
280
+ *
281
+ * @typeParam T - The plugin type extending {@link EnginePlugin}
282
+ * @param name - The unique name of the plugin to retrieve
283
+ * @returns The plugin instance
284
+ * @throws {Error} If the plugin is not registered
285
+ *
286
+ * @example
287
+ * ```typescript
288
+ * // Get plugin or throw error
289
+ * const scenePlugin = engine.getPluginThrow<ScenePlugin>('ScenePlugin');
290
+ * scenePlugin.loadScene('MainMenu'); // No null check needed
291
+ * ```
292
+ *
293
+ * @see {@link getPlugin} for a version that returns undefined instead of throwing
294
+ */
295
+ getPluginThrow<T extends EnginePlugin>(name: string): T;
296
+ /**
297
+ * Gets all registered plugins sorted by priority.
298
+ *
299
+ * Returns an array of all plugins currently registered with the engine,
300
+ * sorted by priority in descending order (highest priority first).
301
+ *
302
+ * @returns Array of all registered plugins sorted by priority
303
+ *
304
+ * @example
305
+ * ```typescript
306
+ * // List all registered plugins
307
+ * const plugins = engine.getPlugins();
308
+ * plugins.forEach(plugin => {
309
+ * console.log(`Plugin: ${plugin.name}, Priority: ${plugin.priority}, State: ${plugin.state}`);
310
+ * });
311
+ * ```
312
+ *
313
+ * @example
314
+ * ```typescript
315
+ * // Find plugins by type
316
+ * const plugins = engine.getPlugins();
317
+ * const scenePlugins = plugins.filter(p => p.name.includes('Scene'));
318
+ * ```
319
+ *
320
+ * @remarks
321
+ * Plugins with undefined priority are treated as having priority 0.
322
+ * Lower priority numbers mean higher priority (e.g., priority 1 comes before priority 10).
323
+ */
324
+ getPlugins(): EnginePlugin[];
325
+ /**
326
+ * Updates the plugins
327
+ * @param deltaTime Frame duration
328
+ */
329
+ private updatePlugins;
330
+ /**
331
+ * Main update loop called every frame.
332
+ *
333
+ * This method should be called from your game's main loop (typically GSAP ticker)
334
+ * to update all plugins. Plugins are updated in priority order, and update
335
+ * propagation stops if a plugin returns `true` from its `onUpdate` method.
336
+ *
337
+ * @param deltaTime - Time elapsed since the last frame in seconds
338
+ *
339
+ * @example
340
+ * ```typescript
341
+ * // Integrate with GSAP ticker
342
+ * import { gsap } from 'gsap';
343
+ *
344
+ * gsap.ticker.add((time, deltaTime) => {
345
+ * engine.onUpdate(deltaTime);
346
+ * });
347
+ * ```
348
+ *
349
+ * @example
350
+ * ```typescript
351
+ * // Manual update loop
352
+ * let lastTime = performance.now();
353
+ *
354
+ * function gameLoop() {
355
+ * const currentTime = performance.now();
356
+ * const deltaTime = (currentTime - lastTime) / 1000;
357
+ * lastTime = currentTime;
358
+ *
359
+ * engine.onUpdate(deltaTime);
360
+ * requestAnimationFrame(gameLoop);
361
+ * }
362
+ *
363
+ * gameLoop();
364
+ * ```
365
+ *
366
+ * @remarks
367
+ * The deltaTime is typically provided in seconds by GSAP ticker.
368
+ * Plugins with higher priority (lower priority number) are updated first.
369
+ */
370
+ onUpdate(deltaTime: number): void;
371
+ /**
372
+ * Gets the underlying PixiJS Application instance.
373
+ *
374
+ * Provides direct access to the PixiJS application for advanced use cases
375
+ * such as accessing the renderer, ticker, or other PixiJS-specific features.
376
+ *
377
+ * @returns The PixiJS Application instance
378
+ *
379
+ * @example
380
+ * ```typescript
381
+ * // Access the renderer
382
+ * const renderer = engine.pixiApp.renderer;
383
+ * console.log('Renderer type:', renderer.type);
384
+ *
385
+ * // Access the ticker
386
+ * engine.pixiApp.ticker.add((delta) => {
387
+ * console.log('Ticker delta:', delta);
388
+ * });
389
+ * ```
390
+ *
391
+ * @remarks
392
+ * Use this getter sparingly. Most functionality should be accessed through
393
+ * plugins or the engine's public API.
394
+ */
395
+ get pixiApp(): PixiApplication;
396
+ get platform(): PlatformType;
397
+ /**
398
+ * Gets the device pixel ratio, capped at 2 for performance reasons.
399
+ *
400
+ * @returns The device pixel ratio, capped at 2
401
+ */
402
+ get devicePixelRatio(): number;
403
+ }
404
+ //# sourceMappingURL=PixiEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiEngine.d.ts","sourceRoot":"","sources":["../../engine/PixiEngine.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAItB,OAAO,uBAAuB,CAAC;AAC/B,OAAO,aAAa,CAAC;AAWrB,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,kBAAkB,EAAuB,MAAM,SAAS,CAAC;AAElG,OAAO,EAAE,YAAY,EAA6B,MAAM,yBAAyB,CAAC;AAIlF,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,qBAAa,UAAU;IA0BT,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;IAzBnD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAA0B;IAE9C;;;;;;;;;;;;;;;;;;OAkBG;gBACmB,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;IASnD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAqBpD;;;;;;;;;;;;;;;;OAgBG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjE;;OAEG;YACW,gBAAgB;IA6B9B;;OAEG;YACW,eAAe;IAyB7B;;OAEG;YACW,iBAAiB;IAa/B;;OAEG;IACH,OAAO,CAAC,yCAAyC;IAgEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuDxC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,QAAQ;IAkChB;;;OAGG;YACW,iBAAiB;IAe/B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACI,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIrE;;;;;;;;;;;;;;;;;;;OAmBG;IACI,cAAc,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAU9D;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,UAAU,IAAI,YAAY,EAAE;IAInC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAoBrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACI,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAW,OAAO,IAAI,eAAe,CAEpC;IAED,IAAW,QAAQ,IAAI,YAAY,CAElC;IAED;;;;OAIG;IACH,IAAW,gBAAgB,WAE1B;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from './PixiEngine';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../engine/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}