1681-engine 0.0.0-stage → 0.5.8
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/CHANGELOG.md +304 -0
- package/LICENSE +21 -0
- package/README.md +164 -2
- package/dist/1681-engine.js +417 -0
- package/dist/1681-engine.js.map +1 -0
- package/dist/ambient/ColorGrade.js +41 -0
- package/dist/ambient/ColorGrade.js.map +1 -0
- package/dist/ambient/DayClock.js +57 -0
- package/dist/ambient/DayClock.js.map +1 -0
- package/dist/ambient/WeatherLayer.js +91 -0
- package/dist/ambient/WeatherLayer.js.map +1 -0
- package/dist/ambient/grade.js +13 -0
- package/dist/ambient/grade.js.map +1 -0
- package/dist/ambient/weather.js +52 -0
- package/dist/ambient/weather.js.map +1 -0
- package/dist/anim/AnimStateMachine.js +164 -0
- package/dist/anim/AnimStateMachine.js.map +1 -0
- package/dist/anim/Animator.js +67 -0
- package/dist/anim/Animator.js.map +1 -0
- package/dist/anim/animStateCompile.js +113 -0
- package/dist/anim/animStateCompile.js.map +1 -0
- package/dist/anim/animStateSystem.js +17 -0
- package/dist/anim/animStateSystem.js.map +1 -0
- package/dist/anim/animationSystem.js +15 -0
- package/dist/anim/animationSystem.js.map +1 -0
- package/dist/anim/asepriteSlices.js +22 -0
- package/dist/anim/asepriteSlices.js.map +1 -0
- package/dist/anim/asepriteTags.js +35 -0
- package/dist/anim/asepriteTags.js.map +1 -0
- package/dist/anim/parseAseprite.js +83 -0
- package/dist/anim/parseAseprite.js.map +1 -0
- package/dist/assets/AssetLoader.js +104 -0
- package/dist/assets/AssetLoader.js.map +1 -0
- package/dist/assets/loadAseprite.js +50 -0
- package/dist/assets/loadAseprite.js.map +1 -0
- package/dist/assets/takeCleanerWorker-DTcI_Jqr.js +31 -0
- package/dist/assets/takeCleanerWorker-DTcI_Jqr.js.map +1 -0
- package/dist/audio/Footsteps.js +26 -0
- package/dist/audio/Footsteps.js.map +1 -0
- package/dist/audio/MusicPlayer.js +78 -0
- package/dist/audio/MusicPlayer.js.map +1 -0
- package/dist/audio/SoundEngine.js +119 -0
- package/dist/audio/SoundEngine.js.map +1 -0
- package/dist/audio/cleanTake.js +30 -0
- package/dist/audio/cleanTake.js.map +1 -0
- package/dist/audio/music/ElementVoice.js +35 -0
- package/dist/audio/music/ElementVoice.js.map +1 -0
- package/dist/audio/music/GraphVoice.js +39 -0
- package/dist/audio/music/GraphVoice.js.map +1 -0
- package/dist/audio/music/MusicChannel.js +58 -0
- package/dist/audio/music/MusicChannel.js.map +1 -0
- package/dist/audio/music/musicVoice.js +13 -0
- package/dist/audio/music/musicVoice.js.map +1 -0
- package/dist/audio/sampleBank.js +82 -0
- package/dist/audio/sampleBank.js.map +1 -0
- package/dist/audio/soundTable.js +9 -0
- package/dist/audio/soundTable.js.map +1 -0
- package/dist/audio/synth.js +36 -0
- package/dist/audio/synth.js.map +1 -0
- package/dist/core/BitmapLabel.js +49 -0
- package/dist/core/BitmapLabel.js.map +1 -0
- package/dist/core/Camera.js +150 -0
- package/dist/core/Camera.js.map +1 -0
- package/dist/core/Clock.js +30 -0
- package/dist/core/Clock.js.map +1 -0
- package/dist/core/Graphics.js +69 -0
- package/dist/core/Graphics.js.map +1 -0
- package/dist/core/Group.js +29 -0
- package/dist/core/Group.js.map +1 -0
- package/dist/core/Image.js +51 -0
- package/dist/core/Image.js.map +1 -0
- package/dist/core/ObjectFactory.js +55 -0
- package/dist/core/ObjectFactory.js.map +1 -0
- package/dist/core/Pointer.js +58 -0
- package/dist/core/Pointer.js.map +1 -0
- package/dist/core/Rectangle.js +51 -0
- package/dist/core/Rectangle.js.map +1 -0
- package/dist/core/Stage.js +86 -0
- package/dist/core/Stage.js.map +1 -0
- package/dist/core/Text.js +22 -0
- package/dist/core/Text.js.map +1 -0
- package/dist/core/TextureRegistry.js +111 -0
- package/dist/core/TextureRegistry.js.map +1 -0
- package/dist/core/Timeline.js +211 -0
- package/dist/core/Timeline.js.map +1 -0
- package/dist/core/TimelineBuilder.js +73 -0
- package/dist/core/TimelineBuilder.js.map +1 -0
- package/dist/core/TimelineChild.js +84 -0
- package/dist/core/TimelineChild.js.map +1 -0
- package/dist/core/Tweener.js +136 -0
- package/dist/core/Tweener.js.map +1 -0
- package/dist/core/atlas.js +38 -0
- package/dist/core/atlas.js.map +1 -0
- package/dist/core/atlasPlan.js +22 -0
- package/dist/core/atlasPlan.js.map +1 -0
- package/dist/core/eases.js +21 -0
- package/dist/core/eases.js.map +1 -0
- package/dist/core/gameObject.js +115 -0
- package/dist/core/gameObject.js.map +1 -0
- package/dist/core/pixiPatches.js +18 -0
- package/dist/core/pixiPatches.js.map +1 -0
- package/dist/core/timelinePlace.js +24 -0
- package/dist/core/timelinePlace.js.map +1 -0
- package/dist/core/tweenProps.js +12 -0
- package/dist/core/tweenProps.js.map +1 -0
- package/dist/debug/DebugOverlay.js +94 -0
- package/dist/debug/DebugOverlay.js.map +1 -0
- package/dist/debug/DrawCallCounter.js +41 -0
- package/dist/debug/DrawCallCounter.js.map +1 -0
- package/dist/debug/ErrorLog.js +22 -0
- package/dist/debug/ErrorLog.js.map +1 -0
- package/dist/debug/FrameStats.js +42 -0
- package/dist/debug/FrameStats.js.map +1 -0
- package/dist/debug/inspectWorld.js +29 -0
- package/dist/debug/inspectWorld.js.map +1 -0
- package/dist/diagnostics/ErrorDeduper.js +27 -0
- package/dist/diagnostics/ErrorDeduper.js.map +1 -0
- package/dist/diagnostics/FrameSampler.js +42 -0
- package/dist/diagnostics/FrameSampler.js.map +1 -0
- package/dist/diagnostics/bootWatch.js +21 -0
- package/dist/diagnostics/bootWatch.js.map +1 -0
- package/dist/diagnostics/captureErrors.js +27 -0
- package/dist/diagnostics/captureErrors.js.map +1 -0
- package/dist/diagnostics/contextLoss.js +25 -0
- package/dist/diagnostics/contextLoss.js.map +1 -0
- package/dist/diagnostics/frameStats.js +31 -0
- package/dist/diagnostics/frameStats.js.map +1 -0
- package/dist/diagnostics/gpuInfo.js +22 -0
- package/dist/diagnostics/gpuInfo.js.map +1 -0
- package/dist/diagnostics/renderGuard.js +24 -0
- package/dist/diagnostics/renderGuard.js.map +1 -0
- package/dist/ecs/SparseSet.js +55 -0
- package/dist/ecs/SparseSet.js.map +1 -0
- package/dist/ecs/World.js +307 -0
- package/dist/ecs/World.js.map +1 -0
- package/dist/ecs/fields.js +26 -0
- package/dist/ecs/fields.js.map +1 -0
- package/dist/engine/Engine.js +82 -0
- package/dist/engine/Engine.js.map +1 -0
- package/dist/engine/FixedLoop.js +37 -0
- package/dist/engine/FixedLoop.js.map +1 -0
- package/dist/engine/Scene.js +79 -0
- package/dist/engine/Scene.js.map +1 -0
- package/dist/engine/SceneManager.js +73 -0
- package/dist/engine/SceneManager.js.map +1 -0
- package/dist/events/EventBus.js +42 -0
- package/dist/events/EventBus.js.map +1 -0
- package/dist/fx/FloatingText.js +72 -0
- package/dist/fx/FloatingText.js.map +1 -0
- package/dist/fx/hitStop.js +28 -0
- package/dist/fx/hitStop.js.map +1 -0
- package/dist/fx/viewCull.js +10 -0
- package/dist/fx/viewCull.js.map +1 -0
- package/dist/i18n/Translator.js +72 -0
- package/dist/i18n/Translator.js.map +1 -0
- package/dist/i18n/extractStrings.js +58 -0
- package/dist/i18n/extractStrings.js.map +1 -0
- package/dist/i18n/formatMessage.js +19 -0
- package/dist/i18n/formatMessage.js.map +1 -0
- package/dist/input/Actions.js +131 -0
- package/dist/input/Actions.js.map +1 -0
- package/dist/input/AimGesture.js +75 -0
- package/dist/input/AimGesture.js.map +1 -0
- package/dist/input/Keyboard.js +54 -0
- package/dist/input/Keyboard.js.map +1 -0
- package/dist/input/Keymap.js +171 -0
- package/dist/input/Keymap.js.map +1 -0
- package/dist/input/TargetLock.js +73 -0
- package/dist/input/TargetLock.js.map +1 -0
- package/dist/input/aimAxis.js +8 -0
- package/dist/input/aimAxis.js.map +1 -0
- package/dist/input/keyChord.js +29 -0
- package/dist/input/keyChord.js.map +1 -0
- package/dist/input/longPress.js +32 -0
- package/dist/input/longPress.js.map +1 -0
- package/dist/input/stickAxis.js +23 -0
- package/dist/input/stickAxis.js.map +1 -0
- package/dist/input/touchDetect.js +7 -0
- package/dist/input/touchDetect.js.map +1 -0
- package/dist/light/LightLayer.js +84 -0
- package/dist/light/LightLayer.js.map +1 -0
- package/dist/nav/MinHeap.js +39 -0
- package/dist/nav/MinHeap.js.map +1 -0
- package/dist/nav/findPath.js +78 -0
- package/dist/nav/findPath.js.map +1 -0
- package/dist/nav/navGrid.js +36 -0
- package/dist/nav/navGrid.js.map +1 -0
- package/dist/nav/nearestOpen.js +19 -0
- package/dist/nav/nearestOpen.js.map +1 -0
- package/dist/nav/straightenPath.js +51 -0
- package/dist/nav/straightenPath.js.map +1 -0
- package/dist/net/Connection.js +84 -0
- package/dist/net/Connection.js.map +1 -0
- package/dist/net/InterpolationBuffer.js +57 -0
- package/dist/net/InterpolationBuffer.js.map +1 -0
- package/dist/net/PredictedMover.js +61 -0
- package/dist/net/PredictedMover.js.map +1 -0
- package/dist/net/Room.js +92 -0
- package/dist/net/Room.js.map +1 -0
- package/dist/net/RoomHost.js +101 -0
- package/dist/net/RoomHost.js.map +1 -0
- package/dist/net/cadence.js +22 -0
- package/dist/net/cadence.js.map +1 -0
- package/dist/net/constants.js +11 -0
- package/dist/net/constants.js.map +1 -0
- package/dist/net/lobby/LobbyClient.js +124 -0
- package/dist/net/lobby/LobbyClient.js.map +1 -0
- package/dist/net/lobby/LobbyHost.js +366 -0
- package/dist/net/lobby/LobbyHost.js.map +1 -0
- package/dist/net/lobby/LobbyRooms.js +66 -0
- package/dist/net/lobby/LobbyRooms.js.map +1 -0
- package/dist/net/lobby/Matchmaker.js +106 -0
- package/dist/net/lobby/Matchmaker.js.map +1 -0
- package/dist/net/movement.js +83 -0
- package/dist/net/movement.js.map +1 -0
- package/dist/net/protocol.js +11 -0
- package/dist/net/protocol.js.map +1 -0
- package/dist/net/serverClock.js +22 -0
- package/dist/net/serverClock.js.map +1 -0
- package/dist/net/snapshotCodec.js +92 -0
- package/dist/net/snapshotCodec.js.map +1 -0
- package/dist/parallax/Parallax.js +32 -0
- package/dist/parallax/Parallax.js.map +1 -0
- package/dist/parallax/ParallaxLayer.js +70 -0
- package/dist/parallax/ParallaxLayer.js.map +1 -0
- package/dist/parallax/parallaxMath.js +27 -0
- package/dist/parallax/parallaxMath.js.map +1 -0
- package/dist/particles/Emitter.js +108 -0
- package/dist/particles/Emitter.js.map +1 -0
- package/dist/particles/ParticleBudget.js +32 -0
- package/dist/particles/ParticleBudget.js.map +1 -0
- package/dist/particles/ParticleSim.js +60 -0
- package/dist/particles/ParticleSim.js.map +1 -0
- package/dist/particles/particleCurves.js +48 -0
- package/dist/particles/particleCurves.js.map +1 -0
- package/dist/particles/particleSampling.js +30 -0
- package/dist/particles/particleSampling.js.map +1 -0
- package/dist/physics/Body.js +202 -0
- package/dist/physics/Body.js.map +1 -0
- package/dist/physics/BroadPhase.js +56 -0
- package/dist/physics/BroadPhase.js.map +1 -0
- package/dist/physics/Contact.js +76 -0
- package/dist/physics/Contact.js.map +1 -0
- package/dist/physics/ContactSolver.js +70 -0
- package/dist/physics/ContactSolver.js.map +1 -0
- package/dist/physics/PhysicsWorld.js +221 -0
- package/dist/physics/PhysicsWorld.js.map +1 -0
- package/dist/physics/SpatialHash.js +39 -0
- package/dist/physics/SpatialHash.js.map +1 -0
- package/dist/physics/collide.js +76 -0
- package/dist/physics/collide.js.map +1 -0
- package/dist/physics/collidePolygon.js +94 -0
- package/dist/physics/collidePolygon.js.map +1 -0
- package/dist/physics/contactReport.js +14 -0
- package/dist/physics/contactReport.js.map +1 -0
- package/dist/physics/drawColliders.js +31 -0
- package/dist/physics/drawColliders.js.map +1 -0
- package/dist/physics/physicsSystem.js +8 -0
- package/dist/physics/physicsSystem.js.map +1 -0
- package/dist/physics/polygon.js +80 -0
- package/dist/physics/polygon.js.map +1 -0
- package/dist/physics/raycast.js +62 -0
- package/dist/physics/raycast.js.map +1 -0
- package/dist/physics/syncToBody.js +19 -0
- package/dist/physics/syncToBody.js.map +1 -0
- package/dist/physics/tileBodies.js +59 -0
- package/dist/physics/tileBodies.js.map +1 -0
- package/dist/physics/types.js +8 -0
- package/dist/physics/types.js.map +1 -0
- package/dist/pixel/Darkness.js +166 -0
- package/dist/pixel/Darkness.js.map +1 -0
- package/dist/pixel/DitherVignette.js +57 -0
- package/dist/pixel/DitherVignette.js.map +1 -0
- package/dist/pixel/Evaporation.js +85 -0
- package/dist/pixel/Evaporation.js.map +1 -0
- package/dist/pixel/NightShade.js +34 -0
- package/dist/pixel/NightShade.js.map +1 -0
- package/dist/pixel/PixelLayer.js +211 -0
- package/dist/pixel/PixelLayer.js.map +1 -0
- package/dist/pixel/SwayProp.js +75 -0
- package/dist/pixel/SwayProp.js.map +1 -0
- package/dist/pixel/lights.js +44 -0
- package/dist/pixel/lights.js.map +1 -0
- package/dist/pixel/nineSlice.js +62 -0
- package/dist/pixel/nineSlice.js.map +1 -0
- package/dist/pixel/paintLayer.js +36 -0
- package/dist/pixel/paintLayer.js.map +1 -0
- package/dist/pixel/palette.js +57 -0
- package/dist/pixel/palette.js.map +1 -0
- package/dist/pixel/pixel.js +278 -0
- package/dist/pixel/pixel.js.map +1 -0
- package/dist/pixel/pixelPaint.js +194 -0
- package/dist/pixel/pixelPaint.js.map +1 -0
- package/dist/pixel/pixelTone.js +164 -0
- package/dist/pixel/pixelTone.js.map +1 -0
- package/dist/pixel/propKit.js +41 -0
- package/dist/pixel/propKit.js.map +1 -0
- package/dist/pixel/ramp.js +102 -0
- package/dist/pixel/ramp.js.map +1 -0
- package/dist/pixel/selout.js +35 -0
- package/dist/pixel/selout.js.map +1 -0
- package/dist/pixel/spritePixels.js +59 -0
- package/dist/pixel/spritePixels.js.map +1 -0
- package/dist/pixel/swayRig.js +87 -0
- package/dist/pixel/swayRig.js.map +1 -0
- package/dist/pixel/vignetteMask.js +24 -0
- package/dist/pixel/vignetteMask.js.map +1 -0
- package/dist/pixel/weatherArt.js +61 -0
- package/dist/pixel/weatherArt.js.map +1 -0
- package/dist/pixel.js +90 -0
- package/dist/pixel.js.map +1 -0
- package/dist/platform/touch.js +33 -0
- package/dist/platform/touch.js.map +1 -0
- package/dist/postfx/BloomFilter.js +65 -0
- package/dist/postfx/BloomFilter.js.map +1 -0
- package/dist/postfx/ChromaticAberrationFilter.js +25 -0
- package/dist/postfx/ChromaticAberrationFilter.js.map +1 -0
- package/dist/postfx/ColorAdjustFilter.js +76 -0
- package/dist/postfx/ColorAdjustFilter.js.map +1 -0
- package/dist/postfx/CrtFilter.js +42 -0
- package/dist/postfx/CrtFilter.js.map +1 -0
- package/dist/postfx/PixelateFilter.js +27 -0
- package/dist/postfx/PixelateFilter.js.map +1 -0
- package/dist/postfx/PostFx.js +123 -0
- package/dist/postfx/PostFx.js.map +1 -0
- package/dist/postfx/ShockwaveFilter.js +49 -0
- package/dist/postfx/ShockwaveFilter.js.map +1 -0
- package/dist/postfx/VignetteFilter.js +37 -0
- package/dist/postfx/VignetteFilter.js.map +1 -0
- package/dist/postfx/fxAnimator.js +38 -0
- package/dist/postfx/fxAnimator.js.map +1 -0
- package/dist/postfx/fxShader.js +128 -0
- package/dist/postfx/fxShader.js.map +1 -0
- package/dist/postfx.js +26 -0
- package/dist/postfx.js.map +1 -0
- package/dist/react/ChoiceDialog.js +51 -0
- package/dist/react/ChoiceDialog.js.map +1 -0
- package/dist/react/ConfirmDialog.js +53 -0
- package/dist/react/ConfirmDialog.js.map +1 -0
- package/dist/react/Glyph.js +63 -0
- package/dist/react/Glyph.js.map +1 -0
- package/dist/react/Modal.js +38 -0
- package/dist/react/Modal.js.map +1 -0
- package/dist/react/Panel.js +24 -0
- package/dist/react/Panel.js.map +1 -0
- package/dist/react/PixelImage.js +24 -0
- package/dist/react/PixelImage.js.map +1 -0
- package/dist/react/Select.js +99 -0
- package/dist/react/Select.js.map +1 -0
- package/dist/react/Slider.js +62 -0
- package/dist/react/Slider.js.map +1 -0
- package/dist/react/SplitPane.js +24 -0
- package/dist/react/SplitPane.js.map +1 -0
- package/dist/react/TabStrip.js +32 -0
- package/dist/react/TabStrip.js.map +1 -0
- package/dist/react/TitleTips.js +42 -0
- package/dist/react/TitleTips.js.map +1 -0
- package/dist/react/Tooltip.js +28 -0
- package/dist/react/Tooltip.js.map +1 -0
- package/dist/react/UiProvider.js +50 -0
- package/dist/react/UiProvider.js.map +1 -0
- package/dist/react/baseCss.js +222 -0
- package/dist/react/baseCss.js.map +1 -0
- package/dist/react/choiceStore.js +23 -0
- package/dist/react/choiceStore.js.map +1 -0
- package/dist/react/classNames.js +19 -0
- package/dist/react/classNames.js.map +1 -0
- package/dist/react/confirmStore.js +30 -0
- package/dist/react/confirmStore.js.map +1 -0
- package/dist/react/labels.js +18 -0
- package/dist/react/labels.js.map +1 -0
- package/dist/react/placement.js +49 -0
- package/dist/react/placement.js.map +1 -0
- package/dist/react/useFillSheet.js +23 -0
- package/dist/react/useFillSheet.js.map +1 -0
- package/dist/react/useFitToViewport.js +29 -0
- package/dist/react/useFitToViewport.js.map +1 -0
- package/dist/react/usePicked.js +13 -0
- package/dist/react/usePicked.js.map +1 -0
- package/dist/react/useStore.js +9 -0
- package/dist/react/useStore.js.map +1 -0
- package/dist/react/useViewport.js +17 -0
- package/dist/react/useViewport.js.map +1 -0
- package/dist/react.js +78 -0
- package/dist/react.js.map +1 -0
- package/dist/rig/PosePlayer.js +92 -0
- package/dist/rig/PosePlayer.js.map +1 -0
- package/dist/rig/RigView.js +125 -0
- package/dist/rig/RigView.js.map +1 -0
- package/dist/rig/Skeleton.js +31 -0
- package/dist/rig/Skeleton.js.map +1 -0
- package/dist/rig/humanoid.js +6 -0
- package/dist/rig/humanoid.js.map +1 -0
- package/dist/rig/humanoid.json.js +30 -0
- package/dist/rig/humanoid.json.js.map +1 -0
- package/dist/rig/humanoidPoses.js +30 -0
- package/dist/rig/humanoidPoses.js.map +1 -0
- package/dist/rig/poseMath.js +54 -0
- package/dist/rig/poseMath.js.map +1 -0
- package/dist/rig/poses.json.js +150 -0
- package/dist/rig/poses.json.js.map +1 -0
- package/dist/save/Autosaver.js +54 -0
- package/dist/save/Autosaver.js.map +1 -0
- package/dist/save/MemoryBackend.js +19 -0
- package/dist/save/MemoryBackend.js.map +1 -0
- package/dist/save/SaveStore.js +103 -0
- package/dist/save/SaveStore.js.map +1 -0
- package/dist/save/WebStorageBackend.js +27 -0
- package/dist/save/WebStorageBackend.js.map +1 -0
- package/dist/save/checksum.js +10 -0
- package/dist/save/checksum.js.map +1 -0
- package/dist/save/migrateSave.js +27 -0
- package/dist/save/migrateSave.js.map +1 -0
- package/dist/settings.js +27 -0
- package/dist/settings.js.map +1 -0
- package/dist/tilemap/TilemapView.js +69 -0
- package/dist/tilemap/TilemapView.js.map +1 -0
- package/dist/tilemap/collision.js +25 -0
- package/dist/tilemap/collision.js.map +1 -0
- package/dist/tilemap/tiled.js +138 -0
- package/dist/tilemap/tiled.js.map +1 -0
- package/dist/transitions/CrossfadeTransition.js +24 -0
- package/dist/transitions/CrossfadeTransition.js.map +1 -0
- package/dist/transitions/DitherWipeTransition.js +70 -0
- package/dist/transitions/DitherWipeTransition.js.map +1 -0
- package/dist/transitions/FadeTransition.js +34 -0
- package/dist/transitions/FadeTransition.js.map +1 -0
- package/dist/transitions/Letterbox.js +42 -0
- package/dist/transitions/Letterbox.js.map +1 -0
- package/dist/transitions/ditherMask.js +15 -0
- package/dist/transitions/ditherMask.js.map +1 -0
- package/dist/transitions/transitionTo.js +28 -0
- package/dist/transitions/transitionTo.js.map +1 -0
- package/dist/transitions/tweenDone.js +15 -0
- package/dist/transitions/tweenDone.js.map +1 -0
- package/dist/types/ambient/ColorGrade.d.ts +41 -0
- package/dist/types/ambient/ColorGrade.d.ts.map +1 -0
- package/dist/types/ambient/DayClock.d.ts +80 -0
- package/dist/types/ambient/DayClock.d.ts.map +1 -0
- package/dist/types/ambient/WeatherLayer.d.ts +78 -0
- package/dist/types/ambient/WeatherLayer.d.ts.map +1 -0
- package/dist/types/ambient/grade.d.ts +22 -0
- package/dist/types/ambient/grade.d.ts.map +1 -0
- package/dist/types/ambient/weather.d.ts +49 -0
- package/dist/types/ambient/weather.d.ts.map +1 -0
- package/dist/types/anim/AnimStateMachine.d.ts +80 -0
- package/dist/types/anim/AnimStateMachine.d.ts.map +1 -0
- package/dist/types/anim/Animator.d.ts +50 -0
- package/dist/types/anim/Animator.d.ts.map +1 -0
- package/dist/types/anim/animStateCompile.d.ts +52 -0
- package/dist/types/anim/animStateCompile.d.ts.map +1 -0
- package/dist/types/anim/animStateSystem.d.ts +10 -0
- package/dist/types/anim/animStateSystem.d.ts.map +1 -0
- package/dist/types/anim/animStateTypes.d.ts +50 -0
- package/dist/types/anim/animStateTypes.d.ts.map +1 -0
- package/dist/types/anim/animationSystem.d.ts +13 -0
- package/dist/types/anim/animationSystem.d.ts.map +1 -0
- package/dist/types/anim/asepriteSlices.d.ts +19 -0
- package/dist/types/anim/asepriteSlices.d.ts.map +1 -0
- package/dist/types/anim/asepriteTags.d.ts +16 -0
- package/dist/types/anim/asepriteTags.d.ts.map +1 -0
- package/dist/types/anim/asepriteTypes.d.ts +159 -0
- package/dist/types/anim/asepriteTypes.d.ts.map +1 -0
- package/dist/types/anim/parseAseprite.d.ts +21 -0
- package/dist/types/anim/parseAseprite.d.ts.map +1 -0
- package/dist/types/assets/AssetLoader.d.ts +85 -0
- package/dist/types/assets/AssetLoader.d.ts.map +1 -0
- package/dist/types/assets/loadAseprite.d.ts +27 -0
- package/dist/types/assets/loadAseprite.d.ts.map +1 -0
- package/dist/types/audio/Footsteps.d.ts +33 -0
- package/dist/types/audio/Footsteps.d.ts.map +1 -0
- package/dist/types/audio/MusicPlayer.d.ts +65 -0
- package/dist/types/audio/MusicPlayer.d.ts.map +1 -0
- package/dist/types/audio/SoundEngine.d.ts +42 -0
- package/dist/types/audio/SoundEngine.d.ts.map +1 -0
- package/dist/types/audio/cleanTake.d.ts +3 -0
- package/dist/types/audio/cleanTake.d.ts.map +1 -0
- package/dist/types/audio/music/ElementVoice.d.ts +14 -0
- package/dist/types/audio/music/ElementVoice.d.ts.map +1 -0
- package/dist/types/audio/music/GraphVoice.d.ts +22 -0
- package/dist/types/audio/music/GraphVoice.d.ts.map +1 -0
- package/dist/types/audio/music/MusicChannel.d.ts +35 -0
- package/dist/types/audio/music/MusicChannel.d.ts.map +1 -0
- package/dist/types/audio/music/musicVoice.d.ts +26 -0
- package/dist/types/audio/music/musicVoice.d.ts.map +1 -0
- package/dist/types/audio/sampleBank.d.ts +27 -0
- package/dist/types/audio/sampleBank.d.ts.map +1 -0
- package/dist/types/audio/soundTable.d.ts +14 -0
- package/dist/types/audio/soundTable.d.ts.map +1 -0
- package/dist/types/audio/synth.d.ts +34 -0
- package/dist/types/audio/synth.d.ts.map +1 -0
- package/dist/types/audio/takeCleanerWorker.d.ts +2 -0
- package/dist/types/audio/takeCleanerWorker.d.ts.map +1 -0
- package/dist/types/core/BitmapLabel.d.ts +36 -0
- package/dist/types/core/BitmapLabel.d.ts.map +1 -0
- package/dist/types/core/Camera.d.ts +115 -0
- package/dist/types/core/Camera.d.ts.map +1 -0
- package/dist/types/core/Clock.d.ts +11 -0
- package/dist/types/core/Clock.d.ts.map +1 -0
- package/dist/types/core/Graphics.d.ts +37 -0
- package/dist/types/core/Graphics.d.ts.map +1 -0
- package/dist/types/core/Group.d.ts +15 -0
- package/dist/types/core/Group.d.ts.map +1 -0
- package/dist/types/core/Image.d.ts +25 -0
- package/dist/types/core/Image.d.ts.map +1 -0
- package/dist/types/core/ObjectFactory.d.ts +34 -0
- package/dist/types/core/ObjectFactory.d.ts.map +1 -0
- package/dist/types/core/Pointer.d.ts +27 -0
- package/dist/types/core/Pointer.d.ts.map +1 -0
- package/dist/types/core/Rectangle.d.ts +26 -0
- package/dist/types/core/Rectangle.d.ts.map +1 -0
- package/dist/types/core/Stage.d.ts +58 -0
- package/dist/types/core/Stage.d.ts.map +1 -0
- package/dist/types/core/Text.d.ts +22 -0
- package/dist/types/core/Text.d.ts.map +1 -0
- package/dist/types/core/TextureRegistry.d.ts +51 -0
- package/dist/types/core/TextureRegistry.d.ts.map +1 -0
- package/dist/types/core/Timeline.d.ts +115 -0
- package/dist/types/core/Timeline.d.ts.map +1 -0
- package/dist/types/core/TimelineBuilder.d.ts +53 -0
- package/dist/types/core/TimelineBuilder.d.ts.map +1 -0
- package/dist/types/core/TimelineChild.d.ts +51 -0
- package/dist/types/core/TimelineChild.d.ts.map +1 -0
- package/dist/types/core/Tweener.d.ts +70 -0
- package/dist/types/core/Tweener.d.ts.map +1 -0
- package/dist/types/core/atlas.d.ts +16 -0
- package/dist/types/core/atlas.d.ts.map +1 -0
- package/dist/types/core/atlasPlan.d.ts +34 -0
- package/dist/types/core/atlasPlan.d.ts.map +1 -0
- package/dist/types/core/eases.d.ts +3 -0
- package/dist/types/core/eases.d.ts.map +1 -0
- package/dist/types/core/gameObject.d.ts +42 -0
- package/dist/types/core/gameObject.d.ts.map +1 -0
- package/dist/types/core/pixiPatches.d.ts +9 -0
- package/dist/types/core/pixiPatches.d.ts.map +1 -0
- package/dist/types/core/timelinePlace.d.ts +23 -0
- package/dist/types/core/timelinePlace.d.ts.map +1 -0
- package/dist/types/core/tweenProps.d.ts +8 -0
- package/dist/types/core/tweenProps.d.ts.map +1 -0
- package/dist/types/core/types.d.ts +4 -0
- package/dist/types/core/types.d.ts.map +1 -0
- package/dist/types/debug/DebugOverlay.d.ts +63 -0
- package/dist/types/debug/DebugOverlay.d.ts.map +1 -0
- package/dist/types/debug/DrawCallCounter.d.ts +20 -0
- package/dist/types/debug/DrawCallCounter.d.ts.map +1 -0
- package/dist/types/debug/ErrorLog.d.ts +20 -0
- package/dist/types/debug/ErrorLog.d.ts.map +1 -0
- package/dist/types/debug/FrameStats.d.ts +21 -0
- package/dist/types/debug/FrameStats.d.ts.map +1 -0
- package/dist/types/debug/inspectWorld.d.ts +14 -0
- package/dist/types/debug/inspectWorld.d.ts.map +1 -0
- package/dist/types/diagnostics/ErrorDeduper.d.ts +17 -0
- package/dist/types/diagnostics/ErrorDeduper.d.ts.map +1 -0
- package/dist/types/diagnostics/FrameSampler.d.ts +37 -0
- package/dist/types/diagnostics/FrameSampler.d.ts.map +1 -0
- package/dist/types/diagnostics/bootWatch.d.ts +25 -0
- package/dist/types/diagnostics/bootWatch.d.ts.map +1 -0
- package/dist/types/diagnostics/captureErrors.d.ts +24 -0
- package/dist/types/diagnostics/captureErrors.d.ts.map +1 -0
- package/dist/types/diagnostics/contextLoss.d.ts +35 -0
- package/dist/types/diagnostics/contextLoss.d.ts.map +1 -0
- package/dist/types/diagnostics/frameStats.d.ts +30 -0
- package/dist/types/diagnostics/frameStats.d.ts.map +1 -0
- package/dist/types/diagnostics/gpuInfo.d.ts +9 -0
- package/dist/types/diagnostics/gpuInfo.d.ts.map +1 -0
- package/dist/types/diagnostics/renderGuard.d.ts +12 -0
- package/dist/types/diagnostics/renderGuard.d.ts.map +1 -0
- package/dist/types/ecs/SparseSet.d.ts +25 -0
- package/dist/types/ecs/SparseSet.d.ts.map +1 -0
- package/dist/types/ecs/World.d.ts +137 -0
- package/dist/types/ecs/World.d.ts.map +1 -0
- package/dist/types/ecs/fields.d.ts +34 -0
- package/dist/types/ecs/fields.d.ts.map +1 -0
- package/dist/types/engine/Engine.d.ts +80 -0
- package/dist/types/engine/Engine.d.ts.map +1 -0
- package/dist/types/engine/FixedLoop.d.ts +32 -0
- package/dist/types/engine/FixedLoop.d.ts.map +1 -0
- package/dist/types/engine/Scene.d.ts +67 -0
- package/dist/types/engine/Scene.d.ts.map +1 -0
- package/dist/types/engine/SceneManager.d.ts +36 -0
- package/dist/types/engine/SceneManager.d.ts.map +1 -0
- package/dist/types/events/EventBus.d.ts +20 -0
- package/dist/types/events/EventBus.d.ts.map +1 -0
- package/dist/types/fx/FloatingText.d.ts +71 -0
- package/dist/types/fx/FloatingText.d.ts.map +1 -0
- package/dist/types/fx/hitStop.d.ts +20 -0
- package/dist/types/fx/hitStop.d.ts.map +1 -0
- package/dist/types/fx/viewCull.d.ts +14 -0
- package/dist/types/fx/viewCull.d.ts.map +1 -0
- package/dist/types/i18n/Translator.d.ts +52 -0
- package/dist/types/i18n/Translator.d.ts.map +1 -0
- package/dist/types/i18n/extractStrings.d.ts +25 -0
- package/dist/types/i18n/extractStrings.d.ts.map +1 -0
- package/dist/types/i18n/formatMessage.d.ts +10 -0
- package/dist/types/i18n/formatMessage.d.ts.map +1 -0
- package/dist/types/index.d.ts +149 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/input/Actions.d.ts +94 -0
- package/dist/types/input/Actions.d.ts.map +1 -0
- package/dist/types/input/AimGesture.d.ts +106 -0
- package/dist/types/input/AimGesture.d.ts.map +1 -0
- package/dist/types/input/Keyboard.d.ts +30 -0
- package/dist/types/input/Keyboard.d.ts.map +1 -0
- package/dist/types/input/Keymap.d.ts +85 -0
- package/dist/types/input/Keymap.d.ts.map +1 -0
- package/dist/types/input/TargetLock.d.ts +56 -0
- package/dist/types/input/TargetLock.d.ts.map +1 -0
- package/dist/types/input/aimAxis.d.ts +9 -0
- package/dist/types/input/aimAxis.d.ts.map +1 -0
- package/dist/types/input/keyChord.d.ts +15 -0
- package/dist/types/input/keyChord.d.ts.map +1 -0
- package/dist/types/input/longPress.d.ts +21 -0
- package/dist/types/input/longPress.d.ts.map +1 -0
- package/dist/types/input/stickAxis.d.ts +26 -0
- package/dist/types/input/stickAxis.d.ts.map +1 -0
- package/dist/types/input/touchDetect.d.ts +18 -0
- package/dist/types/input/touchDetect.d.ts.map +1 -0
- package/dist/types/light/LightLayer.d.ts +65 -0
- package/dist/types/light/LightLayer.d.ts.map +1 -0
- package/dist/types/nav/MinHeap.d.ts +15 -0
- package/dist/types/nav/MinHeap.d.ts.map +1 -0
- package/dist/types/nav/findPath.d.ts +38 -0
- package/dist/types/nav/findPath.d.ts.map +1 -0
- package/dist/types/nav/navGrid.d.ts +48 -0
- package/dist/types/nav/navGrid.d.ts.map +1 -0
- package/dist/types/nav/nearestOpen.d.ts +8 -0
- package/dist/types/nav/nearestOpen.d.ts.map +1 -0
- package/dist/types/nav/straightenPath.d.ts +13 -0
- package/dist/types/nav/straightenPath.d.ts.map +1 -0
- package/dist/types/net/Connection.d.ts +66 -0
- package/dist/types/net/Connection.d.ts.map +1 -0
- package/dist/types/net/InterpolationBuffer.d.ts +36 -0
- package/dist/types/net/InterpolationBuffer.d.ts.map +1 -0
- package/dist/types/net/PredictedMover.d.ts +43 -0
- package/dist/types/net/PredictedMover.d.ts.map +1 -0
- package/dist/types/net/Room.d.ts +69 -0
- package/dist/types/net/Room.d.ts.map +1 -0
- package/dist/types/net/RoomHost.d.ts +74 -0
- package/dist/types/net/RoomHost.d.ts.map +1 -0
- package/dist/types/net/cadence.d.ts +22 -0
- package/dist/types/net/cadence.d.ts.map +1 -0
- package/dist/types/net/constants.d.ts +24 -0
- package/dist/types/net/constants.d.ts.map +1 -0
- package/dist/types/net/lobby/LobbyClient.d.ts +107 -0
- package/dist/types/net/lobby/LobbyClient.d.ts.map +1 -0
- package/dist/types/net/lobby/LobbyHost.d.ts +147 -0
- package/dist/types/net/lobby/LobbyHost.d.ts.map +1 -0
- package/dist/types/net/lobby/LobbyRooms.d.ts +56 -0
- package/dist/types/net/lobby/LobbyRooms.d.ts.map +1 -0
- package/dist/types/net/lobby/Matchmaker.d.ts +57 -0
- package/dist/types/net/lobby/Matchmaker.d.ts.map +1 -0
- package/dist/types/net/lobby/index.d.ts +6 -0
- package/dist/types/net/lobby/index.d.ts.map +1 -0
- package/dist/types/net/lobby/lobbyProtocol.d.ts +143 -0
- package/dist/types/net/lobby/lobbyProtocol.d.ts.map +1 -0
- package/dist/types/net/movement.d.ts +50 -0
- package/dist/types/net/movement.d.ts.map +1 -0
- package/dist/types/net/protocol.d.ts +59 -0
- package/dist/types/net/protocol.d.ts.map +1 -0
- package/dist/types/net/serverClock.d.ts +14 -0
- package/dist/types/net/serverClock.d.ts.map +1 -0
- package/dist/types/net/snapshotCodec.d.ts +55 -0
- package/dist/types/net/snapshotCodec.d.ts.map +1 -0
- package/dist/types/parallax/Parallax.d.ts +37 -0
- package/dist/types/parallax/Parallax.d.ts.map +1 -0
- package/dist/types/parallax/ParallaxLayer.d.ts +80 -0
- package/dist/types/parallax/ParallaxLayer.d.ts.map +1 -0
- package/dist/types/parallax/parallaxMath.d.ts +50 -0
- package/dist/types/parallax/parallaxMath.d.ts.map +1 -0
- package/dist/types/particles/Emitter.d.ts +97 -0
- package/dist/types/particles/Emitter.d.ts.map +1 -0
- package/dist/types/particles/ParticleBudget.d.ts +28 -0
- package/dist/types/particles/ParticleBudget.d.ts.map +1 -0
- package/dist/types/particles/ParticleSim.d.ts +38 -0
- package/dist/types/particles/ParticleSim.d.ts.map +1 -0
- package/dist/types/particles/particleCurves.d.ts +21 -0
- package/dist/types/particles/particleCurves.d.ts.map +1 -0
- package/dist/types/particles/particleSampling.d.ts +20 -0
- package/dist/types/particles/particleSampling.d.ts.map +1 -0
- package/dist/types/physics/Body.d.ts +130 -0
- package/dist/types/physics/Body.d.ts.map +1 -0
- package/dist/types/physics/BroadPhase.d.ts +26 -0
- package/dist/types/physics/BroadPhase.d.ts.map +1 -0
- package/dist/types/physics/Contact.d.ts +62 -0
- package/dist/types/physics/Contact.d.ts.map +1 -0
- package/dist/types/physics/ContactSolver.d.ts +29 -0
- package/dist/types/physics/ContactSolver.d.ts.map +1 -0
- package/dist/types/physics/PhysicsWorld.d.ts +78 -0
- package/dist/types/physics/PhysicsWorld.d.ts.map +1 -0
- package/dist/types/physics/PhysicsWorldOptions.d.ts +24 -0
- package/dist/types/physics/PhysicsWorldOptions.d.ts.map +1 -0
- package/dist/types/physics/SpatialHash.d.ts +23 -0
- package/dist/types/physics/SpatialHash.d.ts.map +1 -0
- package/dist/types/physics/collide.d.ts +27 -0
- package/dist/types/physics/collide.d.ts.map +1 -0
- package/dist/types/physics/collidePolygon.d.ts +14 -0
- package/dist/types/physics/collidePolygon.d.ts.map +1 -0
- package/dist/types/physics/contactReport.d.ts +8 -0
- package/dist/types/physics/contactReport.d.ts.map +1 -0
- package/dist/types/physics/drawColliders.d.ts +43 -0
- package/dist/types/physics/drawColliders.d.ts.map +1 -0
- package/dist/types/physics/physicsSystem.d.ts +5 -0
- package/dist/types/physics/physicsSystem.d.ts.map +1 -0
- package/dist/types/physics/polygon.d.ts +28 -0
- package/dist/types/physics/polygon.d.ts.map +1 -0
- package/dist/types/physics/raycast.d.ts +19 -0
- package/dist/types/physics/raycast.d.ts.map +1 -0
- package/dist/types/physics/syncToBody.d.ts +16 -0
- package/dist/types/physics/syncToBody.d.ts.map +1 -0
- package/dist/types/physics/tileBodies.d.ts +36 -0
- package/dist/types/physics/tileBodies.d.ts.map +1 -0
- package/dist/types/physics/types.d.ts +116 -0
- package/dist/types/physics/types.d.ts.map +1 -0
- package/dist/types/pixel/Darkness.d.ts +78 -0
- package/dist/types/pixel/Darkness.d.ts.map +1 -0
- package/dist/types/pixel/DitherVignette.d.ts +35 -0
- package/dist/types/pixel/DitherVignette.d.ts.map +1 -0
- package/dist/types/pixel/Evaporation.d.ts +30 -0
- package/dist/types/pixel/Evaporation.d.ts.map +1 -0
- package/dist/types/pixel/NightShade.d.ts +38 -0
- package/dist/types/pixel/NightShade.d.ts.map +1 -0
- package/dist/types/pixel/PixelLayer.d.ts +85 -0
- package/dist/types/pixel/PixelLayer.d.ts.map +1 -0
- package/dist/types/pixel/SwayProp.d.ts +52 -0
- package/dist/types/pixel/SwayProp.d.ts.map +1 -0
- package/dist/types/pixel/index.d.ts +31 -0
- package/dist/types/pixel/index.d.ts.map +1 -0
- package/dist/types/pixel/lights.d.ts +34 -0
- package/dist/types/pixel/lights.d.ts.map +1 -0
- package/dist/types/pixel/nineSlice.d.ts +71 -0
- package/dist/types/pixel/nineSlice.d.ts.map +1 -0
- package/dist/types/pixel/paintLayer.d.ts +35 -0
- package/dist/types/pixel/paintLayer.d.ts.map +1 -0
- package/dist/types/pixel/palette.d.ts +58 -0
- package/dist/types/pixel/palette.d.ts.map +1 -0
- package/dist/types/pixel/pixel.d.ts +80 -0
- package/dist/types/pixel/pixel.d.ts.map +1 -0
- package/dist/types/pixel/pixelPaint.d.ts +43 -0
- package/dist/types/pixel/pixelPaint.d.ts.map +1 -0
- package/dist/types/pixel/pixelTone.d.ts +51 -0
- package/dist/types/pixel/pixelTone.d.ts.map +1 -0
- package/dist/types/pixel/propKit.d.ts +26 -0
- package/dist/types/pixel/propKit.d.ts.map +1 -0
- package/dist/types/pixel/ramp.d.ts +57 -0
- package/dist/types/pixel/ramp.d.ts.map +1 -0
- package/dist/types/pixel/selout.d.ts +3 -0
- package/dist/types/pixel/selout.d.ts.map +1 -0
- package/dist/types/pixel/spritePixels.d.ts +29 -0
- package/dist/types/pixel/spritePixels.d.ts.map +1 -0
- package/dist/types/pixel/swayRig.d.ts +72 -0
- package/dist/types/pixel/swayRig.d.ts.map +1 -0
- package/dist/types/pixel/vignetteMask.d.ts +16 -0
- package/dist/types/pixel/vignetteMask.d.ts.map +1 -0
- package/dist/types/pixel/weatherArt.d.ts +29 -0
- package/dist/types/pixel/weatherArt.d.ts.map +1 -0
- package/dist/types/platform/touch.d.ts +10 -0
- package/dist/types/platform/touch.d.ts.map +1 -0
- package/dist/types/postfx/BloomFilter.d.ts +33 -0
- package/dist/types/postfx/BloomFilter.d.ts.map +1 -0
- package/dist/types/postfx/ChromaticAberrationFilter.d.ts +11 -0
- package/dist/types/postfx/ChromaticAberrationFilter.d.ts.map +1 -0
- package/dist/types/postfx/ColorAdjustFilter.d.ts +32 -0
- package/dist/types/postfx/ColorAdjustFilter.d.ts.map +1 -0
- package/dist/types/postfx/CrtFilter.d.ts +16 -0
- package/dist/types/postfx/CrtFilter.d.ts.map +1 -0
- package/dist/types/postfx/PixelateFilter.d.ts +8 -0
- package/dist/types/postfx/PixelateFilter.d.ts.map +1 -0
- package/dist/types/postfx/PostFx.d.ts +92 -0
- package/dist/types/postfx/PostFx.d.ts.map +1 -0
- package/dist/types/postfx/ShockwaveFilter.d.ts +20 -0
- package/dist/types/postfx/ShockwaveFilter.d.ts.map +1 -0
- package/dist/types/postfx/VignetteFilter.d.ts +19 -0
- package/dist/types/postfx/VignetteFilter.d.ts.map +1 -0
- package/dist/types/postfx/fxAnimator.d.ts +32 -0
- package/dist/types/postfx/fxAnimator.d.ts.map +1 -0
- package/dist/types/postfx/fxShader.d.ts +49 -0
- package/dist/types/postfx/fxShader.d.ts.map +1 -0
- package/dist/types/postfx/index.d.ts +11 -0
- package/dist/types/postfx/index.d.ts.map +1 -0
- package/dist/types/react/ChoiceDialog.d.ts +8 -0
- package/dist/types/react/ChoiceDialog.d.ts.map +1 -0
- package/dist/types/react/ConfirmDialog.d.ts +9 -0
- package/dist/types/react/ConfirmDialog.d.ts.map +1 -0
- package/dist/types/react/Glyph.d.ts +54 -0
- package/dist/types/react/Glyph.d.ts.map +1 -0
- package/dist/types/react/Modal.d.ts +22 -0
- package/dist/types/react/Modal.d.ts.map +1 -0
- package/dist/types/react/Panel.d.ts +29 -0
- package/dist/types/react/Panel.d.ts.map +1 -0
- package/dist/types/react/PixelImage.d.ts +19 -0
- package/dist/types/react/PixelImage.d.ts.map +1 -0
- package/dist/types/react/Select.d.ts +27 -0
- package/dist/types/react/Select.d.ts.map +1 -0
- package/dist/types/react/Slider.d.ts +24 -0
- package/dist/types/react/Slider.d.ts.map +1 -0
- package/dist/types/react/SplitPane.d.ts +26 -0
- package/dist/types/react/SplitPane.d.ts.map +1 -0
- package/dist/types/react/TabStrip.d.ts +31 -0
- package/dist/types/react/TabStrip.d.ts.map +1 -0
- package/dist/types/react/TitleTips.d.ts +15 -0
- package/dist/types/react/TitleTips.d.ts.map +1 -0
- package/dist/types/react/Tooltip.d.ts +22 -0
- package/dist/types/react/Tooltip.d.ts.map +1 -0
- package/dist/types/react/UiProvider.d.ts +52 -0
- package/dist/types/react/UiProvider.d.ts.map +1 -0
- package/dist/types/react/baseCss.d.ts +27 -0
- package/dist/types/react/baseCss.d.ts.map +1 -0
- package/dist/types/react/choiceStore.d.ts +34 -0
- package/dist/types/react/choiceStore.d.ts.map +1 -0
- package/dist/types/react/classNames.d.ts +12 -0
- package/dist/types/react/classNames.d.ts.map +1 -0
- package/dist/types/react/confirmStore.d.ts +30 -0
- package/dist/types/react/confirmStore.d.ts.map +1 -0
- package/dist/types/react/index.d.ts +33 -0
- package/dist/types/react/index.d.ts.map +1 -0
- package/dist/types/react/labels.d.ts +24 -0
- package/dist/types/react/labels.d.ts.map +1 -0
- package/dist/types/react/placement.d.ts +59 -0
- package/dist/types/react/placement.d.ts.map +1 -0
- package/dist/types/react/useFillSheet.d.ts +9 -0
- package/dist/types/react/useFillSheet.d.ts.map +1 -0
- package/dist/types/react/useFitToViewport.d.ts +20 -0
- package/dist/types/react/useFitToViewport.d.ts.map +1 -0
- package/dist/types/react/usePicked.d.ts +9 -0
- package/dist/types/react/usePicked.d.ts.map +1 -0
- package/dist/types/react/useStore.d.ts +8 -0
- package/dist/types/react/useStore.d.ts.map +1 -0
- package/dist/types/react/useViewport.d.ts +4 -0
- package/dist/types/react/useViewport.d.ts.map +1 -0
- package/dist/types/rig/PosePlayer.d.ts +64 -0
- package/dist/types/rig/PosePlayer.d.ts.map +1 -0
- package/dist/types/rig/RigView.d.ts +68 -0
- package/dist/types/rig/RigView.d.ts.map +1 -0
- package/dist/types/rig/Skeleton.d.ts +14 -0
- package/dist/types/rig/Skeleton.d.ts.map +1 -0
- package/dist/types/rig/humanoid.d.ts +4 -0
- package/dist/types/rig/humanoid.d.ts.map +1 -0
- package/dist/types/rig/humanoidPoses.d.ts +117 -0
- package/dist/types/rig/humanoidPoses.d.ts.map +1 -0
- package/dist/types/rig/poseMath.d.ts +14 -0
- package/dist/types/rig/poseMath.d.ts.map +1 -0
- package/dist/types/rig/rigTypes.d.ts +82 -0
- package/dist/types/rig/rigTypes.d.ts.map +1 -0
- package/dist/types/save/Autosaver.d.ts +43 -0
- package/dist/types/save/Autosaver.d.ts.map +1 -0
- package/dist/types/save/MemoryBackend.d.ts +10 -0
- package/dist/types/save/MemoryBackend.d.ts.map +1 -0
- package/dist/types/save/SaveBackend.d.ts +14 -0
- package/dist/types/save/SaveBackend.d.ts.map +1 -0
- package/dist/types/save/SaveStore.d.ts +73 -0
- package/dist/types/save/SaveStore.d.ts.map +1 -0
- package/dist/types/save/WebStorageBackend.d.ts +14 -0
- package/dist/types/save/WebStorageBackend.d.ts.map +1 -0
- package/dist/types/save/checksum.d.ts +7 -0
- package/dist/types/save/checksum.d.ts.map +1 -0
- package/dist/types/save/migrateSave.d.ts +17 -0
- package/dist/types/save/migrateSave.d.ts.map +1 -0
- package/dist/types/settings.d.ts +25 -0
- package/dist/types/settings.d.ts.map +1 -0
- package/dist/types/tilemap/TilemapView.d.ts +42 -0
- package/dist/types/tilemap/TilemapView.d.ts.map +1 -0
- package/dist/types/tilemap/collision.d.ts +16 -0
- package/dist/types/tilemap/collision.d.ts.map +1 -0
- package/dist/types/tilemap/tiled.d.ts +104 -0
- package/dist/types/tilemap/tiled.d.ts.map +1 -0
- package/dist/types/transitions/CrossfadeTransition.d.ts +20 -0
- package/dist/types/transitions/CrossfadeTransition.d.ts.map +1 -0
- package/dist/types/transitions/DitherWipeTransition.d.ts +35 -0
- package/dist/types/transitions/DitherWipeTransition.d.ts.map +1 -0
- package/dist/types/transitions/FadeTransition.d.ts +20 -0
- package/dist/types/transitions/FadeTransition.d.ts.map +1 -0
- package/dist/types/transitions/Letterbox.d.ts +33 -0
- package/dist/types/transitions/Letterbox.d.ts.map +1 -0
- package/dist/types/transitions/Transition.d.ts +22 -0
- package/dist/types/transitions/Transition.d.ts.map +1 -0
- package/dist/types/transitions/ditherMask.d.ts +13 -0
- package/dist/types/transitions/ditherMask.d.ts.map +1 -0
- package/dist/types/transitions/transitionTo.d.ts +16 -0
- package/dist/types/transitions/transitionTo.d.ts.map +1 -0
- package/dist/types/transitions/tweenDone.d.ts +5 -0
- package/dist/types/transitions/tweenDone.d.ts.map +1 -0
- package/dist/types/ui/Bar.d.ts +41 -0
- package/dist/types/ui/Bar.d.ts.map +1 -0
- package/dist/types/ui/Button.d.ts +47 -0
- package/dist/types/ui/Button.d.ts.map +1 -0
- package/dist/types/ui/Dialog.d.ts +47 -0
- package/dist/types/ui/Dialog.d.ts.map +1 -0
- package/dist/types/ui/FocusManager.d.ts +53 -0
- package/dist/types/ui/FocusManager.d.ts.map +1 -0
- package/dist/types/ui/Label.d.ts +24 -0
- package/dist/types/ui/Label.d.ts.map +1 -0
- package/dist/types/ui/List.d.ts +23 -0
- package/dist/types/ui/List.d.ts.map +1 -0
- package/dist/types/ui/Panel.d.ts +38 -0
- package/dist/types/ui/Panel.d.ts.map +1 -0
- package/dist/types/ui/ScrollView.d.ts +56 -0
- package/dist/types/ui/ScrollView.d.ts.map +1 -0
- package/dist/types/ui/Slider.d.ts +47 -0
- package/dist/types/ui/Slider.d.ts.map +1 -0
- package/dist/types/ui/Stack.d.ts +16 -0
- package/dist/types/ui/Stack.d.ts.map +1 -0
- package/dist/types/ui/Toggle.d.ts +31 -0
- package/dist/types/ui/Toggle.d.ts.map +1 -0
- package/dist/types/ui/UiHost.d.ts +18 -0
- package/dist/types/ui/UiHost.d.ts.map +1 -0
- package/dist/types/ui/UiPointerGate.d.ts +17 -0
- package/dist/types/ui/UiPointerGate.d.ts.map +1 -0
- package/dist/types/ui/UiRoot.d.ts +73 -0
- package/dist/types/ui/UiRoot.d.ts.map +1 -0
- package/dist/types/ui/Widget.d.ts +56 -0
- package/dist/types/ui/Widget.d.ts.map +1 -0
- package/dist/types/ui/dom/DomOverlay.d.ts +52 -0
- package/dist/types/ui/dom/DomOverlay.d.ts.map +1 -0
- package/dist/types/ui/dom/DomWorldAnchors.d.ts +50 -0
- package/dist/types/ui/dom/DomWorldAnchors.d.ts.map +1 -0
- package/dist/types/ui/dom/InputShield.d.ts +20 -0
- package/dist/types/ui/dom/InputShield.d.ts.map +1 -0
- package/dist/types/ui/dom/createStore.d.ts +22 -0
- package/dist/types/ui/dom/createStore.d.ts.map +1 -0
- package/dist/types/ui/dom/shieldDecision.d.ts +34 -0
- package/dist/types/ui/dom/shieldDecision.d.ts.map +1 -0
- package/dist/types/ui/dom/worldToScreen.d.ts +24 -0
- package/dist/types/ui/dom/worldToScreen.d.ts.map +1 -0
- package/dist/types/ui/index.d.ts +38 -0
- package/dist/types/ui/index.d.ts.map +1 -0
- package/dist/types/ui/layout/anchor.d.ts +9 -0
- package/dist/types/ui/layout/anchor.d.ts.map +1 -0
- package/dist/types/ui/layout/barDrain.d.ts +25 -0
- package/dist/types/ui/layout/barDrain.d.ts.map +1 -0
- package/dist/types/ui/layout/fitToViewport.d.ts +32 -0
- package/dist/types/ui/layout/fitToViewport.d.ts.map +1 -0
- package/dist/types/ui/layout/focusNav.d.ts +13 -0
- package/dist/types/ui/layout/focusNav.d.ts.map +1 -0
- package/dist/types/ui/layout/geometry.d.ts +35 -0
- package/dist/types/ui/layout/geometry.d.ts.map +1 -0
- package/dist/types/ui/layout/listWidth.d.ts +13 -0
- package/dist/types/ui/layout/listWidth.d.ts.map +1 -0
- package/dist/types/ui/layout/placeTooltip.d.ts +23 -0
- package/dist/types/ui/layout/placeTooltip.d.ts.map +1 -0
- package/dist/types/ui/layout/scroll.d.ts +17 -0
- package/dist/types/ui/layout/scroll.d.ts.map +1 -0
- package/dist/types/ui/layout/slider.d.ts +7 -0
- package/dist/types/ui/layout/slider.d.ts.map +1 -0
- package/dist/types/ui/layout/stack.d.ts +26 -0
- package/dist/types/ui/layout/stack.d.ts.map +1 -0
- package/dist/types/ui/layout/wrapRow.d.ts +6 -0
- package/dist/types/ui/layout/wrapRow.d.ts.map +1 -0
- package/dist/ui/Bar.js +54 -0
- package/dist/ui/Bar.js.map +1 -0
- package/dist/ui/Button.js +58 -0
- package/dist/ui/Button.js.map +1 -0
- package/dist/ui/Dialog.js +56 -0
- package/dist/ui/Dialog.js.map +1 -0
- package/dist/ui/FocusManager.js +97 -0
- package/dist/ui/FocusManager.js.map +1 -0
- package/dist/ui/Label.js +36 -0
- package/dist/ui/Label.js.map +1 -0
- package/dist/ui/List.js +45 -0
- package/dist/ui/List.js.map +1 -0
- package/dist/ui/Panel.js +38 -0
- package/dist/ui/Panel.js.map +1 -0
- package/dist/ui/ScrollView.js +96 -0
- package/dist/ui/ScrollView.js.map +1 -0
- package/dist/ui/Slider.js +55 -0
- package/dist/ui/Slider.js.map +1 -0
- package/dist/ui/Stack.js +28 -0
- package/dist/ui/Stack.js.map +1 -0
- package/dist/ui/Toggle.js +37 -0
- package/dist/ui/Toggle.js.map +1 -0
- package/dist/ui/UiHost.js +9 -0
- package/dist/ui/UiHost.js.map +1 -0
- package/dist/ui/UiPointerGate.js +25 -0
- package/dist/ui/UiPointerGate.js.map +1 -0
- package/dist/ui/UiRoot.js +93 -0
- package/dist/ui/UiRoot.js.map +1 -0
- package/dist/ui/Widget.js +90 -0
- package/dist/ui/Widget.js.map +1 -0
- package/dist/ui/dom/DomOverlay.js +59 -0
- package/dist/ui/dom/DomOverlay.js.map +1 -0
- package/dist/ui/dom/DomWorldAnchors.js +59 -0
- package/dist/ui/dom/DomWorldAnchors.js.map +1 -0
- package/dist/ui/dom/InputShield.js +27 -0
- package/dist/ui/dom/InputShield.js.map +1 -0
- package/dist/ui/dom/createStore.js +42 -0
- package/dist/ui/dom/createStore.js.map +1 -0
- package/dist/ui/dom/shieldDecision.js +36 -0
- package/dist/ui/dom/shieldDecision.js.map +1 -0
- package/dist/ui/dom/worldToScreen.js +11 -0
- package/dist/ui/dom/worldToScreen.js.map +1 -0
- package/dist/ui/layout/anchor.js +20 -0
- package/dist/ui/layout/anchor.js.map +1 -0
- package/dist/ui/layout/barDrain.js +25 -0
- package/dist/ui/layout/barDrain.js.map +1 -0
- package/dist/ui/layout/fitToViewport.js +17 -0
- package/dist/ui/layout/fitToViewport.js.map +1 -0
- package/dist/ui/layout/focusNav.js +42 -0
- package/dist/ui/layout/focusNav.js.map +1 -0
- package/dist/ui/layout/geometry.js +21 -0
- package/dist/ui/layout/geometry.js.map +1 -0
- package/dist/ui/layout/listWidth.js +10 -0
- package/dist/ui/layout/listWidth.js.map +1 -0
- package/dist/ui/layout/placeTooltip.js +28 -0
- package/dist/ui/layout/placeTooltip.js.map +1 -0
- package/dist/ui/layout/scroll.js +24 -0
- package/dist/ui/layout/scroll.js.map +1 -0
- package/dist/ui/layout/slider.js +20 -0
- package/dist/ui/layout/slider.js.map +1 -0
- package/dist/ui/layout/stack.js +27 -0
- package/dist/ui/layout/stack.js.map +1 -0
- package/dist/ui/layout/wrapRow.js +13 -0
- package/dist/ui/layout/wrapRow.js.map +1 -0
- package/dist/ui.js +85 -0
- package/dist/ui.js.map +1 -0
- package/package.json +115 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameStats.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/frameStats.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,yGAAyG;IACzG,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,wCAAwC;AACxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAIpF;AAID,8GAA8G;AAC9G,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,YAAY,CAWtG;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,SAAM,GAAG,OAAO,CAElF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Renderer } from 'pixi.js';
|
|
2
|
+
/**
|
|
3
|
+
* The largest texture side the GPU takes (WebGL's MAX_TEXTURE_SIZE), or null when the renderer is not WebGL. Many
|
|
4
|
+
* phones stop at 4096, so an atlas planned for 8192 must split its pages there (`atlasPageLimit`).
|
|
5
|
+
*/
|
|
6
|
+
export declare function maxTextureSize(renderer: Renderer): number | null;
|
|
7
|
+
/** The GPU's own name where the browser gives it (WEBGL_debug_renderer_info), else null; for telling devices apart. */
|
|
8
|
+
export declare function gpuName(renderer: Renderer, max?: number): string | null;
|
|
9
|
+
//# sourceMappingURL=gpuInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpuInfo.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/gpuInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMxC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAKhE;AAED,uHAAuH;AACvH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAK,GAAG,MAAM,GAAG,IAAI,CAQnE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Application } from 'pixi.js';
|
|
2
|
+
/** An error as one short line, for a player's screenshot or a report. */
|
|
3
|
+
export declare function describeError(err: unknown, max?: number): string;
|
|
4
|
+
/**
|
|
5
|
+
* Replaces Pixi's render on the ticker with one that survives a throw and reports a renderer that keeps failing.
|
|
6
|
+
* A ticker listener that throws never asks for the next frame, and `Stage`'s per-step guard covers the game's steps,
|
|
7
|
+
* not the renderer's: a render that threw on its first frame froze the canvas in silence while the page went on.
|
|
8
|
+
* A single bad frame is let go; `failures` in a row are reported once. Returns the uninstall, which puts Pixi's own
|
|
9
|
+
* render back.
|
|
10
|
+
*/
|
|
11
|
+
export declare function guardRender(app: Application, onFail: (detail: string, err: unknown) => void, failures?: number): () => void;
|
|
12
|
+
//# sourceMappingURL=renderGuard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderGuard.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/renderGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAC;AAE5D,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,SAAM,GAAG,MAAM,CAG7D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,EAAE,QAAQ,SAAK,GAAG,MAAM,IAAI,CAsBvH"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One component type's storage: a sparse set. `sparse[index]` is where the entity's value sits in the dense arrays
|
|
3
|
+
* (or -1), and `entities`/`values` are packed with no holes, so walking a component is a walk over two flat arrays
|
|
4
|
+
* and finding one is two array reads. Removing swaps the last entry into the hole.
|
|
5
|
+
*
|
|
6
|
+
* Indexed by the entity's slot index (`entityIndex`), not the whole id: the generation is checked by the world.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SparseSet<T> {
|
|
9
|
+
private sparse;
|
|
10
|
+
/** Packed entity ids, in the same order as `values`. */
|
|
11
|
+
readonly entities: number[];
|
|
12
|
+
readonly values: T[];
|
|
13
|
+
/** Bumped whenever an entity joins or leaves the set (not when a value changes): query caches key on it. */
|
|
14
|
+
version: number;
|
|
15
|
+
get size(): number;
|
|
16
|
+
has(index: number): boolean;
|
|
17
|
+
/** The value at slot `index`, or undefined. */
|
|
18
|
+
get(index: number): T | undefined;
|
|
19
|
+
set(index: number, entity: number, value: T): void;
|
|
20
|
+
/** Removes slot `index`; true if it was there. */
|
|
21
|
+
delete(index: number, indexOf: (entity: number) => number): boolean;
|
|
22
|
+
clear(): void;
|
|
23
|
+
private grow;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=SparseSet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SparseSet.d.ts","sourceRoot":"","sources":["../../../src/ecs/SparseSet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,SAAS,CAAC,CAAC;IACtB,OAAO,CAAC,MAAM,CAA2C;IACzD,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAM;IAC1B,4GAA4G;IAC5G,OAAO,SAAK;IAEZ,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3B,+CAA+C;IAC/C,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAMjC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAclD,kDAAkD;IAClD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO;IAkBnE,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,IAAI;CAQb"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { type Columns, type FieldSpec, type FieldValues, type FieldsType } from './fields.js';
|
|
2
|
+
/**
|
|
3
|
+
* An entity–component–system store. Entities are numbers; components are data kept in one sparse set per component
|
|
4
|
+
* type; systems are functions run in the order they were added, each in a phase:
|
|
5
|
+
*
|
|
6
|
+
* - `fixed` runs once per simulation step (`FixedLoop`), for movement and rules;
|
|
7
|
+
* - `frame` runs once per rendered frame, for drawing and anything purely visual.
|
|
8
|
+
*
|
|
9
|
+
* Storage is a sparse set per component (packed arrays, O(1) lookups), the layout fast ECS libraries use. For hot
|
|
10
|
+
* loops prefer `each` (a callback, no allocation per entity) over `query` (an iterator yielding a fresh row).
|
|
11
|
+
*
|
|
12
|
+
* Entity ids are recycled: an id carries its slot index and a generation, so an id kept after its entity was
|
|
13
|
+
* destroyed never matches the entity that later reuses the slot.
|
|
14
|
+
*
|
|
15
|
+
* Changing structure while walking: adding components is always safe (new entries are not visited this walk).
|
|
16
|
+
* Removing a component or destroying an entity while a `query`, an `each` or a system run is in progress is deferred
|
|
17
|
+
* until it ends, so nothing is skipped or visited twice.
|
|
18
|
+
*/
|
|
19
|
+
export type Entity = number;
|
|
20
|
+
/** A component type: a typed key. Make one per kind of data with `defineComponent`. */
|
|
21
|
+
export interface ComponentType<T> {
|
|
22
|
+
readonly id: number;
|
|
23
|
+
readonly name: string;
|
|
24
|
+
/** Phantom field carrying `T`; never set. */
|
|
25
|
+
readonly __type?: T;
|
|
26
|
+
}
|
|
27
|
+
export declare function defineComponent<T>(name: string): ComponentType<T>;
|
|
28
|
+
/** A component of numeric fields kept in typed-array columns (`fields.ts`): the fast form for data every body has. */
|
|
29
|
+
export declare function defineFields<const S extends FieldSpec>(name: string, fields: S): FieldsType<S>;
|
|
30
|
+
export type SystemPhase = 'fixed' | 'frame';
|
|
31
|
+
export interface SystemContext {
|
|
32
|
+
world: World;
|
|
33
|
+
/** Seconds this run covers: one step in `fixed`, the frame's length in `frame`. */
|
|
34
|
+
dt: number;
|
|
35
|
+
/** `performance.now()` of the frame. */
|
|
36
|
+
now: number;
|
|
37
|
+
/** In `frame`: the share of a step since the last fixed step (0–1), for interpolation. 0 in `fixed`. */
|
|
38
|
+
alpha: number;
|
|
39
|
+
}
|
|
40
|
+
export interface System {
|
|
41
|
+
readonly name: string;
|
|
42
|
+
readonly phase: SystemPhase;
|
|
43
|
+
run(ctx: SystemContext): void;
|
|
44
|
+
/** Called when the system is taken out of its world (or the world is cleared). */
|
|
45
|
+
dispose?(): void;
|
|
46
|
+
}
|
|
47
|
+
/** A system from a function. */
|
|
48
|
+
export declare function system(name: string, phase: SystemPhase, run: (ctx: SystemContext) => void): System;
|
|
49
|
+
export type ComponentValues<T extends readonly ComponentType<unknown>[]> = {
|
|
50
|
+
[K in keyof T]: T[K] extends ComponentType<infer V> ? V : never;
|
|
51
|
+
};
|
|
52
|
+
/** The slot an entity id sits in. */
|
|
53
|
+
export declare const entityIndex: (e: Entity) => number;
|
|
54
|
+
export declare class World {
|
|
55
|
+
/** Current generation per slot; an id is alive when its generation matches and the slot is in use. */
|
|
56
|
+
private generations;
|
|
57
|
+
private readonly inUse;
|
|
58
|
+
private readonly free;
|
|
59
|
+
private live;
|
|
60
|
+
private readonly stores;
|
|
61
|
+
/** Typed-array columns of the field components, by component id. */
|
|
62
|
+
private readonly cols;
|
|
63
|
+
private readonly systems;
|
|
64
|
+
private readonly pending;
|
|
65
|
+
/** `slots` results by the component ids asked for, rebuilt only when one of those sets changed membership. */
|
|
66
|
+
private readonly slotCache;
|
|
67
|
+
/** Walks (`query`, `each`, system runs) in progress: structure changes wait until it is 0. */
|
|
68
|
+
private walking;
|
|
69
|
+
/** A new entity with no components. */
|
|
70
|
+
create(): Entity;
|
|
71
|
+
/** A new entity with these components. */
|
|
72
|
+
spawn(...components: [ComponentType<unknown>, unknown][]): Entity;
|
|
73
|
+
isAlive(e: Entity): boolean;
|
|
74
|
+
/** Every live entity, for tools (a debugger, a save); allocates, so not for a per-frame path. */
|
|
75
|
+
entities(): Entity[];
|
|
76
|
+
/** The component types `e` holds, for tools; allocates. */
|
|
77
|
+
componentsOf(e: Entity): ComponentType<unknown>[];
|
|
78
|
+
/** Live entities. */
|
|
79
|
+
get size(): number;
|
|
80
|
+
/** Removes an entity and every component it had (deferred while a walk is in progress). */
|
|
81
|
+
destroy(e: Entity): void;
|
|
82
|
+
/** Gives an entity a field component; fields left out start at 0. Returns the slot index into its columns. */
|
|
83
|
+
add<S extends FieldSpec>(e: Entity, type: FieldsType<S>, values?: FieldValues<S>): number;
|
|
84
|
+
add<T>(e: Entity, type: ComponentType<T>, value: T): T;
|
|
85
|
+
/**
|
|
86
|
+
* The typed-array columns of a field component, indexed by slot. Fetch them per system run: adding entities may
|
|
87
|
+
* grow them into new arrays.
|
|
88
|
+
*/
|
|
89
|
+
columns<S extends FieldSpec>(type: FieldsType<S>): Columns<S>;
|
|
90
|
+
get<T>(e: Entity, type: ComponentType<T>): T | undefined;
|
|
91
|
+
/** The component, or an error naming what is missing: for code that knows the entity has it. */
|
|
92
|
+
require<T>(e: Entity, type: ComponentType<T>): T;
|
|
93
|
+
has(e: Entity, type: ComponentType<unknown>): boolean;
|
|
94
|
+
/** Takes one component off an entity (deferred while a walk is in progress). */
|
|
95
|
+
remove(e: Entity, type: ComponentType<unknown>): void;
|
|
96
|
+
/** How many entities hold `type`. */
|
|
97
|
+
count(type: ComponentType<unknown>): number;
|
|
98
|
+
/**
|
|
99
|
+
* Calls `fn(entity, ...components)` for every live entity holding all of `types`. Allocates nothing per entity:
|
|
100
|
+
* the form for systems that walk thousands of bodies every step.
|
|
101
|
+
*/
|
|
102
|
+
each<const T extends readonly ComponentType<unknown>[]>(...args: [...types: T, fn: (e: Entity, ...values: ComponentValues<T>) => void]): void;
|
|
103
|
+
/**
|
|
104
|
+
* The slot index of every entity holding all of `types`, as a typed array: the fastest walk there is, made for
|
|
105
|
+
* field components (`defineFields`), whose columns are indexed by slot.
|
|
106
|
+
*
|
|
107
|
+
* ```ts
|
|
108
|
+
* const p = world.columns(Position), v = world.columns(Velocity);
|
|
109
|
+
* const slots = world.slots(Position, Velocity);
|
|
110
|
+
* for (let k = 0; k < slots.length; k++) { const i = slots[k]!; p.x[i]! += v.x[i]! * dt; }
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* The result is cached and rebuilt only when an entity joins or leaves one of those components, so asking every
|
|
114
|
+
* step is cheap. It is a view the world owns: read it, don't keep it past the step, and fetch it again after
|
|
115
|
+
* adding or removing components.
|
|
116
|
+
*/
|
|
117
|
+
slots(...types: ComponentType<unknown>[]): Int32Array;
|
|
118
|
+
/**
|
|
119
|
+
* Every live entity holding all of `types`, with those components in the same order. Yields a fresh row per
|
|
120
|
+
* entity: convenient, but `each` is the form for hot loops.
|
|
121
|
+
*/
|
|
122
|
+
query<const T extends readonly ComponentType<unknown>[]>(...types: T): IterableIterator<[Entity, ...ComponentValues<T>]>;
|
|
123
|
+
/** The first entity matching the query, or undefined: for singletons (the player, the camera target). */
|
|
124
|
+
first<const T extends readonly ComponentType<unknown>[]>(...types: T): [Entity, ...ComponentValues<T>] | undefined;
|
|
125
|
+
addSystem(s: System): this;
|
|
126
|
+
removeSystem(name: string): void;
|
|
127
|
+
/** Runs every system of `phase` in the order added. A system that throws is reported and the rest still run. */
|
|
128
|
+
run(phase: SystemPhase, ctx: Omit<SystemContext, 'world'>, onError?: (system: System, err: unknown) => void): void;
|
|
129
|
+
/** Every entity, component and system gone. */
|
|
130
|
+
clear(): void;
|
|
131
|
+
private columnsOf;
|
|
132
|
+
private store;
|
|
133
|
+
/** The stores for `types`, or null when one has never been used (so nothing can match). */
|
|
134
|
+
private setsFor;
|
|
135
|
+
private endWalk;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=World.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"World.d.ts","sourceRoot":"","sources":["../../../src/ecs/World.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ComponentType } from './World.js';
|
|
2
|
+
/**
|
|
3
|
+
* Numeric components stored as columns of typed arrays instead of one object per entity: `Position.x` and
|
|
4
|
+
* `Position.y` are two `Float32Array`s indexed by the entity's slot. A system walking thousands of bodies then reads
|
|
5
|
+
* memory in order and makes no garbage, which is several times faster than objects at scale (see `bench/`).
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* const Position = defineFields('Position', { x: 'f32', y: 'f32' });
|
|
9
|
+
* world.add(e, Position, { x: 10, y: 20 });
|
|
10
|
+
* const p = world.columns(Position); // fetch per run: columns grow (and are replaced) as entities are added
|
|
11
|
+
* world.each(Position, (e, i) => { p.x[i] += 1; });
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* In `each`/`query` a field component's value is the entity's slot index `i`, the index into every column.
|
|
15
|
+
*/
|
|
16
|
+
export type FieldKind = 'f32' | 'f64' | 'i8' | 'i16' | 'i32' | 'u8' | 'u16' | 'u32';
|
|
17
|
+
export type FieldSpec = Record<string, FieldKind>;
|
|
18
|
+
export type ArrayOf<K extends FieldKind> = K extends 'f32' ? Float32Array : K extends 'f64' ? Float64Array : K extends 'i8' ? Int8Array : K extends 'i16' ? Int16Array : K extends 'i32' ? Int32Array : K extends 'u8' ? Uint8Array : K extends 'u16' ? Uint16Array : Uint32Array;
|
|
19
|
+
/** One typed array per field, indexed by slot. */
|
|
20
|
+
export type Columns<S extends FieldSpec> = {
|
|
21
|
+
[K in keyof S]: ArrayOf<S[K]>;
|
|
22
|
+
};
|
|
23
|
+
/** What `add` takes for a field component: any subset of its fields (the rest start at 0). */
|
|
24
|
+
export type FieldValues<S extends FieldSpec> = {
|
|
25
|
+
[K in keyof S]?: number;
|
|
26
|
+
};
|
|
27
|
+
/** A component of numeric fields. Its value in `each`/`query` is the slot index. */
|
|
28
|
+
export interface FieldsType<S extends FieldSpec> extends ComponentType<number> {
|
|
29
|
+
readonly fields: S;
|
|
30
|
+
}
|
|
31
|
+
export declare function isFields(type: ComponentType<unknown>): type is FieldsType<FieldSpec>;
|
|
32
|
+
/** Fresh columns of at least `n` slots, keeping what `old` held. */
|
|
33
|
+
export declare function growColumns(spec: FieldSpec, n: number, old?: Record<string, ArrayLike<number>>): Record<string, ArrayLike<number>>;
|
|
34
|
+
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/ecs/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAEpF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAElD,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,KAAK,GACtD,YAAY,GACZ,CAAC,SAAS,KAAK,GACb,YAAY,GACZ,CAAC,SAAS,IAAI,GACZ,SAAS,GACT,CAAC,SAAS,KAAK,GACb,UAAU,GACV,CAAC,SAAS,KAAK,GACb,UAAU,GACV,CAAC,SAAS,IAAI,GACZ,UAAU,GACV,CAAC,SAAS,KAAK,GACb,WAAW,GACX,WAAW,CAAC;AAE5B,kDAAkD;AAClD,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE7E,8FAA8F;AAC9F,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,SAAS,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM;CAAE,CAAC;AAE3E,oFAAoF;AACpF,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,aAAa,CAAC,MAAM,CAAC;IAC5E,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB;AAaD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC,CAEpF;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CASlI"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Application } from 'pixi.js';
|
|
2
|
+
import { Stage } from '../core/Stage.js';
|
|
3
|
+
import { TextureRegistry } from '../core/TextureRegistry.js';
|
|
4
|
+
import { EventBus } from '../events/EventBus.js';
|
|
5
|
+
import { FixedLoop } from './FixedLoop.js';
|
|
6
|
+
import { SceneManager } from './SceneManager.js';
|
|
7
|
+
import type { Scene } from './Scene.js';
|
|
8
|
+
export interface EngineOptions {
|
|
9
|
+
/** Where the canvas goes. */
|
|
10
|
+
parent: HTMLElement;
|
|
11
|
+
/** A fixed canvas size in CSS pixels. Leave both out to fill `parent` and follow its size. */
|
|
12
|
+
width?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
/** CSS colour behind the world (default black). */
|
|
15
|
+
background?: string;
|
|
16
|
+
/** World pixels are drawn this many screen pixels wide (default 1). Whole numbers keep pixel art crisp. */
|
|
17
|
+
zoom?: number;
|
|
18
|
+
/** Simulation steps per second (default 60). */
|
|
19
|
+
hz?: number;
|
|
20
|
+
/** Textures shared by the stage; a fresh registry by default. */
|
|
21
|
+
textures?: TextureRegistry;
|
|
22
|
+
/**
|
|
23
|
+
* Pixel art: nearest-neighbour textures, no antialiasing, one backing pixel per CSS pixel, and a camera that lands
|
|
24
|
+
* on whole pixels (default false: smooth textures drawn at the screen's own density, for any other art style).
|
|
25
|
+
*/
|
|
26
|
+
pixelPerfect?: boolean;
|
|
27
|
+
/** Backing pixels per CSS pixel when not `pixelPerfect` (default `devicePixelRatio`, at most 2). */
|
|
28
|
+
resolution?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Renderer preference (default 'webgl'). WebGL 2 runs everywhere the engine is tested. 'webgpu' is experimental:
|
|
31
|
+
* Pixi falls back to WebGL where WebGPU is missing, but the engine's own paths (pooled `PixelLayer` buffers, the
|
|
32
|
+
* `erase` blend `Darkness` cuts lights with, the fill filters) have only been profiled on WebGL.
|
|
33
|
+
*/
|
|
34
|
+
preference?: 'webgl' | 'webgpu';
|
|
35
|
+
}
|
|
36
|
+
export interface EngineEvents {
|
|
37
|
+
/** Something a guarded step or a system threw; the frame carried on. */
|
|
38
|
+
error: {
|
|
39
|
+
where: string;
|
|
40
|
+
error: unknown;
|
|
41
|
+
};
|
|
42
|
+
/** After every rendered frame's update, before Pixi renders. */
|
|
43
|
+
frame: {
|
|
44
|
+
now: number;
|
|
45
|
+
dt: number;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The top of the engine: a Pixi application, the `Stage` (world and screen layers, camera, tweens, timers,
|
|
50
|
+
* pointer), a fixed-step simulation loop and a stack of scenes.
|
|
51
|
+
*
|
|
52
|
+
* ```ts
|
|
53
|
+
* const engine = await Engine.create({ parent: document.body, zoom: 3 });
|
|
54
|
+
* await engine.scenes.replace(new MyLevel());
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare class Engine {
|
|
58
|
+
readonly app: Application;
|
|
59
|
+
readonly stage: Stage;
|
|
60
|
+
readonly loop: FixedLoop;
|
|
61
|
+
readonly scenes: SceneManager;
|
|
62
|
+
readonly events: EventBus<EngineEvents>;
|
|
63
|
+
private running;
|
|
64
|
+
private destroyed;
|
|
65
|
+
private readonly onTick;
|
|
66
|
+
private constructor();
|
|
67
|
+
static create(options: EngineOptions): Promise<Engine>;
|
|
68
|
+
/** The scene that updates now, if any. */
|
|
69
|
+
get scene(): Scene | undefined;
|
|
70
|
+
/** Stops simulating and drawing; the canvas keeps its last frame. */
|
|
71
|
+
pause(): void;
|
|
72
|
+
resume(): void;
|
|
73
|
+
get paused(): boolean;
|
|
74
|
+
/** Reports a fault to `events.error` (and the console when nobody listens). */
|
|
75
|
+
reportError(where: string, error: unknown): void;
|
|
76
|
+
/** Leaves every scene, removes the canvas and frees the renderer. */
|
|
77
|
+
destroy(): Promise<void>;
|
|
78
|
+
private tick;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=Engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/engine/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2GAA2G;IAC3G,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IACzC,gEAAgE;IAChE,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAiBD;;;;;;;;GAQG;AACH,qBAAa,MAAM;IAUf,QAAQ,CAAC,GAAG,EAAE,WAAW;IAT3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,yBAAgC;IAC/C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2D;IAElF,OAAO;WAiBM,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB5D,0CAA0C;IAC1C,IAAI,KAAK,IAAI,KAAK,GAAG,SAAS,CAE7B;IAED,qEAAqE;IACrE,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,IAAI;IAOd,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,+EAA+E;IAC/E,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAKhD,qEAAqE;IAC/D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,CAAC,IAAI;CAeb"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fixed-timestep accumulator: frames arrive whenever the display wants them, the simulation advances in equal
|
|
3
|
+
* steps. Movement and anything a server replays must run here, so every machine takes the same steps whatever its
|
|
4
|
+
* frame rate.
|
|
5
|
+
*
|
|
6
|
+
* A frame that comes very late (a tab in the background, a debugger) would owe hundreds of steps; at most
|
|
7
|
+
* `maxStepsPerFrame` are run and the rest of the debt is dropped, so the game slows down instead of freezing while it
|
|
8
|
+
* catches up (the "spiral of death").
|
|
9
|
+
*/
|
|
10
|
+
export interface FixedLoopOptions {
|
|
11
|
+
/** Steps per second (default 60). */
|
|
12
|
+
hz?: number;
|
|
13
|
+
/** The most steps one frame may run before the debt is dropped (default 8). */
|
|
14
|
+
maxStepsPerFrame?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class FixedLoop {
|
|
17
|
+
readonly stepMs: number;
|
|
18
|
+
readonly stepSeconds: number;
|
|
19
|
+
private readonly maxSteps;
|
|
20
|
+
private carry;
|
|
21
|
+
/** Steps taken since the loop started. */
|
|
22
|
+
tick: number;
|
|
23
|
+
constructor(options?: FixedLoopOptions);
|
|
24
|
+
/**
|
|
25
|
+
* Feeds one frame of `deltaMs` and runs `step` as many times as it owes. Returns the share of a step left over
|
|
26
|
+
* (0–1), for interpolating what is drawn between the last two steps.
|
|
27
|
+
*/
|
|
28
|
+
advance(deltaMs: number, step: (tick: number) => void): number;
|
|
29
|
+
/** Forgets any debt, e.g. after a scene change or a long load. */
|
|
30
|
+
reset(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=FixedLoop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FixedLoop.d.ts","sourceRoot":"","sources":["../../../src/engine/FixedLoop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,KAAK,CAAK;IAClB,0CAA0C;IAC1C,IAAI,SAAK;gBAEG,OAAO,GAAE,gBAAqB;IAQ1C;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM;IAe9D,kEAAkE;IAClE,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Container } from 'pixi.js';
|
|
2
|
+
import { World } from '../ecs/World.js';
|
|
3
|
+
import type { Engine } from './Engine.js';
|
|
4
|
+
/** Input a scene can be told to forget its pending presses on (an `Actions`). */
|
|
5
|
+
export interface FlushableInput {
|
|
6
|
+
flush(): void;
|
|
7
|
+
}
|
|
8
|
+
/** A timer `Scene.delay` started; `remove` cancels it. */
|
|
9
|
+
export interface SceneTimer {
|
|
10
|
+
remove(): void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* One screen of the game: a title, a level, a pause menu. A scene owns a `World` of entities and systems and a
|
|
14
|
+
* `root` container in the engine's world layer; both are cleared when it leaves, so nothing it made outlives it.
|
|
15
|
+
*
|
|
16
|
+
* Override the hooks you need. `fixedUpdate` runs once per simulation step, `update` once per rendered frame, both
|
|
17
|
+
* after the world's own systems of that phase.
|
|
18
|
+
*
|
|
19
|
+
* Two things a scene should hand the engine so they end with it: timers (`delay`, not `stage.time.delayedCall`, whose
|
|
20
|
+
* timers belong to the stage and fire after the scene has gone) and its input (`useInput`, flushed when a scene pushed
|
|
21
|
+
* over this one pops, so presses made in a pause menu are not read again by the level under it).
|
|
22
|
+
*
|
|
23
|
+
* Names taken: `world`, `root` and `hud` are the scene's own fields, so a subclass cannot declare a field of those
|
|
24
|
+
* names for something else (a HUD class of the game's is best kept as `display`, `overlay`, …).
|
|
25
|
+
*/
|
|
26
|
+
export declare abstract class Scene {
|
|
27
|
+
readonly world: World;
|
|
28
|
+
/** Everything the scene draws in the world goes under this (the camera moves it). */
|
|
29
|
+
readonly root: Container<import("pixi.js").ContainerChild>;
|
|
30
|
+
/** Everything the scene draws on the screen (HUD) goes under this. */
|
|
31
|
+
readonly hud: Container<import("pixi.js").ContainerChild>;
|
|
32
|
+
private bound;
|
|
33
|
+
private readonly timers;
|
|
34
|
+
private readonly inputs;
|
|
35
|
+
/** The engine running this scene; only valid between `enter` and `exit`. */
|
|
36
|
+
get engine(): Engine;
|
|
37
|
+
/** Called once when the scene becomes active. May be async: the scene starts updating when it resolves. */
|
|
38
|
+
onEnter(): void | Promise<void>;
|
|
39
|
+
/** Called when the scene is removed. The world and containers are cleared after it returns. */
|
|
40
|
+
onExit(): void;
|
|
41
|
+
/** Called when another scene is pushed over this one. */
|
|
42
|
+
onPause(): void;
|
|
43
|
+
/** Called when the scene over this one is popped. */
|
|
44
|
+
onResume(): void;
|
|
45
|
+
/** Once per simulation step, `dt` in seconds. */
|
|
46
|
+
fixedUpdate(_dt: number): void;
|
|
47
|
+
/** Once per rendered frame, `dt` in seconds; `alpha` is the share of a step since the last one (0–1). */
|
|
48
|
+
update(_dt: number, _alpha: number): void;
|
|
49
|
+
/**
|
|
50
|
+
* Calls `fn` after `ms` on the stage's clock, unless the scene has left by then: its timers are cancelled when it
|
|
51
|
+
* exits. Only valid while the scene is running (between `enter` and `exit`).
|
|
52
|
+
*/
|
|
53
|
+
delay(ms: number, fn: () => void): SceneTimer;
|
|
54
|
+
/**
|
|
55
|
+
* Registers input the scene reads (an `Actions`) and returns it, so a field can be written in one line:
|
|
56
|
+
* `private readonly input = this.useInput(new Actions(keyboard, bindings));`. When a scene pushed over this one
|
|
57
|
+
* pops, every registered input is flushed before `onResume`, so a key pressed in the menu is not a press here.
|
|
58
|
+
*/
|
|
59
|
+
useInput<T extends FlushableInput>(input: T): T;
|
|
60
|
+
/** @internal Called by the scene manager before `onResume`. */
|
|
61
|
+
flushInput(): void;
|
|
62
|
+
/** @internal Engine-side wiring; games call `engine.scenes`. */
|
|
63
|
+
attach(engine: Engine): void;
|
|
64
|
+
/** @internal Clears what the scene made but keeps its containers, so the same scene may be entered again. */
|
|
65
|
+
detach(): void;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=Scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../../src/engine/Scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,8BAAsB,KAAK;IACzB,QAAQ,CAAC,KAAK,QAAe;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,IAAI,8CAA6C;IAC1D,sEAAsE;IACtE,QAAQ,CAAC,GAAG,8CAAmB;IAC/B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAE/C,4EAA4E;IAC5E,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED,2GAA2G;IAC3G,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,+FAA+F;IAC/F,MAAM,IAAI,IAAI;IACd,yDAAyD;IACzD,OAAO,IAAI,IAAI;IACf,qDAAqD;IACrD,QAAQ,IAAI,IAAI;IAChB,iDAAiD;IACjD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAC9B,yGAAyG;IACzG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,UAAU;IAe7C;;;;OAIG;IACH,QAAQ,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAK/C,+DAA+D;IAC/D,UAAU,IAAI,IAAI;IAIlB,gEAAgE;IAChE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B,6GAA6G;IAC7G,MAAM,IAAI,IAAI;CASf"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Engine } from './Engine.js';
|
|
2
|
+
import type { Scene } from './Scene.js';
|
|
3
|
+
/**
|
|
4
|
+
* A stack of scenes. Only the top one updates; the ones under it are paused but still drawn (a pause menu over the
|
|
5
|
+
* level). Changes are queued and applied one at a time, so a scene that replaces itself from inside its own update,
|
|
6
|
+
* or an async `onEnter` still loading, never leaves two scenes half entered.
|
|
7
|
+
*
|
|
8
|
+
* The camera is the engine's, not a scene's: `replace` resets it (`Camera.reset`: no target, no bounds, the default
|
|
9
|
+
* zoom) after the old scenes leave and before the new one enters, so a level's follow and bounds never hold over a
|
|
10
|
+
* title screen. `push` and `pop` leave it as it is: the scene under a pause menu keeps its view. `pop` flushes the
|
|
11
|
+
* resumed scene's input (`Scene.useInput`) before its `onResume`.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SceneManager {
|
|
14
|
+
private readonly engine;
|
|
15
|
+
private readonly stack;
|
|
16
|
+
private queue;
|
|
17
|
+
/** True while an async `onEnter` is running: nothing updates until it is done. */
|
|
18
|
+
private entering;
|
|
19
|
+
constructor(engine: Engine);
|
|
20
|
+
/** The scene that updates, if any. */
|
|
21
|
+
get current(): Scene | undefined;
|
|
22
|
+
/** Every scene on the stack, bottom first. */
|
|
23
|
+
get all(): readonly Scene[];
|
|
24
|
+
/** Removes every scene and enters `scene`. */
|
|
25
|
+
replace(scene: Scene): Promise<void>;
|
|
26
|
+
/** Pauses the current scene and enters `scene` over it. */
|
|
27
|
+
push(scene: Scene): Promise<void>;
|
|
28
|
+
/** Leaves the current scene and resumes the one under it. */
|
|
29
|
+
pop(): Promise<void>;
|
|
30
|
+
/** Leaves every scene (the engine is shutting down). */
|
|
31
|
+
clear(): Promise<void>;
|
|
32
|
+
private enter;
|
|
33
|
+
private exitTop;
|
|
34
|
+
private enqueue;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=SceneManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SceneManager.d.ts","sourceRoot":"","sources":["../../../src/engine/SceneManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;;;GASG;AACH,qBAAa,YAAY;IAMX,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,KAAK,CAAoC;IACjD,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAS;gBAEI,MAAM,EAAE,MAAM;IAE3C,sCAAsC;IACtC,IAAI,OAAO,IAAI,KAAK,GAAG,SAAS,CAE/B;IAED,8CAA8C;IAC9C,IAAI,GAAG,IAAI,SAAS,KAAK,EAAE,CAE1B;IAED,8CAA8C;IAC9C,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpC,2DAA2D;IAC3D,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjC,6DAA6D;IAC7D,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpB,wDAAwD;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAMR,KAAK;IAanB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,OAAO;CAMhB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed observer: listeners subscribe per event name and run in subscription order.
|
|
3
|
+
* `Events` maps each event name to its payload, e.g. `EventBus<{ enemyKilled: { id: number } }>`.
|
|
4
|
+
*
|
|
5
|
+
* A listener that throws does not stop the ones after it; the error is handed to `onError` (the console by default).
|
|
6
|
+
*/
|
|
7
|
+
export declare class EventBus<Events extends object> {
|
|
8
|
+
private readonly onError;
|
|
9
|
+
private readonly listeners;
|
|
10
|
+
constructor(onError?: (type: keyof Events, err: unknown) => void);
|
|
11
|
+
/** Subscribes to `type`; returns the unsubscribe function. */
|
|
12
|
+
on<K extends keyof Events>(type: K, fn: (payload: Events[K]) => void): () => void;
|
|
13
|
+
/** Subscribes for the next `type` only. */
|
|
14
|
+
once<K extends keyof Events>(type: K, fn: (payload: Events[K]) => void): () => void;
|
|
15
|
+
off<K extends keyof Events>(type: K, fn: (payload: Events[K]) => void): void;
|
|
16
|
+
emit<K extends keyof Events>(type: K, payload: Events[K]): void;
|
|
17
|
+
listenerCount(type: keyof Events): number;
|
|
18
|
+
clear(): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=EventBus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../../src/events/EventBus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,MAAM,SAAS,MAAM;IAG7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyD;gBAEtD,OAAO,GAAE,CAAC,IAAI,EAAE,MAAM,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAoF;IAEhK,8DAA8D;IAC9D,EAAE,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAKjF,2CAA2C;IAC3C,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAQnF,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAQ5E,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;IAW/D,aAAa,CAAC,IAAI,EAAE,MAAM,MAAM,GAAG,MAAM;IAIzC,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type BitmapLabel } from '../core/BitmapLabel.js';
|
|
2
|
+
import type { Container } from 'pixi.js';
|
|
3
|
+
import type { Stage } from '../core/Stage.js';
|
|
4
|
+
/** One look of floating text: a size and a fill colour. Each look is its own baked font. */
|
|
5
|
+
export interface FloatingTextStyle {
|
|
6
|
+
size: number;
|
|
7
|
+
color: string;
|
|
8
|
+
}
|
|
9
|
+
export interface FloatingTextOptions {
|
|
10
|
+
/** A font already loaded (`document.fonts.load`), or the glyphs bake in the fallback. */
|
|
11
|
+
fontFamily: string;
|
|
12
|
+
/** Outline colour (default near-black). */
|
|
13
|
+
stroke?: string;
|
|
14
|
+
/** Outline width for a size (default a fifth of it, at least 2). */
|
|
15
|
+
strokeWidth?: (size: number) => number;
|
|
16
|
+
/** Rasterising resolution (default 4, crisp under a zoomed camera). */
|
|
17
|
+
resolution?: number;
|
|
18
|
+
/** Spent labels of one style kept for reuse; the rest are destroyed (default 24). */
|
|
19
|
+
keepPerStyle?: number;
|
|
20
|
+
/** Letters beyond ASCII the labels print (see `installLabelFont`), baked with each style's font. */
|
|
21
|
+
glyphs?: string;
|
|
22
|
+
/** Depth given to every label taken (default: left as made). */
|
|
23
|
+
depth?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Where new labels are added (default the stage's world layer). Give a scene's `root` and the labels live and die
|
|
26
|
+
* with the scene: on the world layer they outlive it, and a label still floating when the scene changes stays.
|
|
27
|
+
*/
|
|
28
|
+
parent?: Container;
|
|
29
|
+
}
|
|
30
|
+
/** How `float` moves a label: pops from `pop`× to 1, holds, then rises `rise` px while fading out. */
|
|
31
|
+
export interface FloatOptions {
|
|
32
|
+
rise?: number;
|
|
33
|
+
/** Sideways drift over the fade, px (pass a random one for a crowd of numbers that do not stack). */
|
|
34
|
+
driftX?: number;
|
|
35
|
+
pop?: number;
|
|
36
|
+
popMs?: number;
|
|
37
|
+
holdMs?: number;
|
|
38
|
+
fadeMs?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Floating text — damage numbers, pickups, "+1" — drawn from bitmap fonts and reused rather than created and
|
|
42
|
+
* destroyed each time: a crowded fight throws dozens a second, and as canvas text each one repainted a canvas at
|
|
43
|
+
* resolution 4 and uploaded it. A label keeps its font, so spent ones are pooled per style and only their string
|
|
44
|
+
* changes. Fonts are baked ahead (`warm`): a style first met mid-fight baked its glyph pages on that frame.
|
|
45
|
+
*/
|
|
46
|
+
export declare class FloatingText {
|
|
47
|
+
private readonly stage;
|
|
48
|
+
private readonly options;
|
|
49
|
+
private readonly pools;
|
|
50
|
+
private readonly stroke;
|
|
51
|
+
private readonly strokeWidth;
|
|
52
|
+
private readonly resolution;
|
|
53
|
+
private readonly keep;
|
|
54
|
+
constructor(stage: Stage, options: FloatingTextOptions);
|
|
55
|
+
/**
|
|
56
|
+
* Bakes the fonts of `styles`, one a task starting `delayMs` from now, so no frame pays for them all at once — ten
|
|
57
|
+
* at once froze a world's first frame half a second (each font measures and kerns every glyph). Returns a cancel.
|
|
58
|
+
*/
|
|
59
|
+
warm(styles: readonly FloatingTextStyle[], delayMs?: number, gapMs?: number): () => void;
|
|
60
|
+
/** Bakes one style's font now. */
|
|
61
|
+
install(style: FloatingTextStyle): void;
|
|
62
|
+
/** A label ready to animate: shown, opaque, unscaled, anchored at its bottom centre on (x, y). */
|
|
63
|
+
take(x: number, y: number, text: string, style: FloatingTextStyle): BitmapLabel;
|
|
64
|
+
/** Hands a finished label back for reuse. */
|
|
65
|
+
release(t: BitmapLabel, style: FloatingTextStyle): void;
|
|
66
|
+
/** A label that pops, rises, fades and goes back to the pool by itself, on the stage's own tweens. */
|
|
67
|
+
float(x: number, y: number, text: string, style: FloatingTextStyle, options?: FloatOptions): BitmapLabel;
|
|
68
|
+
/** Destroys every pooled label (a scene ending); labels still out are the scene's to free. */
|
|
69
|
+
clear(): void;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=FloatingText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FloatingText.d.ts","sourceRoot":"","sources":["../../../src/fx/FloatingText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,4FAA4F;AAC5F,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oGAAoG;IACpG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,sGAAsG;AACtG,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;;;GAKG;AACH,qBAAa,YAAY;IAQrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAGX,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,mBAAmB;IAQ/C;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,EAAE,OAAO,SAAO,EAAE,KAAK,SAAK,GAAG,MAAM,IAAI;IAalF,kCAAkC;IAClC,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAIvC,kGAAkG;IAClG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,WAAW;IAqB/E,6CAA6C;IAC7C,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAavD,sGAAsG;IACtG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW;IAqB5G,8FAA8F;IAC9F,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** The freeze-frame of a blow (ms): 40 for a scratch, up to 140 for one that took a third of the body; a crit +40. */
|
|
2
|
+
export declare function hitStopMs(share: number, crit: boolean): number;
|
|
3
|
+
/** How far the body struck recoils away from the blow (whole world px): a heavy body barely, a crit a pixel further. */
|
|
4
|
+
export declare function recoilPx(heavy: boolean, share: number, crit: boolean): number;
|
|
5
|
+
/** How long a recoil takes to settle back (ms). */
|
|
6
|
+
export declare const RECOIL_MS = 120;
|
|
7
|
+
/** The recoil left at `t` (0 the blow, 1 settled): out at once, eased back, whole pixels only. */
|
|
8
|
+
export declare function recoilAt(px: number, t: number): number;
|
|
9
|
+
/** The least time between two white flashes on a heavy body (ms). */
|
|
10
|
+
export declare const HEAVY_FLASH_GAP_MS = 400;
|
|
11
|
+
/**
|
|
12
|
+
* How long the body struck flashes white (ms), 0 for none: 70, a crit of one's own 140 (the impact frame), nothing with
|
|
13
|
+
* `reduce` (a "reduce flashes" setting). A heavy body (a boss, anything drawn large) flashes only for the local
|
|
14
|
+
* player's own crit, 60 ms, `HEAVY_FLASH_GAP_MS` apart: a sheet covering most of the screen turning white on every
|
|
15
|
+
* blow, beat and tick is a strobe. Sparks, numbers and the recoil still mark every blow.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hurtFlashMs(heavy: boolean, impact: boolean, reduce: boolean): number;
|
|
18
|
+
/** The gap a body keeps between two flashes (ms). */
|
|
19
|
+
export declare function hurtFlashGapMs(heavy: boolean): number;
|
|
20
|
+
//# sourceMappingURL=hitStop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hitStop.d.ts","sourceRoot":"","sources":["../../../src/fx/hitStop.ts"],"names":[],"mappings":"AAMA,sHAAsH;AACtH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAG9D;AAED,wHAAwH;AACxH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAG7E;AAED,mDAAmD;AACnD,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAIpF;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD"}
|