@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.
- package/README.md +488 -0
- package/dist/devtools/DraggableController.d.ts +10 -0
- package/dist/devtools/DraggableController.d.ts.map +1 -0
- package/dist/devtools/ResizableController.d.ts +19 -0
- package/dist/devtools/ResizableController.d.ts.map +1 -0
- package/dist/devtools/index.d.ts +7 -0
- package/dist/devtools/index.d.ts.map +1 -0
- package/dist/devtools/index.js +884 -0
- package/dist/devtools/index.js.map +1 -0
- package/dist/devtools/overlayPlugin.d.ts +3 -0
- package/dist/devtools/overlayPlugin.d.ts.map +1 -0
- package/dist/devtools/spinePropertiesPlugin.d.ts +3 -0
- package/dist/devtools/spinePropertiesPlugin.d.ts.map +1 -0
- package/dist/devtools/spriteTextPropertiesPlugin.d.ts +3 -0
- package/dist/devtools/spriteTextPropertiesPlugin.d.ts.map +1 -0
- package/dist/devtools/treePlugin.d.ts +7 -0
- package/dist/devtools/treePlugin.d.ts.map +1 -0
- package/dist/engine/PixiEngine.d.ts +404 -0
- package/dist/engine/PixiEngine.d.ts.map +1 -0
- package/dist/engine/index.d.ts +2 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +1818 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/filters/ChromaKeyFilter.d.ts +64 -0
- package/dist/filters/ChromaKeyFilter.d.ts.map +1 -0
- package/dist/filters/index.d.ts +2 -0
- package/dist/filters/index.d.ts.map +1 -0
- package/dist/filters/index.js +248 -0
- package/dist/filters/index.js.map +1 -0
- package/dist/helpers/AssetHelper.d.ts +117 -0
- package/dist/helpers/AssetHelper.d.ts.map +1 -0
- package/dist/helpers/SVGAssetHelper.d.ts +397 -0
- package/dist/helpers/SVGAssetHelper.d.ts.map +1 -0
- package/dist/helpers/SVGLoader.d.ts +46 -0
- package/dist/helpers/SVGLoader.d.ts.map +1 -0
- package/dist/helpers/SVGParser.d.ts +121 -0
- package/dist/helpers/SVGParser.d.ts.map +1 -0
- package/dist/helpers/eventBridge.d.ts +150 -0
- package/dist/helpers/eventBridge.d.ts.map +1 -0
- package/dist/helpers/index.d.ts +8 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +702 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/mergeUtils.d.ts +21 -0
- package/dist/helpers/mergeUtils.d.ts.map +1 -0
- package/dist/helpers/resolvePublicPath.d.ts +6 -0
- package/dist/helpers/resolvePublicPath.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +527 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/sharedI18n.d.ts +11 -0
- package/dist/i18n/sharedI18n.d.ts.map +1 -0
- package/dist/layout/Align.d.ts +126 -0
- package/dist/layout/Align.d.ts.map +1 -0
- package/dist/layout/Bounds.d.ts +120 -0
- package/dist/layout/Bounds.d.ts.map +1 -0
- package/dist/layout/Distribute.d.ts +103 -0
- package/dist/layout/Distribute.d.ts.map +1 -0
- package/dist/layout/Flow.d.ts +213 -0
- package/dist/layout/Flow.d.ts.map +1 -0
- package/dist/layout/PositionUtils.d.ts +57 -0
- package/dist/layout/PositionUtils.d.ts.map +1 -0
- package/dist/layout/index.d.ts +6 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +673 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/particle/Emitter.d.ts +290 -0
- package/dist/particle/Emitter.d.ts.map +1 -0
- package/dist/particle/EmitterConfig.d.ts +228 -0
- package/dist/particle/EmitterConfig.d.ts.map +1 -0
- package/dist/particle/LinkedListContainer.d.ts +7 -0
- package/dist/particle/LinkedListContainer.d.ts.map +1 -0
- package/dist/particle/Particle.d.ts +63 -0
- package/dist/particle/Particle.d.ts.map +1 -0
- package/dist/particle/ParticleUtils.d.ts +97 -0
- package/dist/particle/ParticleUtils.d.ts.map +1 -0
- package/dist/particle/PropertyList.d.ts +40 -0
- package/dist/particle/PropertyList.d.ts.map +1 -0
- package/dist/particle/PropertyNode.d.ts +74 -0
- package/dist/particle/PropertyNode.d.ts.map +1 -0
- package/dist/particle/SpineEmitter.d.ts +55 -0
- package/dist/particle/SpineEmitter.d.ts.map +1 -0
- package/dist/particle/SpineParticle.d.ts +74 -0
- package/dist/particle/SpineParticle.d.ts.map +1 -0
- package/dist/particle/behaviors/AccelerationMovement.d.ts +62 -0
- package/dist/particle/behaviors/AccelerationMovement.d.ts.map +1 -0
- package/dist/particle/behaviors/Alpha.d.ts +60 -0
- package/dist/particle/behaviors/Alpha.d.ts.map +1 -0
- package/dist/particle/behaviors/AnimatedTexture.d.ts +111 -0
- package/dist/particle/behaviors/AnimatedTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/Behaviors.d.ts +71 -0
- package/dist/particle/behaviors/Behaviors.d.ts.map +1 -0
- package/dist/particle/behaviors/BlendMode.d.ts +31 -0
- package/dist/particle/behaviors/BlendMode.d.ts.map +1 -0
- package/dist/particle/behaviors/BurstSpawn.d.ts +43 -0
- package/dist/particle/behaviors/BurstSpawn.d.ts.map +1 -0
- package/dist/particle/behaviors/Color.d.ts +60 -0
- package/dist/particle/behaviors/Color.d.ts.map +1 -0
- package/dist/particle/behaviors/MultiStateAnimatedTexture.d.ts +99 -0
- package/dist/particle/behaviors/MultiStateAnimatedTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/OrderedTexture.d.ts +33 -0
- package/dist/particle/behaviors/OrderedTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/PathMovement.d.ts +68 -0
- package/dist/particle/behaviors/PathMovement.d.ts.map +1 -0
- package/dist/particle/behaviors/PointSpawn.d.ts +21 -0
- package/dist/particle/behaviors/PointSpawn.d.ts.map +1 -0
- package/dist/particle/behaviors/RandomColor.d.ts +17 -0
- package/dist/particle/behaviors/RandomColor.d.ts.map +1 -0
- package/dist/particle/behaviors/RandomTexture.d.ts +32 -0
- package/dist/particle/behaviors/RandomTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/Rotation.d.ts +114 -0
- package/dist/particle/behaviors/Rotation.d.ts.map +1 -0
- package/dist/particle/behaviors/Scale.d.ts +74 -0
- package/dist/particle/behaviors/Scale.d.ts.map +1 -0
- package/dist/particle/behaviors/ShapeSpawn.d.ts +58 -0
- package/dist/particle/behaviors/ShapeSpawn.d.ts.map +1 -0
- package/dist/particle/behaviors/SingleTexture.d.ts +32 -0
- package/dist/particle/behaviors/SingleTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/SpeedMovement.d.ts +76 -0
- package/dist/particle/behaviors/SpeedMovement.d.ts.map +1 -0
- package/dist/particle/behaviors/SpineTexture.d.ts +173 -0
- package/dist/particle/behaviors/SpineTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/ZindexBehavior.d.ts +16 -0
- package/dist/particle/behaviors/ZindexBehavior.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/Types.d.ts +104 -0
- package/dist/particle/behaviors/editor/Types.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/AccelerationMovement.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/AccelerationMovement.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/Alpha.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/Alpha.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/AnimatedTexture.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/AnimatedTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/BlendMode.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/BlendMode.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/BurstSpawn.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/BurstSpawn.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/Color.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/Color.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/OrderedTexture.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/OrderedTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/PathMovement.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/PathMovement.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/PointSpawn.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/PointSpawn.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/RandomTexture.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/RandomTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/Rotation.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/Rotation.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/Scale.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/Scale.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/ShapeSpawn.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/ShapeSpawn.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/SingleTexture.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/SingleTexture.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/SpeedMovement.d.ts +2 -0
- package/dist/particle/behaviors/editor/behaviors/SpeedMovement.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/behaviors/index.d.ts +15 -0
- package/dist/particle/behaviors/editor/behaviors/index.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/index.d.ts +5 -0
- package/dist/particle/behaviors/editor/index.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/shapes/PolygonalChain.d.ts +2 -0
- package/dist/particle/behaviors/editor/shapes/PolygonalChain.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/shapes/Rectangle.d.ts +2 -0
- package/dist/particle/behaviors/editor/shapes/Rectangle.d.ts.map +1 -0
- package/dist/particle/behaviors/editor/shapes/Torus.d.ts +2 -0
- package/dist/particle/behaviors/editor/shapes/Torus.d.ts.map +1 -0
- package/dist/particle/behaviors/index.d.ts +25 -0
- package/dist/particle/behaviors/index.d.ts.map +1 -0
- package/dist/particle/behaviors/shapes/PolygonalChain.d.ts +57 -0
- package/dist/particle/behaviors/shapes/PolygonalChain.d.ts.map +1 -0
- package/dist/particle/behaviors/shapes/Rectangle.d.ts +59 -0
- package/dist/particle/behaviors/shapes/Rectangle.d.ts.map +1 -0
- package/dist/particle/behaviors/shapes/SpawnShape.d.ts +32 -0
- package/dist/particle/behaviors/shapes/SpawnShape.d.ts.map +1 -0
- package/dist/particle/behaviors/shapes/Torus.d.ts +71 -0
- package/dist/particle/behaviors/shapes/Torus.d.ts.map +1 -0
- package/dist/particle/behaviors/shapes/index.d.ts +5 -0
- package/dist/particle/behaviors/shapes/index.d.ts.map +1 -0
- package/dist/particle/index.d.ts +11 -0
- package/dist/particle/index.d.ts.map +1 -0
- package/dist/particle/index.js +2845 -0
- package/dist/particle/index.js.map +1 -0
- package/dist/plugins/Plugin.types.d.ts +80 -0
- package/dist/plugins/Plugin.types.d.ts.map +1 -0
- package/dist/plugins/device/DeviceOptimizerPlugin.d.ts +187 -0
- package/dist/plugins/device/DeviceOptimizerPlugin.d.ts.map +1 -0
- package/dist/plugins/device/DeviceOptimizerPlugin.types.d.ts +134 -0
- package/dist/plugins/device/DeviceOptimizerPlugin.types.d.ts.map +1 -0
- package/dist/plugins/device/index.d.ts +3 -0
- package/dist/plugins/device/index.d.ts.map +1 -0
- package/dist/plugins/display/DisplayPlugin.d.ts +208 -0
- package/dist/plugins/display/DisplayPlugin.d.ts.map +1 -0
- package/dist/plugins/display/DisplayPlugin.types.d.ts +174 -0
- package/dist/plugins/display/DisplayPlugin.types.d.ts.map +1 -0
- package/dist/plugins/display/displayViewport.d.ts +10 -0
- package/dist/plugins/display/displayViewport.d.ts.map +1 -0
- package/dist/plugins/display/index.d.ts +4 -0
- package/dist/plugins/display/index.d.ts.map +1 -0
- package/dist/plugins/eventbus/EventBusPlugin.d.ts +21 -0
- package/dist/plugins/eventbus/EventBusPlugin.d.ts.map +1 -0
- package/dist/plugins/eventbus/EventBusPlugin.types.d.ts +24 -0
- package/dist/plugins/eventbus/EventBusPlugin.types.d.ts.map +1 -0
- package/dist/plugins/eventbus/index.d.ts +3 -0
- package/dist/plugins/eventbus/index.d.ts.map +1 -0
- package/dist/plugins/gsap/GsapPlugin.d.ts +307 -0
- package/dist/plugins/gsap/GsapPlugin.d.ts.map +1 -0
- package/dist/plugins/gsap/index.d.ts +2 -0
- package/dist/plugins/gsap/index.d.ts.map +1 -0
- package/dist/plugins/index.d.ts +13 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +12806 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/input/InputPlugin.const.d.ts +80 -0
- package/dist/plugins/input/InputPlugin.const.d.ts.map +1 -0
- package/dist/plugins/input/InputPlugin.d.ts +141 -0
- package/dist/plugins/input/InputPlugin.d.ts.map +1 -0
- package/dist/plugins/input/InputPlugin.types.d.ts +41 -0
- package/dist/plugins/input/InputPlugin.types.d.ts.map +1 -0
- package/dist/plugins/input/KeyboardManager.d.ts +139 -0
- package/dist/plugins/input/KeyboardManager.d.ts.map +1 -0
- package/dist/plugins/input/KeyboardManager.types.d.ts +27 -0
- package/dist/plugins/input/KeyboardManager.types.d.ts.map +1 -0
- package/dist/plugins/input/index.d.ts +4 -0
- package/dist/plugins/input/index.d.ts.map +1 -0
- package/dist/plugins/language/I18NextPlugin.d.ts +30 -0
- package/dist/plugins/language/I18NextPlugin.d.ts.map +1 -0
- package/dist/plugins/language/I18NextPlugin.types.d.ts +29 -0
- package/dist/plugins/language/I18NextPlugin.types.d.ts.map +1 -0
- package/dist/plugins/language/index.d.ts +3 -0
- package/dist/plugins/language/index.d.ts.map +1 -0
- package/dist/plugins/resource/ResourcePlugin.d.ts +189 -0
- package/dist/plugins/resource/ResourcePlugin.d.ts.map +1 -0
- package/dist/plugins/resource/ResourcePlugin.types.d.ts +153 -0
- package/dist/plugins/resource/ResourcePlugin.types.d.ts.map +1 -0
- package/dist/plugins/resource/index.d.ts +3 -0
- package/dist/plugins/resource/index.d.ts.map +1 -0
- package/dist/plugins/scene/Scene.d.ts +203 -0
- package/dist/plugins/scene/Scene.d.ts.map +1 -0
- package/dist/plugins/scene/ScenePlugin.d.ts +162 -0
- package/dist/plugins/scene/ScenePlugin.d.ts.map +1 -0
- package/dist/plugins/scene/ScenePlugin.types.d.ts +35 -0
- package/dist/plugins/scene/ScenePlugin.types.d.ts.map +1 -0
- package/dist/plugins/scene/index.d.ts +4 -0
- package/dist/plugins/scene/index.d.ts.map +1 -0
- package/dist/plugins/sentry/SentryPlugin.d.ts +66 -0
- package/dist/plugins/sentry/SentryPlugin.d.ts.map +1 -0
- package/dist/plugins/sentry/SentryPlugin.types.d.ts +8 -0
- package/dist/plugins/sentry/SentryPlugin.types.d.ts.map +1 -0
- package/dist/plugins/sentry/index.d.ts +3 -0
- package/dist/plugins/sentry/index.d.ts.map +1 -0
- package/dist/plugins/service/ServiceAdapter.d.ts +88 -0
- package/dist/plugins/service/ServiceAdapter.d.ts.map +1 -0
- package/dist/plugins/service/ServiceEventHelper.d.ts +6 -0
- package/dist/plugins/service/ServiceEventHelper.d.ts.map +1 -0
- package/dist/plugins/service/ServicePlugin.d.ts +135 -0
- package/dist/plugins/service/ServicePlugin.d.ts.map +1 -0
- package/dist/plugins/service/ServicePlugin.types.d.ts +14 -0
- package/dist/plugins/service/ServicePlugin.types.d.ts.map +1 -0
- package/dist/plugins/service/adapters/DevAuthAdapter.d.ts +56 -0
- package/dist/plugins/service/adapters/DevAuthAdapter.d.ts.map +1 -0
- package/dist/plugins/service/adapters/RGSAdapter.d.ts +82 -0
- package/dist/plugins/service/adapters/RGSAdapter.d.ts.map +1 -0
- package/dist/plugins/service/adapters/index.d.ts +7 -0
- package/dist/plugins/service/adapters/index.d.ts.map +1 -0
- package/dist/plugins/service/adapters/resolvePublicIp.d.ts +10 -0
- package/dist/plugins/service/adapters/resolvePublicIp.d.ts.map +1 -0
- package/dist/plugins/service/index.d.ts +10 -0
- package/dist/plugins/service/index.d.ts.map +1 -0
- package/dist/plugins/service/types/api.types.d.ts +299 -0
- package/dist/plugins/service/types/api.types.d.ts.map +1 -0
- package/dist/plugins/service/types/index.d.ts +6 -0
- package/dist/plugins/service/types/index.d.ts.map +1 -0
- package/dist/plugins/skin/ISkin.d.ts +62 -0
- package/dist/plugins/skin/ISkin.d.ts.map +1 -0
- package/dist/plugins/skin/Skin.d.ts +155 -0
- package/dist/plugins/skin/Skin.d.ts.map +1 -0
- package/dist/plugins/skin/SkinPlugin.d.ts +285 -0
- package/dist/plugins/skin/SkinPlugin.d.ts.map +1 -0
- package/dist/plugins/skin/SkinPlugin.types.d.ts +56 -0
- package/dist/plugins/skin/SkinPlugin.types.d.ts.map +1 -0
- package/dist/plugins/skin/index.d.ts +5 -0
- package/dist/plugins/skin/index.d.ts.map +1 -0
- package/dist/plugins/sound/SoundPlugin.d.ts +319 -0
- package/dist/plugins/sound/SoundPlugin.d.ts.map +1 -0
- package/dist/plugins/sound/SoundPlugin.types.d.ts +102 -0
- package/dist/plugins/sound/SoundPlugin.types.d.ts.map +1 -0
- package/dist/plugins/sound/SoundTestGUI.d.ts +42 -0
- package/dist/plugins/sound/SoundTestGUI.d.ts.map +1 -0
- package/dist/plugins/sound/index.d.ts +4 -0
- package/dist/plugins/sound/index.d.ts.map +1 -0
- package/dist/state-machine/ConfigBuilder.d.ts +239 -0
- package/dist/state-machine/ConfigBuilder.d.ts.map +1 -0
- package/dist/state-machine/StateMachine.d.ts +251 -0
- package/dist/state-machine/StateMachine.d.ts.map +1 -0
- package/dist/state-machine/guards.d.ts +151 -0
- package/dist/state-machine/guards.d.ts.map +1 -0
- package/dist/state-machine/index.d.ts +5 -0
- package/dist/state-machine/index.d.ts.map +1 -0
- package/dist/state-machine/index.js +954 -0
- package/dist/state-machine/index.js.map +1 -0
- package/dist/state-machine/types.d.ts +65 -0
- package/dist/state-machine/types.d.ts.map +1 -0
- package/dist/store/DataStore.d.ts +167 -0
- package/dist/store/DataStore.d.ts.map +1 -0
- package/dist/store/index.d.ts +3 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +197 -0
- package/dist/store/index.js.map +1 -0
- package/dist/ui/behaviors/ButtonBehavior.d.ts +245 -0
- package/dist/ui/behaviors/ButtonBehavior.d.ts.map +1 -0
- package/dist/ui/behaviors/InputBehavior.d.ts +169 -0
- package/dist/ui/behaviors/InputBehavior.d.ts.map +1 -0
- package/dist/ui/behaviors/ScrollbarBehavior.d.ts +371 -0
- package/dist/ui/behaviors/ScrollbarBehavior.d.ts.map +1 -0
- package/dist/ui/behaviors/index.d.ts +4 -0
- package/dist/ui/behaviors/index.d.ts.map +1 -0
- package/dist/ui/components/ButtonComp.d.ts +138 -0
- package/dist/ui/components/ButtonComp.d.ts.map +1 -0
- package/dist/ui/components/Comp.utils.d.ts +390 -0
- package/dist/ui/components/Comp.utils.d.ts.map +1 -0
- package/dist/ui/components/Component.types.d.ts +41 -0
- package/dist/ui/components/Component.types.d.ts.map +1 -0
- package/dist/ui/components/InputComp.d.ts +43 -0
- package/dist/ui/components/InputComp.d.ts.map +1 -0
- package/dist/ui/components/LabelBox.d.ts +49 -0
- package/dist/ui/components/LabelBox.d.ts.map +1 -0
- package/dist/ui/components/ListTableComp.d.ts +106 -0
- package/dist/ui/components/ListTableComp.d.ts.map +1 -0
- package/dist/ui/components/Skinable.d.ts +261 -0
- package/dist/ui/components/Skinable.d.ts.map +1 -0
- package/dist/ui/components/SliderComp.d.ts +60 -0
- package/dist/ui/components/SliderComp.d.ts.map +1 -0
- package/dist/ui/components/SpriteTextBBCode.d.ts +16 -0
- package/dist/ui/components/SpriteTextBBCode.d.ts.map +1 -0
- package/dist/ui/components/StepperComp.d.ts +89 -0
- package/dist/ui/components/StepperComp.d.ts.map +1 -0
- package/dist/ui/components/index.d.ts +12 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/spriteText/SpriteText.d.ts +114 -0
- package/dist/ui/components/spriteText/SpriteText.d.ts.map +1 -0
- package/dist/ui/components/spriteText/SpriteText.types.d.ts +109 -0
- package/dist/ui/components/spriteText/SpriteText.types.d.ts.map +1 -0
- package/dist/ui/components/spriteText/SpriteTextAlignment.d.ts +25 -0
- package/dist/ui/components/spriteText/SpriteTextAlignment.d.ts.map +1 -0
- package/dist/ui/components/spriteText/SpriteTextBezier.d.ts +20 -0
- package/dist/ui/components/spriteText/SpriteTextBezier.d.ts.map +1 -0
- package/dist/ui/components/spriteText/SpriteTextCurve.d.ts +4 -0
- package/dist/ui/components/spriteText/SpriteTextCurve.d.ts.map +1 -0
- package/dist/ui/components/spriteText/SpriteTextKerning.d.ts +7 -0
- package/dist/ui/components/spriteText/SpriteTextKerning.d.ts.map +1 -0
- package/dist/ui/components/spriteText/SpriteTextTexture.d.ts +16 -0
- package/dist/ui/components/spriteText/SpriteTextTexture.d.ts.map +1 -0
- package/dist/ui/components/spriteText/SpriteTextWrap.d.ts +19 -0
- package/dist/ui/components/spriteText/SpriteTextWrap.d.ts.map +1 -0
- package/dist/ui/components/spriteText/index.d.ts +3 -0
- package/dist/ui/components/spriteText/index.d.ts.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +4778 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/ArrayUtils.d.ts +24 -0
- package/dist/utils/ArrayUtils.d.ts.map +1 -0
- package/dist/utils/ColorUtils.d.ts +34 -0
- package/dist/utils/ColorUtils.d.ts.map +1 -0
- package/dist/utils/DataInjector.d.ts +67 -0
- package/dist/utils/DataInjector.d.ts.map +1 -0
- package/dist/utils/Logger.d.ts +332 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/NumberFormatter.d.ts +126 -0
- package/dist/utils/NumberFormatter.d.ts.map +1 -0
- package/dist/utils/ObjectUtils.d.ts +64 -0
- package/dist/utils/ObjectUtils.d.ts.map +1 -0
- package/dist/utils/PixiUtils.d.ts +118 -0
- package/dist/utils/PixiUtils.d.ts.map +1 -0
- package/dist/utils/Throttle.d.ts +103 -0
- package/dist/utils/Throttle.d.ts.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +899 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/vite/index.d.ts +3 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +126 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/mergeLocalesPlugin.d.ts +22 -0
- package/dist/vite/mergeLocalesPlugin.d.ts.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../engine/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|