@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,811 @@
|
|
|
1
|
+
import { gsap } from 'gsap';
|
|
2
|
+
import { PixiPlugin } from 'gsap/PixiPlugin';
|
|
3
|
+
import { BlurFilter, ColorMatrixFilter } from 'pixi.js';
|
|
4
|
+
import { IApplication } from '../core';
|
|
5
|
+
import { Signal } from '../signals';
|
|
6
|
+
import { type Eases } from '../utils';
|
|
7
|
+
import { Plugin, type IPlugin } from './Plugin';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Configuration options for the GSAP plugin.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export interface GSAPPluginOptions {
|
|
14
|
+
/** Custom easing functions to register with GSAP */
|
|
15
|
+
eases: Eases;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Interface for the GSAPPlugin, defining its public API for high-performance animations.
|
|
20
|
+
* Provides comprehensive GSAP integration with custom animation context management.
|
|
21
|
+
*/
|
|
22
|
+
export interface IGSAPPlugin extends IPlugin {
|
|
23
|
+
/**
|
|
24
|
+
* Array of all registered custom ease names.
|
|
25
|
+
* @readonly
|
|
26
|
+
*/
|
|
27
|
+
readonly easeNames: string[];
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Object containing all registered custom eases, where keys are ease names and values are GSAP ease functions.
|
|
31
|
+
* @readonly
|
|
32
|
+
*/
|
|
33
|
+
readonly eases: Eases;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The GSAP instance for creating animations.
|
|
37
|
+
* @readonly
|
|
38
|
+
*/
|
|
39
|
+
readonly anim: typeof gsap;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Adds one or more GSAP tweens or timelines to a specified animation context.
|
|
43
|
+
* Animation contexts are custom collections (Set) of tweens/timelines managed by this plugin,
|
|
44
|
+
* NOT `gsap.Context` instances. If no contextId is provided, animations are added to the global context.
|
|
45
|
+
*
|
|
46
|
+
* @param animation - A single GSAP tween/timeline or an array of them
|
|
47
|
+
* @param contextId - Optional ID of the custom animation context. Defaults to the global context
|
|
48
|
+
* @returns The animation(s) that were added
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* // Add single animation to specific context
|
|
53
|
+
* const tween = gsap.to(mySprite, { x: 100, duration: 1 });
|
|
54
|
+
* gsapPlugin.addAnimation(tween, 'gameplayAnimations');
|
|
55
|
+
*
|
|
56
|
+
* // Add multiple animations to global context
|
|
57
|
+
* const tweens = [
|
|
58
|
+
* gsap.to(sprite1, { alpha: 0.5, duration: 1 }),
|
|
59
|
+
* gsap.to(sprite2, { rotation: Math.PI, duration: 2 })
|
|
60
|
+
* ];
|
|
61
|
+
* gsapPlugin.addAnimation(tweens);
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
addAnimation(
|
|
65
|
+
animation: gsap.core.Tween | gsap.core.Timeline | (gsap.core.Tween | gsap.core.Timeline)[],
|
|
66
|
+
contextId?: string,
|
|
67
|
+
): gsap.core.Tween | gsap.core.Timeline | (gsap.core.Tween | gsap.core.Timeline)[];
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Registers a custom ease function with GSAP.
|
|
71
|
+
*
|
|
72
|
+
* @param name - The name of the custom ease
|
|
73
|
+
* @param ease - The GSAP ease function
|
|
74
|
+
* @returns An object containing the registered ease
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* // Register a custom bounce ease
|
|
79
|
+
* gsapPlugin.registerCustomEase('myBounce', (progress) => {
|
|
80
|
+
* return progress < 0.5
|
|
81
|
+
* ? 2 * progress * progress
|
|
82
|
+
* : 1 - Math.pow(-2 * progress + 2, 3) / 2;
|
|
83
|
+
* });
|
|
84
|
+
*
|
|
85
|
+
* // Use the custom ease in animations
|
|
86
|
+
* gsap.to(mySprite, { x: 200, duration: 1, ease: 'myBounce' });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
registerCustomEase(name: string, ease: gsap.EaseFunction): Record<string, gsap.EaseFunction>;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Registers multiple custom ease functions with GSAP in batch.
|
|
93
|
+
*
|
|
94
|
+
* @param eases - An object where keys are ease names and values are GSAP ease functions
|
|
95
|
+
* @returns The complete map of registered eases
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* gsapPlugin.registerEases({
|
|
100
|
+
* 'softBounce': (t) => t * t * (3 - 2 * t),
|
|
101
|
+
* 'sharpEase': (t) => t * t * t,
|
|
102
|
+
* 'customBack': (t) => t * t * (2.7 * t - 1.7)
|
|
103
|
+
* });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
registerEases(eases: Eases): Eases;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Retrieves a custom animation context (a Set of tweens/timelines) by its ID.
|
|
110
|
+
* This is NOT a `gsap.Context` instance but rather a custom collection for grouping animations.
|
|
111
|
+
*
|
|
112
|
+
* @param contextId - The ID of the animation context
|
|
113
|
+
* @returns The animation context (a Set of tweens/timelines) or null if not found
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const menuAnimations = gsapPlugin.getContext('menuAnimations');
|
|
118
|
+
* if (menuAnimations) {
|
|
119
|
+
* console.log(`Menu has ${menuAnimations.size} active animations`);
|
|
120
|
+
* }
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
getContext(contextId: string): Set<gsap.core.Tween | gsap.core.Timeline> | null;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Plays all animations in a specified custom animation context, or all animations in all contexts.
|
|
127
|
+
*
|
|
128
|
+
* @param contextId - Optional ID of the animation context. If omitted, plays all animations
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* // Play all animations in a specific context
|
|
133
|
+
* gsapPlugin.playAll('gameplayAnimations');
|
|
134
|
+
*
|
|
135
|
+
* // Play all animations in all contexts
|
|
136
|
+
* gsapPlugin.playAll();
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
playAll(contextId?: string): void;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Pauses all animations in a specified custom animation context, or all animations in all contexts.
|
|
143
|
+
*
|
|
144
|
+
* @param contextId - Optional ID of the animation context. If omitted, pauses all animations
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* // Pause game animations when menu opens
|
|
149
|
+
* gsapPlugin.pauseAll('gameplayAnimations');
|
|
150
|
+
*
|
|
151
|
+
* // Pause everything when app loses focus
|
|
152
|
+
* gsapPlugin.pauseAll();
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
pauseAll(contextId?: string): void;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Kills (stops and removes) all animations in a specified custom animation context, or all animations.
|
|
159
|
+
* If all contexts are killed, the plugin's global animation collection is recreated.
|
|
160
|
+
*
|
|
161
|
+
* @param contextId - Optional ID of the animation context. If omitted, kills all animations
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```typescript
|
|
165
|
+
* // Kill specific context when transitioning scenes
|
|
166
|
+
* gsapPlugin.killAll('oldSceneAnimations');
|
|
167
|
+
*
|
|
168
|
+
* // Emergency stop all animations
|
|
169
|
+
* gsapPlugin.killAll();
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
killAll(contextId?: string): void;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Reverts all animations in a specified custom animation context to their initial state.
|
|
176
|
+
*
|
|
177
|
+
* @param contextId - Optional ID of the animation context. If omitted, reverts all animations
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* // Reset UI animations to initial state
|
|
182
|
+
* gsapPlugin.revertAll('uiAnimations');
|
|
183
|
+
*
|
|
184
|
+
* // Reset everything for game restart
|
|
185
|
+
* gsapPlugin.revertAll();
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
revertAll(contextId?: string): void;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Clears (removes) a specific custom animation context and its tracked animations.
|
|
192
|
+
* If this results in no active contexts, the global collection is recreated if all contexts are cleared.
|
|
193
|
+
*
|
|
194
|
+
* @param contextId - The ID of the animation context to clear
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```typescript
|
|
198
|
+
* // Clean up completed level animations
|
|
199
|
+
* gsapPlugin.clear('level1Animations');
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
clear(contextId: string): void;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Clears all custom animation contexts and recreates the plugin's global animation collection.
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```typescript
|
|
209
|
+
* // Complete reset when restarting the game
|
|
210
|
+
* gsapPlugin.clearAll();
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
clearAll(): void;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Kills all animations within the global animation collection managed by this plugin.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* // Stop only global animations, keep context-specific ones
|
|
221
|
+
* gsapPlugin.killGlobal();
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
killGlobal(): void;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Reverts all animations within the global animation collection to their initial state.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* // Reset global animations without affecting contexts
|
|
232
|
+
* gsapPlugin.revertGlobal();
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
revertGlobal(): void;
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Clears all animations from the global animation collection managed by this plugin.
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* ```typescript
|
|
242
|
+
* // Clear global animations for cleanup
|
|
243
|
+
* gsapPlugin.clearGlobal();
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
clearGlobal(): void;
|
|
247
|
+
|
|
248
|
+
// signals
|
|
249
|
+
onPlayAll: Signal<(contextId: string) => void>;
|
|
250
|
+
onPauseAll: Signal<(contextId: string) => void>;
|
|
251
|
+
onKillAll: Signal<(contextId: string) => void>;
|
|
252
|
+
onRevertAll: Signal<(contextId: string) => void>;
|
|
253
|
+
onClear: Signal<(detail: { contextId: string; kill: boolean }) => void>;
|
|
254
|
+
onClearAll: Signal<(kill: boolean) => void>;
|
|
255
|
+
onKillGlobal: Signal<() => void>;
|
|
256
|
+
onRevertGlobal: Signal<() => void>;
|
|
257
|
+
onClearGlobal: Signal<(kill: boolean) => void>;
|
|
258
|
+
onEaseRegistered: Signal<(detail: { name: string; ease: gsap.EaseFunction }) => void>;
|
|
259
|
+
onEasesRegistered: Signal<(eases: Eases) => void>;
|
|
260
|
+
onAnimationAddded: Signal<(detail: { animation: gsap.core.Tween | gsap.core.Timeline; contextId: string }) => void>;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Type alias for animation context collections.
|
|
265
|
+
* Represents a Set containing GSAP tweens and timelines for grouped animation management.
|
|
266
|
+
*/
|
|
267
|
+
export type AnimationContext = Set<gsap.core.Tween | gsap.core.Timeline>;
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* High-performance GSAP animation plugin for PIXI.js applications.
|
|
271
|
+
*
|
|
272
|
+
* Integrates the GreenSock Animation Platform (GSAP) into the application framework,
|
|
273
|
+
* providing powerful and flexible animation capabilities with optimized PIXI.js integration.
|
|
274
|
+
* Features custom animation context management for grouped animation control, custom easing
|
|
275
|
+
* registration, and automatic PIXI.js property animation support.
|
|
276
|
+
*
|
|
277
|
+
* Key Features:
|
|
278
|
+
* - Full GSAP integration with PIXI.js optimization
|
|
279
|
+
* - Custom animation contexts for grouped control (pause/play/kill by category)
|
|
280
|
+
* - Custom easing function registration and management
|
|
281
|
+
* - Automatic PIXI filter integration (BlurFilter, ColorMatrixFilter)
|
|
282
|
+
* - Memory-efficient animation tracking and cleanup
|
|
283
|
+
* - Global and context-specific animation management
|
|
284
|
+
*
|
|
285
|
+
* **Important:** Animation "contexts" in this plugin are custom collections (Sets) for grouping
|
|
286
|
+
* animations and are NOT the same as `gsap.Context` objects provided by GSAP itself.
|
|
287
|
+
*
|
|
288
|
+
* @example
|
|
289
|
+
* ```typescript
|
|
290
|
+
* // Basic setup and usage
|
|
291
|
+
* const gsapPlugin = app.plugins.get<IGSAPPlugin>('GSAPPlugin');
|
|
292
|
+
*
|
|
293
|
+
* // Create optimized PIXI animations
|
|
294
|
+
* const sprite = new PIXI.Sprite(texture);
|
|
295
|
+
* gsapPlugin.anim.to(sprite, {
|
|
296
|
+
* x: 100,
|
|
297
|
+
* y: 50,
|
|
298
|
+
* alpha: 0.8,
|
|
299
|
+
* duration: 1,
|
|
300
|
+
* ease: 'back.out(1.7)'
|
|
301
|
+
* });
|
|
302
|
+
*
|
|
303
|
+
* // Register custom eases for game feel
|
|
304
|
+
* gsapPlugin.registerCustomEase('gameJuice', (t) => {
|
|
305
|
+
* return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
|
|
306
|
+
* });
|
|
307
|
+
*
|
|
308
|
+
* // Context-based animation management
|
|
309
|
+
* const menuTween = gsapPlugin.anim.to(menuButton, { scale: 1.1, duration: 0.3 });
|
|
310
|
+
* gsapPlugin.addAnimation(menuTween, 'menuAnimations');
|
|
311
|
+
*
|
|
312
|
+
* // Later: pause all menu animations when game starts
|
|
313
|
+
* gsapPlugin.pauseAll('menuAnimations');
|
|
314
|
+
*
|
|
315
|
+
* // Animate PIXI filters
|
|
316
|
+
* const blurFilter = new PIXI.BlurFilter();
|
|
317
|
+
* sprite.filters = [blurFilter];
|
|
318
|
+
* gsapPlugin.anim.to(blurFilter, { blur: 10, duration: 2 });
|
|
319
|
+
* ```
|
|
320
|
+
*
|
|
321
|
+
* @remarks
|
|
322
|
+
* - Automatically registers PixiPlugin for optimized PIXI.js property animations
|
|
323
|
+
* - Includes ColorMatrixFilter and BlurFilter integration for advanced effects
|
|
324
|
+
* - Uses efficient Set-based tracking for O(1) animation context operations
|
|
325
|
+
* - Provides both global and context-specific animation lifecycle management
|
|
326
|
+
* - Custom eases are automatically registered with GSAP and stored for reference
|
|
327
|
+
*/
|
|
328
|
+
export class GSAPPlugin extends Plugin implements IGSAPPlugin {
|
|
329
|
+
/** Internal identifier for the global animation context */
|
|
330
|
+
private static readonly GLOBAL_CONTEXT_ID = '__caper_global';
|
|
331
|
+
|
|
332
|
+
/** Plugin identifier for framework registration */
|
|
333
|
+
public readonly id = 'GSAPPlugin';
|
|
334
|
+
|
|
335
|
+
// signals
|
|
336
|
+
public onPlayAll = new Signal<(contextId: string) => void>();
|
|
337
|
+
public onPauseAll = new Signal<(contextId: string) => void>();
|
|
338
|
+
public onKillAll = new Signal<(contextId: string) => void>();
|
|
339
|
+
public onRevertAll = new Signal<(contextId: string) => void>();
|
|
340
|
+
public onClear = new Signal<(detail: { contextId: string; kill: boolean }) => void>();
|
|
341
|
+
public onClearAll = new Signal<(kill: boolean) => void>();
|
|
342
|
+
public onKillGlobal = new Signal<() => void>();
|
|
343
|
+
public onRevertGlobal = new Signal<() => void>();
|
|
344
|
+
public onClearGlobal = new Signal<(kill: boolean) => void>();
|
|
345
|
+
public onEaseRegistered = new Signal<(detail: { name: string; ease: gsap.EaseFunction }) => void>();
|
|
346
|
+
public onEasesRegistered = new Signal<(eases: Eases) => void>();
|
|
347
|
+
public onAnimationAddded = new Signal<
|
|
348
|
+
(detail: { animation: gsap.core.Tween | gsap.core.Timeline; contextId: string }) => void
|
|
349
|
+
>();
|
|
350
|
+
|
|
351
|
+
/** Global animation context reference for quick access */
|
|
352
|
+
private _globalContext: AnimationContext;
|
|
353
|
+
|
|
354
|
+
/** Map of all custom animation contexts by their string identifiers */
|
|
355
|
+
private _animationContexts: Map<string, AnimationContext> = new Map();
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Array of all registered custom ease names.
|
|
359
|
+
* @readonly
|
|
360
|
+
*/
|
|
361
|
+
public get easeNames(): string[] {
|
|
362
|
+
return Object.keys(this.eases);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Object containing all registered custom eases.
|
|
367
|
+
* @readonly
|
|
368
|
+
*/
|
|
369
|
+
public get eases(): Eases {
|
|
370
|
+
return this.options.eases || {};
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Initializes the GSAP plugin with PIXI.js integration and custom configurations.
|
|
375
|
+
* Sets up PixiPlugin, registers custom eases, and creates the global animation context.
|
|
376
|
+
*
|
|
377
|
+
* @param _ - Plugin options (currently unused, relies on app.config.gsap)
|
|
378
|
+
* @param app - The application instance providing configuration
|
|
379
|
+
*
|
|
380
|
+
* @example
|
|
381
|
+
* ```typescript
|
|
382
|
+
* // Plugin is automatically initialized by the framework
|
|
383
|
+
* // Configuration comes from app.config.gsap
|
|
384
|
+
* const config = {
|
|
385
|
+
* gsap: {
|
|
386
|
+
* eases: {
|
|
387
|
+
* 'customBounce': (t) => t * t * (3 - 2 * t),
|
|
388
|
+
* 'gameEase': (t) => Math.pow(t, 2.5)
|
|
389
|
+
* }
|
|
390
|
+
* }
|
|
391
|
+
* };
|
|
392
|
+
* ```
|
|
393
|
+
*/
|
|
394
|
+
public async initialize(_: any, app: IApplication) {
|
|
395
|
+
this._options = app.config.gsap || {};
|
|
396
|
+
|
|
397
|
+
if (this._options.eases) {
|
|
398
|
+
this.registerEases(this._options.eases);
|
|
399
|
+
}
|
|
400
|
+
gsap.registerPlugin(PixiPlugin);
|
|
401
|
+
|
|
402
|
+
PixiPlugin.registerPIXI({
|
|
403
|
+
filters: {
|
|
404
|
+
ColorMatrixFilter,
|
|
405
|
+
BlurFilter,
|
|
406
|
+
},
|
|
407
|
+
});
|
|
408
|
+
|
|
409
|
+
this.createGlobalContext();
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Creates and initializes the global animation context.
|
|
414
|
+
* Sets up the default context for animations not assigned to specific contexts.
|
|
415
|
+
* @protected
|
|
416
|
+
*/
|
|
417
|
+
protected createGlobalContext(): void {
|
|
418
|
+
this._animationContexts.set(GSAPPlugin.GLOBAL_CONTEXT_ID, new Set());
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Registers a single custom ease function with GSAP.
|
|
423
|
+
* The ease becomes available for use in all GSAP animations by name.
|
|
424
|
+
*
|
|
425
|
+
* @param name - Unique name identifier for the ease
|
|
426
|
+
* @param ease - GSAP-compatible easing function (takes progress 0-1, returns eased value)
|
|
427
|
+
* @returns Object containing the registered ease for chaining or reference
|
|
428
|
+
*
|
|
429
|
+
* @example
|
|
430
|
+
* ```typescript
|
|
431
|
+
* // Register a custom elastic ease
|
|
432
|
+
* gsapPlugin.registerCustomEase('elasticOut', (t) => {
|
|
433
|
+
* const c4 = (2 * Math.PI) / 3;
|
|
434
|
+
* return t === 0 ? 0 : t === 1 ? 1 :
|
|
435
|
+
* Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;
|
|
436
|
+
* });
|
|
437
|
+
*
|
|
438
|
+
* // Use in animations
|
|
439
|
+
* gsap.to(mySprite, { x: 100, duration: 1, ease: 'elasticOut' });
|
|
440
|
+
* ```
|
|
441
|
+
*/
|
|
442
|
+
public registerCustomEase(name: string, ease: gsap.EaseFunction): Record<string, gsap.EaseFunction> {
|
|
443
|
+
gsap.registerEase(name, ease);
|
|
444
|
+
|
|
445
|
+
if (!this.options.eases) {
|
|
446
|
+
this.options.eases = {};
|
|
447
|
+
}
|
|
448
|
+
this.options.eases[name] = ease;
|
|
449
|
+
this.onEaseRegistered.emit({ name, ease });
|
|
450
|
+
return { [name]: ease };
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Registers multiple custom ease functions with GSAP in a single operation.
|
|
455
|
+
* Efficient batch registration for multiple custom eases.
|
|
456
|
+
*
|
|
457
|
+
* @param eases - Object mapping ease names to ease functions
|
|
458
|
+
* @returns The complete map of all registered eases
|
|
459
|
+
*
|
|
460
|
+
* @example
|
|
461
|
+
* ```typescript
|
|
462
|
+
* // Register a suite of game-specific eases
|
|
463
|
+
* gsapPlugin.registerEases({
|
|
464
|
+
* 'jumpEase': (t) => t * t * (3 - 2 * t),
|
|
465
|
+
* 'impactEase': (t) => 1 - Math.cos(t * Math.PI / 2),
|
|
466
|
+
* 'floatEase': (t) => Math.sin(t * Math.PI / 2),
|
|
467
|
+
* 'snapEase': (t) => t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2
|
|
468
|
+
* });
|
|
469
|
+
* ```
|
|
470
|
+
*/
|
|
471
|
+
public registerEases(eases: Eases): Eases {
|
|
472
|
+
for (const [name, ease] of Object.entries(eases)) {
|
|
473
|
+
this.registerCustomEase(name, ease);
|
|
474
|
+
}
|
|
475
|
+
this.onEasesRegistered.emit(eases);
|
|
476
|
+
return this.eases;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Gets the GSAP instance for creating animations.
|
|
481
|
+
* Provides access to the full GSAP API with PIXI.js optimizations enabled.
|
|
482
|
+
* @readonly
|
|
483
|
+
*/
|
|
484
|
+
public get anim(): typeof gsap {
|
|
485
|
+
return gsap;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Adds animation(s) to a specified context for grouped management.
|
|
490
|
+
* Creates the context if it doesn't exist. Defaults to global context if no contextId provided.
|
|
491
|
+
*
|
|
492
|
+
* @param animation - Single animation or array of animations to track
|
|
493
|
+
* @param contextId - Context identifier (defaults to global context)
|
|
494
|
+
* @returns The same animation(s) passed in for chaining
|
|
495
|
+
*
|
|
496
|
+
* @example
|
|
497
|
+
* ```typescript
|
|
498
|
+
* // Add to specific context for scene management
|
|
499
|
+
* const levelTweens = [
|
|
500
|
+
* gsap.to(player, { x: 100, duration: 2 }),
|
|
501
|
+
* gsap.to(enemy, { rotation: Math.PI, duration: 1.5 }),
|
|
502
|
+
* gsap.to(powerup, { scale: 1.2, yoyo: true, repeat: -1, duration: 0.8 })
|
|
503
|
+
* ];
|
|
504
|
+
* gsapPlugin.addAnimation(levelTweens, 'level1Gameplay');
|
|
505
|
+
*
|
|
506
|
+
* // Add to global context (default)
|
|
507
|
+
* const bgTween = gsap.to(background, { alpha: 0.8, duration: 3 });
|
|
508
|
+
* gsapPlugin.addAnimation(bgTween);
|
|
509
|
+
* ```
|
|
510
|
+
*/
|
|
511
|
+
public addAnimation(
|
|
512
|
+
animation: gsap.core.Tween | gsap.core.Timeline | (gsap.core.Tween | gsap.core.Timeline)[],
|
|
513
|
+
contextId: string = GSAPPlugin.GLOBAL_CONTEXT_ID,
|
|
514
|
+
): gsap.core.Tween | gsap.core.Timeline | (gsap.core.Tween | gsap.core.Timeline)[] {
|
|
515
|
+
if (!this._animationContexts.has(contextId)) {
|
|
516
|
+
this._animationContexts.set(contextId, new Set());
|
|
517
|
+
}
|
|
518
|
+
const ctx = this._animationContexts.get(contextId);
|
|
519
|
+
if (ctx) {
|
|
520
|
+
if (Array.isArray(animation)) {
|
|
521
|
+
animation.forEach((anim) => {
|
|
522
|
+
ctx.add(anim);
|
|
523
|
+
this.onAnimationAddded.emit({ animation: anim, contextId });
|
|
524
|
+
});
|
|
525
|
+
} else {
|
|
526
|
+
ctx.add(animation);
|
|
527
|
+
this.onAnimationAddded.emit({ animation, contextId });
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return animation;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* Retrieves a custom animation context by its identifier.
|
|
536
|
+
* Returns null if the context doesn't exist.
|
|
537
|
+
*
|
|
538
|
+
* @param contextId - The context identifier to look up
|
|
539
|
+
* @returns The animation context Set or null if not found
|
|
540
|
+
*
|
|
541
|
+
* @example
|
|
542
|
+
* ```typescript
|
|
543
|
+
* // Check if context exists and get info
|
|
544
|
+
* const gameplayContext = gsapPlugin.getContext('gameplayAnimations');
|
|
545
|
+
* if (gameplayContext) {
|
|
546
|
+
* console.log(`Found ${gameplayContext.size} gameplay animations`);
|
|
547
|
+
*
|
|
548
|
+
* // Iterate through animations if needed
|
|
549
|
+
* gameplayContext.forEach(animation => {
|
|
550
|
+
* console.log('Animation progress:', animation.progress());
|
|
551
|
+
* });
|
|
552
|
+
* }
|
|
553
|
+
* ```
|
|
554
|
+
*/
|
|
555
|
+
public getContext(contextId: string): AnimationContext | null {
|
|
556
|
+
return this._animationContexts.get(contextId) || null;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Plays all animations in the specified context or all contexts.
|
|
561
|
+
* Useful for resuming paused animations or ensuring all animations are active.
|
|
562
|
+
*
|
|
563
|
+
* @param contextId - Optional context identifier. If omitted, plays all animations in all contexts
|
|
564
|
+
*
|
|
565
|
+
* @example
|
|
566
|
+
* ```typescript
|
|
567
|
+
* // Resume specific context after pause
|
|
568
|
+
* gsapPlugin.playAll('menuAnimations');
|
|
569
|
+
*
|
|
570
|
+
* // Resume all animations (e.g., after app regains focus)
|
|
571
|
+
* gsapPlugin.playAll();
|
|
572
|
+
*
|
|
573
|
+
* // Conditional playback
|
|
574
|
+
* if (gameState === 'playing') {
|
|
575
|
+
* gsapPlugin.playAll('gameplayAnimations');
|
|
576
|
+
* }
|
|
577
|
+
* ```
|
|
578
|
+
*/
|
|
579
|
+
public playAll(contextId?: string): void {
|
|
580
|
+
if (!contextId) {
|
|
581
|
+
this._animationContexts.forEach((context) =>
|
|
582
|
+
context.forEach((animation) => {
|
|
583
|
+
animation.play();
|
|
584
|
+
}),
|
|
585
|
+
);
|
|
586
|
+
} else {
|
|
587
|
+
this._animationContexts.get(contextId)?.forEach((animation) => {
|
|
588
|
+
animation.play();
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
this.onPlayAll.emit(contextId ?? 'all');
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Pauses all animations in the specified context or all contexts.
|
|
597
|
+
* Animations retain their current progress and can be resumed with playAll().
|
|
598
|
+
*
|
|
599
|
+
* @param contextId - Optional context identifier. If omitted, pauses all animations in all contexts
|
|
600
|
+
*
|
|
601
|
+
* @example
|
|
602
|
+
* ```typescript
|
|
603
|
+
* // Pause game animations when menu opens
|
|
604
|
+
* gsapPlugin.pauseAll('gameplayAnimations');
|
|
605
|
+
*
|
|
606
|
+
* // Pause everything when app loses focus
|
|
607
|
+
* window.addEventListener('blur', () => {
|
|
608
|
+
* gsapPlugin.pauseAll();
|
|
609
|
+
* });
|
|
610
|
+
*
|
|
611
|
+
* // Conditional pausing
|
|
612
|
+
* if (gameState === 'paused') {
|
|
613
|
+
* gsapPlugin.pauseAll('gameplayAnimations');
|
|
614
|
+
* }
|
|
615
|
+
* ```
|
|
616
|
+
*/
|
|
617
|
+
public pauseAll(contextId?: string): void {
|
|
618
|
+
if (!contextId) {
|
|
619
|
+
this._animationContexts.forEach((context) => context.forEach((animation) => animation.pause()));
|
|
620
|
+
} else {
|
|
621
|
+
this._animationContexts.get(contextId)?.forEach((animation) => animation.pause());
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
this.onPauseAll.emit(contextId ?? 'all');
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Kills (stops and removes) all animations in the specified context or all contexts.
|
|
629
|
+
* Killed animations cannot be resumed and are removed from tracking.
|
|
630
|
+
* If killing all contexts, the global context is automatically recreated.
|
|
631
|
+
*
|
|
632
|
+
* @param contextId - Optional context identifier. If omitted, kills all animations in all contexts
|
|
633
|
+
*
|
|
634
|
+
* @example
|
|
635
|
+
* ```typescript
|
|
636
|
+
* // Kill animations when transitioning scenes
|
|
637
|
+
* gsapPlugin.killAll('currentSceneAnimations');
|
|
638
|
+
*
|
|
639
|
+
* // Emergency stop all animations
|
|
640
|
+
* gsapPlugin.killAll();
|
|
641
|
+
*
|
|
642
|
+
* // Clean up specific context before recreation
|
|
643
|
+
* gsapPlugin.killAll('temporaryEffects');
|
|
644
|
+
* ```
|
|
645
|
+
*/
|
|
646
|
+
public killAll(contextId?: string): void {
|
|
647
|
+
if (!contextId) {
|
|
648
|
+
this._animationContexts.forEach((contextAnimations) => {
|
|
649
|
+
contextAnimations.forEach((animation) => animation.kill());
|
|
650
|
+
});
|
|
651
|
+
this._animationContexts.clear(); // Clear all tracked animations from all contexts
|
|
652
|
+
this.createGlobalContext(); // Re-initialize the global context and its tracking
|
|
653
|
+
} else {
|
|
654
|
+
const contextAnimations = this._animationContexts.get(contextId);
|
|
655
|
+
if (contextAnimations) {
|
|
656
|
+
contextAnimations.forEach((animation) => animation.kill());
|
|
657
|
+
}
|
|
658
|
+
this.clear(contextId); // Remove the specific context from tracking
|
|
659
|
+
}
|
|
660
|
+
this.onKillAll.emit(contextId ?? 'all');
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
/**
|
|
664
|
+
* Reverts all animations in the specified context or all contexts to their initial state.
|
|
665
|
+
* Animation targets return to their original property values before the animation started.
|
|
666
|
+
*
|
|
667
|
+
* @param contextId - Optional context identifier. If omitted, reverts all animations in all contexts
|
|
668
|
+
*
|
|
669
|
+
* @example
|
|
670
|
+
* ```typescript
|
|
671
|
+
* // Reset UI to initial state
|
|
672
|
+
* gsapPlugin.revertAll('uiAnimations');
|
|
673
|
+
*
|
|
674
|
+
* // Reset everything for game restart
|
|
675
|
+
* gsapPlugin.revertAll();
|
|
676
|
+
*
|
|
677
|
+
* // Reset temporary effects
|
|
678
|
+
* gsapPlugin.revertAll('screenEffects');
|
|
679
|
+
* ```
|
|
680
|
+
*/
|
|
681
|
+
public revertAll(contextId?: string): void {
|
|
682
|
+
if (!contextId) {
|
|
683
|
+
this._animationContexts.forEach((context) => context.forEach((animation) => animation.revert()));
|
|
684
|
+
} else {
|
|
685
|
+
this._animationContexts.get(contextId)?.forEach((animation) => animation.revert());
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
this.onRevertAll.emit(contextId ?? 'all');
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
/**
|
|
692
|
+
* Clears (removes) a specific animation context from tracking.
|
|
693
|
+
* Optionally kills the animations before clearing the context.
|
|
694
|
+
*
|
|
695
|
+
* @param contextId - The context identifier to clear
|
|
696
|
+
* @param kill - Whether to kill animations before clearing (default: false)
|
|
697
|
+
*
|
|
698
|
+
* @example
|
|
699
|
+
* ```typescript
|
|
700
|
+
* // Clear completed level context
|
|
701
|
+
* gsapPlugin.clear('level1Animations');
|
|
702
|
+
*
|
|
703
|
+
* // Clear and kill animations simultaneously
|
|
704
|
+
* gsapPlugin.clear('temporaryEffects', true);
|
|
705
|
+
* ```
|
|
706
|
+
*/
|
|
707
|
+
public clear(contextId: string, kill: boolean = false): void {
|
|
708
|
+
if (kill) {
|
|
709
|
+
this.killAll(contextId);
|
|
710
|
+
}
|
|
711
|
+
this._animationContexts.delete(contextId);
|
|
712
|
+
|
|
713
|
+
this.onClear.emit({ contextId, kill });
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
/**
|
|
717
|
+
* Clears all animation contexts and recreates the global context.
|
|
718
|
+
* Optionally kills all animations before clearing contexts.
|
|
719
|
+
*
|
|
720
|
+
* @param kill - Whether to kill all animations before clearing (default: false)
|
|
721
|
+
*
|
|
722
|
+
* @example
|
|
723
|
+
* ```typescript
|
|
724
|
+
* // Complete reset for new game
|
|
725
|
+
* gsapPlugin.clearAll(true);
|
|
726
|
+
*
|
|
727
|
+
* // Clear tracking without killing animations
|
|
728
|
+
* gsapPlugin.clearAll(false);
|
|
729
|
+
* ```
|
|
730
|
+
*/
|
|
731
|
+
public clearAll(kill: boolean = false): void {
|
|
732
|
+
if (kill) {
|
|
733
|
+
this.killAll();
|
|
734
|
+
}
|
|
735
|
+
this._animationContexts.clear();
|
|
736
|
+
this.createGlobalContext(); // Re-initialize the global context tracking
|
|
737
|
+
|
|
738
|
+
this.onClearAll.emit(kill);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
/**
|
|
742
|
+
* Kills all animations within the global animation context only.
|
|
743
|
+
* This affects only animations added to the global context, not other custom contexts.
|
|
744
|
+
*
|
|
745
|
+
* @example
|
|
746
|
+
* ```typescript
|
|
747
|
+
* // Kill only global animations, preserve context-specific ones
|
|
748
|
+
* gsapPlugin.killGlobal();
|
|
749
|
+
*
|
|
750
|
+
* // Useful for clearing background animations while keeping UI animations
|
|
751
|
+
* gsapPlugin.killGlobal();
|
|
752
|
+
* gsapPlugin.playAll('uiAnimations'); // UI animations continue
|
|
753
|
+
* ```
|
|
754
|
+
*/
|
|
755
|
+
public killGlobal(): void {
|
|
756
|
+
const globalAnimations = this._animationContexts.get(GSAPPlugin.GLOBAL_CONTEXT_ID);
|
|
757
|
+
if (globalAnimations) {
|
|
758
|
+
globalAnimations.forEach((anim) => anim.kill());
|
|
759
|
+
globalAnimations.clear();
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
this.onKillGlobal.emit();
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
/**
|
|
766
|
+
* Reverts all animations within the global animation context to their initial state.
|
|
767
|
+
* Only affects animations in the global context, not custom contexts.
|
|
768
|
+
*
|
|
769
|
+
* @example
|
|
770
|
+
* ```typescript
|
|
771
|
+
* // Reset only global animations
|
|
772
|
+
* gsapPlugin.revertGlobal();
|
|
773
|
+
*
|
|
774
|
+
* // Reset global animations while preserving context states
|
|
775
|
+
* gsapPlugin.revertGlobal();
|
|
776
|
+
* // Context-specific animations remain unchanged
|
|
777
|
+
* ```
|
|
778
|
+
*/
|
|
779
|
+
public revertGlobal(): void {
|
|
780
|
+
const globalAnimations = this._animationContexts.get(GSAPPlugin.GLOBAL_CONTEXT_ID);
|
|
781
|
+
if (globalAnimations) {
|
|
782
|
+
globalAnimations.forEach((anim) => anim.revert());
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
this.onRevertGlobal.emit();
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
/**
|
|
789
|
+
* Clears all animations from the global animation context.
|
|
790
|
+
* Optionally kills the animations before clearing from tracking.
|
|
791
|
+
*
|
|
792
|
+
* @param kill - Whether to kill animations before clearing (default: false)
|
|
793
|
+
*
|
|
794
|
+
* @example
|
|
795
|
+
* ```typescript
|
|
796
|
+
* // Clear global context without killing
|
|
797
|
+
* gsapPlugin.clearGlobal();
|
|
798
|
+
*
|
|
799
|
+
* // Clear and kill global animations
|
|
800
|
+
* gsapPlugin.clearGlobal(true);
|
|
801
|
+
* ```
|
|
802
|
+
*/
|
|
803
|
+
public clearGlobal(kill: boolean = false): void {
|
|
804
|
+
if (kill) {
|
|
805
|
+
this.killGlobal();
|
|
806
|
+
}
|
|
807
|
+
this._globalContext.clear();
|
|
808
|
+
|
|
809
|
+
this.onClearGlobal.emit(kill);
|
|
810
|
+
}
|
|
811
|
+
}
|