@caperjs/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/LICENSE +22 -0
- package/README.md +62 -0
- package/cli/add.mjs +197 -0
- package/cli/audio/cc.mjs +128 -0
- package/cli/audio/index.mjs +42 -0
- package/cli/audio/utils.mjs +56 -0
- package/cli/create-caper.mjs +8 -0
- package/cli/create.mjs +351 -0
- package/cli/install-peerdeps.mjs +57 -0
- package/cli/update.mjs +9 -0
- package/cli/utils.mjs +81 -0
- package/cli/vite.mjs +55 -0
- package/cli/voiceover/generateVoiceoverCSV.mjs +158 -0
- package/cli/voiceover/index.mjs +1 -0
- package/cli.mjs +157 -0
- package/client.d.ts +7 -0
- package/config/assetpack.mjs +212 -0
- package/config/tsconfig.base.json +28 -0
- package/config/vite.mjs +2464 -0
- package/extras/css/accessibility.css +9 -0
- package/extras/css/fullscreen.css +28 -0
- package/extras/css/loader.css +67 -0
- package/extras/llms.txt +1602 -0
- package/lib/CaptionsPlugin-Dc8fIrjy.js +277 -0
- package/lib/CaptionsPlugin-Dc8fIrjy.js.map +1 -0
- package/lib/DataAdapter-BY2114sp.js +84 -0
- package/lib/DataAdapter-BY2114sp.js.map +1 -0
- package/lib/DebugRenderer-BJMLILqI.js +1385 -0
- package/lib/DebugRenderer-BJMLILqI.js.map +1 -0
- package/lib/DevToolsPlugin-wQ5rOkn0.js +31 -0
- package/lib/DevToolsPlugin-wQ5rOkn0.js.map +1 -0
- package/lib/GSAPPlugin-DHhSZKv8.js +350 -0
- package/lib/GSAPPlugin-DHhSZKv8.js.map +1 -0
- package/lib/LayoutPlugin-B-DF9SYM.js +1271 -0
- package/lib/LayoutPlugin-B-DF9SYM.js.map +1 -0
- package/lib/SpinePlugin-Dz_3dljz.js +6077 -0
- package/lib/SpinePlugin-Dz_3dljz.js.map +1 -0
- package/lib/StatsPlugin-Cg82JMBD.js +70 -0
- package/lib/StatsPlugin-Cg82JMBD.js.map +1 -0
- package/lib/VoiceOverPlugin-BR3ImT8C.js +114 -0
- package/lib/VoiceOverPlugin-BR3ImT8C.js.map +1 -0
- package/lib/caper.mjs +1233 -0
- package/lib/caper.mjs.map +1 -0
- package/lib/core/Application.d.ts +268 -0
- package/lib/core/Application.d.ts.map +1 -0
- package/lib/core/config.d.ts +39 -0
- package/lib/core/config.d.ts.map +1 -0
- package/lib/core/create.d.ts +41 -0
- package/lib/core/create.d.ts.map +1 -0
- package/lib/core/globals.d.ts +51 -0
- package/lib/core/globals.d.ts.map +1 -0
- package/lib/core/index.d.ts +7 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/interfaces/IApplication.d.ts +566 -0
- package/lib/core/interfaces/IApplication.d.ts.map +1 -0
- package/lib/core/interfaces/IApplicationOptions.d.ts +65 -0
- package/lib/core/interfaces/IApplicationOptions.d.ts.map +1 -0
- package/lib/core/interfaces/ICoreFunctions.d.ts +49 -0
- package/lib/core/interfaces/ICoreFunctions.d.ts.map +1 -0
- package/lib/core/interfaces/ICoreSignals.d.ts +57 -0
- package/lib/core/interfaces/ICoreSignals.d.ts.map +1 -0
- package/lib/core/interfaces/IStorageCapability.d.ts +20 -0
- package/lib/core/interfaces/IStorageCapability.d.ts.map +1 -0
- package/lib/core/interfaces/IStorageCapability.test.d.ts +2 -0
- package/lib/core/interfaces/IStorageCapability.test.d.ts.map +1 -0
- package/lib/core/interfaces/index.d.ts +7 -0
- package/lib/core/interfaces/index.d.ts.map +1 -0
- package/lib/core/registries.d.ts +8 -0
- package/lib/core/registries.d.ts.map +1 -0
- package/lib/core/types.d.ts +12 -0
- package/lib/core/types.d.ts.map +1 -0
- package/lib/display/AnimatedSprite.d.ts +40 -0
- package/lib/display/AnimatedSprite.d.ts.map +1 -0
- package/lib/display/Camera.d.ts +102 -0
- package/lib/display/Camera.d.ts.map +1 -0
- package/lib/display/Container.d.ts +115 -0
- package/lib/display/Container.d.ts.map +1 -0
- package/lib/display/Entity.d.ts +46 -0
- package/lib/display/Entity.d.ts.map +1 -0
- package/lib/display/ParticleContainer.d.ts +58 -0
- package/lib/display/ParticleContainer.d.ts.map +1 -0
- package/lib/display/Scene.d.ts +250 -0
- package/lib/display/Scene.d.ts.map +1 -0
- package/lib/display/SceneTransition.d.ts +41 -0
- package/lib/display/SceneTransition.d.ts.map +1 -0
- package/lib/display/SpineAnimation.d.ts +76 -0
- package/lib/display/SpineAnimation.d.ts.map +1 -0
- package/lib/display/Svg.d.ts +5 -0
- package/lib/display/Svg.d.ts.map +1 -0
- package/lib/display/index.d.ts +10 -0
- package/lib/display/index.d.ts.map +1 -0
- package/lib/env.d.ts +6 -0
- package/lib/hello.d.ts +2 -0
- package/lib/hello.d.ts.map +1 -0
- package/lib/index.d.ts +15 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/mixins/animated.d.ts +53 -0
- package/lib/mixins/animated.d.ts.map +1 -0
- package/lib/mixins/factory/Factory.d.ts +8 -0
- package/lib/mixins/factory/Factory.d.ts.map +1 -0
- package/lib/mixins/factory/const.d.ts +67 -0
- package/lib/mixins/factory/const.d.ts.map +1 -0
- package/lib/mixins/factory/index.d.ts +8 -0
- package/lib/mixins/factory/index.d.ts.map +1 -0
- package/lib/mixins/factory/methods.d.ts +3 -0
- package/lib/mixins/factory/methods.d.ts.map +1 -0
- package/lib/mixins/factory/props.d.ts +160 -0
- package/lib/mixins/factory/props.d.ts.map +1 -0
- package/lib/mixins/factory/registry.d.ts +27 -0
- package/lib/mixins/factory/registry.d.ts.map +1 -0
- package/lib/mixins/factory/registry.test.d.ts +2 -0
- package/lib/mixins/factory/registry.test.d.ts.map +1 -0
- package/lib/mixins/factory/schema.d.ts +71 -0
- package/lib/mixins/factory/schema.d.ts.map +1 -0
- package/lib/mixins/factory/ui-registry.d.ts +20 -0
- package/lib/mixins/factory/ui-registry.d.ts.map +1 -0
- package/lib/mixins/factory/utils.d.ts +11 -0
- package/lib/mixins/factory/utils.d.ts.map +1 -0
- package/lib/mixins/focus.d.ts +15 -0
- package/lib/mixins/focus.d.ts.map +1 -0
- package/lib/mixins/index.d.ts +6 -0
- package/lib/mixins/index.d.ts.map +1 -0
- package/lib/mixins/interaction.d.ts +20 -0
- package/lib/mixins/interaction.d.ts.map +1 -0
- package/lib/mixins/signals.d.ts +15 -0
- package/lib/mixins/signals.d.ts.map +1 -0
- package/lib/plugins/AssetsPlugin.d.ts +79 -0
- package/lib/plugins/AssetsPlugin.d.ts.map +1 -0
- package/lib/plugins/DataAdapter.d.ts +95 -0
- package/lib/plugins/DataAdapter.d.ts.map +1 -0
- package/lib/plugins/DevToolsPlugin.d.ts +97 -0
- package/lib/plugins/DevToolsPlugin.d.ts.map +1 -0
- package/lib/plugins/FullScreenPlugin.d.ts +240 -0
- package/lib/plugins/FullScreenPlugin.d.ts.map +1 -0
- package/lib/plugins/GSAPPlugin.d.ts +634 -0
- package/lib/plugins/GSAPPlugin.d.ts.map +1 -0
- package/lib/plugins/KeyboardPlugin.d.ts +53 -0
- package/lib/plugins/KeyboardPlugin.d.ts.map +1 -0
- package/lib/plugins/LayoutPlugin.d.ts +100 -0
- package/lib/plugins/LayoutPlugin.d.ts.map +1 -0
- package/lib/plugins/LookupPlugin.d.ts +223 -0
- package/lib/plugins/LookupPlugin.d.ts.map +1 -0
- package/lib/plugins/Plugin.d.ts +132 -0
- package/lib/plugins/Plugin.d.ts.map +1 -0
- package/lib/plugins/Plugin.test.d.ts +2 -0
- package/lib/plugins/Plugin.test.d.ts.map +1 -0
- package/lib/plugins/PopupManagerPlugin.d.ts +108 -0
- package/lib/plugins/PopupManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/ResizerPlugin.d.ts +62 -0
- package/lib/plugins/ResizerPlugin.d.ts.map +1 -0
- package/lib/plugins/SceneManagerPlugin.d.ts +122 -0
- package/lib/plugins/SceneManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/StatsPlugin.d.ts +8 -0
- package/lib/plugins/StatsPlugin.d.ts.map +1 -0
- package/lib/plugins/TimerPlugin.d.ts +401 -0
- package/lib/plugins/TimerPlugin.d.ts.map +1 -0
- package/lib/plugins/WebEventsPlugin.d.ts +60 -0
- package/lib/plugins/WebEventsPlugin.d.ts.map +1 -0
- package/lib/plugins/actions/ActionsPlugin.d.ts +39 -0
- package/lib/plugins/actions/ActionsPlugin.d.ts.map +1 -0
- package/lib/plugins/actions/constants.d.ts +52 -0
- package/lib/plugins/actions/constants.d.ts.map +1 -0
- package/lib/plugins/actions/index.d.ts +5 -0
- package/lib/plugins/actions/index.d.ts.map +1 -0
- package/lib/plugins/actions/methods.d.ts +11 -0
- package/lib/plugins/actions/methods.d.ts.map +1 -0
- package/lib/plugins/actions/types.d.ts +25 -0
- package/lib/plugins/actions/types.d.ts.map +1 -0
- package/lib/plugins/audio/AudioChannel.d.ts +46 -0
- package/lib/plugins/audio/AudioChannel.d.ts.map +1 -0
- package/lib/plugins/audio/AudioChannel.test.d.ts +2 -0
- package/lib/plugins/audio/AudioChannel.test.d.ts.map +1 -0
- package/lib/plugins/audio/AudioInstance.d.ts +79 -0
- package/lib/plugins/audio/AudioInstance.d.ts.map +1 -0
- package/lib/plugins/audio/AudioManagerPlugin.d.ts +323 -0
- package/lib/plugins/audio/AudioManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/audio/VoiceOverPlugin.d.ts +69 -0
- package/lib/plugins/audio/VoiceOverPlugin.d.ts.map +1 -0
- package/lib/plugins/audio/index.d.ts +4 -0
- package/lib/plugins/audio/index.d.ts.map +1 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.d.ts +109 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.d.ts.map +1 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts +2 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts.map +1 -0
- package/lib/plugins/breakpoints/evaluate.d.ts +53 -0
- package/lib/plugins/breakpoints/evaluate.d.ts.map +1 -0
- package/lib/plugins/breakpoints/evaluate.test.d.ts +2 -0
- package/lib/plugins/breakpoints/evaluate.test.d.ts.map +1 -0
- package/lib/plugins/breakpoints/index.d.ts +4 -0
- package/lib/plugins/breakpoints/index.d.ts.map +1 -0
- package/lib/plugins/breakpoints/methods.d.ts +23 -0
- package/lib/plugins/breakpoints/methods.d.ts.map +1 -0
- package/lib/plugins/breakpoints/types.d.ts +70 -0
- package/lib/plugins/breakpoints/types.d.ts.map +1 -0
- package/lib/plugins/captions/CaptionsPlugin.d.ts +150 -0
- package/lib/plugins/captions/CaptionsPlugin.d.ts.map +1 -0
- package/lib/plugins/captions/CaptionsRenderer.d.ts +37 -0
- package/lib/plugins/captions/CaptionsRenderer.d.ts.map +1 -0
- package/lib/plugins/captions/index.d.ts +3 -0
- package/lib/plugins/captions/index.d.ts.map +1 -0
- package/lib/plugins/defaults.d.ts +4 -0
- package/lib/plugins/defaults.d.ts.map +1 -0
- package/lib/plugins/focus/FocusManagerPlugin.d.ts +148 -0
- package/lib/plugins/focus/FocusManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/focus/FocusOutliner.d.ts +32 -0
- package/lib/plugins/focus/FocusOutliner.d.ts.map +1 -0
- package/lib/plugins/focus/index.d.ts +3 -0
- package/lib/plugins/focus/index.d.ts.map +1 -0
- package/lib/plugins/i18nPlugin.d.ts +128 -0
- package/lib/plugins/i18nPlugin.d.ts.map +1 -0
- package/lib/plugins/index.d.ts +18 -0
- package/lib/plugins/index.d.ts.map +1 -0
- package/lib/plugins/input/AbstractControls.d.ts +8 -0
- package/lib/plugins/input/AbstractControls.d.ts.map +1 -0
- package/lib/plugins/input/Controls.d.ts +16 -0
- package/lib/plugins/input/Controls.d.ts.map +1 -0
- package/lib/plugins/input/InputPlugin.d.ts +52 -0
- package/lib/plugins/input/InputPlugin.d.ts.map +1 -0
- package/lib/plugins/input/constants.d.ts +8 -0
- package/lib/plugins/input/constants.d.ts.map +1 -0
- package/lib/plugins/input/index.d.ts +10 -0
- package/lib/plugins/input/index.d.ts.map +1 -0
- package/lib/plugins/input/interfaces.d.ts +30 -0
- package/lib/plugins/input/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/KeyboardContols.d.ts +28 -0
- package/lib/plugins/input/keyboard/KeyboardContols.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/index.d.ts +3 -0
- package/lib/plugins/input/keyboard/index.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/interfaces.d.ts +18 -0
- package/lib/plugins/input/keyboard/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/methods.d.ts +4 -0
- package/lib/plugins/input/methods.d.ts.map +1 -0
- package/lib/plugins/input/touch/TouchControls.d.ts +35 -0
- package/lib/plugins/input/touch/TouchControls.d.ts.map +1 -0
- package/lib/plugins/input/touch/constants.d.ts +14 -0
- package/lib/plugins/input/touch/constants.d.ts.map +1 -0
- package/lib/plugins/input/touch/index.d.ts +4 -0
- package/lib/plugins/input/touch/index.d.ts.map +1 -0
- package/lib/plugins/input/touch/interfaces.d.ts +15 -0
- package/lib/plugins/input/touch/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/types.d.ts +32 -0
- package/lib/plugins/input/types.d.ts.map +1 -0
- package/lib/plugins/input/utils.d.ts +23 -0
- package/lib/plugins/input/utils.d.ts.map +1 -0
- package/lib/plugins/spine/SpinePlugin.d.ts +6 -0
- package/lib/plugins/spine/SpinePlugin.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts +31 -0
- package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/Spine.d.ts +211 -0
- package/lib/plugins/spine/pixi-spine/Spine.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts +81 -0
- package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts +21 -0
- package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts +16 -0
- package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts +10 -0
- package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts +6 -0
- package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts +5 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts +22 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts +5 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts +51 -0
- package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/index.d.ts +9 -0
- package/lib/plugins/spine/pixi-spine/index.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/require-shim.d.ts +34 -0
- package/lib/plugins/spine/pixi-spine/require-shim.d.ts.map +1 -0
- package/lib/registries-CYCaYKZI.js +6885 -0
- package/lib/registries-CYCaYKZI.js.map +1 -0
- package/lib/signals/Signal.d.ts +16 -0
- package/lib/signals/Signal.d.ts.map +1 -0
- package/lib/signals/Signal.test.d.ts +2 -0
- package/lib/signals/Signal.test.d.ts.map +1 -0
- package/lib/signals/index.d.ts +3 -0
- package/lib/signals/index.d.ts.map +1 -0
- package/lib/store/Store.d.ts +56 -0
- package/lib/store/Store.d.ts.map +1 -0
- package/lib/store/Store.test.d.ts +2 -0
- package/lib/store/Store.test.d.ts.map +1 -0
- package/lib/store/index.d.ts +2 -0
- package/lib/store/index.d.ts.map +1 -0
- package/lib/types/framework.d.ts +46 -0
- package/lib/types/gsap.d.ts +23 -0
- package/lib/ui/Button.d.ts +162 -0
- package/lib/ui/Button.d.ts.map +1 -0
- package/lib/ui/FlexContainer.d.ts +109 -0
- package/lib/ui/FlexContainer.d.ts.map +1 -0
- package/lib/ui/Input.d.ts +384 -0
- package/lib/ui/Input.d.ts.map +1 -0
- package/lib/ui/Joystick.d.ts +61 -0
- package/lib/ui/Joystick.d.ts.map +1 -0
- package/lib/ui/Popup.d.ts +109 -0
- package/lib/ui/Popup.d.ts.map +1 -0
- package/lib/ui/Toast.d.ts +131 -0
- package/lib/ui/Toast.d.ts.map +1 -0
- package/lib/ui/Toaster.d.ts +188 -0
- package/lib/ui/Toaster.d.ts.map +1 -0
- package/lib/ui/UICanvas.d.ts +155 -0
- package/lib/ui/UICanvas.d.ts.map +1 -0
- package/lib/ui/index.d.ts +9 -0
- package/lib/ui/index.d.ts.map +1 -0
- package/lib/utils/array.d.ts +11 -0
- package/lib/utils/array.d.ts.map +1 -0
- package/lib/utils/bind.d.ts +21 -0
- package/lib/utils/bind.d.ts.map +1 -0
- package/lib/utils/canvas.d.ts +2 -0
- package/lib/utils/canvas.d.ts.map +1 -0
- package/lib/utils/color.d.ts +66 -0
- package/lib/utils/color.d.ts.map +1 -0
- package/lib/utils/console/Logger.d.ts +15 -0
- package/lib/utils/console/Logger.d.ts.map +1 -0
- package/lib/utils/console/index.d.ts +2 -0
- package/lib/utils/console/index.d.ts.map +1 -0
- package/lib/utils/debug.d.ts +34 -0
- package/lib/utils/debug.d.ts.map +1 -0
- package/lib/utils/define.d.ts +100 -0
- package/lib/utils/define.d.ts.map +1 -0
- package/lib/utils/env.d.ts +4 -0
- package/lib/utils/env.d.ts.map +1 -0
- package/lib/utils/events.d.ts +12 -0
- package/lib/utils/events.d.ts.map +1 -0
- package/lib/utils/framework.d.ts +12 -0
- package/lib/utils/framework.d.ts.map +1 -0
- package/lib/utils/index.d.ts +28 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/map.d.ts +31 -0
- package/lib/utils/map.d.ts.map +1 -0
- package/lib/utils/math.d.ts +15 -0
- package/lib/utils/math.d.ts.map +1 -0
- package/lib/utils/misc.d.ts +13 -0
- package/lib/utils/misc.d.ts.map +1 -0
- package/lib/utils/number.d.ts +2 -0
- package/lib/utils/number.d.ts.map +1 -0
- package/lib/utils/object.d.ts +21 -0
- package/lib/utils/object.d.ts.map +1 -0
- package/lib/utils/padding.d.ts +4 -0
- package/lib/utils/padding.d.ts.map +1 -0
- package/lib/utils/pixi.d.ts +42 -0
- package/lib/utils/pixi.d.ts.map +1 -0
- package/lib/utils/platform.d.ts +20 -0
- package/lib/utils/platform.d.ts.map +1 -0
- package/lib/utils/point.d.ts +66 -0
- package/lib/utils/point.d.ts.map +1 -0
- package/lib/utils/promise/Queue.d.ts +60 -0
- package/lib/utils/promise/Queue.d.ts.map +1 -0
- package/lib/utils/promise/functions.d.ts +14 -0
- package/lib/utils/promise/functions.d.ts.map +1 -0
- package/lib/utils/promise/index.d.ts +3 -0
- package/lib/utils/promise/index.d.ts.map +1 -0
- package/lib/utils/random.d.ts +42 -0
- package/lib/utils/random.d.ts.map +1 -0
- package/lib/utils/rect.d.ts +26 -0
- package/lib/utils/rect.d.ts.map +1 -0
- package/lib/utils/set.d.ts +15 -0
- package/lib/utils/set.d.ts.map +1 -0
- package/lib/utils/string.d.ts +3 -0
- package/lib/utils/string.d.ts.map +1 -0
- package/lib/utils/text.d.ts +3 -0
- package/lib/utils/text.d.ts.map +1 -0
- package/lib/utils/typefilters.d.ts +4 -0
- package/lib/utils/typefilters.d.ts.map +1 -0
- package/lib/utils/types.d.ts +209 -0
- package/lib/utils/types.d.ts.map +1 -0
- package/lib/utils/vite.d.ts +25 -0
- package/lib/utils/vite.d.ts.map +1 -0
- package/lib/utils/web.d.ts +3 -0
- package/lib/utils/web.d.ts.map +1 -0
- package/lib/version.d.ts +3 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/webgl-check.d.ts +2 -0
- package/lib/webgl-check.d.ts.map +1 -0
- package/package.json +138 -0
- package/src/core/Application.ts +1091 -0
- package/src/core/config.ts +168 -0
- package/src/core/create.ts +186 -0
- package/src/core/globals.ts +299 -0
- package/src/core/index.ts +6 -0
- package/src/core/interfaces/IApplication.ts +628 -0
- package/src/core/interfaces/IApplicationOptions.ts +81 -0
- package/src/core/interfaces/ICoreFunctions.ts +86 -0
- package/src/core/interfaces/ICoreSignals.ts +77 -0
- package/src/core/interfaces/IStorageCapability.test.ts +27 -0
- package/src/core/interfaces/IStorageCapability.ts +26 -0
- package/src/core/interfaces/index.ts +6 -0
- package/src/core/registries.ts +7 -0
- package/src/core/types.ts +13 -0
- package/src/display/AnimatedSprite.ts +227 -0
- package/src/display/Camera.ts +371 -0
- package/src/display/Container.ts +240 -0
- package/src/display/Entity.ts +50 -0
- package/src/display/ParticleContainer.ts +107 -0
- package/src/display/Scene.ts +305 -0
- package/src/display/SceneTransition.ts +108 -0
- package/src/display/SpineAnimation.ts +170 -0
- package/src/display/Svg.ts +9 -0
- package/src/display/index.ts +11 -0
- package/src/env.d.ts +6 -0
- package/src/hello.ts +20 -0
- package/src/index.ts +17 -0
- package/src/mixins/animated.ts +340 -0
- package/src/mixins/factory/Factory.ts +24 -0
- package/src/mixins/factory/const.ts +363 -0
- package/src/mixins/factory/index.ts +7 -0
- package/src/mixins/factory/methods.ts +21 -0
- package/src/mixins/factory/props.ts +207 -0
- package/src/mixins/factory/registry.test.ts +83 -0
- package/src/mixins/factory/registry.ts +61 -0
- package/src/mixins/factory/schema.ts +153 -0
- package/src/mixins/factory/ui-registry.ts +54 -0
- package/src/mixins/factory/utils.ts +130 -0
- package/src/mixins/focus.ts +124 -0
- package/src/mixins/index.ts +5 -0
- package/src/mixins/interaction.ts +74 -0
- package/src/mixins/signals.ts +49 -0
- package/src/plugins/AssetsPlugin.ts +407 -0
- package/src/plugins/DataAdapter.ts +259 -0
- package/src/plugins/DevToolsPlugin.ts +103 -0
- package/src/plugins/FullScreenPlugin.ts +359 -0
- package/src/plugins/GSAPPlugin.ts +811 -0
- package/src/plugins/KeyboardPlugin.ts +160 -0
- package/src/plugins/LayoutPlugin.ts +127 -0
- package/src/plugins/LookupPlugin.ts +308 -0
- package/src/plugins/Plugin.test.ts +73 -0
- package/src/plugins/Plugin.ts +200 -0
- package/src/plugins/PopupManagerPlugin.ts +263 -0
- package/src/plugins/ResizerPlugin.ts +220 -0
- package/src/plugins/SceneManagerPlugin.ts +669 -0
- package/src/plugins/StatsPlugin.ts +24 -0
- package/src/plugins/TimerPlugin.ts +841 -0
- package/src/plugins/WebEventsPlugin.ts +132 -0
- package/src/plugins/actions/ActionsPlugin.ts +113 -0
- package/src/plugins/actions/constants.ts +45 -0
- package/src/plugins/actions/index.ts +4 -0
- package/src/plugins/actions/methods.ts +28 -0
- package/src/plugins/actions/types.ts +47 -0
- package/src/plugins/audio/AudioChannel.test.ts +101 -0
- package/src/plugins/audio/AudioChannel.ts +164 -0
- package/src/plugins/audio/AudioInstance.ts +228 -0
- package/src/plugins/audio/AudioManagerPlugin.ts +903 -0
- package/src/plugins/audio/VoiceOverPlugin.ts +354 -0
- package/src/plugins/audio/index.ts +3 -0
- package/src/plugins/breakpoints/BreakpointPlugin.test.ts +228 -0
- package/src/plugins/breakpoints/BreakpointPlugin.ts +293 -0
- package/src/plugins/breakpoints/evaluate.test.ts +239 -0
- package/src/plugins/breakpoints/evaluate.ts +201 -0
- package/src/plugins/breakpoints/index.ts +3 -0
- package/src/plugins/breakpoints/methods.ts +22 -0
- package/src/plugins/breakpoints/types.ts +86 -0
- package/src/plugins/captions/CaptionsPlugin.ts +468 -0
- package/src/plugins/captions/CaptionsRenderer.ts +184 -0
- package/src/plugins/captions/font/Sans.fnt +116 -0
- package/src/plugins/captions/font/Sans.png +0 -0
- package/src/plugins/captions/index.ts +2 -0
- package/src/plugins/defaults.ts +95 -0
- package/src/plugins/focus/FocusManagerPlugin.ts +773 -0
- package/src/plugins/focus/FocusOutliner.ts +111 -0
- package/src/plugins/focus/index.ts +2 -0
- package/src/plugins/i18nPlugin.ts +284 -0
- package/src/plugins/index.ts +17 -0
- package/src/plugins/input/AbstractControls.ts +15 -0
- package/src/plugins/input/Controls.ts +55 -0
- package/src/plugins/input/InputPlugin.ts +168 -0
- package/src/plugins/input/constants.ts +12 -0
- package/src/plugins/input/index.ts +9 -0
- package/src/plugins/input/interfaces.ts +37 -0
- package/src/plugins/input/keyboard/KeyboardContols.ts +182 -0
- package/src/plugins/input/keyboard/index.ts +2 -0
- package/src/plugins/input/keyboard/interfaces.ts +21 -0
- package/src/plugins/input/methods.ts +9 -0
- package/src/plugins/input/touch/TouchControls.ts +237 -0
- package/src/plugins/input/touch/constants.ts +34 -0
- package/src/plugins/input/touch/index.ts +3 -0
- package/src/plugins/input/touch/interfaces.ts +15 -0
- package/src/plugins/input/types.ts +41 -0
- package/src/plugins/input/utils.ts +10 -0
- package/src/plugins/spine/SpinePlugin.ts +14 -0
- package/src/plugins/spine/pixi-spine/BatchableSpineSlot.ts +138 -0
- package/src/plugins/spine/pixi-spine/Spine.ts +897 -0
- package/src/plugins/spine/pixi-spine/SpineDebugRenderer.ts +615 -0
- package/src/plugins/spine/pixi-spine/SpinePipe.ts +197 -0
- package/src/plugins/spine/pixi-spine/SpineTexture.ts +143 -0
- package/src/plugins/spine/pixi-spine/assets/atlasLoader.ts +156 -0
- package/src/plugins/spine/pixi-spine/assets/skeletonLoader.ts +80 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.ts +92 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintBatcher.ts +186 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintShader.ts +74 -0
- package/src/plugins/spine/pixi-spine/darktint/darkTintBit.ts +77 -0
- package/src/plugins/spine/pixi-spine/index.ts +43 -0
- package/src/plugins/spine/pixi-spine/require-shim.ts +43 -0
- package/src/signals/Signal.test.ts +54 -0
- package/src/signals/Signal.ts +68 -0
- package/src/signals/index.ts +10 -0
- package/src/store/Store.test.ts +146 -0
- package/src/store/Store.ts +192 -0
- package/src/store/index.ts +1 -0
- package/src/types/framework.d.ts +47 -0
- package/src/types/gsap.d.ts +26 -0
- package/src/ui/Button.ts +454 -0
- package/src/ui/FlexContainer.ts +526 -0
- package/src/ui/Input.ts +1274 -0
- package/src/ui/Joystick.ts +288 -0
- package/src/ui/Popup.ts +242 -0
- package/src/ui/Toast.ts +399 -0
- package/src/ui/Toaster.ts +409 -0
- package/src/ui/UICanvas.ts +812 -0
- package/src/ui/index.ts +8 -0
- package/src/utils/array.ts +24 -0
- package/src/utils/bind.ts +79 -0
- package/src/utils/canvas.ts +26 -0
- package/src/utils/color.ts +126 -0
- package/src/utils/console/Logger.ts +86 -0
- package/src/utils/console/index.ts +1 -0
- package/src/utils/debug.ts +69 -0
- package/src/utils/define.ts +120 -0
- package/src/utils/env.ts +3 -0
- package/src/utils/events.ts +10 -0
- package/src/utils/framework.ts +45 -0
- package/src/utils/index.ts +27 -0
- package/src/utils/map.ts +59 -0
- package/src/utils/math.ts +19 -0
- package/src/utils/misc.ts +45 -0
- package/src/utils/number.ts +3 -0
- package/src/utils/object.ts +43 -0
- package/src/utils/padding.ts +43 -0
- package/src/utils/pixi.ts +116 -0
- package/src/utils/platform.ts +33 -0
- package/src/utils/point.ts +123 -0
- package/src/utils/promise/Queue.ts +125 -0
- package/src/utils/promise/functions.ts +16 -0
- package/src/utils/promise/index.ts +2 -0
- package/src/utils/random.ts +69 -0
- package/src/utils/rect.ts +50 -0
- package/src/utils/set.ts +32 -0
- package/src/utils/string.ts +9 -0
- package/src/utils/text.ts +30 -0
- package/src/utils/typefilters.ts +29 -0
- package/src/utils/types.ts +426 -0
- package/src/utils/vite.ts +41 -0
- package/src/utils/web.ts +7 -0
- package/src/version.ts +3 -0
- package/src/webgl-check.ts +12 -0
- package/templates/app/default/.eslintrc.json +21 -0
- package/templates/app/default/.meta.json +4 -0
- package/templates/app/default/.nvmrc +1 -0
- package/templates/app/default/.prettierrc.json +7 -0
- package/templates/app/default/README.md +8 -0
- package/templates/app/default/assets/audio{m}/music/Cheerful Annoyance.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Drumming Sticks.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Game Over.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Mishief Stroll.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Night at the Beach.ogg +0 -0
- package/templates/app/default/assets/audio{m}/sfx/click.ogg +0 -0
- package/templates/app/default/assets/audio{m}/sfx/hover.ogg +0 -0
- package/templates/app/default/assets/required{m}/caper.png +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Bold{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Medium{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Regular{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/Syncopate-Bold{family=Syncopate}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/blue.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/green.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/grey.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/orange.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/purple.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/red.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/yellow.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/down.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/over.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/up.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/down.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/over.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/up.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/joystick/base.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/joystick/handle.png +0 -0
- package/templates/app/default/assets/required{m}/wordmark.svg +1 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro.png +0 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro.skel +0 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro{fix}.atlas +94 -0
- package/templates/app/default/caper.config.ts +60 -0
- package/templates/app/default/index.html +23 -0
- package/templates/app/default/package.template.json +17 -0
- package/templates/app/default/public/favicon.ico +0 -0
- package/templates/app/default/src/__APPLICATION_NAME__.ts +3 -0
- package/templates/app/default/src/main.ts +9 -0
- package/templates/app/default/src/scenes/Base.ts +39 -0
- package/templates/app/default/src/scenes/Game.ts +34 -0
- package/templates/app/default/src/scenes/Splash.ts +70 -0
- package/templates/app/default/src/scenes/Start.ts +90 -0
- package/templates/app/default/src/utils/Constants.ts +3 -0
- package/templates/app/default/tsconfig.json +1 -0
- package/templates/plugin/package.template.json +33 -0
- package/templates/plugin/src/Plugin.template.ts +24 -0
- package/templates/plugin/src/index.template.ts +3 -0
- package/templates/plugin/tsconfig.template.json +43 -0
- package/templates/plugin/vite-env.template.d.ts +16 -0
- package/templates/plugin/vite.config.template.ts +19 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { DestroyOptions, ParticleContainerOptions, ParticleContainer as PIXIParticleContainer, Ticker } from 'pixi.js';
|
|
2
|
+
|
|
3
|
+
import { Application } from '../core/Application';
|
|
4
|
+
import { Signal } from '../signals';
|
|
5
|
+
import type { AppTypeOverrides, Size } from '../utils';
|
|
6
|
+
import { bindAllMethods } from '../utils';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for the Container class.
|
|
10
|
+
*/
|
|
11
|
+
export interface ParticleContainerConfig extends ParticleContainerOptions {
|
|
12
|
+
autoUpdate: boolean;
|
|
13
|
+
priority: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const ParticleContainerConfigKeys: (keyof ParticleContainerConfig)[] = ['autoUpdate', 'priority'];
|
|
17
|
+
|
|
18
|
+
const defaultConfig: ParticleContainerConfig = { autoUpdate: true, priority: 0 };
|
|
19
|
+
|
|
20
|
+
export interface IParticleContainer {
|
|
21
|
+
app: AppTypeOverrides['App'];
|
|
22
|
+
|
|
23
|
+
onDestroy: Signal<() => void>;
|
|
24
|
+
|
|
25
|
+
destroy(options?: DestroyOptions): void;
|
|
26
|
+
|
|
27
|
+
added(): Promise<void> | void;
|
|
28
|
+
|
|
29
|
+
update(ticker?: Ticker | number): void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The Container class extends the _Container class (which includes the Animated and Factory mixins) and implements the IContainer interface.
|
|
34
|
+
* It represents a container for PIXI.js display objects.
|
|
35
|
+
*/
|
|
36
|
+
export class ParticleContainer extends PIXIParticleContainer implements IParticleContainer {
|
|
37
|
+
onDestroy: Signal<() => void> = new Signal();
|
|
38
|
+
__caper_method_binding_root = true;
|
|
39
|
+
private __config: ParticleContainerConfig;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The constructor for the Container class.
|
|
43
|
+
* @param config - The configuration for the container.
|
|
44
|
+
*/
|
|
45
|
+
constructor(config: Partial<ParticleContainerConfig> = {}) {
|
|
46
|
+
super(config);
|
|
47
|
+
this.__config = { ...defaultConfig, ...config };
|
|
48
|
+
// Bind all methods of this class to the current instance.
|
|
49
|
+
bindAllMethods(this);
|
|
50
|
+
// Add an event listener for the 'added' event.
|
|
51
|
+
this.on('added', this._added);
|
|
52
|
+
this.on('removed', this._removed);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Get the application instance.
|
|
57
|
+
*/
|
|
58
|
+
public get app(): AppTypeOverrides['App'] {
|
|
59
|
+
return Application.getInstance() as AppTypeOverrides['App'];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Update the container. This method is meant to be overridden by subclasses.
|
|
63
|
+
* @param ticker
|
|
64
|
+
*/
|
|
65
|
+
public update(ticker?: Ticker | number) {
|
|
66
|
+
void ticker;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Resize the container. This method is meant to be overridden by subclasses.
|
|
71
|
+
* @param size
|
|
72
|
+
*/
|
|
73
|
+
public resize(size?: Size) {
|
|
74
|
+
void size;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* This method is called when the container is added to the stage. It is meant to be overridden by subclasses.
|
|
79
|
+
*/
|
|
80
|
+
public added() {}
|
|
81
|
+
|
|
82
|
+
destroy(options?: DestroyOptions): void {
|
|
83
|
+
if (this.__config.autoUpdate) {
|
|
84
|
+
this.app.ticker.remove(this.update, this);
|
|
85
|
+
}
|
|
86
|
+
this.onDestroy.emit();
|
|
87
|
+
super.destroy(options);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public removed() {}
|
|
91
|
+
/**
|
|
92
|
+
* This method is called when the container is added to the stage. It sets up auto-resizing and auto-updating if enabled.
|
|
93
|
+
*/
|
|
94
|
+
private _added() {
|
|
95
|
+
if (this.__config.autoUpdate) {
|
|
96
|
+
this.app.ticker.add(this.update, this, this.__config.priority);
|
|
97
|
+
}
|
|
98
|
+
this.added();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private _removed() {
|
|
102
|
+
if (this.__config.autoUpdate) {
|
|
103
|
+
this.app.ticker.remove(this.update, this);
|
|
104
|
+
}
|
|
105
|
+
this.removed();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { Ticker } from 'pixi.js';
|
|
2
|
+
import { PauseConfig } from '../core';
|
|
3
|
+
import { type AppTypeOverrides, type AssetTypeOverrides, Size } from '../utils';
|
|
4
|
+
import type { IContainer } from './Container';
|
|
5
|
+
import { Container } from './Container';
|
|
6
|
+
|
|
7
|
+
type AppScenes = AppTypeOverrides['Scenes'];
|
|
8
|
+
|
|
9
|
+
type SceneAssetsToLoad = {
|
|
10
|
+
assets?: (string | { alias: string; src: string | string[] })[];
|
|
11
|
+
bundles?: AssetTypeOverrides['Bundles'] | AssetTypeOverrides['Bundles'][];
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export type SceneAssets = {
|
|
15
|
+
preload?: SceneAssetsToLoad;
|
|
16
|
+
background?: SceneAssetsToLoad;
|
|
17
|
+
autoUnload?: boolean;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type ScenePlugins = AppTypeOverrides['Plugins'][];
|
|
21
|
+
|
|
22
|
+
export type SceneDebug = {
|
|
23
|
+
label?: string;
|
|
24
|
+
group?: string;
|
|
25
|
+
order?: number;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type SceneConfig = {
|
|
29
|
+
id?: string;
|
|
30
|
+
dynamic?: boolean;
|
|
31
|
+
active?: boolean;
|
|
32
|
+
assets?: SceneAssets;
|
|
33
|
+
plugins?: ScenePlugins;
|
|
34
|
+
debug?: SceneDebug;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export interface IScene extends IContainer {
|
|
38
|
+
id: AppScenes;
|
|
39
|
+
label?: string;
|
|
40
|
+
assets?: SceneAssets;
|
|
41
|
+
autoUnloadAssets?: boolean;
|
|
42
|
+
|
|
43
|
+
enter(): Promise<any>;
|
|
44
|
+
|
|
45
|
+
exit(): Promise<any>;
|
|
46
|
+
|
|
47
|
+
initialize(): Promise<void> | void;
|
|
48
|
+
|
|
49
|
+
start(): Promise<void> | void;
|
|
50
|
+
|
|
51
|
+
onPause(config: PauseConfig): void;
|
|
52
|
+
|
|
53
|
+
onResume(config: PauseConfig): void;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface SceneListItem {
|
|
57
|
+
id: string;
|
|
58
|
+
path: string;
|
|
59
|
+
scene: () => Promise<new () => IScene> | IScene;
|
|
60
|
+
debug?: {
|
|
61
|
+
label?: string;
|
|
62
|
+
group?: string;
|
|
63
|
+
};
|
|
64
|
+
assets?: SceneAssets;
|
|
65
|
+
plugins?: ScenePlugins;
|
|
66
|
+
autoUnloadAssets: boolean;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Base class for all scenes in a Caper app. A scene is a self-contained
|
|
71
|
+
* unit of game state and display — start screen, level, menu, etc.
|
|
72
|
+
*
|
|
73
|
+
* **Lifecycle order** (per scene load):
|
|
74
|
+
*
|
|
75
|
+
* 1. `constructor` — instantiated by the SceneManager. Don't reference
|
|
76
|
+
* `this.app` here; it's not yet attached to the stage.
|
|
77
|
+
* 2. **Assets load** — anything declared in `assets.preload.bundles` is
|
|
78
|
+
* fetched before `initialize` runs. Background bundles are kicked
|
|
79
|
+
* off in parallel and may complete after.
|
|
80
|
+
* 3. `initialize()` — build the display tree. The scene is on the stage
|
|
81
|
+
* but not yet animated in. Safe to use `this.app`, `this.add.*`,
|
|
82
|
+
* and any preloaded asset.
|
|
83
|
+
* 4. `enter()` — animate the scene in. Override to return a promise /
|
|
84
|
+
* tween / timeline; the manager awaits it before calling `start`.
|
|
85
|
+
* 5. `start()` — fired after `enter` resolves. Begin per-frame work,
|
|
86
|
+
* timers, signal connections, gameplay loops.
|
|
87
|
+
* 6. `update(ticker)` — called every frame while the scene is active.
|
|
88
|
+
* Read `ticker.deltaMS` for frame timing.
|
|
89
|
+
* 7. `resize(size)` — called on viewport resize. Re-layout here.
|
|
90
|
+
* 8. `onPause(config)` / `onResume(config)` — called when the app pauses
|
|
91
|
+
* or resumes. Use to halt/restart non-display work (audio, network).
|
|
92
|
+
* 9. `exit()` — animate the scene out. Awaited before `destroy`.
|
|
93
|
+
* 10. `destroy()` — tear down. The base implementation removes the
|
|
94
|
+
* ticker callback and destroys all children — call `super.destroy()`.
|
|
95
|
+
*
|
|
96
|
+
* Scenes are **discovered automatically** by the Vite plugin walking
|
|
97
|
+
* `src/scenes/`. Annotate the file with `defineScene({ id, assets })`
|
|
98
|
+
* (or individual `export const id` / `export const assets`) to give the
|
|
99
|
+
* scene a stable id and declare its asset bundles.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* import { defineScene, Scene } from '@caperjs/core';
|
|
104
|
+
*
|
|
105
|
+
* export const scene = defineScene({
|
|
106
|
+
* id: 'menu',
|
|
107
|
+
* assets: { preload: { bundles: ['ui'] } },
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* export default class MenuScene extends Scene {
|
|
111
|
+
* initialize() {
|
|
112
|
+
* this.add.text({ text: 'Play', anchor: 0.5 });
|
|
113
|
+
* }
|
|
114
|
+
* start() {
|
|
115
|
+
* // begin gameplay loop
|
|
116
|
+
* }
|
|
117
|
+
* destroy() {
|
|
118
|
+
* super.destroy();
|
|
119
|
+
* }
|
|
120
|
+
* }
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export class Scene<Props = void> extends Container implements IScene {
|
|
124
|
+
public readonly id: string;
|
|
125
|
+
public autoUnloadAssets: boolean = false;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Runtime props passed via `app.scenes.load(id, props)`. Populated by
|
|
129
|
+
* `SceneManagerPlugin._createCurrentScene` after construction and before
|
|
130
|
+
* `initialize()` runs, so scene authors can read them safely from any
|
|
131
|
+
* lifecycle hook.
|
|
132
|
+
*
|
|
133
|
+
* Subclasses declare the shape via the generic parameter:
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* class LevelScene extends Scene<{ levelId: number; difficulty: 'easy' | 'hard' }> {
|
|
138
|
+
* async start() {
|
|
139
|
+
* const { levelId } = this.props;
|
|
140
|
+
* }
|
|
141
|
+
* }
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* For scenes that don't need props, use the default `Scene<void>` (no
|
|
145
|
+
* generic parameter) — `app.scenes.load('menu')` takes no second arg.
|
|
146
|
+
*/
|
|
147
|
+
public props!: Props;
|
|
148
|
+
|
|
149
|
+
protected _animationContext: string;
|
|
150
|
+
public get animationContext(): string {
|
|
151
|
+
return this._animationContext ?? `__scene_${this.id}`;
|
|
152
|
+
}
|
|
153
|
+
public set animationContext(value: string) {
|
|
154
|
+
this._animationContext = value;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
constructor() {
|
|
158
|
+
super({ autoResize: true, autoUpdate: true, priority: 'highest' });
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* The assets to load for the scene
|
|
163
|
+
* @private
|
|
164
|
+
* @type {AssetLoadingOptions}
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* assets: {
|
|
168
|
+
* preload: {
|
|
169
|
+
* assets: ['path/to/asset.png'],
|
|
170
|
+
* bundles: ['bundle1', 'bundle2'],
|
|
171
|
+
* },
|
|
172
|
+
* background: {
|
|
173
|
+
* assets: ['path/to/asset.png'],
|
|
174
|
+
* bundles: ['bundle1', 'bundle2'],
|
|
175
|
+
* },
|
|
176
|
+
* }
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
private _assets: SceneAssets;
|
|
180
|
+
|
|
181
|
+
get assets(): SceneAssets {
|
|
182
|
+
return this._assets;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
set assets(value: SceneAssets) {
|
|
186
|
+
this._assets = value;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Build the scene's display tree. Called once after preload assets
|
|
191
|
+
* have loaded and the scene has been added to the stage, but **before**
|
|
192
|
+
* `enter()` animates it in. Safe to use `this.app`, `this.add.*`, and
|
|
193
|
+
* any asset declared in `assets.preload`.
|
|
194
|
+
*
|
|
195
|
+
* Override to construct sprites, text, containers, layouts. Don't put
|
|
196
|
+
* gameplay loops here — that's `start()`.
|
|
197
|
+
*
|
|
198
|
+
* Can be sync or async; the manager awaits the return value before
|
|
199
|
+
* calling `enter`.
|
|
200
|
+
*/
|
|
201
|
+
public initialize(): Promise<void> | void;
|
|
202
|
+
|
|
203
|
+
public async initialize(): Promise<void> {}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Animate the scene in. Called after `initialize()` resolves. The
|
|
207
|
+
* manager awaits the returned promise before calling `start()`, so
|
|
208
|
+
* return a tween / timeline / promise to gate the entry on it.
|
|
209
|
+
*
|
|
210
|
+
* Default implementation resolves immediately (no animation).
|
|
211
|
+
*
|
|
212
|
+
* @returns A promise that resolves when the entry animation completes.
|
|
213
|
+
*/
|
|
214
|
+
public enter(): Promise<any> {
|
|
215
|
+
return Promise.resolve();
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Animate the scene out. Called when the SceneManager is unloading
|
|
220
|
+
* this scene. Awaited before `destroy()` runs.
|
|
221
|
+
*
|
|
222
|
+
* Default implementation resolves immediately (no animation).
|
|
223
|
+
*
|
|
224
|
+
* @returns A promise that resolves when the exit animation completes.
|
|
225
|
+
*/
|
|
226
|
+
public exit(): Promise<any> {
|
|
227
|
+
return Promise.resolve();
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Begin per-frame work. Called once after `enter()` resolves; this is
|
|
232
|
+
* where gameplay loops, timers, signal connections, and any work that
|
|
233
|
+
* shouldn't start until the scene is fully visible should live.
|
|
234
|
+
*
|
|
235
|
+
* Override to start tickers, subscribe to input, kick off gameplay.
|
|
236
|
+
* Don't build the display tree here — that's `initialize()`.
|
|
237
|
+
*
|
|
238
|
+
* Can be sync or async.
|
|
239
|
+
*/
|
|
240
|
+
public start(): Promise<void> | void;
|
|
241
|
+
|
|
242
|
+
public async start(): Promise<void> {}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Per-frame update hook. Called every tick while the scene is active,
|
|
246
|
+
* after `start()` has resolved. Use `ticker.deltaMS` for time-based
|
|
247
|
+
* motion that's framerate-independent.
|
|
248
|
+
*
|
|
249
|
+
* The base implementation is a no-op; override to drive game logic.
|
|
250
|
+
* The base `destroy()` removes this from the ticker — call
|
|
251
|
+
* `super.destroy()` if you override destroy.
|
|
252
|
+
*
|
|
253
|
+
* @param ticker The Pixi ticker; provides `deltaMS`, `deltaTime`, etc.
|
|
254
|
+
*/
|
|
255
|
+
public update(ticker?: Ticker) {
|
|
256
|
+
void ticker;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Re-layout on viewport resize. Called whenever the host element /
|
|
261
|
+
* window size changes. Use to reposition or rescale display elements
|
|
262
|
+
* relative to the new viewport size.
|
|
263
|
+
*
|
|
264
|
+
* @param size New viewport dimensions.
|
|
265
|
+
* @override
|
|
266
|
+
*/
|
|
267
|
+
public resize(size?: Size): void {
|
|
268
|
+
void size;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Tear down the scene. The base implementation removes this scene
|
|
273
|
+
* from the ticker (so `update` stops firing) and destroys all child
|
|
274
|
+
* display objects. **Always call `super.destroy()`** if you override
|
|
275
|
+
* — otherwise the ticker callback leaks.
|
|
276
|
+
*
|
|
277
|
+
* Override to clean up listeners, signal connections, timers, network
|
|
278
|
+
* subscriptions, or anything else not handled by Pixi's destroy.
|
|
279
|
+
*/
|
|
280
|
+
public destroy() {
|
|
281
|
+
this.app.ticker.remove(this.update);
|
|
282
|
+
super.destroy({ children: true });
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Called when the application is paused. Use to halt non-display
|
|
287
|
+
* work — audio, network polling, gameplay timers. Display state
|
|
288
|
+
* stays on screen; only logic should pause.
|
|
289
|
+
*
|
|
290
|
+
* @param config Pause options (e.g. which subsystems to pause).
|
|
291
|
+
*/
|
|
292
|
+
public onPause(config: PauseConfig): void {
|
|
293
|
+
void config;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Called when the application resumes from a pause. Use to restart
|
|
298
|
+
* whatever was halted in `onPause`.
|
|
299
|
+
*
|
|
300
|
+
* @param config Resume options.
|
|
301
|
+
*/
|
|
302
|
+
public onResume(config: PauseConfig): void {
|
|
303
|
+
void config;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Sprite, Ticker } from 'pixi.js';
|
|
2
|
+
import { type Size } from '../utils';
|
|
3
|
+
import { Container } from './Container';
|
|
4
|
+
|
|
5
|
+
export interface ISceneTransition extends Container {
|
|
6
|
+
initialized: boolean;
|
|
7
|
+
progress: number;
|
|
8
|
+
active: boolean;
|
|
9
|
+
destroy(): void;
|
|
10
|
+
enter(): Promise<any> | void;
|
|
11
|
+
exit(): Promise<any> | void;
|
|
12
|
+
initialize(): void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class SceneTransition extends Container {
|
|
16
|
+
public initialized: boolean = false;
|
|
17
|
+
protected __background: Sprite;
|
|
18
|
+
|
|
19
|
+
private _active: boolean = false;
|
|
20
|
+
|
|
21
|
+
get active(): boolean {
|
|
22
|
+
return this._active;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set active(value: boolean) {
|
|
26
|
+
this._active = value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
private _progress: number;
|
|
30
|
+
|
|
31
|
+
get progress(): number {
|
|
32
|
+
return this._progress;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
set progress(value: number) {
|
|
36
|
+
this._progress = value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
constructor(autoUpdate: boolean = false) {
|
|
40
|
+
super({ autoResize: true, autoUpdate: false, priority: -9999 });
|
|
41
|
+
|
|
42
|
+
if (autoUpdate) {
|
|
43
|
+
this.app.ticker.add(this._update);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
this.addSignalConnection(
|
|
47
|
+
this.app.assets.onLoadStart.connect(this.handleLoadStart),
|
|
48
|
+
this.app.assets.onLoadProgress.connect(this.handleLoadProgress),
|
|
49
|
+
this.app.assets.onLoadProgress.connect(this.handleLoadComplete),
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public initialize(): void;
|
|
54
|
+
public async initialize(): Promise<void> {
|
|
55
|
+
return Promise.resolve();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public resize(size: Size): void {
|
|
59
|
+
void size;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public destroy(): void {
|
|
63
|
+
this.app.ticker.remove(this._update);
|
|
64
|
+
this.initialized = false;
|
|
65
|
+
this._active = false;
|
|
66
|
+
this._progress = 0;
|
|
67
|
+
super.destroy();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Called to animate the scene in
|
|
72
|
+
* @returns {Promise<void>}
|
|
73
|
+
*/
|
|
74
|
+
public enter(): void;
|
|
75
|
+
public async enter(): Promise<any> {
|
|
76
|
+
return Promise.resolve();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Called to animate the scene out
|
|
81
|
+
* @returns {Promise<void>}
|
|
82
|
+
*/
|
|
83
|
+
public exit(): void;
|
|
84
|
+
public async exit(): Promise<any> {
|
|
85
|
+
return Promise.resolve();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
protected handleLoadStart() {
|
|
89
|
+
// signifies the preloading phase has started for the new scene
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
protected handleLoadProgress(progress: number) {
|
|
93
|
+
// the preloading progress for the loading scene
|
|
94
|
+
this._progress = progress;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
protected handleLoadComplete() {
|
|
98
|
+
// signifies the preloading phase is complete for the new scene
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// check if initialized and active before calling update
|
|
102
|
+
// this way we're sure in the case of a Splash sccreen, all the assets are loaded and the scene is initialized
|
|
103
|
+
private _update(ticker: Ticker) {
|
|
104
|
+
if (this.active && this.initialized) {
|
|
105
|
+
this.update(ticker);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { type AnimationStateListener, type Event, type TrackEntry } from '@esotericsoftware/spine-core';
|
|
2
|
+
import { Application } from '../core/Application';
|
|
3
|
+
import type { SpineProps } from '../mixins';
|
|
4
|
+
import { Factory, WithSignals } from '../mixins';
|
|
5
|
+
import { Signal } from '../signals';
|
|
6
|
+
import { type AppTypeOverrides, bindAllMethods, Spine } from '../utils';
|
|
7
|
+
|
|
8
|
+
const _SpineAnimation = WithSignals(Factory());
|
|
9
|
+
|
|
10
|
+
export interface ISpineAnimation<ANames extends string = string> extends InstanceType<typeof _SpineAnimation> {
|
|
11
|
+
readonly spine: Spine;
|
|
12
|
+
readonly animationNames: ANames[];
|
|
13
|
+
readonly app: AppTypeOverrides['App'];
|
|
14
|
+
readonly onAnimationComplete: Signal<(entry: TrackEntry) => void>;
|
|
15
|
+
readonly onAnimationStart: Signal<(entry: TrackEntry) => void>;
|
|
16
|
+
readonly onAnimationInterrupt: Signal<(entry: TrackEntry) => void>;
|
|
17
|
+
readonly onAnimationDispose: Signal<(entry: TrackEntry) => void>;
|
|
18
|
+
readonly onAnimationEnd: Signal<(entry: TrackEntry) => void>;
|
|
19
|
+
readonly onAnimationEvent: Signal<(entry: TrackEntry, event: Event) => void>;
|
|
20
|
+
readonly onPaused: Signal<(entry: TrackEntry | null) => void>;
|
|
21
|
+
readonly onResumed: Signal<(entry: TrackEntry | null) => void>;
|
|
22
|
+
setAnimation(name: ANames, loop?: boolean, tracklndex?: number): void;
|
|
23
|
+
getCurrentAnimation(tracklndex?: number): ANames;
|
|
24
|
+
pause(): void;
|
|
25
|
+
resume(): void;
|
|
26
|
+
togglePause(): void;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class SpineAnimation<ANames extends string = string> extends _SpineAnimation {
|
|
30
|
+
spine: Spine;
|
|
31
|
+
paused: boolean;
|
|
32
|
+
|
|
33
|
+
onAnimationComplete: Signal<(entry: TrackEntry) => void> = new Signal();
|
|
34
|
+
onAnimationStart: Signal<(entry: TrackEntry) => void> = new Signal();
|
|
35
|
+
onAnimationInterrupt: Signal<(entry: TrackEntry) => void> = new Signal();
|
|
36
|
+
onAnimationDispose: Signal<(entry: TrackEntry) => void> = new Signal();
|
|
37
|
+
onAnimationEnd: Signal<(entry: TrackEntry) => void> = new Signal();
|
|
38
|
+
onAnimationEvent: Signal<(entry: TrackEntry, event: Event) => void> = new Signal();
|
|
39
|
+
|
|
40
|
+
onPaused: Signal<(entry: TrackEntry | null) => void> = new Signal();
|
|
41
|
+
onResumed: Signal<(entry: TrackEntry | null) => void> = new Signal();
|
|
42
|
+
|
|
43
|
+
protected _stateListener: AnimationStateListener;
|
|
44
|
+
|
|
45
|
+
get app(): AppTypeOverrides['App'] {
|
|
46
|
+
return Application.getInstance();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
get animationNames(): ANames[] {
|
|
50
|
+
return this.spine.state.data.skeletonData.animations.map((a) => a.name) as ANames[];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
get currentEntry() {
|
|
54
|
+
return this.spine.state.getCurrent(0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
get elapsedAnimationTime() {
|
|
58
|
+
if (this.currentEntry) {
|
|
59
|
+
return this.currentEntry.trackTime;
|
|
60
|
+
}
|
|
61
|
+
return -1;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public constructor(props?: Partial<SpineProps>) {
|
|
65
|
+
super();
|
|
66
|
+
bindAllMethods(this);
|
|
67
|
+
let data = props?.data;
|
|
68
|
+
let spineData: { skeleton: string; atlas: string } | string = '';
|
|
69
|
+
if (typeof data === 'string') {
|
|
70
|
+
// get the spine data from cache
|
|
71
|
+
// check if '.json' is the last part of the asset string, and add it if not
|
|
72
|
+
let ext = data.slice(-5);
|
|
73
|
+
if (ext !== '.json' && ext !== '.skel') {
|
|
74
|
+
ext = '.json';
|
|
75
|
+
} else {
|
|
76
|
+
data = data.substring(0, data.length - 5);
|
|
77
|
+
}
|
|
78
|
+
spineData = { skeleton: data + ext, atlas: data + '.atlas' };
|
|
79
|
+
}
|
|
80
|
+
this.spine = (window as any).Spine.from(spineData);
|
|
81
|
+
this.add.existing(this.spine);
|
|
82
|
+
|
|
83
|
+
if (props) {
|
|
84
|
+
if (props.autoUpdate !== undefined) this.spine.autoUpdate = props.autoUpdate;
|
|
85
|
+
if (props.animationName) this.setAnimation(props.animationName as ANames, props.loop, props.trackIndex ?? 0);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
this.addSignalConnection(this.app.actions('toggle_pause').connect(this.togglePause));
|
|
89
|
+
|
|
90
|
+
if (props?.paused) {
|
|
91
|
+
this.pause();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
this._stateListener = {
|
|
95
|
+
start: this._handleAnimationStart,
|
|
96
|
+
interrupt: this._handleAnimationInterrupt,
|
|
97
|
+
dispose: this._handleAnimationDispose,
|
|
98
|
+
end: this._handleAnimationEnd,
|
|
99
|
+
event: this._handleAnimationEvent,
|
|
100
|
+
complete: this._handleAnimationComplete,
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
this.spine.state.addListener(this._stateListener);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
destroy() {
|
|
107
|
+
this.spine.state.removeListener(this._stateListener);
|
|
108
|
+
super.destroy();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
getCurrentAnimation(trackIndex: number = 0): ANames {
|
|
112
|
+
return (this.spine.state.getCurrent(trackIndex)?.animation?.name as ANames) || ('' as ANames);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
setAnimation(name: ANames, loop = false, tracklndex: number = 0) {
|
|
116
|
+
this.spine.state.setAnimation(tracklndex, name, loop);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
pause() {
|
|
120
|
+
this.paused = true;
|
|
121
|
+
this.spine.autoUpdate = false;
|
|
122
|
+
|
|
123
|
+
if (this.currentEntry) {
|
|
124
|
+
this.currentEntry.timeScale = 0;
|
|
125
|
+
}
|
|
126
|
+
this.onPaused.emit(this.currentEntry);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
resume() {
|
|
130
|
+
this.paused = false;
|
|
131
|
+
this.spine.autoUpdate = true;
|
|
132
|
+
if (this.currentEntry) {
|
|
133
|
+
this.currentEntry.timeScale = 1;
|
|
134
|
+
}
|
|
135
|
+
this.onResumed.emit(this.currentEntry);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
togglePause() {
|
|
139
|
+
if (this.paused) {
|
|
140
|
+
this.resume();
|
|
141
|
+
} else {
|
|
142
|
+
this.pause();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// protected methods
|
|
147
|
+
protected _handleAnimationComplete(entry: TrackEntry) {
|
|
148
|
+
this.onAnimationComplete.emit(entry);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
protected _handleAnimationStart(entry: TrackEntry) {
|
|
152
|
+
this.onAnimationStart.emit(entry);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
protected _handleAnimationInterrupt(entry: TrackEntry) {
|
|
156
|
+
this.onAnimationInterrupt.emit(entry);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
protected _handleAnimationDispose(entry: TrackEntry) {
|
|
160
|
+
this.onAnimationDispose.emit(entry);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
protected _handleAnimationEnd(entry: TrackEntry) {
|
|
164
|
+
this.onAnimationEnd.emit(entry);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
protected _handleAnimationEvent(entry: TrackEntry, event: Event) {
|
|
168
|
+
this.onAnimationEvent.emit(entry, event);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Assets, Graphics, GraphicsContext } from 'pixi.js';
|
|
2
|
+
|
|
3
|
+
export class Svg extends Graphics {
|
|
4
|
+
constructor(ctx: string | GraphicsContext) {
|
|
5
|
+
super(typeof ctx === 'string' ? Assets.get(ctx) : ctx);
|
|
6
|
+
const bounds = this.getLocalBounds();
|
|
7
|
+
this.pivot.set((bounds.x + bounds.width) / 2, (bounds.y + bounds.height) / 2);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// top level
|
|
2
|
+
export * from './Container';
|
|
3
|
+
export * from './Entity';
|
|
4
|
+
export * from './ParticleContainer';
|
|
5
|
+
export * from './Scene';
|
|
6
|
+
export * from './SceneTransition';
|
|
7
|
+
export * from './Svg';
|
|
8
|
+
// utilities
|
|
9
|
+
export * from './AnimatedSprite';
|
|
10
|
+
export * from './Camera';
|
|
11
|
+
export * from './SpineAnimation';
|