rn-gamekit 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -0
- package/README.md +95 -14
- package/lib/module/assets/defineAssets.js +28 -3
- package/lib/module/assets/defineAssets.js.map +1 -1
- package/lib/module/assets.js +11 -0
- package/lib/module/assets.js.map +1 -0
- package/lib/module/audio/createGameAudio.js +784 -0
- package/lib/module/audio/createGameAudio.js.map +1 -0
- package/lib/module/audio/errors.js +12 -0
- package/lib/module/audio/errors.js.map +1 -0
- package/lib/module/audio/index.js +5 -0
- package/lib/module/audio/index.js.map +1 -0
- package/lib/module/audio/resolver.js +37 -0
- package/lib/module/audio/resolver.js.map +1 -0
- package/lib/module/audio/types.js +4 -0
- package/lib/module/audio/types.js.map +1 -0
- package/lib/module/audio.js +9 -0
- package/lib/module/audio.js.map +1 -0
- package/lib/module/camera2d/bounds.js +59 -0
- package/lib/module/camera2d/bounds.js.map +1 -0
- package/lib/module/camera2d/extents.js +25 -0
- package/lib/module/camera2d/extents.js.map +1 -0
- package/lib/module/camera2d/follow.js +138 -0
- package/lib/module/camera2d/follow.js.map +1 -0
- package/lib/module/camera2d/index.js +20 -0
- package/lib/module/camera2d/index.js.map +1 -0
- package/lib/module/camera2d/interpolation.js +98 -0
- package/lib/module/camera2d/interpolation.js.map +1 -0
- package/lib/module/camera2d/shake.js +85 -0
- package/lib/module/camera2d/shake.js.map +1 -0
- package/lib/module/camera2d/transform.js +151 -0
- package/lib/module/camera2d/transform.js.map +1 -0
- package/lib/module/camera2d/types.js +4 -0
- package/lib/module/camera2d/types.js.map +1 -0
- package/lib/module/camera2d/validation.js +98 -0
- package/lib/module/camera2d/validation.js.map +1 -0
- package/lib/module/camera2d/visibility.js +138 -0
- package/lib/module/camera2d/visibility.js.map +1 -0
- package/lib/module/camera2d.js +9 -0
- package/lib/module/camera2d.js.map +1 -0
- package/lib/module/collision2d/colliders.js +266 -0
- package/lib/module/collision2d/colliders.js.map +1 -0
- package/lib/module/collision2d/debug.js +105 -0
- package/lib/module/collision2d/debug.js.map +1 -0
- package/lib/module/collision2d/filters.js +40 -0
- package/lib/module/collision2d/filters.js.map +1 -0
- package/lib/module/collision2d/index.js +12 -0
- package/lib/module/collision2d/index.js.map +1 -0
- package/lib/module/collision2d/intersections.js +67 -0
- package/lib/module/collision2d/intersections.js.map +1 -0
- package/lib/module/collision2d/manifolds.js +218 -0
- package/lib/module/collision2d/manifolds.js.map +1 -0
- package/lib/module/collision2d/segments.js +187 -0
- package/lib/module/collision2d/segments.js.map +1 -0
- package/lib/module/collision2d/spatialHash.js +167 -0
- package/lib/module/collision2d/spatialHash.js.map +1 -0
- package/lib/module/collision2d/sweeps.js +255 -0
- package/lib/module/collision2d/sweeps.js.map +1 -0
- package/lib/module/collision2d.js +9 -0
- package/lib/module/collision2d.js.map +1 -0
- package/lib/module/core/input/buttonPad.js +214 -0
- package/lib/module/core/input/buttonPad.js.map +1 -0
- package/lib/module/core/input/createInputBuffer.js +66 -14
- package/lib/module/core/input/createInputBuffer.js.map +1 -1
- package/lib/module/core/session/createGameSession.js +454 -50
- package/lib/module/core/session/createGameSession.js.map +1 -1
- package/lib/module/core/session/deepFreeze.js +92 -2
- package/lib/module/core/session/deepFreeze.js.map +1 -1
- package/lib/module/core/session/types.js +12 -0
- package/lib/module/core/session/types.js.map +1 -1
- package/lib/module/definition/defineGame.js +23 -0
- package/lib/module/definition/defineGame.js.map +1 -1
- package/lib/module/events/defineGameEvents.js +46 -0
- package/lib/module/events/defineGameEvents.js.map +1 -0
- package/lib/module/events/errors.js +16 -0
- package/lib/module/events/errors.js.map +1 -0
- package/lib/module/events/index.js +7 -0
- package/lib/module/events/index.js.map +1 -0
- package/lib/module/events/payload.js +219 -0
- package/lib/module/events/payload.js.map +1 -0
- package/lib/module/events/seed.js +33 -0
- package/lib/module/events/seed.js.map +1 -0
- package/lib/module/events/types.js +4 -0
- package/lib/module/events/types.js.map +1 -0
- package/lib/module/events.js +13 -0
- package/lib/module/events.js.map +1 -0
- package/lib/module/geometry/helpers.js +140 -0
- package/lib/module/geometry/helpers.js.map +1 -0
- package/lib/module/geometry/index.js +5 -0
- package/lib/module/geometry/index.js.map +1 -0
- package/lib/module/geometry/validation.js +104 -0
- package/lib/module/geometry/validation.js.map +1 -0
- package/lib/module/geometry.js +9 -0
- package/lib/module/geometry.js.map +1 -0
- package/lib/module/haptics/createGameHaptics.js +214 -0
- package/lib/module/haptics/createGameHaptics.js.map +1 -0
- package/lib/module/haptics/errors.js +12 -0
- package/lib/module/haptics/errors.js.map +1 -0
- package/lib/module/haptics/index.js +5 -0
- package/lib/module/haptics/index.js.map +1 -0
- package/lib/module/haptics/resolver.js +37 -0
- package/lib/module/haptics/resolver.js.map +1 -0
- package/lib/module/haptics/types.js +4 -0
- package/lib/module/haptics/types.js.map +1 -0
- package/lib/module/haptics.js +9 -0
- package/lib/module/haptics.js.map +1 -0
- package/lib/module/index.js +8 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/particles/createParticleSystem.js +481 -0
- package/lib/module/particles/createParticleSystem.js.map +1 -0
- package/lib/module/particles/defineParticleEffect.js +178 -0
- package/lib/module/particles/defineParticleEffect.js.map +1 -0
- package/lib/module/particles/errors.js +9 -0
- package/lib/module/particles/errors.js.map +1 -0
- package/lib/module/particles/index.js +8 -0
- package/lib/module/particles/index.js.map +1 -0
- package/lib/module/particles/sampling.js +121 -0
- package/lib/module/particles/sampling.js.map +1 -0
- package/lib/module/particles/types.js +4 -0
- package/lib/module/particles/types.js.map +1 -0
- package/lib/module/particles.js +4 -0
- package/lib/module/particles.js.map +1 -0
- package/lib/module/react/GameButtonPad.js +344 -0
- package/lib/module/react/GameButtonPad.js.map +1 -0
- package/lib/module/react/GamePointerInput.js +74 -16
- package/lib/module/react/GamePointerInput.js.map +1 -1
- package/lib/module/react/GameView.js +139 -60
- package/lib/module/react/GameView.js.map +1 -1
- package/lib/module/react/assets/createGameAssetStore.js +145 -95
- package/lib/module/react/assets/createGameAssetStore.js.map +1 -1
- package/lib/module/react/assets/useGameAssets.js +60 -35
- package/lib/module/react/assets/useGameAssets.js.map +1 -1
- package/lib/module/react/bindAppLifecycle.js +46 -17
- package/lib/module/react/bindAppLifecycle.js.map +1 -1
- package/lib/module/react/bindGameSession.js +13 -2
- package/lib/module/react/bindGameSession.js.map +1 -1
- package/lib/module/react/camera2d/GameLayer2D.js +50 -0
- package/lib/module/react/camera2d/GameLayer2D.js.map +1 -0
- package/lib/module/react/camera2d/defineGameCamera2D.js +30 -0
- package/lib/module/react/camera2d/defineGameCamera2D.js.map +1 -0
- package/lib/module/react/camera2d/usePresentedCameraBinding.js +177 -0
- package/lib/module/react/camera2d/usePresentedCameraBinding.js.map +1 -0
- package/lib/module/react/cleanupList.js +38 -0
- package/lib/module/react/cleanupList.js.map +1 -0
- package/lib/module/react/lifecycleSource.js +49 -0
- package/lib/module/react/lifecycleSource.js.map +1 -0
- package/lib/module/react/particles/ParticleView.js +308 -0
- package/lib/module/react/particles/ParticleView.js.map +1 -0
- package/lib/module/react/particles/culling.js +115 -0
- package/lib/module/react/particles/culling.js.map +1 -0
- package/lib/module/react/particles/index.js +7 -0
- package/lib/module/react/particles/index.js.map +1 -0
- package/lib/module/react/particles/spriteXForm.js +45 -0
- package/lib/module/react/particles/spriteXForm.js.map +1 -0
- package/lib/module/react/particles/useParticlePresentation.js +204 -0
- package/lib/module/react/particles/useParticlePresentation.js.map +1 -0
- package/lib/module/react/pointerBinding.js +55 -17
- package/lib/module/react/pointerBinding.js.map +1 -1
- package/lib/module/react/pointerCamera.js +28 -0
- package/lib/module/react/pointerCamera.js.map +1 -0
- package/lib/module/react/pointerCoalescer.js +16 -9
- package/lib/module/react/pointerCoalescer.js.map +1 -1
- package/lib/module/react/sprites/GameSprite.js +5 -17
- package/lib/module/react/sprites/GameSprite.js.map +1 -1
- package/lib/module/react/sprites/GameWorld2D.js +112 -9
- package/lib/module/react/sprites/GameWorld2D.js.map +1 -1
- package/lib/module/react/sprites/Sprite.js +48 -63
- package/lib/module/react/sprites/Sprite.js.map +1 -1
- package/lib/module/react/sprites/SpriteBatch.js +53 -28
- package/lib/module/react/sprites/SpriteBatch.js.map +1 -1
- package/lib/module/react/sprites/batchVisibility.js +58 -0
- package/lib/module/react/sprites/batchVisibility.js.map +1 -0
- package/lib/module/react/sprites/spriteSelection.js +103 -0
- package/lib/module/react/sprites/spriteSelection.js.map +1 -0
- package/lib/module/react/sprites/spriteTransform.js +46 -25
- package/lib/module/react/sprites/spriteTransform.js.map +1 -1
- package/lib/module/react/tilemap/TileMapLayer2D.js +217 -0
- package/lib/module/react/tilemap/TileMapLayer2D.js.map +1 -0
- package/lib/module/react/tilemap/tilePresentation.js +374 -0
- package/lib/module/react/tilemap/tilePresentation.js.map +1 -0
- package/lib/module/react/useGameSession.js +70 -0
- package/lib/module/react/useGameSession.js.map +1 -0
- package/lib/module/react/useGameSessionStatus.js +46 -0
- package/lib/module/react/useGameSessionStatus.js.map +1 -0
- package/lib/module/react/viewportBinding.js +5 -1
- package/lib/module/react/viewportBinding.js.map +1 -1
- package/lib/module/react.js +12 -1
- package/lib/module/react.js.map +1 -1
- package/lib/module/scene/defineScene.js +17 -0
- package/lib/module/scene/defineScene.js.map +1 -1
- package/lib/module/sprites/sampleSpriteClip.js +66 -6
- package/lib/module/sprites/sampleSpriteClip.js.map +1 -1
- package/lib/module/sprites/spriteAnimationState.js +10 -20
- package/lib/module/sprites/spriteAnimationState.js.map +1 -1
- package/lib/module/sprites.js +11 -0
- package/lib/module/sprites.js.map +1 -0
- package/lib/module/storage/adapters/asyncStorage.js +57 -0
- package/lib/module/storage/adapters/asyncStorage.js.map +1 -0
- package/lib/module/storage/adapters/memory.js +50 -0
- package/lib/module/storage/adapters/memory.js.map +1 -0
- package/lib/module/storage/errors.js +34 -0
- package/lib/module/storage/errors.js.map +1 -0
- package/lib/module/storage/index.js +11 -0
- package/lib/module/storage/index.js.map +1 -0
- package/lib/module/storage/schema.js +151 -0
- package/lib/module/storage/schema.js.map +1 -0
- package/lib/module/storage/serialization.js +249 -0
- package/lib/module/storage/serialization.js.map +1 -0
- package/lib/module/storage/store.js +387 -0
- package/lib/module/storage/store.js.map +1 -0
- package/lib/module/storage/types.js +16 -0
- package/lib/module/storage/types.js.map +1 -0
- package/lib/module/storage/validation.js +111 -0
- package/lib/module/storage/validation.js.map +1 -0
- package/lib/module/storage.js +4 -0
- package/lib/module/storage.js.map +1 -0
- package/lib/module/testing.js +4 -0
- package/lib/module/testing.js.map +1 -1
- package/lib/module/tilemap/chunkStats.js +27 -0
- package/lib/module/tilemap/chunkStats.js.map +1 -0
- package/lib/module/tilemap/definitions.js +308 -0
- package/lib/module/tilemap/definitions.js.map +1 -0
- package/lib/module/tilemap/errors.js +13 -0
- package/lib/module/tilemap/errors.js.map +1 -0
- package/lib/module/tilemap/index.js +10 -0
- package/lib/module/tilemap/index.js.map +1 -0
- package/lib/module/tilemap/movement.js +379 -0
- package/lib/module/tilemap/movement.js.map +1 -0
- package/lib/module/tilemap/queries.js +114 -0
- package/lib/module/tilemap/queries.js.map +1 -0
- package/lib/module/tilemap/tiledAdapter.js +141 -0
- package/lib/module/tilemap/tiledAdapter.js.map +1 -0
- package/lib/module/tilemap/types.js +4 -0
- package/lib/module/tilemap/types.js.map +1 -0
- package/lib/module/tilemap.js +4 -0
- package/lib/module/tilemap.js.map +1 -0
- package/lib/typescript/src/assets/defineAssets.d.ts +1 -1
- package/lib/typescript/src/assets/defineAssets.d.ts.map +1 -1
- package/lib/typescript/src/assets.d.ts +11 -0
- package/lib/typescript/src/assets.d.ts.map +1 -0
- package/lib/typescript/src/audio/createGameAudio.d.ts +5 -0
- package/lib/typescript/src/audio/createGameAudio.d.ts.map +1 -0
- package/lib/typescript/src/audio/errors.d.ts +6 -0
- package/lib/typescript/src/audio/errors.d.ts.map +1 -0
- package/lib/typescript/src/audio/index.d.ts +4 -0
- package/lib/typescript/src/audio/index.d.ts.map +1 -0
- package/lib/typescript/src/audio/resolver.d.ts +44 -0
- package/lib/typescript/src/audio/resolver.d.ts.map +1 -0
- package/lib/typescript/src/audio/types.d.ts +42 -0
- package/lib/typescript/src/audio/types.d.ts.map +1 -0
- package/lib/typescript/src/audio.d.ts +8 -0
- package/lib/typescript/src/audio.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/bounds.d.ts +25 -0
- package/lib/typescript/src/camera2d/bounds.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/extents.d.ts +17 -0
- package/lib/typescript/src/camera2d/extents.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/follow.d.ts +24 -0
- package/lib/typescript/src/camera2d/follow.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/index.d.ts +19 -0
- package/lib/typescript/src/camera2d/index.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/interpolation.d.ts +17 -0
- package/lib/typescript/src/camera2d/interpolation.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/shake.d.ts +20 -0
- package/lib/typescript/src/camera2d/shake.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/transform.d.ts +44 -0
- package/lib/typescript/src/camera2d/transform.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/types.d.ts +74 -0
- package/lib/typescript/src/camera2d/types.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/validation.d.ts +30 -0
- package/lib/typescript/src/camera2d/validation.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/visibility.d.ts +47 -0
- package/lib/typescript/src/camera2d/visibility.d.ts.map +1 -0
- package/lib/typescript/src/camera2d.d.ts +7 -0
- package/lib/typescript/src/camera2d.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/colliders.d.ts +120 -0
- package/lib/typescript/src/collision2d/colliders.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/debug.d.ts +67 -0
- package/lib/typescript/src/collision2d/debug.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/filters.d.ts +28 -0
- package/lib/typescript/src/collision2d/filters.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/index.d.ts +17 -0
- package/lib/typescript/src/collision2d/index.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/intersections.d.ts +24 -0
- package/lib/typescript/src/collision2d/intersections.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/manifolds.d.ts +39 -0
- package/lib/typescript/src/collision2d/manifolds.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/segments.d.ts +24 -0
- package/lib/typescript/src/collision2d/segments.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/spatialHash.d.ts +50 -0
- package/lib/typescript/src/collision2d/spatialHash.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/sweeps.d.ts +60 -0
- package/lib/typescript/src/collision2d/sweeps.d.ts.map +1 -0
- package/lib/typescript/src/collision2d.d.ts +7 -0
- package/lib/typescript/src/collision2d.d.ts.map +1 -0
- package/lib/typescript/src/core/input/buttonPad.d.ts +59 -0
- package/lib/typescript/src/core/input/buttonPad.d.ts.map +1 -0
- package/lib/typescript/src/core/input/createInputBuffer.d.ts +1 -1
- package/lib/typescript/src/core/input/createInputBuffer.d.ts.map +1 -1
- package/lib/typescript/src/core/input/types.d.ts +7 -0
- package/lib/typescript/src/core/input/types.d.ts.map +1 -1
- package/lib/typescript/src/core/session/createGameSession.d.ts +4 -2
- package/lib/typescript/src/core/session/createGameSession.d.ts.map +1 -1
- package/lib/typescript/src/core/session/deepFreeze.d.ts +21 -1
- package/lib/typescript/src/core/session/deepFreeze.d.ts.map +1 -1
- package/lib/typescript/src/core/session/diagnostics.d.ts +2 -0
- package/lib/typescript/src/core/session/diagnostics.d.ts.map +1 -1
- package/lib/typescript/src/core/session/types.d.ts +69 -4
- package/lib/typescript/src/core/session/types.d.ts.map +1 -1
- package/lib/typescript/src/definition/defineGame.d.ts +12 -1
- package/lib/typescript/src/definition/defineGame.d.ts.map +1 -1
- package/lib/typescript/src/definition/types.d.ts +10 -1
- package/lib/typescript/src/definition/types.d.ts.map +1 -1
- package/lib/typescript/src/events/defineGameEvents.d.ts +26 -0
- package/lib/typescript/src/events/defineGameEvents.d.ts.map +1 -0
- package/lib/typescript/src/events/errors.d.ts +12 -0
- package/lib/typescript/src/events/errors.d.ts.map +1 -0
- package/lib/typescript/src/events/index.d.ts +6 -0
- package/lib/typescript/src/events/index.d.ts.map +1 -0
- package/lib/typescript/src/events/payload.d.ts +21 -0
- package/lib/typescript/src/events/payload.d.ts.map +1 -0
- package/lib/typescript/src/events/seed.d.ts +3 -0
- package/lib/typescript/src/events/seed.d.ts.map +1 -0
- package/lib/typescript/src/events/types.d.ts +42 -0
- package/lib/typescript/src/events/types.d.ts.map +1 -0
- package/lib/typescript/src/events.d.ts +12 -0
- package/lib/typescript/src/events.d.ts.map +1 -0
- package/lib/typescript/src/geometry/helpers.d.ts +35 -0
- package/lib/typescript/src/geometry/helpers.d.ts.map +1 -0
- package/lib/typescript/src/geometry/index.d.ts +4 -0
- package/lib/typescript/src/geometry/index.d.ts.map +1 -0
- package/lib/typescript/src/geometry/types.d.ts +49 -0
- package/lib/typescript/src/geometry/types.d.ts.map +1 -1
- package/lib/typescript/src/geometry/validation.d.ts +44 -0
- package/lib/typescript/src/geometry/validation.d.ts.map +1 -0
- package/lib/typescript/src/geometry.d.ts +7 -0
- package/lib/typescript/src/geometry.d.ts.map +1 -0
- package/lib/typescript/src/haptics/createGameHaptics.d.ts +3 -0
- package/lib/typescript/src/haptics/createGameHaptics.d.ts.map +1 -0
- package/lib/typescript/src/haptics/errors.d.ts +6 -0
- package/lib/typescript/src/haptics/errors.d.ts.map +1 -0
- package/lib/typescript/src/haptics/index.d.ts +4 -0
- package/lib/typescript/src/haptics/index.d.ts.map +1 -0
- package/lib/typescript/src/haptics/resolver.d.ts +22 -0
- package/lib/typescript/src/haptics/resolver.d.ts.map +1 -0
- package/lib/typescript/src/haptics/types.d.ts +37 -0
- package/lib/typescript/src/haptics/types.d.ts.map +1 -0
- package/lib/typescript/src/haptics.d.ts +8 -0
- package/lib/typescript/src/haptics.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/particles/createParticleSystem.d.ts +5 -0
- package/lib/typescript/src/particles/createParticleSystem.d.ts.map +1 -0
- package/lib/typescript/src/particles/defineParticleEffect.d.ts +3 -0
- package/lib/typescript/src/particles/defineParticleEffect.d.ts.map +1 -0
- package/lib/typescript/src/particles/errors.d.ts +5 -0
- package/lib/typescript/src/particles/errors.d.ts.map +1 -0
- package/lib/typescript/src/particles/index.d.ts +6 -0
- package/lib/typescript/src/particles/index.d.ts.map +1 -0
- package/lib/typescript/src/particles/sampling.d.ts +54 -0
- package/lib/typescript/src/particles/sampling.d.ts.map +1 -0
- package/lib/typescript/src/particles/types.d.ts +292 -0
- package/lib/typescript/src/particles/types.d.ts.map +1 -0
- package/lib/typescript/src/particles.d.ts +2 -0
- package/lib/typescript/src/particles.d.ts.map +1 -0
- package/lib/typescript/src/react/GameButtonPad.d.ts +84 -0
- package/lib/typescript/src/react/GameButtonPad.d.ts.map +1 -0
- package/lib/typescript/src/react/GamePointerInput.d.ts.map +1 -1
- package/lib/typescript/src/react/GameView.d.ts +27 -1
- package/lib/typescript/src/react/GameView.d.ts.map +1 -1
- package/lib/typescript/src/react/assets/createGameAssetStore.d.ts.map +1 -1
- package/lib/typescript/src/react/assets/useGameAssets.d.ts.map +1 -1
- package/lib/typescript/src/react/bindAppLifecycle.d.ts +7 -1
- package/lib/typescript/src/react/bindAppLifecycle.d.ts.map +1 -1
- package/lib/typescript/src/react/bindGameSession.d.ts.map +1 -1
- package/lib/typescript/src/react/camera2d/GameLayer2D.d.ts +24 -0
- package/lib/typescript/src/react/camera2d/GameLayer2D.d.ts.map +1 -0
- package/lib/typescript/src/react/camera2d/defineGameCamera2D.d.ts +44 -0
- package/lib/typescript/src/react/camera2d/defineGameCamera2D.d.ts.map +1 -0
- package/lib/typescript/src/react/camera2d/usePresentedCameraBinding.d.ts +22 -0
- package/lib/typescript/src/react/camera2d/usePresentedCameraBinding.d.ts.map +1 -0
- package/lib/typescript/src/react/cleanupList.d.ts +21 -0
- package/lib/typescript/src/react/cleanupList.d.ts.map +1 -0
- package/lib/typescript/src/react/instrumentation.d.ts +33 -3
- package/lib/typescript/src/react/instrumentation.d.ts.map +1 -1
- package/lib/typescript/src/react/lifecycleSource.d.ts +21 -0
- package/lib/typescript/src/react/lifecycleSource.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/ParticleView.d.ts +65 -0
- package/lib/typescript/src/react/particles/ParticleView.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/culling.d.ts +70 -0
- package/lib/typescript/src/react/particles/culling.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/index.d.ts +7 -0
- package/lib/typescript/src/react/particles/index.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/spriteXForm.d.ts +28 -0
- package/lib/typescript/src/react/particles/spriteXForm.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/useParticlePresentation.d.ts +48 -0
- package/lib/typescript/src/react/particles/useParticlePresentation.d.ts.map +1 -0
- package/lib/typescript/src/react/pointerBinding.d.ts +38 -8
- package/lib/typescript/src/react/pointerBinding.d.ts.map +1 -1
- package/lib/typescript/src/react/pointerCamera.d.ts +20 -0
- package/lib/typescript/src/react/pointerCamera.d.ts.map +1 -0
- package/lib/typescript/src/react/pointerCoalescer.d.ts +17 -1
- package/lib/typescript/src/react/pointerCoalescer.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/GameSprite.d.ts +3 -10
- package/lib/typescript/src/react/sprites/GameSprite.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/GameWorld2D.d.ts +51 -6
- package/lib/typescript/src/react/sprites/GameWorld2D.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/Sprite.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/SpriteBatch.d.ts +22 -1
- package/lib/typescript/src/react/sprites/SpriteBatch.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/batchVisibility.d.ts +28 -0
- package/lib/typescript/src/react/sprites/batchVisibility.d.ts.map +1 -0
- package/lib/typescript/src/react/sprites/spriteSelection.d.ts +58 -0
- package/lib/typescript/src/react/sprites/spriteSelection.d.ts.map +1 -0
- package/lib/typescript/src/react/sprites/spriteTransform.d.ts +27 -12
- package/lib/typescript/src/react/sprites/spriteTransform.d.ts.map +1 -1
- package/lib/typescript/src/react/tilemap/TileMapLayer2D.d.ts +69 -0
- package/lib/typescript/src/react/tilemap/TileMapLayer2D.d.ts.map +1 -0
- package/lib/typescript/src/react/tilemap/tilePresentation.d.ts +217 -0
- package/lib/typescript/src/react/tilemap/tilePresentation.d.ts.map +1 -0
- package/lib/typescript/src/react/useGameSession.d.ts +48 -0
- package/lib/typescript/src/react/useGameSession.d.ts.map +1 -0
- package/lib/typescript/src/react/useGameSessionStatus.d.ts +23 -0
- package/lib/typescript/src/react/useGameSessionStatus.d.ts.map +1 -0
- package/lib/typescript/src/react/viewportBinding.d.ts +5 -1
- package/lib/typescript/src/react/viewportBinding.d.ts.map +1 -1
- package/lib/typescript/src/react.d.ts +18 -1
- package/lib/typescript/src/react.d.ts.map +1 -1
- package/lib/typescript/src/scene/defineScene.d.ts +22 -2
- package/lib/typescript/src/scene/defineScene.d.ts.map +1 -1
- package/lib/typescript/src/scene/types.d.ts +24 -4
- package/lib/typescript/src/scene/types.d.ts.map +1 -1
- package/lib/typescript/src/sprites/sampleSpriteClip.d.ts +26 -2
- package/lib/typescript/src/sprites/sampleSpriteClip.d.ts.map +1 -1
- package/lib/typescript/src/sprites/spriteAnimationState.d.ts +6 -7
- package/lib/typescript/src/sprites/spriteAnimationState.d.ts.map +1 -1
- package/lib/typescript/src/sprites.d.ts +10 -0
- package/lib/typescript/src/sprites.d.ts.map +1 -0
- package/lib/typescript/src/storage/adapters/asyncStorage.d.ts +18 -0
- package/lib/typescript/src/storage/adapters/asyncStorage.d.ts.map +1 -0
- package/lib/typescript/src/storage/adapters/memory.d.ts +16 -0
- package/lib/typescript/src/storage/adapters/memory.d.ts.map +1 -0
- package/lib/typescript/src/storage/errors.d.ts +37 -0
- package/lib/typescript/src/storage/errors.d.ts.map +1 -0
- package/lib/typescript/src/storage/index.d.ts +11 -0
- package/lib/typescript/src/storage/index.d.ts.map +1 -0
- package/lib/typescript/src/storage/schema.d.ts +22 -0
- package/lib/typescript/src/storage/schema.d.ts.map +1 -0
- package/lib/typescript/src/storage/serialization.d.ts +23 -0
- package/lib/typescript/src/storage/serialization.d.ts.map +1 -0
- package/lib/typescript/src/storage/store.d.ts +3 -0
- package/lib/typescript/src/storage/store.d.ts.map +1 -0
- package/lib/typescript/src/storage/types.d.ts +69 -0
- package/lib/typescript/src/storage/types.d.ts.map +1 -0
- package/lib/typescript/src/storage/validation.d.ts +24 -0
- package/lib/typescript/src/storage/validation.d.ts.map +1 -0
- package/lib/typescript/src/storage.d.ts +2 -0
- package/lib/typescript/src/storage.d.ts.map +1 -0
- package/lib/typescript/src/testing.d.ts +1 -0
- package/lib/typescript/src/testing.d.ts.map +1 -1
- package/lib/typescript/src/tilemap/chunkStats.d.ts +14 -0
- package/lib/typescript/src/tilemap/chunkStats.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/definitions.d.ts +38 -0
- package/lib/typescript/src/tilemap/definitions.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/errors.d.ts +7 -0
- package/lib/typescript/src/tilemap/errors.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/index.d.ts +8 -0
- package/lib/typescript/src/tilemap/index.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/movement.d.ts +52 -0
- package/lib/typescript/src/tilemap/movement.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/queries.d.ts +21 -0
- package/lib/typescript/src/tilemap/queries.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/tiledAdapter.d.ts +32 -0
- package/lib/typescript/src/tilemap/tiledAdapter.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/types.d.ts +127 -0
- package/lib/typescript/src/tilemap/types.d.ts.map +1 -0
- package/lib/typescript/src/tilemap.d.ts +2 -0
- package/lib/typescript/src/tilemap.d.ts.map +1 -0
- package/package.json +94 -4
- package/src/assets/defineAssets.ts +31 -5
- package/src/assets.ts +27 -0
- package/src/audio/createGameAudio.ts +749 -0
- package/src/audio/errors.ts +12 -0
- package/src/audio/index.ts +9 -0
- package/src/audio/resolver.ts +74 -0
- package/src/audio/types.ts +47 -0
- package/src/audio.ts +13 -0
- package/src/camera2d/bounds.ts +69 -0
- package/src/camera2d/extents.ts +25 -0
- package/src/camera2d/follow.ts +165 -0
- package/src/camera2d/index.ts +29 -0
- package/src/camera2d/interpolation.ts +113 -0
- package/src/camera2d/shake.ts +90 -0
- package/src/camera2d/transform.ts +148 -0
- package/src/camera2d/types.ts +73 -0
- package/src/camera2d/validation.ts +126 -0
- package/src/camera2d/visibility.ts +181 -0
- package/src/camera2d.ts +6 -0
- package/src/collision2d/colliders.ts +292 -0
- package/src/collision2d/debug.ts +133 -0
- package/src/collision2d/filters.ts +48 -0
- package/src/collision2d/index.ts +74 -0
- package/src/collision2d/intersections.ts +82 -0
- package/src/collision2d/manifolds.ts +191 -0
- package/src/collision2d/segments.ts +176 -0
- package/src/collision2d/spatialHash.ts +211 -0
- package/src/collision2d/sweeps.ts +269 -0
- package/src/collision2d.ts +6 -0
- package/src/core/input/buttonPad.ts +235 -0
- package/src/core/input/createInputBuffer.ts +95 -14
- package/src/core/input/types.ts +7 -0
- package/src/core/session/createGameSession.ts +480 -53
- package/src/core/session/deepFreeze.ts +104 -3
- package/src/core/session/diagnostics.ts +2 -0
- package/src/core/session/types.ts +77 -4
- package/src/definition/defineGame.ts +61 -3
- package/src/definition/types.ts +10 -0
- package/src/events/defineGameEvents.ts +46 -0
- package/src/events/errors.ts +14 -0
- package/src/events/index.ts +14 -0
- package/src/events/payload.ts +234 -0
- package/src/events/seed.ts +33 -0
- package/src/events/types.ts +53 -0
- package/src/events.ts +20 -0
- package/src/geometry/helpers.ts +136 -0
- package/src/geometry/index.ts +14 -0
- package/src/geometry/types.ts +54 -0
- package/src/geometry/validation.ts +131 -0
- package/src/geometry.ts +6 -0
- package/src/haptics/createGameHaptics.ts +214 -0
- package/src/haptics/errors.ts +12 -0
- package/src/haptics/index.ts +3 -0
- package/src/haptics/resolver.ts +58 -0
- package/src/haptics/types.ts +48 -0
- package/src/haptics.ts +7 -0
- package/src/index.ts +37 -1
- package/src/particles/createParticleSystem.ts +505 -0
- package/src/particles/defineParticleEffect.ts +164 -0
- package/src/particles/errors.ts +6 -0
- package/src/particles/index.ts +5 -0
- package/src/particles/sampling.ts +141 -0
- package/src/particles/types.ts +327 -0
- package/src/particles.ts +1 -0
- package/src/react/GameButtonPad.tsx +436 -0
- package/src/react/GamePointerInput.tsx +73 -8
- package/src/react/GameView.tsx +160 -61
- package/src/react/assets/createGameAssetStore.ts +140 -107
- package/src/react/assets/useGameAssets.ts +63 -31
- package/src/react/bindAppLifecycle.ts +55 -19
- package/src/react/bindGameSession.ts +12 -2
- package/src/react/camera2d/GameLayer2D.tsx +43 -0
- package/src/react/camera2d/defineGameCamera2D.ts +59 -0
- package/src/react/camera2d/usePresentedCameraBinding.ts +185 -0
- package/src/react/cleanupList.ts +48 -0
- package/src/react/instrumentation.ts +31 -3
- package/src/react/lifecycleSource.ts +58 -0
- package/src/react/particles/ParticleView.tsx +358 -0
- package/src/react/particles/culling.ts +145 -0
- package/src/react/particles/index.ts +6 -0
- package/src/react/particles/spriteXForm.ts +72 -0
- package/src/react/particles/useParticlePresentation.ts +261 -0
- package/src/react/pointerBinding.ts +74 -16
- package/src/react/pointerCamera.ts +33 -0
- package/src/react/pointerCoalescer.ts +36 -10
- package/src/react/sprites/GameSprite.tsx +4 -33
- package/src/react/sprites/GameWorld2D.tsx +113 -7
- package/src/react/sprites/Sprite.tsx +51 -72
- package/src/react/sprites/SpriteBatch.tsx +74 -22
- package/src/react/sprites/batchVisibility.ts +76 -0
- package/src/react/sprites/spriteSelection.ts +133 -0
- package/src/react/sprites/spriteTransform.ts +46 -26
- package/src/react/tilemap/TileMapLayer2D.tsx +274 -0
- package/src/react/tilemap/tilePresentation.ts +491 -0
- package/src/react/useGameSession.ts +90 -0
- package/src/react/useGameSessionStatus.ts +53 -0
- package/src/react/viewportBinding.ts +5 -1
- package/src/react.ts +18 -1
- package/src/scene/defineScene.ts +47 -5
- package/src/scene/types.ts +37 -3
- package/src/sprites/sampleSpriteClip.ts +82 -14
- package/src/sprites/spriteAnimationState.ts +29 -25
- package/src/sprites.ts +22 -0
- package/src/storage/adapters/asyncStorage.ts +77 -0
- package/src/storage/adapters/memory.ts +58 -0
- package/src/storage/errors.ts +88 -0
- package/src/storage/index.ts +18 -0
- package/src/storage/schema.ts +147 -0
- package/src/storage/serialization.ts +248 -0
- package/src/storage/store.ts +380 -0
- package/src/storage/types.ts +76 -0
- package/src/storage/validation.ts +102 -0
- package/src/storage.ts +1 -0
- package/src/testing.ts +4 -0
- package/src/tilemap/chunkStats.ts +24 -0
- package/src/tilemap/definitions.ts +327 -0
- package/src/tilemap/errors.ts +11 -0
- package/src/tilemap/index.ts +10 -0
- package/src/tilemap/movement.ts +368 -0
- package/src/tilemap/queries.ts +136 -0
- package/src/tilemap/tiledAdapter.ts +165 -0
- package/src/tilemap/types.ts +119 -0
- package/src/tilemap.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createAudioInstallationError","GameAudioError","loadAudioApi","CATEGORIES","isValidVolume","volume","Number","isFinite","assertCategory","category","includes","String","assertVolume","interruptionObserverCount","assetInputLoader","__setAssetInputLoader","fn","__getAssetInputLoader","createGameAudio","options","api","AudioContext","sounds","soundIds","Object","keys","length","id","v","AudioManager","context","masterGain","categoryGains","master","music","sfx","ui","interruptionSub","interruptionEnabled","appStateSub","idleSuspendTimer","e","volumes","muted","disposed","userPaused","sessionPaused","appPaused","interruptionPaused","interruptionRequiresExplicitResume","bufferCache","Map","pendingDecodes","getBuffer","has","get","assetId","promise","input","assetUri","expoAssetFailed","Asset","ExpoAsset","asset","fromModule","downloadAsync","localUri","uri","buffer","decodeAudioData","message","set","delete","applyGain","gain","value","param","now","currentTime","cancelScheduledValues","setValueAtTime","linearRampToValueAtTime","applyAllGains","c","mg","createGain","connect","destination","cat","cg","Promise","all","map","close","clear","currentMusicId","currentMusicNode","musicGeneration","activeMusicGeneration","pendingMusic","activeVoices","Set","concurrencyMap","pendingReservations","cancelledReservations","isEffectivelyPaused","suspendChain","resolve","runSuspendLink","clearTimeout","suspend","state","resume","generation","startMusicInternal","scheduleIdleSuspend","requestSuspendUpdate","then","updateSuspendState","size","setTimeout","catch","dropVoice","voice","concurrencyKey","undefined","dropReservation","reservation","ensureNotDisposed","handleInterruption","event","type","shouldResume","observeAudioInterruptions","addSystemEventListener","console","warn","RN","require","AppState","addEventListener","isInactive","s","currentState","next","source","createBufferSource","loop","dest","stop","start","disconnect","lifecycleDetach","setSessionPaused","paused","audio","play","opts","concurrency","key","limit","overflow","Math","floor","oldest","values","add","voiceGain","cleaned","releaseVoice","anySource","onended","cleanup","catGain","playMusic","gen","stopMusic","pause","wasExplicit","setVolume","getVolume","setMuted","Boolean","isMuted","setPaused","bindLifecycle","bindAudioLifecycle","_setSessionPaused","p","dispose","remove","max","getStatus","sourceDetach","subscribe","status","detached","detach","_isIdleSuspended","_getConcurrencyCount","k","_getVoiceCounts","concurrencyKeys","cancelled","_handleInterruption","_getVolumes","_getGainTargets","out","g"],"sourceRoot":"../../../src","sources":["audio/createGameAudio.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export class GameAudioError extends Error {
|
|
4
|
+
name = 'GameAudioError';
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function createAudioInstallationError() {
|
|
10
|
+
return new GameAudioError('react-native-audio-api is not installed. Run `npx expo install react-native-audio-api react-native-worklets` and rebuild with `npx expo prebuild` (or `expo run:ios` / `expo run:android`). See https://docs.swmansion.com/react-native-audio-api/docs/fundamentals/getting-started');
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GameAudioError","Error","name","constructor","message","createAudioInstallationError"],"sourceRoot":"../../../src","sources":["audio/errors.ts"],"mappings":";;AAAA,OAAO,MAAMA,cAAc,SAASC,KAAK,CAAC;EAC/BC,IAAI,GAAG,gBAAgB;EAChCC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;EAChB;AACF;AAEA,OAAO,SAASC,4BAA4BA,CAAA,EAAmB;EAC7D,OAAO,IAAIL,cAAc,CACvB,qRACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createGameAudio","GameAudioError"],"sourceRoot":"../../../src","sources":["audio/index.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,sBAAmB;AACnD,SAASC,cAAc,QAAQ,aAAU","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Injectable resolver for the optional `react-native-audio-api` peer.
|
|
5
|
+
*
|
|
6
|
+
* Production code calls `loadAudioApi()` which does a dynamic `import()`.
|
|
7
|
+
* Tests inject a fake via `__setAudioApiLoader` to simulate a missing peer
|
|
8
|
+
* without relying on a production fallback object.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
let loader = null;
|
|
12
|
+
export function __setAudioApiLoader(fn) {
|
|
13
|
+
loader = fn;
|
|
14
|
+
}
|
|
15
|
+
export async function loadAudioApi() {
|
|
16
|
+
if (loader) {
|
|
17
|
+
return loader();
|
|
18
|
+
}
|
|
19
|
+
// Dynamic import so `mock.module('react-native-audio-api', ...)` can intercept in tests
|
|
20
|
+
// and so importing `rn-gamekit/audio` does not eagerly load the native module.
|
|
21
|
+
const mod = await import('react-native-audio-api');
|
|
22
|
+
// The package re-exports AudioContext via `src/api.ts` -> `export * from './core/AudioContext'`
|
|
23
|
+
// and also via `src/index.ts`. Handle both shapes.
|
|
24
|
+
const AudioContext = mod.AudioContext ?? mod.default?.AudioContext ?? mod.AudioContext;
|
|
25
|
+
if (!AudioContext) {
|
|
26
|
+
throw new Error('AudioContext not found in react-native-audio-api — linking may have failed');
|
|
27
|
+
}
|
|
28
|
+
// GS-AUDIO-03: no synthesized no-op AudioManager. Interruption
|
|
29
|
+
// observation is an explicit optional capability: createGameAudio warns
|
|
30
|
+
// once and runs without it, so silence can never masquerade as support.
|
|
31
|
+
const AudioManager = mod.default?.AudioManager ?? mod.AudioManager ?? undefined;
|
|
32
|
+
return {
|
|
33
|
+
AudioContext: AudioContext,
|
|
34
|
+
AudioManager: AudioManager
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["loader","__setAudioApiLoader","fn","loadAudioApi","mod","AudioContext","default","Error","AudioManager","undefined"],"sourceRoot":"../../../src","sources":["audio/resolver.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AA+BA,IAAIA,MAA8C,GAAG,IAAI;AAEzD,OAAO,SAASC,mBAAmBA,CAACC,EAA0C,EAAQ;EACpFF,MAAM,GAAGE,EAAE;AACb;AAEA,OAAO,eAAeC,YAAYA,CAAA,EAA4B;EAC5D,IAAIH,MAAM,EAAE;IACV,OAAOA,MAAM,CAAC,CAAC;EACjB;EACA;EACA;EACA,MAAMI,GAAG,GAAI,MAAM,MAAM,CAAC,wBAAwB,CAGjD;EACD;EACA;EACA,MAAMC,YAAY,GACfD,GAAG,CAAkEC,YAAY,IACjFD,GAAG,CAAgFE,OAAO,EAAED,YAAY,IACxGD,GAAG,CAA+BC,YAAY;EACjD,IAAI,CAACA,YAAY,EAAE;IACjB,MAAM,IAAIE,KAAK,CAAC,4EAA4E,CAAC;EAC/F;EACA;EACA;EACA;EACA,MAAMC,YAAY,GACfJ,GAAG,CAAgFE,OAAO,EAAEE,YAAY,IACxGJ,GAAG,CAAkEI,YAAY,IAClFC,SAAS;EACX,OAAO;IACLJ,YAAY,EAAEA,YAA8C;IAC5DG,YAAY,EAAEA;EAChB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["audio/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Subpath entry for `rn-gamekit/audio`.
|
|
5
|
+
* Importing `rn-gamekit` or `rn-gamekit/react` must not load this module.
|
|
6
|
+
*/
|
|
7
|
+
export { createGameAudio } from "./audio/createGameAudio.js";
|
|
8
|
+
export { GameAudioError } from "./audio/errors.js";
|
|
9
|
+
//# sourceMappingURL=audio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createGameAudio","GameAudioError"],"sourceRoot":"../../src","sources":["audio.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,4BAAyB;AACzD,SAASC,cAAc,QAAQ,mBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Camera2D world-bounds clamping (T12.2).
|
|
5
|
+
*
|
|
6
|
+
* Keeps the visible camera region inside an authored world bound at the
|
|
7
|
+
* current zoom, using conservative enclosing-AABB containment for rotated
|
|
8
|
+
* views (frozen in T12.0): stable near boundaries, never jittering, and
|
|
9
|
+
* centering axes where the world is smaller than the view.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { assertFiniteNumber, assertNonnegativeSize, GeometryError } from "../geometry/validation.js";
|
|
13
|
+
import { assertValidCamera2D, assertValidLogicalView } from "./validation.js";
|
|
14
|
+
import { rotatedHalfExtents2D } from "./extents.js";
|
|
15
|
+
|
|
16
|
+
/** Half-extents of the rotated visible rect, in world units. */
|
|
17
|
+
export function cameraHalfExtents2D(camera, logicalView) {
|
|
18
|
+
return {
|
|
19
|
+
...rotatedHalfExtents2D(logicalView.width / 2 / camera.zoom, logicalView.height / 2 / camera.zoom, camera.rotationRadians)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function clampCenter(center, halfExtent, axisMin, axisMax) {
|
|
23
|
+
if (axisMax - axisMin < halfExtent * 2) {
|
|
24
|
+
return (axisMin + axisMax) / 2;
|
|
25
|
+
}
|
|
26
|
+
const min = axisMin + halfExtent;
|
|
27
|
+
const max = axisMax - halfExtent;
|
|
28
|
+
return center < min ? min : center > max ? max : center;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Clamp a camera so its visible region stays inside `worldBounds`.
|
|
33
|
+
*
|
|
34
|
+
* Conservative for rotated views: the enclosing AABB of the rotated
|
|
35
|
+
* visible rect is contained, so no part of the view leaves the world. An
|
|
36
|
+
* axis whose world is smaller than the view is centered rather than
|
|
37
|
+
* oscillating between impossible edges.
|
|
38
|
+
*/
|
|
39
|
+
export function clampCameraBounds2D(camera, worldBounds, logicalView) {
|
|
40
|
+
assertValidCamera2D(camera);
|
|
41
|
+
assertValidLogicalView(logicalView);
|
|
42
|
+
if (typeof worldBounds !== 'object' || worldBounds === null || Array.isArray(worldBounds)) {
|
|
43
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'worldBounds', `expected a rect record, got ${worldBounds === null ? 'null' : typeof worldBounds}`);
|
|
44
|
+
}
|
|
45
|
+
assertFiniteNumber(worldBounds.x, 'worldBounds.x');
|
|
46
|
+
assertFiniteNumber(worldBounds.y, 'worldBounds.y');
|
|
47
|
+
assertNonnegativeSize(worldBounds.width, 'worldBounds.width');
|
|
48
|
+
assertNonnegativeSize(worldBounds.height, 'worldBounds.height');
|
|
49
|
+
const extents = cameraHalfExtents2D(camera, logicalView);
|
|
50
|
+
return Object.freeze({
|
|
51
|
+
center: Object.freeze({
|
|
52
|
+
x: clampCenter(camera.center.x, extents.x, worldBounds.x, worldBounds.x + worldBounds.width),
|
|
53
|
+
y: clampCenter(camera.center.y, extents.y, worldBounds.y, worldBounds.y + worldBounds.height)
|
|
54
|
+
}),
|
|
55
|
+
zoom: camera.zoom,
|
|
56
|
+
rotationRadians: camera.rotationRadians
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["assertFiniteNumber","assertNonnegativeSize","GeometryError","assertValidCamera2D","assertValidLogicalView","rotatedHalfExtents2D","cameraHalfExtents2D","camera","logicalView","width","zoom","height","rotationRadians","clampCenter","center","halfExtent","axisMin","axisMax","min","max","clampCameraBounds2D","worldBounds","Array","isArray","x","y","extents","Object","freeze"],"sourceRoot":"../../../src","sources":["camera2d/bounds.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,kBAAkB,EAAEC,qBAAqB,EAAEC,aAAa,QAAQ,2BAAwB;AAEjG,SAASC,mBAAmB,EAAEC,sBAAsB,QAAQ,iBAAc;AAC1E,SAASC,oBAAoB,QAAQ,cAAW;;AAEhD;AACA,OAAO,SAASC,mBAAmBA,CAACC,MAAgB,EAAEC,WAAmB,EAA4B;EACnG,OAAO;IAAE,GAAGH,oBAAoB,CAACG,WAAW,CAACC,KAAK,GAAG,CAAC,GAAGF,MAAM,CAACG,IAAI,EAAEF,WAAW,CAACG,MAAM,GAAG,CAAC,GAAGJ,MAAM,CAACG,IAAI,EAAEH,MAAM,CAACK,eAAe;EAAE,CAAC;AACvI;AAEA,SAASC,WAAWA,CAACC,MAAc,EAAEC,UAAkB,EAAEC,OAAe,EAAEC,OAAe,EAAU;EACjG,IAAIA,OAAO,GAAGD,OAAO,GAAGD,UAAU,GAAG,CAAC,EAAE;IACtC,OAAO,CAACC,OAAO,GAAGC,OAAO,IAAI,CAAC;EAChC;EACA,MAAMC,GAAG,GAAGF,OAAO,GAAGD,UAAU;EAChC,MAAMI,GAAG,GAAGF,OAAO,GAAGF,UAAU;EAChC,OAAOD,MAAM,GAAGI,GAAG,GAAGA,GAAG,GAAGJ,MAAM,GAAGK,GAAG,GAAGA,GAAG,GAAGL,MAAM;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,mBAAmBA,CACjCb,MAAgB,EAChBc,WAAmB,EACnBb,WAAmB,EACT;EACVL,mBAAmB,CAACI,MAAM,CAAC;EAC3BH,sBAAsB,CAACI,WAAW,CAAC;EACnC,IACE,OAAOa,WAAW,KAAK,QAAQ,IAC/BA,WAAW,KAAK,IAAI,IACpBC,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,EAC1B;IACA,MAAM,IAAInB,aAAa,CACrB,yBAAyB,EACzB,aAAa,EACb,+BAA+BmB,WAAW,KAAK,IAAI,GAAG,MAAM,GAAG,OAAOA,WAAW,EACnF,CAAC;EACH;EACArB,kBAAkB,CAACqB,WAAW,CAACG,CAAC,EAAE,eAAe,CAAC;EAClDxB,kBAAkB,CAACqB,WAAW,CAACI,CAAC,EAAE,eAAe,CAAC;EAClDxB,qBAAqB,CAACoB,WAAW,CAACZ,KAAK,EAAE,mBAAmB,CAAC;EAC7DR,qBAAqB,CAACoB,WAAW,CAACV,MAAM,EAAE,oBAAoB,CAAC;EAE/D,MAAMe,OAAO,GAAGpB,mBAAmB,CAACC,MAAM,EAAEC,WAAW,CAAC;EACxD,OAAOmB,MAAM,CAACC,MAAM,CAAC;IACnBd,MAAM,EAAEa,MAAM,CAACC,MAAM,CAAC;MACpBJ,CAAC,EAAEX,WAAW,CAACN,MAAM,CAACO,MAAM,CAACU,CAAC,EAAEE,OAAO,CAACF,CAAC,EAAEH,WAAW,CAACG,CAAC,EAAEH,WAAW,CAACG,CAAC,GAAGH,WAAW,CAACZ,KAAK,CAAC;MAC5FgB,CAAC,EAAEZ,WAAW,CAACN,MAAM,CAACO,MAAM,CAACW,CAAC,EAAEC,OAAO,CAACD,CAAC,EAAEJ,WAAW,CAACI,CAAC,EAAEJ,WAAW,CAACI,CAAC,GAAGJ,WAAW,CAACV,MAAM;IAC9F,CAAC,CAAC;IACFD,IAAI,EAAEH,MAAM,CAACG,IAAI;IACjBE,eAAe,EAAEL,MAAM,CAACK;EAC1B,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Shared rotated half-extent arithmetic (GS-CAMERA-03).
|
|
5
|
+
*
|
|
6
|
+
* The conservative enclosing half-extents of a rotated visible rect:
|
|
7
|
+
* `ex = |hx·cosθ| + |hy·sinθ|`, `ey = |hx·sinθ| + |hy·cosθ|`.
|
|
8
|
+
*
|
|
9
|
+
* Trusted scalars only: no validation, no errors, worklet-safe. Callers
|
|
10
|
+
* validate at their own boundary (headless paths with the camera
|
|
11
|
+
* validators) or consume already-validated values (UI paths that must
|
|
12
|
+
* never construct errors per frame). Padding, parallax, and centering
|
|
13
|
+
* stay per-system and explicit.
|
|
14
|
+
*/
|
|
15
|
+
export function rotatedHalfExtents2D(halfWidth, halfHeight, rotationRadians) {
|
|
16
|
+
'worklet';
|
|
17
|
+
|
|
18
|
+
const cos = Math.abs(Math.cos(rotationRadians));
|
|
19
|
+
const sin = Math.abs(Math.sin(rotationRadians));
|
|
20
|
+
return {
|
|
21
|
+
x: halfWidth * cos + halfHeight * sin,
|
|
22
|
+
y: halfWidth * sin + halfHeight * cos
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=extents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["rotatedHalfExtents2D","halfWidth","halfHeight","rotationRadians","cos","Math","abs","sin","x","y"],"sourceRoot":"../../../src","sources":["camera2d/extents.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,oBAAoBA,CAClCC,SAAiB,EACjBC,UAAkB,EAClBC,eAAuB,EACqB;EAC5C,SAAS;;EACT,MAAMC,GAAG,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACD,GAAG,CAACD,eAAe,CAAC,CAAC;EAC/C,MAAMI,GAAG,GAAGF,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACJ,eAAe,CAAC,CAAC;EAC/C,OAAO;IACLK,CAAC,EAAEP,SAAS,GAAGG,GAAG,GAAGF,UAAU,GAAGK,GAAG;IACrCE,CAAC,EAAER,SAAS,GAAGM,GAAG,GAAGL,UAAU,GAAGE;EACpC,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Camera2D follow behavior (T12.2).
|
|
5
|
+
*
|
|
6
|
+
* Deterministic, headless follow helpers for game update code. They never
|
|
7
|
+
* read a React ref, device clock, frame callback, or global singleton;
|
|
8
|
+
* games call them inside the scene update and store the returned camera in
|
|
9
|
+
* scene state.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { assertFiniteNumber, assertNonnegativeSize, GeometryError } from "../geometry/validation.js";
|
|
13
|
+
import { assertFinitePoint2D, assertValidCamera2D } from "./validation.js";
|
|
14
|
+
function assertNonnegativeDeadZone(deadZone) {
|
|
15
|
+
if (typeof deadZone !== 'object' || deadZone === null || Array.isArray(deadZone)) {
|
|
16
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'deadZone', `expected a rect record, got ${deadZone === null ? 'null' : typeof deadZone}`);
|
|
17
|
+
}
|
|
18
|
+
const typed = deadZone;
|
|
19
|
+
assertFiniteNumber(typed.x, 'deadZone.x');
|
|
20
|
+
assertFiniteNumber(typed.y, 'deadZone.y');
|
|
21
|
+
assertNonnegativeSize(typed.width, 'deadZone.width');
|
|
22
|
+
assertNonnegativeSize(typed.height, 'deadZone.height');
|
|
23
|
+
}
|
|
24
|
+
function assertFollowOptionsShape(options) {
|
|
25
|
+
if (typeof options !== 'object' || options === null || Array.isArray(options)) {
|
|
26
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'options', `expected a follow options record, got ${options === null ? 'null' : typeof options}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function followFactor(halfLifeSeconds, deltaSeconds) {
|
|
30
|
+
if (!Number.isFinite(deltaSeconds) || !(deltaSeconds > 0)) {
|
|
31
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'deltaSeconds', `expected a finite positive step, got ${String(deltaSeconds)}`);
|
|
32
|
+
}
|
|
33
|
+
return 1 - Math.pow(0.5, deltaSeconds / halfLifeSeconds);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Compute the next camera for a follow target.
|
|
38
|
+
*
|
|
39
|
+
* - Without options: direct follow — the camera center becomes the target.
|
|
40
|
+
* - With a dead zone: the camera moves only when the target crosses the
|
|
41
|
+
* zone edge, by exactly the amount needed to bring the target back to
|
|
42
|
+
* the edge.
|
|
43
|
+
* - `perAxis` disables following on either axis.
|
|
44
|
+
* - `dampingHalfLifeSeconds` blends toward the desired center with a
|
|
45
|
+
* half-life model; equivalent fixed-step schedules produce equivalent
|
|
46
|
+
* results.
|
|
47
|
+
*/
|
|
48
|
+
export function followCamera2D(camera, target, options, deltaSeconds) {
|
|
49
|
+
assertValidCamera2D(camera);
|
|
50
|
+
assertFinitePoint2D(target, 'target');
|
|
51
|
+
if (options !== undefined) {
|
|
52
|
+
assertFollowOptionsShape(options);
|
|
53
|
+
}
|
|
54
|
+
const perAxis = options?.perAxis;
|
|
55
|
+
if (perAxis !== undefined) {
|
|
56
|
+
// T12-SF3: the per-axis options must be a non-array record before any
|
|
57
|
+
// field is read.
|
|
58
|
+
if (typeof perAxis !== 'object' || perAxis === null || Array.isArray(perAxis)) {
|
|
59
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'perAxis', `expected a per-axis record, got ${perAxis === null ? 'null' : typeof perAxis}`);
|
|
60
|
+
}
|
|
61
|
+
const x = perAxis.x;
|
|
62
|
+
const y = perAxis.y;
|
|
63
|
+
if (x !== undefined && typeof x !== 'boolean') {
|
|
64
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'perAxis.x', `expected a boolean, got ${String(x)}`);
|
|
65
|
+
}
|
|
66
|
+
if (y !== undefined && typeof y !== 'boolean') {
|
|
67
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'perAxis.y', `expected a boolean, got ${String(y)}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const perAxisX = options?.perAxis?.x ?? true;
|
|
71
|
+
const perAxisY = options?.perAxis?.y ?? true;
|
|
72
|
+
const deadZone = options?.deadZone;
|
|
73
|
+
if (deadZone !== undefined) {
|
|
74
|
+
assertNonnegativeDeadZone(deadZone);
|
|
75
|
+
}
|
|
76
|
+
const halfLife = options?.dampingHalfLifeSeconds;
|
|
77
|
+
if (halfLife !== undefined) {
|
|
78
|
+
assertFiniteNumber(halfLife, 'dampingHalfLifeSeconds');
|
|
79
|
+
if (!(halfLife > 0)) {
|
|
80
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'dampingHalfLifeSeconds', `expected a finite positive half-life, got ${String(halfLife)}`);
|
|
81
|
+
}
|
|
82
|
+
if (deltaSeconds === undefined) {
|
|
83
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'deltaSeconds', 'damping requires an explicit fixed-step deltaSeconds');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const center = camera.center;
|
|
87
|
+
const desired = {
|
|
88
|
+
x: center.x,
|
|
89
|
+
y: center.y
|
|
90
|
+
};
|
|
91
|
+
if (deadZone === undefined) {
|
|
92
|
+
desired.x = target.x;
|
|
93
|
+
desired.y = target.y;
|
|
94
|
+
} else {
|
|
95
|
+
const minX = center.x + deadZone.x;
|
|
96
|
+
const maxX = minX + deadZone.width;
|
|
97
|
+
const minY = center.y + deadZone.y;
|
|
98
|
+
const maxY = minY + deadZone.height;
|
|
99
|
+
if (target.x > maxX) {
|
|
100
|
+
desired.x = target.x - deadZone.width - deadZone.x;
|
|
101
|
+
} else if (target.x < minX) {
|
|
102
|
+
desired.x = target.x - deadZone.x;
|
|
103
|
+
}
|
|
104
|
+
if (target.y > maxY) {
|
|
105
|
+
desired.y = target.y - deadZone.height - deadZone.y;
|
|
106
|
+
} else if (target.y < minY) {
|
|
107
|
+
desired.y = target.y - deadZone.y;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (!perAxisX) {
|
|
111
|
+
desired.x = center.x;
|
|
112
|
+
}
|
|
113
|
+
if (!perAxisY) {
|
|
114
|
+
desired.y = center.y;
|
|
115
|
+
}
|
|
116
|
+
let nextCenter;
|
|
117
|
+
if (halfLife !== undefined && deltaSeconds !== undefined) {
|
|
118
|
+
const factor = followFactor(halfLife, deltaSeconds);
|
|
119
|
+
nextCenter = {
|
|
120
|
+
x: center.x + (desired.x - center.x) * factor,
|
|
121
|
+
y: center.y + (desired.y - center.y) * factor
|
|
122
|
+
};
|
|
123
|
+
} else {
|
|
124
|
+
nextCenter = desired;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// T12-F6: every public helper returns a frozen value; the caller's
|
|
128
|
+
// camera is never aliased or mutated.
|
|
129
|
+
return Object.freeze({
|
|
130
|
+
center: Object.freeze({
|
|
131
|
+
x: nextCenter.x,
|
|
132
|
+
y: nextCenter.y
|
|
133
|
+
}),
|
|
134
|
+
zoom: camera.zoom,
|
|
135
|
+
rotationRadians: camera.rotationRadians
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=follow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["assertFiniteNumber","assertNonnegativeSize","GeometryError","assertFinitePoint2D","assertValidCamera2D","assertNonnegativeDeadZone","deadZone","Array","isArray","typed","x","y","width","height","assertFollowOptionsShape","options","followFactor","halfLifeSeconds","deltaSeconds","Number","isFinite","String","Math","pow","followCamera2D","camera","target","undefined","perAxis","perAxisX","perAxisY","halfLife","dampingHalfLifeSeconds","center","desired","minX","maxX","minY","maxY","nextCenter","factor","Object","freeze","zoom","rotationRadians"],"sourceRoot":"../../../src","sources":["camera2d/follow.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Camera2D — the opt-in 2D camera system (Task 12).
|
|
5
|
+
*
|
|
6
|
+
* Pure, headless, native-free camera math shared by rendering and pointer
|
|
7
|
+
* input: immutable camera values, forward and inverse transforms, follow,
|
|
8
|
+
* bounds clamping, deterministic shake, presentation interpolation, and
|
|
9
|
+
* conservative visibility culling. The React integration
|
|
10
|
+
* (`defineGameCamera2D`, `GameView`, `GameWorld2D`, `GameLayer2D`) lives in
|
|
11
|
+
* `src/react/`.
|
|
12
|
+
*/
|
|
13
|
+
export { createCamera2D, getCameraVisibleBounds2D, logicalToWorld2D, worldToLogical2D, worldToSurface2D, surfaceToWorld2D } from "./transform.js";
|
|
14
|
+
export { interpolateCamera2D, interpolateCameraScalar2D, shortestRotationDelta2D } from "./interpolation.js";
|
|
15
|
+
export { followCamera2D } from "./follow.js";
|
|
16
|
+
export { clampCameraBounds2D, cameraHalfExtents2D } from "./bounds.js";
|
|
17
|
+
export { rotatedHalfExtents2D } from "./extents.js";
|
|
18
|
+
export { sampleCameraShake2D } from "./shake.js";
|
|
19
|
+
export { filterCameraVisible2D, intersectsCameraView2D, paddedCameraBounds2D } from "./visibility.js";
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createCamera2D","getCameraVisibleBounds2D","logicalToWorld2D","worldToLogical2D","worldToSurface2D","surfaceToWorld2D","interpolateCamera2D","interpolateCameraScalar2D","shortestRotationDelta2D","followCamera2D","clampCameraBounds2D","cameraHalfExtents2D","rotatedHalfExtents2D","sampleCameraShake2D","filterCameraVisible2D","intersectsCameraView2D","paddedCameraBounds2D"],"sourceRoot":"../../../src","sources":["camera2d/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,cAAc,EAAEC,wBAAwB,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAQ,gBAAa;AAC9I,SAASC,mBAAmB,EAAEC,yBAAyB,EAAEC,uBAAuB,QAAQ,oBAAiB;AACzG,SAASC,cAAc,QAAQ,aAAU;AACzC,SAASC,mBAAmB,EAAEC,mBAAmB,QAAQ,aAAU;AACnE,SAASC,oBAAoB,QAAQ,cAAW;AAChD,SAASC,mBAAmB,QAAQ,YAAS;AAC7C,SACEC,qBAAqB,EACrBC,sBAAsB,EACtBC,oBAAoB,QAEf,iBAAc","ignoreList":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Camera2D presentation interpolation (T12.2, T12.3).
|
|
5
|
+
*
|
|
6
|
+
* The public `interpolateCamera2D` validates its inputs and returns a
|
|
7
|
+
* frozen camera. The internal `interpolateCameraScalar2D` is the trusted
|
|
8
|
+
* display-frequency projector: its COMPLETE call graph is workletized (no
|
|
9
|
+
* validation, no structured error construction, the shortest-arc math is
|
|
10
|
+
* inline), so the UI runtime can call it from the camera presentation
|
|
11
|
+
* worklet without crossing runtimes (T12-F2). Callers validate selector
|
|
12
|
+
* output at the JS commit boundary before publishing shared values.
|
|
13
|
+
*/
|
|
14
|
+
import { assertFiniteNumber, GeometryError } from "../geometry/validation.js";
|
|
15
|
+
import { assertCameraShape } from "./validation.js";
|
|
16
|
+
function assertCutShape(cut, field) {
|
|
17
|
+
if (typeof cut !== 'object' || cut === null || Array.isArray(cut)) {
|
|
18
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', field, `expected a camera cut record, got ${cut === null ? 'null' : typeof cut}`);
|
|
19
|
+
}
|
|
20
|
+
assertFiniteNumber(cut.cutId, `${field}.cutId`);
|
|
21
|
+
const camera = cut.camera;
|
|
22
|
+
assertCameraShape(camera, `${field}.camera`);
|
|
23
|
+
const cameraField = `${field}.camera`;
|
|
24
|
+
assertFiniteNumber(camera.center.x, `${cameraField}.center.x`);
|
|
25
|
+
assertFiniteNumber(camera.center.y, `${cameraField}.center.y`);
|
|
26
|
+
assertFiniteNumber(camera.zoom, `${cameraField}.zoom`);
|
|
27
|
+
if (!(camera.zoom > 0)) {
|
|
28
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', `${cameraField}.zoom`, `expected a finite zoom greater than zero, got ${String(camera.zoom)}`);
|
|
29
|
+
}
|
|
30
|
+
assertFiniteNumber(camera.rotationRadians, `${cameraField}.rotationRadians`);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Trusted scalar projector (worklet-safe): interpolates center and zoom
|
|
35
|
+
* linearly and rotation across the shortest angular arc. A changed `cutId`
|
|
36
|
+
* (or an absent previous cut) snaps to the current camera. No validation,
|
|
37
|
+
* no allocation of structured errors.
|
|
38
|
+
*/
|
|
39
|
+
export function interpolateCameraScalar2D(previous, current, alpha) {
|
|
40
|
+
'worklet';
|
|
41
|
+
|
|
42
|
+
if (previous === undefined || previous.cutId !== current.cutId) {
|
|
43
|
+
return current.camera;
|
|
44
|
+
}
|
|
45
|
+
const from = previous.camera;
|
|
46
|
+
const to = current.camera;
|
|
47
|
+
let delta = (to.rotationRadians - from.rotationRadians) % (Math.PI * 2);
|
|
48
|
+
if (delta > Math.PI) {
|
|
49
|
+
delta -= Math.PI * 2;
|
|
50
|
+
} else if (delta < -Math.PI) {
|
|
51
|
+
delta += Math.PI * 2;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
center: {
|
|
55
|
+
x: from.center.x + (to.center.x - from.center.x) * alpha,
|
|
56
|
+
y: from.center.y + (to.center.y - from.center.y) * alpha
|
|
57
|
+
},
|
|
58
|
+
zoom: from.zoom + (to.zoom - from.zoom) * alpha,
|
|
59
|
+
rotationRadians: from.rotationRadians + delta * alpha
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** The shortest signed angular difference from `from` to `to`. */
|
|
64
|
+
export function shortestRotationDelta2D(from, to) {
|
|
65
|
+
let delta = (to - from) % (Math.PI * 2);
|
|
66
|
+
if (delta > Math.PI) {
|
|
67
|
+
delta -= Math.PI * 2;
|
|
68
|
+
} else if (delta < -Math.PI) {
|
|
69
|
+
delta += Math.PI * 2;
|
|
70
|
+
}
|
|
71
|
+
return delta;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Public interpolated camera: validates every input, clamps the alpha
|
|
76
|
+
* policy (reject outside `[0, 1]`), and returns a frozen value. Delegates
|
|
77
|
+
* to the trusted scalar projector.
|
|
78
|
+
*/
|
|
79
|
+
export function interpolateCamera2D(previous, current, alpha) {
|
|
80
|
+
assertCutShape(current, 'current');
|
|
81
|
+
if (previous !== undefined) {
|
|
82
|
+
assertCutShape(previous, 'previous');
|
|
83
|
+
}
|
|
84
|
+
assertFiniteNumber(alpha, 'alpha');
|
|
85
|
+
if (alpha < 0 || alpha > 1) {
|
|
86
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'alpha', `expected alpha in [0, 1], got ${String(alpha)}`);
|
|
87
|
+
}
|
|
88
|
+
const interpolated = interpolateCameraScalar2D(previous, current, alpha);
|
|
89
|
+
return Object.freeze({
|
|
90
|
+
center: Object.freeze({
|
|
91
|
+
x: interpolated.center.x,
|
|
92
|
+
y: interpolated.center.y
|
|
93
|
+
}),
|
|
94
|
+
zoom: interpolated.zoom,
|
|
95
|
+
rotationRadians: interpolated.rotationRadians
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=interpolation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["assertFiniteNumber","GeometryError","assertCameraShape","assertCutShape","cut","field","Array","isArray","cutId","camera","cameraField","center","x","y","zoom","String","rotationRadians","interpolateCameraScalar2D","previous","current","alpha","undefined","from","to","delta","Math","PI","shortestRotationDelta2D","interpolateCamera2D","interpolated","Object","freeze"],"sourceRoot":"../../../src","sources":["camera2d/interpolation.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Camera2D deterministic shake (T12.2).
|
|
5
|
+
*
|
|
6
|
+
* Shake is reproducible from explicit state: a seed, elapsed simulation
|
|
7
|
+
* time, duration, and amplitude. No `Math.random()` anywhere. The sampler
|
|
8
|
+
* returns the unmodified base camera at and after the duration, and never
|
|
9
|
+
* mutates its input. Presentation applies the offset to the presented
|
|
10
|
+
* camera, so pointer inversion (which uses the same presented camera)
|
|
11
|
+
* keeps visible targets touchable.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { assertValidCamera2D } from "./validation.js";
|
|
15
|
+
import { assertFiniteNumber, assertNonnegativeSize, GeometryError } from "../geometry/validation.js";
|
|
16
|
+
function assertValidShakeOptions(options) {
|
|
17
|
+
if (typeof options !== 'object' || options === null || Array.isArray(options)) {
|
|
18
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'options', `expected a shake options record, got ${options === null ? 'null' : typeof options}`);
|
|
19
|
+
}
|
|
20
|
+
assertFiniteNumber(options.seed, 'seed');
|
|
21
|
+
assertFiniteNumber(options.elapsedSeconds, 'elapsedSeconds');
|
|
22
|
+
if (!(options.elapsedSeconds >= 0)) {
|
|
23
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'elapsedSeconds', `expected a nonnegative elapsed time, got ${String(options.elapsedSeconds)}`);
|
|
24
|
+
}
|
|
25
|
+
assertFiniteNumber(options.durationSeconds, 'durationSeconds');
|
|
26
|
+
if (!(options.durationSeconds > 0)) {
|
|
27
|
+
throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'durationSeconds', `expected a positive duration, got ${String(options.durationSeconds)}`);
|
|
28
|
+
}
|
|
29
|
+
assertNonnegativeSize(options.amplitude, 'amplitude');
|
|
30
|
+
if (options.frequency !== undefined) {
|
|
31
|
+
assertFiniteNumber(options.frequency, 'frequency');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Deterministic per-axis phase from the seed (never a wall-clock read). */
|
|
36
|
+
function phaseOf(seed, axis) {
|
|
37
|
+
const raw = Math.sin(seed * 12.9898 + axis * 78.233) * 43758.5453;
|
|
38
|
+
const fraction = raw - Math.floor(raw);
|
|
39
|
+
return fraction * Math.PI * 2;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Sample the presented camera offset for a shake.
|
|
44
|
+
*
|
|
45
|
+
* The offset decays linearly to zero over `durationSeconds`; at and after
|
|
46
|
+
* the duration the base camera is returned unchanged. Equal options
|
|
47
|
+
* produce equal results.
|
|
48
|
+
*/
|
|
49
|
+
export function sampleCameraShake2D(base, options) {
|
|
50
|
+
assertValidCamera2D(base);
|
|
51
|
+
assertValidShakeOptions(options);
|
|
52
|
+
const {
|
|
53
|
+
seed,
|
|
54
|
+
elapsedSeconds,
|
|
55
|
+
durationSeconds,
|
|
56
|
+
amplitude,
|
|
57
|
+
frequency = Math.PI * 2
|
|
58
|
+
} = options;
|
|
59
|
+
if (elapsedSeconds >= durationSeconds || amplitude === 0) {
|
|
60
|
+
// T12-F6: even the endpoint returns a frozen copy — never the caller's
|
|
61
|
+
// base object by identity.
|
|
62
|
+
return Object.freeze({
|
|
63
|
+
center: Object.freeze({
|
|
64
|
+
x: base.center.x,
|
|
65
|
+
y: base.center.y
|
|
66
|
+
}),
|
|
67
|
+
zoom: base.zoom,
|
|
68
|
+
rotationRadians: base.rotationRadians
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const envelope = 1 - elapsedSeconds / durationSeconds;
|
|
72
|
+
const offset = {
|
|
73
|
+
x: Math.sin(elapsedSeconds * frequency + phaseOf(seed, 1)) * amplitude * envelope,
|
|
74
|
+
y: Math.sin(elapsedSeconds * frequency + phaseOf(seed, 2)) * amplitude * envelope
|
|
75
|
+
};
|
|
76
|
+
return Object.freeze({
|
|
77
|
+
center: Object.freeze({
|
|
78
|
+
x: base.center.x + offset.x,
|
|
79
|
+
y: base.center.y + offset.y
|
|
80
|
+
}),
|
|
81
|
+
zoom: base.zoom,
|
|
82
|
+
rotationRadians: base.rotationRadians
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=shake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["assertValidCamera2D","assertFiniteNumber","assertNonnegativeSize","GeometryError","assertValidShakeOptions","options","Array","isArray","seed","elapsedSeconds","String","durationSeconds","amplitude","frequency","undefined","phaseOf","axis","raw","Math","sin","fraction","floor","PI","sampleCameraShake2D","base","Object","freeze","center","x","y","zoom","rotationRadians","envelope","offset"],"sourceRoot":"../../../src","sources":["camera2d/shake.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,mBAAmB,QAAQ,iBAAc;AAClD,SAASC,kBAAkB,EAAEC,qBAAqB,EAAEC,aAAa,QAAQ,2BAAwB;AAEjG,SAASC,uBAAuBA,CAACC,OAA6B,EAAQ;EACpE,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,IAAIC,KAAK,CAACC,OAAO,CAACF,OAAO,CAAC,EAAE;IAC7E,MAAM,IAAIF,aAAa,CACrB,yBAAyB,EACzB,SAAS,EACT,wCAAwCE,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,OAAOA,OAAO,EACpF,CAAC;EACH;EACAJ,kBAAkB,CAACI,OAAO,CAACG,IAAI,EAAE,MAAM,CAAC;EACxCP,kBAAkB,CAACI,OAAO,CAACI,cAAc,EAAE,gBAAgB,CAAC;EAC5D,IAAI,EAAEJ,OAAO,CAACI,cAAc,IAAI,CAAC,CAAC,EAAE;IAClC,MAAM,IAAIN,aAAa,CACrB,yBAAyB,EACzB,gBAAgB,EAChB,4CAA4CO,MAAM,CAACL,OAAO,CAACI,cAAc,CAAC,EAC5E,CAAC;EACH;EACAR,kBAAkB,CAACI,OAAO,CAACM,eAAe,EAAE,iBAAiB,CAAC;EAC9D,IAAI,EAAEN,OAAO,CAACM,eAAe,GAAG,CAAC,CAAC,EAAE;IAClC,MAAM,IAAIR,aAAa,CACrB,yBAAyB,EACzB,iBAAiB,EACjB,qCAAqCO,MAAM,CAACL,OAAO,CAACM,eAAe,CAAC,EACtE,CAAC;EACH;EACAT,qBAAqB,CAACG,OAAO,CAACO,SAAS,EAAE,WAAW,CAAC;EACrD,IAAIP,OAAO,CAACQ,SAAS,KAAKC,SAAS,EAAE;IACnCb,kBAAkB,CAACI,OAAO,CAACQ,SAAS,EAAE,WAAW,CAAC;EACpD;AACF;;AAEA;AACA,SAASE,OAAOA,CAACP,IAAY,EAAEQ,IAAY,EAAU;EACnD,MAAMC,GAAG,GAAGC,IAAI,CAACC,GAAG,CAACX,IAAI,GAAG,OAAO,GAAGQ,IAAI,GAAG,MAAM,CAAC,GAAG,UAAU;EACjE,MAAMI,QAAQ,GAAGH,GAAG,GAAGC,IAAI,CAACG,KAAK,CAACJ,GAAG,CAAC;EACtC,OAAOG,QAAQ,GAAGF,IAAI,CAACI,EAAE,GAAG,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CACjCC,IAAc,EACdnB,OAA6B,EACnB;EACVL,mBAAmB,CAACwB,IAAI,CAAC;EACzBpB,uBAAuB,CAACC,OAAO,CAAC;EAEhC,MAAM;IAAEG,IAAI;IAAEC,cAAc;IAAEE,eAAe;IAAEC,SAAS;IAAEC,SAAS,GAAGK,IAAI,CAACI,EAAE,GAAG;EAAE,CAAC,GAAGjB,OAAO;EAC7F,IAAII,cAAc,IAAIE,eAAe,IAAIC,SAAS,KAAK,CAAC,EAAE;IACxD;IACA;IACA,OAAOa,MAAM,CAACC,MAAM,CAAC;MACnBC,MAAM,EAAEF,MAAM,CAACC,MAAM,CAAC;QAAEE,CAAC,EAAEJ,IAAI,CAACG,MAAM,CAACC,CAAC;QAAEC,CAAC,EAAEL,IAAI,CAACG,MAAM,CAACE;MAAE,CAAC,CAAC;MAC7DC,IAAI,EAAEN,IAAI,CAACM,IAAI;MACfC,eAAe,EAAEP,IAAI,CAACO;IACxB,CAAC,CAAC;EACJ;EACA,MAAMC,QAAQ,GAAG,CAAC,GAAGvB,cAAc,GAAGE,eAAe;EACrD,MAAMsB,MAAM,GAAG;IACbL,CAAC,EAAEV,IAAI,CAACC,GAAG,CAACV,cAAc,GAAGI,SAAS,GAAGE,OAAO,CAACP,IAAI,EAAE,CAAC,CAAC,CAAC,GAAGI,SAAS,GAAGoB,QAAQ;IACjFH,CAAC,EAAEX,IAAI,CAACC,GAAG,CAACV,cAAc,GAAGI,SAAS,GAAGE,OAAO,CAACP,IAAI,EAAE,CAAC,CAAC,CAAC,GAAGI,SAAS,GAAGoB;EAC3E,CAAC;EACD,OAAOP,MAAM,CAACC,MAAM,CAAC;IACnBC,MAAM,EAAEF,MAAM,CAACC,MAAM,CAAC;MACpBE,CAAC,EAAEJ,IAAI,CAACG,MAAM,CAACC,CAAC,GAAGK,MAAM,CAACL,CAAC;MAC3BC,CAAC,EAAEL,IAAI,CAACG,MAAM,CAACE,CAAC,GAAGI,MAAM,CAACJ;IAC5B,CAAC,CAAC;IACFC,IAAI,EAAEN,IAAI,CAACM,IAAI;IACfC,eAAe,EAAEP,IAAI,CAACO;EACxB,CAAC,CAAC;AACJ","ignoreList":[]}
|