murow 0.0.70 → 0.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -37
- package/dist/cjs/core/binary-codec/binary-codec.js +1 -0
- package/dist/cjs/core/binary-codec/index.js +1 -0
- package/dist/cjs/core/driver/driver.js +1 -0
- package/dist/cjs/core/driver/drivers/immediate.js +1 -0
- package/dist/cjs/core/driver/drivers/index.js +1 -0
- package/dist/cjs/core/driver/drivers/raf.js +1 -0
- package/dist/cjs/core/driver/drivers/timeout.js +1 -0
- package/dist/cjs/core/driver/index.js +1 -0
- package/dist/cjs/core/events/event-system.js +1 -0
- package/dist/cjs/core/events/index.js +1 -0
- package/dist/cjs/core/fixed-ticker/fixed-ticker.js +1 -0
- package/dist/cjs/core/fixed-ticker/index.js +1 -0
- package/dist/cjs/core/free-list/free-list.js +1 -0
- package/dist/cjs/core/free-list/index.js +1 -0
- package/dist/cjs/core/generate-id/generate-id.js +1 -0
- package/dist/cjs/core/generate-id/index.js +1 -0
- package/dist/cjs/core/index.js +1 -0
- package/dist/cjs/core/input/index.js +1 -0
- package/dist/cjs/core/input/manager.js +1 -0
- package/dist/cjs/core/input/sources/browser.js +1 -0
- package/dist/cjs/core/input/sources/index.js +1 -0
- package/dist/cjs/core/input/types.js +1 -0
- package/dist/cjs/core/lerp/index.js +1 -0
- package/dist/cjs/core/lerp/lerp.js +1 -0
- package/dist/cjs/core/navmesh/index.js +1 -0
- package/dist/cjs/core/navmesh/navmesh-worker-pool.js +1 -0
- package/dist/cjs/core/navmesh/navmesh.js +1 -0
- package/dist/cjs/core/navmesh/navmesh.worker.js +1 -0
- package/dist/cjs/core/pooled-codec/index.js +1 -0
- package/dist/cjs/core/pooled-codec/pooled-codec.js +1 -0
- package/dist/cjs/core/prediction/index.js +1 -0
- package/dist/cjs/core/prediction/prediction.js +1 -0
- package/dist/cjs/core/ray/index.js +1 -0
- package/dist/cjs/core/ray/ray-2d.js +1 -0
- package/dist/cjs/core/ray/ray-3d.js +1 -0
- package/dist/cjs/core/simple-rng/index.js +1 -0
- package/dist/cjs/core/simple-rng/simple-rng.js +1 -0
- package/dist/cjs/core/sparse-batcher/index.js +1 -0
- package/dist/cjs/core/sparse-batcher/sparse-batcher.js +1 -0
- package/dist/cjs/ecs/component-store.js +1 -0
- package/dist/cjs/ecs/component.js +1 -0
- package/dist/cjs/ecs/entity-handle.js +1 -0
- package/dist/cjs/ecs/index.js +1 -0
- package/dist/cjs/ecs/system-builder.js +1 -0
- package/dist/cjs/ecs/world-systems.js +1 -0
- package/dist/cjs/ecs/world.js +1 -0
- package/dist/cjs/game/index.js +1 -0
- package/dist/cjs/game/loop/index.js +1 -0
- package/dist/cjs/game/loop/loop.js +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/net/adapters/browser-websocket.js +1 -0
- package/dist/cjs/net/adapters/bun-websocket.js +1 -0
- package/dist/cjs/net/buffer-pool.js +1 -0
- package/dist/cjs/net/client.js +1 -0
- package/dist/cjs/net/index.js +1 -0
- package/dist/cjs/net/server.js +1 -0
- package/dist/cjs/net/types.js +1 -0
- package/dist/cjs/net/validators.js +1 -0
- package/dist/cjs/protocol/index.js +1 -0
- package/dist/cjs/protocol/intent/define-intent.js +1 -0
- package/dist/cjs/protocol/intent/index.js +1 -0
- package/dist/cjs/protocol/intent/intent-registry.js +1 -0
- package/dist/cjs/protocol/intent/intent.js +1 -0
- package/dist/cjs/protocol/rpc/define-rpc.js +1 -0
- package/dist/cjs/protocol/rpc/index.js +1 -0
- package/dist/cjs/protocol/rpc/rpc-registry.js +1 -0
- package/dist/cjs/protocol/rpc/rpc.js +1 -0
- package/dist/cjs/protocol/snapshot/index.js +1 -0
- package/dist/cjs/protocol/snapshot/snapshot-codec.js +1 -0
- package/dist/cjs/protocol/snapshot/snapshot-registry.js +1 -0
- package/dist/cjs/protocol/snapshot/snapshot.js +1 -0
- package/dist/cjs/renderer/base-2d-renderer.js +1 -0
- package/dist/cjs/renderer/base-3d-renderer.js +1 -0
- package/dist/cjs/renderer/base-renderer.js +1 -0
- package/dist/cjs/renderer/index.js +1 -0
- package/dist/cjs/renderer/types.js +1 -0
- package/dist/esm/core/binary-codec/binary-codec.js +1 -0
- package/dist/esm/core/binary-codec/index.js +1 -0
- package/dist/esm/core/driver/driver.js +1 -0
- package/dist/esm/core/driver/drivers/immediate.js +1 -0
- package/dist/esm/core/driver/drivers/index.js +1 -0
- package/dist/esm/core/driver/drivers/raf.js +1 -0
- package/dist/esm/core/driver/drivers/timeout.js +1 -0
- package/dist/esm/core/driver/index.js +1 -0
- package/dist/esm/core/events/event-system.js +1 -0
- package/dist/esm/core/events/index.js +1 -0
- package/dist/esm/core/fixed-ticker/fixed-ticker.js +1 -0
- package/dist/esm/core/fixed-ticker/index.js +1 -0
- package/dist/esm/core/free-list/free-list.js +1 -0
- package/dist/esm/core/free-list/index.js +1 -0
- package/dist/esm/core/generate-id/generate-id.js +1 -0
- package/dist/esm/core/generate-id/index.js +1 -0
- package/dist/esm/core/index.js +1 -0
- package/dist/esm/core/input/index.js +1 -0
- package/dist/esm/core/input/manager.js +1 -0
- package/dist/esm/core/input/sources/browser.js +1 -0
- package/dist/esm/core/input/sources/index.js +1 -0
- package/dist/esm/core/input/types.js +0 -0
- package/dist/esm/core/lerp/index.js +1 -0
- package/dist/esm/core/lerp/lerp.js +1 -0
- package/dist/esm/core/navmesh/index.js +1 -0
- package/dist/esm/core/navmesh/navmesh-worker-pool.js +1 -0
- package/dist/esm/core/navmesh/navmesh.js +1 -0
- package/dist/esm/core/navmesh/navmesh.worker.js +1 -0
- package/dist/esm/core/pooled-codec/index.js +1 -0
- package/dist/esm/core/pooled-codec/pooled-codec.js +1 -0
- package/dist/esm/core/prediction/index.js +1 -0
- package/dist/esm/core/prediction/prediction.js +1 -0
- package/dist/esm/core/ray/index.js +1 -0
- package/dist/esm/core/ray/ray-2d.js +1 -0
- package/dist/esm/core/ray/ray-3d.js +1 -0
- package/dist/esm/core/simple-rng/index.js +1 -0
- package/dist/esm/core/simple-rng/simple-rng.js +1 -0
- package/dist/esm/core/sparse-batcher/index.js +1 -0
- package/dist/esm/core/sparse-batcher/sparse-batcher.js +1 -0
- package/dist/esm/ecs/component-store.js +1 -0
- package/dist/esm/ecs/component.js +1 -0
- package/dist/esm/ecs/entity-handle.js +1 -0
- package/dist/esm/ecs/index.js +1 -0
- package/dist/esm/ecs/system-builder.js +1 -0
- package/dist/esm/ecs/world-systems.js +1 -0
- package/dist/esm/ecs/world.js +1 -0
- package/dist/esm/game/index.js +1 -0
- package/dist/esm/game/loop/index.js +1 -0
- package/dist/esm/game/loop/loop.js +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/net/adapters/browser-websocket.js +1 -0
- package/dist/esm/net/adapters/bun-websocket.js +1 -0
- package/dist/esm/net/buffer-pool.js +1 -0
- package/dist/esm/net/client.js +1 -0
- package/dist/esm/net/index.js +1 -0
- package/dist/esm/net/server.js +1 -0
- package/dist/esm/net/types.js +1 -0
- package/dist/esm/net/validators.js +1 -0
- package/dist/esm/protocol/index.js +1 -0
- package/dist/esm/protocol/intent/define-intent.js +1 -0
- package/dist/esm/protocol/intent/index.js +1 -0
- package/dist/esm/protocol/intent/intent-registry.js +1 -0
- package/dist/esm/protocol/intent/intent.js +0 -0
- package/dist/esm/protocol/rpc/define-rpc.js +1 -0
- package/dist/esm/protocol/rpc/index.js +1 -0
- package/dist/esm/protocol/rpc/rpc-registry.js +1 -0
- package/dist/esm/protocol/rpc/rpc.js +0 -0
- package/dist/esm/protocol/snapshot/index.js +1 -0
- package/dist/esm/protocol/snapshot/snapshot-codec.js +1 -0
- package/dist/esm/protocol/snapshot/snapshot-registry.js +1 -0
- package/dist/esm/protocol/snapshot/snapshot.js +1 -0
- package/dist/esm/renderer/base-2d-renderer.js +1 -0
- package/dist/esm/renderer/base-3d-renderer.js +1 -0
- package/dist/esm/renderer/base-renderer.js +1 -0
- package/dist/esm/renderer/index.js +1 -0
- package/dist/esm/renderer/types.js +0 -0
- package/dist/{core → types/core}/binary-codec/binary-codec.d.ts +4 -0
- package/dist/{core → types/core}/events/event-system.d.ts +14 -33
- package/dist/types/core/free-list/free-list.d.ts +31 -0
- package/dist/types/core/free-list/index.d.ts +1 -0
- package/dist/{core → types/core}/index.d.ts +5 -0
- package/dist/{core → types/core}/input/index.d.ts +1 -0
- package/dist/{core → types/core}/input/manager.d.ts +2 -0
- package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
- package/dist/types/core/ray/index.d.ts +2 -0
- package/dist/types/core/ray/ray-2d.d.ts +37 -0
- package/dist/types/core/ray/ray-3d.d.ts +42 -0
- package/dist/types/core/simple-rng/index.d.ts +1 -0
- package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
- package/dist/types/core/sparse-batcher/index.d.ts +1 -0
- package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
- package/dist/{ecs → types/ecs}/world.d.ts +11 -0
- package/dist/{game → types/game}/loop/loop.d.ts +33 -29
- package/dist/{index.d.ts → types/index.d.ts} +1 -0
- package/dist/{net → types/net}/index.d.ts +2 -2
- package/dist/types/renderer/base-2d-renderer.d.ts +13 -0
- package/dist/types/renderer/base-3d-renderer.d.ts +10 -0
- package/dist/types/renderer/base-renderer.d.ts +21 -0
- package/dist/types/renderer/index.d.ts +4 -0
- package/dist/types/renderer/types.d.ts +79 -0
- package/dist/webgpu/cjs/index.js +6004 -0
- package/dist/webgpu/esm/index.js +5972 -0
- package/dist/webgpu/types/2d/animation.d.ts +97 -0
- package/dist/webgpu/types/2d/renderer.d.ts +55 -0
- package/dist/webgpu/types/2d/shader.d.ts +61 -0
- package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
- package/dist/webgpu/types/3d/gltf-skin-parser.d.ts +101 -0
- package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
- package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
- package/dist/webgpu/types/3d/renderer.d.ts +216 -0
- package/dist/webgpu/types/3d/shader.d.ts +136 -0
- package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
- package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +8 -0
- package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
- package/dist/webgpu/types/3d/skeletal-animation.d.ts +90 -0
- package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
- package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
- package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
- package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
- package/dist/webgpu/types/camera/index.d.ts +2 -0
- package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
- package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
- package/dist/webgpu/types/core/constants.d.ts +59 -0
- package/dist/webgpu/types/core/constants.test.d.ts +1 -0
- package/dist/webgpu/types/core/index.d.ts +2 -0
- package/dist/webgpu/types/core/math.d.ts +37 -0
- package/dist/webgpu/types/core/types.d.ts +125 -0
- package/dist/webgpu/types/core/types.test.d.ts +1 -0
- package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
- package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
- package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
- package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
- package/dist/webgpu/types/geometry/index.d.ts +2 -0
- package/dist/webgpu/types/index.d.ts +32 -0
- package/dist/webgpu/types/particle/emitter.d.ts +36 -0
- package/dist/webgpu/types/shaders/index.d.ts +2 -0
- package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
- package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
- package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
- package/dist/webgpu/types/shaders/utils.d.ts +28 -0
- package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
- package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
- package/dist/webgpu/types/spritesheet/spritesheet.d.ts +57 -0
- package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
- package/package.json +96 -26
- package/dist/core/binary-codec/binary-codec.js +0 -354
- package/dist/core/binary-codec/index.js +0 -1
- package/dist/core/driver/driver.js +0 -47
- package/dist/core/driver/drivers/immediate.js +0 -61
- package/dist/core/driver/drivers/index.js +0 -3
- package/dist/core/driver/drivers/raf.js +0 -62
- package/dist/core/driver/drivers/timeout.js +0 -71
- package/dist/core/driver/index.js +0 -2
- package/dist/core/events/event-system.js +0 -88
- package/dist/core/events/index.js +0 -1
- package/dist/core/fixed-ticker/fixed-ticker.js +0 -105
- package/dist/core/fixed-ticker/index.js +0 -1
- package/dist/core/generate-id/generate-id.js +0 -25
- package/dist/core/generate-id/index.js +0 -1
- package/dist/core/index.js +0 -10
- package/dist/core/input/index.js +0 -2
- package/dist/core/input/manager.js +0 -211
- package/dist/core/input/sources/browser.js +0 -29
- package/dist/core/input/sources/index.js +0 -1
- package/dist/core/lerp/index.js +0 -1
- package/dist/core/lerp/lerp.js +0 -42
- package/dist/core/navmesh/index.js +0 -1
- package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
- package/dist/core/navmesh/navmesh.js +0 -799
- package/dist/core/navmesh/navmesh.worker.js +0 -79
- package/dist/core/pooled-codec/index.js +0 -1
- package/dist/core/pooled-codec/pooled-codec.js +0 -410
- package/dist/core/prediction/index.js +0 -1
- package/dist/core/prediction/prediction.js +0 -99
- package/dist/core.esm.js +0 -1
- package/dist/core.js +0 -1
- package/dist/ecs/component-store.js +0 -175
- package/dist/ecs/component.js +0 -43
- package/dist/ecs/entity-handle.js +0 -515
- package/dist/ecs/example.js +0 -125
- package/dist/ecs/index.js +0 -4
- package/dist/ecs/system-builder.js +0 -249
- package/dist/ecs/world-systems.js +0 -79
- package/dist/ecs/world.js +0 -767
- package/dist/game/index.js +0 -1
- package/dist/game/loop/index.js +0 -1
- package/dist/game/loop/loop.js +0 -108
- package/dist/index.js +0 -26
- package/dist/net/adapters/browser-websocket.js +0 -74
- package/dist/net/adapters/bun-websocket.js +0 -245
- package/dist/net/buffer-pool.js +0 -89
- package/dist/net/client.js +0 -586
- package/dist/net/index.js +0 -58
- package/dist/net/server.js +0 -974
- package/dist/net/types.js +0 -31
- package/dist/net/validators.js +0 -88
- package/dist/protocol/index.js +0 -92
- package/dist/protocol/intent/define-intent.js +0 -125
- package/dist/protocol/intent/index.js +0 -91
- package/dist/protocol/intent/intent-registry.js +0 -91
- package/dist/protocol/rpc/define-rpc.js +0 -84
- package/dist/protocol/rpc/index.js +0 -3
- package/dist/protocol/rpc/rpc-registry.js +0 -159
- package/dist/protocol/rpc/rpc.js +0 -12
- package/dist/protocol/snapshot/index.js +0 -43
- package/dist/protocol/snapshot/snapshot-codec.js +0 -67
- package/dist/protocol/snapshot/snapshot-registry.js +0 -168
- package/dist/protocol/snapshot/snapshot.js +0 -30
- package/src/core/binary-codec/README.md +0 -60
- package/src/core/binary-codec/binary-codec.test.ts +0 -300
- package/src/core/binary-codec/binary-codec.ts +0 -448
- package/src/core/binary-codec/index.ts +0 -1
- package/src/core/driver/README.md +0 -97
- package/src/core/driver/driver.test.ts +0 -414
- package/src/core/driver/driver.ts +0 -71
- package/src/core/driver/drivers/immediate.ts +0 -66
- package/src/core/driver/drivers/index.ts +0 -3
- package/src/core/driver/drivers/raf.ts +0 -67
- package/src/core/driver/drivers/timeout.ts +0 -77
- package/src/core/driver/index.ts +0 -2
- package/src/core/events/README.md +0 -47
- package/src/core/events/event-system.test.ts +0 -243
- package/src/core/events/event-system.ts +0 -140
- package/src/core/events/index.ts +0 -1
- package/src/core/fixed-ticker/README.md +0 -77
- package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
- package/src/core/fixed-ticker/fixed-ticker.ts +0 -174
- package/src/core/fixed-ticker/index.ts +0 -1
- package/src/core/generate-id/README.md +0 -18
- package/src/core/generate-id/generate-id.test.ts +0 -79
- package/src/core/generate-id/generate-id.ts +0 -37
- package/src/core/generate-id/index.ts +0 -1
- package/src/core/index.ts +0 -10
- package/src/core/input/README.md +0 -24
- package/src/core/input/index.ts +0 -2
- package/src/core/input/manager.ts +0 -259
- package/src/core/input/sources/browser.ts +0 -39
- package/src/core/input/sources/index.ts +0 -1
- package/src/core/input/types.ts +0 -40
- package/src/core/lerp/README.md +0 -79
- package/src/core/lerp/index.ts +0 -1
- package/src/core/lerp/lerp.test.ts +0 -90
- package/src/core/lerp/lerp.ts +0 -42
- package/src/core/navmesh/README.md +0 -164
- package/src/core/navmesh/index.ts +0 -1
- package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
- package/src/core/navmesh/navmesh-workers.test.ts +0 -356
- package/src/core/navmesh/navmesh.test.ts +0 -344
- package/src/core/navmesh/navmesh.ts +0 -1047
- package/src/core/navmesh/navmesh.worker.ts +0 -147
- package/src/core/pooled-codec/README.md +0 -70
- package/src/core/pooled-codec/index.ts +0 -1
- package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
- package/src/core/pooled-codec/pooled-codec.ts +0 -504
- package/src/core/prediction/README.md +0 -64
- package/src/core/prediction/index.ts +0 -1
- package/src/core/prediction/prediction.test.ts +0 -423
- package/src/core/prediction/prediction.ts +0 -112
- package/src/ecs/README.md +0 -427
- package/src/ecs/benchmark.test.ts +0 -1645
- package/src/ecs/component-store.ts +0 -198
- package/src/ecs/component.ts +0 -90
- package/src/ecs/entity-handle.test.ts +0 -393
- package/src/ecs/entity-handle.ts +0 -563
- package/src/ecs/example.ts +0 -152
- package/src/ecs/index.ts +0 -4
- package/src/ecs/system-builder.ts +0 -404
- package/src/ecs/world-systems.ts +0 -83
- package/src/ecs/world.test.ts +0 -310
- package/src/ecs/world.ts +0 -904
- package/src/game/index.ts +0 -1
- package/src/game/loop/README.md +0 -32
- package/src/game/loop/index.ts +0 -1
- package/src/game/loop/loop.ts +0 -236
- package/src/index.ts +0 -32
- package/src/net/README.md +0 -474
- package/src/net/adapters/browser-websocket.ts +0 -86
- package/src/net/adapters/bun-websocket.ts +0 -292
- package/src/net/buffer-pool.ts +0 -106
- package/src/net/client.test.ts +0 -807
- package/src/net/client.ts +0 -695
- package/src/net/index.ts +0 -60
- package/src/net/server.test.ts +0 -799
- package/src/net/server.ts +0 -1152
- package/src/net/types.ts +0 -228
- package/src/net/validators.ts +0 -104
- package/src/protocol/README.md +0 -469
- package/src/protocol/index.ts +0 -93
- package/src/protocol/intent/define-intent.test.ts +0 -397
- package/src/protocol/intent/define-intent.ts +0 -201
- package/src/protocol/intent/index.ts +0 -94
- package/src/protocol/intent/intent-registry.test.ts +0 -198
- package/src/protocol/intent/intent-registry.ts +0 -112
- package/src/protocol/intent/intent.ts +0 -12
- package/src/protocol/rpc/define-rpc.test.ts +0 -141
- package/src/protocol/rpc/define-rpc.ts +0 -113
- package/src/protocol/rpc/index.ts +0 -3
- package/src/protocol/rpc/rpc-registry.test.ts +0 -168
- package/src/protocol/rpc/rpc-registry.ts +0 -176
- package/src/protocol/rpc/rpc.ts +0 -37
- package/src/protocol/snapshot/index.ts +0 -45
- package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
- package/src/protocol/snapshot/snapshot-codec.ts +0 -87
- package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
- package/src/protocol/snapshot/snapshot-registry.ts +0 -201
- package/src/protocol/snapshot/snapshot.test.ts +0 -76
- package/src/protocol/snapshot/snapshot.ts +0 -41
- /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
- /package/dist/{core → types/core}/driver/driver.d.ts +0 -0
- /package/dist/{core → types/core}/driver/drivers/immediate.d.ts +0 -0
- /package/dist/{core → types/core}/driver/drivers/index.d.ts +0 -0
- /package/dist/{core → types/core}/driver/drivers/raf.d.ts +0 -0
- /package/dist/{core → types/core}/driver/drivers/timeout.d.ts +0 -0
- /package/dist/{core → types/core}/driver/index.d.ts +0 -0
- /package/dist/{core → types/core}/events/index.d.ts +0 -0
- /package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +0 -0
- /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
- /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
- /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
- /package/dist/{core → types/core}/input/sources/browser.d.ts +0 -0
- /package/dist/{core → types/core}/input/sources/index.d.ts +0 -0
- /package/dist/{core → types/core}/input/types.d.ts +0 -0
- /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
- /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
- /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
- /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
- /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
- /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
- /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
- /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
- /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/system-builder.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
- /package/dist/{game → types/game}/index.d.ts +0 -0
- /package/dist/{game → types/game}/loop/index.d.ts +0 -0
- /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
- /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
- /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
- /package/dist/{net → types/net}/client.d.ts +0 -0
- /package/dist/{net → types/net}/server.d.ts +0 -0
- /package/dist/{net → types/net}/types.d.ts +0 -0
- /package/dist/{net → types/net}/validators.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/intent/index.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
- /package/dist/{core/input/types.js → webgpu/types/2d/animation.test.d.ts} +0 -0
- /package/dist/{protocol/intent/intent.js → webgpu/types/2d/sprite-accessor.test.d.ts} +0 -0
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client-side game loop driver using requestAnimationFrame.
|
|
3
|
-
*
|
|
4
|
-
* This driver synchronizes updates with the browser's display refresh rate (typically 60 FPS),
|
|
5
|
-
* providing smooth rendering and automatic throttling when the tab is not visible.
|
|
6
|
-
*
|
|
7
|
-
* Delta time is automatically calculated between frames and passed to the update callback in seconds.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* const driver = new RafDriver((dt) => {
|
|
12
|
-
* player.update(dt);
|
|
13
|
-
* renderer.render();
|
|
14
|
-
* });
|
|
15
|
-
* driver.start();
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export class RafDriver {
|
|
19
|
-
/**
|
|
20
|
-
* @param update - Callback invoked each frame with delta time in seconds
|
|
21
|
-
*/
|
|
22
|
-
constructor(update) {
|
|
23
|
-
this.update = update;
|
|
24
|
-
this.last = performance.now();
|
|
25
|
-
this.running = false;
|
|
26
|
-
this.rafId = null;
|
|
27
|
-
/**
|
|
28
|
-
* Internal loop method that calculates delta time and schedules the next frame.
|
|
29
|
-
*
|
|
30
|
-
* Delta time is provided in seconds.
|
|
31
|
-
*/
|
|
32
|
-
this.loop = () => {
|
|
33
|
-
if (!this.running)
|
|
34
|
-
return;
|
|
35
|
-
const now = performance.now();
|
|
36
|
-
const dt = (now - this.last) / 1000;
|
|
37
|
-
this.last = now;
|
|
38
|
-
this.update(dt);
|
|
39
|
-
requestAnimationFrame(this.loop);
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Starts the game loop using requestAnimationFrame.
|
|
44
|
-
*
|
|
45
|
-
* Resets timing to prevent large initial delta.
|
|
46
|
-
*/
|
|
47
|
-
start() {
|
|
48
|
-
this.running = true;
|
|
49
|
-
this.last = performance.now();
|
|
50
|
-
this.rafId = requestAnimationFrame(this.loop);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Stops the game loop and cancels any pending animation frame.
|
|
54
|
-
*/
|
|
55
|
-
stop() {
|
|
56
|
-
this.running = false;
|
|
57
|
-
if (this.rafId !== null) {
|
|
58
|
-
cancelAnimationFrame(this.rafId);
|
|
59
|
-
this.rafId = null;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal delay for setTimeout-based loop scheduling.
|
|
3
|
-
* Using 1ms allows the event loop to process I/O while still maintaining high tick rates.
|
|
4
|
-
*/
|
|
5
|
-
const TIMEOUT_DELAY = 1;
|
|
6
|
-
/**
|
|
7
|
-
* Server-side game loop driver using setTimeout.
|
|
8
|
-
*
|
|
9
|
-
* This driver provides a more controlled alternative to setImmediate, running the game loop
|
|
10
|
-
* with a minimal delay (1ms) between iterations. This ensures the event loop can process
|
|
11
|
-
* I/O operations while maintaining high tick rates.
|
|
12
|
-
*
|
|
13
|
-
* Unlike setImmediate which runs as fast as possible, setTimeout provides better I/O responsiveness
|
|
14
|
-
* by yielding to the event loop between ticks with a minimal delay.
|
|
15
|
-
*
|
|
16
|
-
* Delta time is automatically calculated between iterations and passed to the update callback in seconds.
|
|
17
|
-
*
|
|
18
|
-
* **Note:** This driver is designed for Node.js/Bun server environments. For maximum performance
|
|
19
|
-
* without I/O concerns, use ImmediateDriver instead.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```typescript
|
|
23
|
-
* const driver = new TimeoutDriver((dt) => {
|
|
24
|
-
* world.tick(dt);
|
|
25
|
-
* broadcastState();
|
|
26
|
-
* });
|
|
27
|
-
* driver.start();
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export class TimeoutDriver {
|
|
31
|
-
/**
|
|
32
|
-
* @param update - Callback invoked each tick with delta time in seconds
|
|
33
|
-
*/
|
|
34
|
-
constructor(update) {
|
|
35
|
-
this.update = update;
|
|
36
|
-
this.last = performance.now();
|
|
37
|
-
this.running = false;
|
|
38
|
-
/**
|
|
39
|
-
* Internal loop method that calculates delta time and schedules the next iteration.
|
|
40
|
-
*
|
|
41
|
-
* Delta time is provided in seconds. Uses 1ms delay to allow I/O processing.
|
|
42
|
-
*/
|
|
43
|
-
this.loop = () => {
|
|
44
|
-
if (!this.running)
|
|
45
|
-
return;
|
|
46
|
-
const now = performance.now();
|
|
47
|
-
const dt = (now - this.last) / 1000;
|
|
48
|
-
this.last = now;
|
|
49
|
-
this.update(dt);
|
|
50
|
-
setTimeout(this.loop, TIMEOUT_DELAY);
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Starts the game loop using setTimeout with minimal delay.
|
|
55
|
-
*
|
|
56
|
-
* Resets timing to prevent large initial delta.
|
|
57
|
-
*/
|
|
58
|
-
start() {
|
|
59
|
-
this.running = true;
|
|
60
|
-
this.last = performance.now();
|
|
61
|
-
this.loop();
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Stops the game loop.
|
|
65
|
-
*
|
|
66
|
-
* Note: Does not cancel already queued setTimeout callbacks.
|
|
67
|
-
*/
|
|
68
|
-
stop() {
|
|
69
|
-
this.running = false;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description
|
|
3
|
-
* A callback-based event handling system designed to simplify
|
|
4
|
-
* event-driven programming.
|
|
5
|
-
*/
|
|
6
|
-
export class EventSystem {
|
|
7
|
-
constructor({ events }) {
|
|
8
|
-
this.callbacks = new Map();
|
|
9
|
-
this.events = events;
|
|
10
|
-
for (const name of this.events) {
|
|
11
|
-
this.callbacks.set(name, new Set());
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* @description
|
|
16
|
-
* Registers a callback for an event.
|
|
17
|
-
*
|
|
18
|
-
* @param name Event name
|
|
19
|
-
* @param callback Callback to run when the event is emitted
|
|
20
|
-
*/
|
|
21
|
-
on(name, callback) {
|
|
22
|
-
const event = this.callbacks.get(name);
|
|
23
|
-
if (!event)
|
|
24
|
-
return console.warn(`Event "${name}" does not exist.`);
|
|
25
|
-
event.add(callback);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* @description
|
|
29
|
-
* Registers a callback for an event that runs only once.
|
|
30
|
-
*
|
|
31
|
-
* @param name Event name
|
|
32
|
-
* @param callback Callback to run when the event is emitted
|
|
33
|
-
*/
|
|
34
|
-
once(name, callback) {
|
|
35
|
-
const wrapper = (props) => {
|
|
36
|
-
callback(props);
|
|
37
|
-
this.off(name, wrapper);
|
|
38
|
-
};
|
|
39
|
-
this.on(name, wrapper);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* @description
|
|
43
|
-
* Emits an event, running all registered callbacks.
|
|
44
|
-
*
|
|
45
|
-
* @param name Event name
|
|
46
|
-
* @param data Event data
|
|
47
|
-
*/
|
|
48
|
-
emit(name, data) {
|
|
49
|
-
const event = this.callbacks.get(name);
|
|
50
|
-
if (!event)
|
|
51
|
-
return console.warn(`Event "${name}" does not exist.`);
|
|
52
|
-
for (const callback of event) {
|
|
53
|
-
callback(data);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* @description
|
|
58
|
-
* Removes a callback from an event.
|
|
59
|
-
*
|
|
60
|
-
* @param name Event name
|
|
61
|
-
* @param callback Callback to remove
|
|
62
|
-
*/
|
|
63
|
-
off(name, callback) {
|
|
64
|
-
const event = this.callbacks.get(name);
|
|
65
|
-
if (!event)
|
|
66
|
-
return console.warn(`Event "${name}" does not exist.`);
|
|
67
|
-
event.delete(callback);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* @description
|
|
71
|
-
* Removes all callbacks.
|
|
72
|
-
*
|
|
73
|
-
* @param name Optional event name
|
|
74
|
-
*/
|
|
75
|
-
clear(name) {
|
|
76
|
-
if (!name) {
|
|
77
|
-
this.callbacks.clear();
|
|
78
|
-
for (const name of this.events) {
|
|
79
|
-
this.callbacks.set(name, new Set());
|
|
80
|
-
}
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
const event = this.callbacks.get(name);
|
|
84
|
-
if (!event)
|
|
85
|
-
return console.warn(`Event "${name}" does not exist.`);
|
|
86
|
-
event.clear();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './event-system';
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description
|
|
3
|
-
* A utility class for managing fixed-rate update ticks, useful for deterministic behaviour
|
|
4
|
-
* in both client and server.
|
|
5
|
-
*
|
|
6
|
-
* The `FixedTicker` accumulates elapsed time and determines how many fixed-interval "ticks"
|
|
7
|
-
* should be processed based on a specified tick rate. It also limits the maximum number of
|
|
8
|
-
* ticks per frame to prevent runaway update loops when frame times are long.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @remarks
|
|
12
|
-
* - The `tick` method should be called once per frame, passing the elapsed time in seconds.
|
|
13
|
-
* - The class ensures that no more than a safe number of ticks are processed per frame.
|
|
14
|
-
*/
|
|
15
|
-
export class FixedTicker {
|
|
16
|
-
constructor({ rate, onTick }) {
|
|
17
|
-
/**
|
|
18
|
-
* @description Accumulator for the time passed since the last tick (in milliseconds)
|
|
19
|
-
*/
|
|
20
|
-
this.accumulator = 0;
|
|
21
|
-
/**
|
|
22
|
-
* @description
|
|
23
|
-
* Internal counter for the number of ticks processed.
|
|
24
|
-
*/
|
|
25
|
-
this._tickCount = 0;
|
|
26
|
-
this.rate = rate;
|
|
27
|
-
this.intervalMs = 1000 / this.rate;
|
|
28
|
-
this.onTick = onTick;
|
|
29
|
-
// Allow up to rate/2 ticks per frame, but at least 1.
|
|
30
|
-
// Prevents runaway loops if delta is too large.
|
|
31
|
-
this.maxTicksPerFrame = Math.max(1, Math.floor(rate / 2));
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* @description
|
|
35
|
-
* Returns how many ticks to run.
|
|
36
|
-
*
|
|
37
|
-
* @param deltaTime Delta time in seconds
|
|
38
|
-
* @returns {number} Amount of ticks to run
|
|
39
|
-
*/
|
|
40
|
-
getTicks(deltaTime) {
|
|
41
|
-
this.accumulator += deltaTime * 1000;
|
|
42
|
-
let ticks = 0;
|
|
43
|
-
// Use a small epsilon relative to interval to handle floating point precision errors
|
|
44
|
-
// Without this, accumulator might be 0.9999999 when it should be 1.0
|
|
45
|
-
const epsilon = this.intervalMs * 0.001;
|
|
46
|
-
while (this.accumulator >= this.intervalMs - epsilon &&
|
|
47
|
-
ticks < this.maxTicksPerFrame) {
|
|
48
|
-
this.accumulator -= this.intervalMs;
|
|
49
|
-
ticks++;
|
|
50
|
-
}
|
|
51
|
-
const skippedTicks = Math.floor(this.accumulator / this.intervalMs);
|
|
52
|
-
if (skippedTicks > 0 && this.onTickSkipped) {
|
|
53
|
-
this.onTickSkipped(skippedTicks);
|
|
54
|
-
}
|
|
55
|
-
return ticks;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* @description
|
|
59
|
-
* Processes the ticks based on the elapsed time.
|
|
60
|
-
*
|
|
61
|
-
* @param deltaTime Delta time in seconds
|
|
62
|
-
*/
|
|
63
|
-
tick(deltaTime) {
|
|
64
|
-
const ticks = this.getTicks(deltaTime);
|
|
65
|
-
for (let i = 0; i < ticks; i++) {
|
|
66
|
-
this.onTick(1 / this.rate, this._tickCount++);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* @description
|
|
71
|
-
* Returns the number of ticks processed since the last reset.
|
|
72
|
-
*
|
|
73
|
-
* @returns {number} Number of ticks processed
|
|
74
|
-
*/
|
|
75
|
-
get tickCount() {
|
|
76
|
-
return this._tickCount;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* @description
|
|
80
|
-
* Resets the tick count to zero.
|
|
81
|
-
*/
|
|
82
|
-
resetTickCount() {
|
|
83
|
-
this._tickCount = 0;
|
|
84
|
-
this.accumulator = 0;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* @description
|
|
88
|
-
* Returns the accumulated time in seconds, useful for interpolation.
|
|
89
|
-
*
|
|
90
|
-
* @returns {number} Accumulated time in seconds
|
|
91
|
-
*/
|
|
92
|
-
get accumulatedTime() {
|
|
93
|
-
return this.accumulator / 1000; // Convert to seconds
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* @description
|
|
97
|
-
* Returns the interpolation factor between 0 and 1 for smooth rendering between ticks.
|
|
98
|
-
* Clamped to prevent extrapolation when ticks are skipped.
|
|
99
|
-
*
|
|
100
|
-
* @returns {number} Alpha value between 0 and 1
|
|
101
|
-
*/
|
|
102
|
-
get alpha() {
|
|
103
|
-
return Math.min(this.accumulatedTime / (1 / this.rate), 1.0);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './fixed-ticker';
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description
|
|
3
|
-
* Generates a unique identifier as a hexadecimal string.
|
|
4
|
-
* Can include a prefix and a custom total length.
|
|
5
|
-
*
|
|
6
|
-
* @param options Optional configuration: prefix and total size
|
|
7
|
-
* @returns A unique identifier string
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* generateId(); // "f3a2b1c4d5e67890"
|
|
11
|
-
* generateId({ prefix: 'user_' }); // "user_f3a2b1c4d5e67890"
|
|
12
|
-
* generateId({ prefix: 'user_', size: 24 }); // "user_00f3a2b1c4d5e67890"
|
|
13
|
-
*/
|
|
14
|
-
export function generateId(options = {}) {
|
|
15
|
-
const { prefix = "", size = 16 } = options;
|
|
16
|
-
// compute number of hex characters to generate (subtract prefix length)
|
|
17
|
-
const hexLength = Math.max(size - prefix.length, 8); // min 8 hex chars
|
|
18
|
-
// number of 32-bit integers needed to cover the hexLength
|
|
19
|
-
const numInts = Math.ceil(hexLength / 8);
|
|
20
|
-
const arr = crypto.getRandomValues(new Uint32Array(numInts));
|
|
21
|
-
let id = arr.reduce((acc, val) => acc + val.toString(16).padStart(8, "0"), "");
|
|
22
|
-
// truncate/pad to desired length
|
|
23
|
-
id = id.slice(0, hexLength).padStart(hexLength, "0");
|
|
24
|
-
return `${prefix}${id}`;
|
|
25
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './generate-id';
|
package/dist/core/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export * from './binary-codec';
|
|
2
|
-
export * from './events';
|
|
3
|
-
export * from './fixed-ticker';
|
|
4
|
-
export * from './generate-id';
|
|
5
|
-
export * from './lerp';
|
|
6
|
-
export * from './driver';
|
|
7
|
-
export * from './navmesh';
|
|
8
|
-
export * from './pooled-codec';
|
|
9
|
-
export * from './prediction';
|
|
10
|
-
export * from './input';
|
package/dist/core/input/index.js
DELETED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Manages keyboard and mouse input.
|
|
3
|
-
*
|
|
4
|
-
* Design goals:
|
|
5
|
-
* - Zero allocations per frame/tick
|
|
6
|
-
* - Render reads live state (peek)
|
|
7
|
-
* - Simulation reads frozen state (snapshot)
|
|
8
|
-
* - Deterministic hit/release semantics
|
|
9
|
-
*/
|
|
10
|
-
export class InputManager {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.keys = Object.create(null);
|
|
13
|
-
this.prevKeys = Object.create(null);
|
|
14
|
-
this.mouse = {
|
|
15
|
-
x: 0,
|
|
16
|
-
y: 0,
|
|
17
|
-
dx: 0,
|
|
18
|
-
dy: 0,
|
|
19
|
-
left: false,
|
|
20
|
-
right: false,
|
|
21
|
-
middle: false,
|
|
22
|
-
scrollX: 0,
|
|
23
|
-
scrollY: 0,
|
|
24
|
-
};
|
|
25
|
-
this.prevMouse = {
|
|
26
|
-
left: false,
|
|
27
|
-
right: false,
|
|
28
|
-
middle: false,
|
|
29
|
-
};
|
|
30
|
-
this.snapshotFlip = false;
|
|
31
|
-
this.handlers = {
|
|
32
|
-
keydown: (e) => this.onKeyDown(e),
|
|
33
|
-
keyup: (e) => this.onKeyUp(e),
|
|
34
|
-
mousemove: (e) => this.onMouseMove(e),
|
|
35
|
-
mousedown: (e) => this.onMouseDown(e),
|
|
36
|
-
mouseup: (e) => this.onMouseUp(e),
|
|
37
|
-
wheel: (e) => this.onMouseWheel(e),
|
|
38
|
-
swipe: (dir) => this.onSwipe(dir),
|
|
39
|
-
pinch: (scale) => this.onPinch(scale),
|
|
40
|
-
};
|
|
41
|
-
this.snapshotA = createEmptySnapshot();
|
|
42
|
-
this.snapshotB = createEmptySnapshot();
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Returns a live, non-allocating view of the current input state.
|
|
46
|
-
*
|
|
47
|
-
* - No hit/release detection
|
|
48
|
-
* - No resets
|
|
49
|
-
* - Safe for render passes
|
|
50
|
-
*/
|
|
51
|
-
peek() {
|
|
52
|
-
const snap = this.snapshotFlip ? this.snapshotA : this.snapshotB;
|
|
53
|
-
fillLiveView(snap, this.keys, this.mouse);
|
|
54
|
-
return snap;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Produces a frozen snapshot of the input state.
|
|
58
|
-
*
|
|
59
|
-
* - Computes hit/release
|
|
60
|
-
* - Resets deltas
|
|
61
|
-
* - Safe to store for the duration of the tick
|
|
62
|
-
*/
|
|
63
|
-
snapshot() {
|
|
64
|
-
const snap = this.snapshotFlip ? this.snapshotA : this.snapshotB;
|
|
65
|
-
this.snapshotFlip = !this.snapshotFlip;
|
|
66
|
-
fillSnapshot(snap, this.keys, this.prevKeys, this.mouse, this.prevMouse);
|
|
67
|
-
this.mouse.dx = 0;
|
|
68
|
-
this.mouse.dy = 0;
|
|
69
|
-
this.mouse.scrollX = 0;
|
|
70
|
-
this.mouse.scrollY = 0;
|
|
71
|
-
this.prevMouse.left = this.mouse.left;
|
|
72
|
-
this.prevMouse.right = this.mouse.right;
|
|
73
|
-
this.prevMouse.middle = this.mouse.middle;
|
|
74
|
-
return snap;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Starts listening to an input event source
|
|
78
|
-
*/
|
|
79
|
-
listen(source) {
|
|
80
|
-
if (this.inputSource)
|
|
81
|
-
this.inputSource.detach();
|
|
82
|
-
this.inputSource = source;
|
|
83
|
-
source.attach(this.handlers);
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Stops listening to the current input source.
|
|
87
|
-
*/
|
|
88
|
-
unlisten() {
|
|
89
|
-
if (!this.inputSource)
|
|
90
|
-
return;
|
|
91
|
-
this.inputSource.detach();
|
|
92
|
-
}
|
|
93
|
-
onKeyDown(e) {
|
|
94
|
-
var _a, _b;
|
|
95
|
-
const key = ((_a = this.keys)[_b = e.code] ?? (_a[_b] = { down: false, hit: false, released: false }));
|
|
96
|
-
key.down = true;
|
|
97
|
-
}
|
|
98
|
-
onKeyUp(e) {
|
|
99
|
-
var _a, _b;
|
|
100
|
-
const key = ((_a = this.keys)[_b = e.code] ?? (_a[_b] = { down: false, hit: false, released: false }));
|
|
101
|
-
key.down = false;
|
|
102
|
-
}
|
|
103
|
-
onMouseMove(e) {
|
|
104
|
-
const rect = e.target.getBoundingClientRect();
|
|
105
|
-
const x = e.clientX - rect.left;
|
|
106
|
-
const y = e.clientY - rect.top;
|
|
107
|
-
this.mouse.dx += x - this.mouse.x;
|
|
108
|
-
this.mouse.dy += y - this.mouse.y;
|
|
109
|
-
this.mouse.x = x;
|
|
110
|
-
this.mouse.y = y;
|
|
111
|
-
}
|
|
112
|
-
onMouseDown(e) {
|
|
113
|
-
if (e.button === 0)
|
|
114
|
-
this.mouse.left = true;
|
|
115
|
-
if (e.button === 1)
|
|
116
|
-
this.mouse.middle = true;
|
|
117
|
-
if (e.button === 2)
|
|
118
|
-
this.mouse.right = true;
|
|
119
|
-
}
|
|
120
|
-
onMouseUp(e) {
|
|
121
|
-
if (e.button === 0)
|
|
122
|
-
this.mouse.left = false;
|
|
123
|
-
if (e.button === 1)
|
|
124
|
-
this.mouse.middle = false;
|
|
125
|
-
if (e.button === 2)
|
|
126
|
-
this.mouse.right = false;
|
|
127
|
-
}
|
|
128
|
-
onMouseWheel(e) {
|
|
129
|
-
this.mouse.scrollX += e.deltaX;
|
|
130
|
-
this.mouse.scrollY += e.deltaY;
|
|
131
|
-
}
|
|
132
|
-
onSwipe(_dir) {
|
|
133
|
-
// Gesture layer lives above core input
|
|
134
|
-
}
|
|
135
|
-
onPinch(_scale) {
|
|
136
|
-
// Gesture layer lives above core input
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Creates a reusable, fully-initialized snapshot object.
|
|
141
|
-
*/
|
|
142
|
-
function createEmptySnapshot() {
|
|
143
|
-
return {
|
|
144
|
-
mouse: {
|
|
145
|
-
position: { x: 0, y: 0 },
|
|
146
|
-
delta: {
|
|
147
|
-
position: { x: 0, y: 0 },
|
|
148
|
-
scroll: { x: 0, y: 0 },
|
|
149
|
-
},
|
|
150
|
-
left: { down: false, hit: false, released: false },
|
|
151
|
-
right: { down: false, hit: false, released: false },
|
|
152
|
-
middle: { down: false, hit: false, released: false },
|
|
153
|
-
},
|
|
154
|
-
keys: Object.create(null),
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Fills a snapshot with live input state.
|
|
159
|
-
* No hit/release, no resets.
|
|
160
|
-
*/
|
|
161
|
-
function fillLiveView(snap, keys, mouse) {
|
|
162
|
-
var _a;
|
|
163
|
-
for (const k in keys) {
|
|
164
|
-
const dst = ((_a = snap.keys)[k] ?? (_a[k] = { down: false, hit: false, released: false }));
|
|
165
|
-
dst.down = keys[k].down;
|
|
166
|
-
dst.hit = false;
|
|
167
|
-
dst.released = false;
|
|
168
|
-
}
|
|
169
|
-
snap.mouse.position.x = mouse.x;
|
|
170
|
-
snap.mouse.position.y = mouse.y;
|
|
171
|
-
snap.mouse.delta.position.x = mouse.dx;
|
|
172
|
-
snap.mouse.delta.position.y = mouse.dy;
|
|
173
|
-
snap.mouse.delta.scroll.x = mouse.scrollX;
|
|
174
|
-
snap.mouse.delta.scroll.y = mouse.scrollY;
|
|
175
|
-
snap.mouse.left.down = mouse.left;
|
|
176
|
-
snap.mouse.right.down = mouse.right;
|
|
177
|
-
snap.mouse.middle.down = mouse.middle;
|
|
178
|
-
snap.mouse.left.hit = snap.mouse.left.released = false;
|
|
179
|
-
snap.mouse.right.hit = snap.mouse.right.released = false;
|
|
180
|
-
snap.mouse.middle.hit = snap.mouse.middle.released = false;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Fills a snapshot with frozen input state.
|
|
184
|
-
* Computes hit/release and updates previous state.
|
|
185
|
-
*/
|
|
186
|
-
function fillSnapshot(snap, keys, prevKeys, mouse, prevMouse) {
|
|
187
|
-
var _a;
|
|
188
|
-
for (const k in keys) {
|
|
189
|
-
const now = keys[k].down;
|
|
190
|
-
const prev = prevKeys[k] ?? false;
|
|
191
|
-
const dst = ((_a = snap.keys)[k] ?? (_a[k] = { down: false, hit: false, released: false }));
|
|
192
|
-
dst.down = now;
|
|
193
|
-
dst.hit = now && !prev;
|
|
194
|
-
dst.released = !now && prev;
|
|
195
|
-
prevKeys[k] = now;
|
|
196
|
-
}
|
|
197
|
-
snap.mouse.position.x = mouse.x;
|
|
198
|
-
snap.mouse.position.y = mouse.y;
|
|
199
|
-
snap.mouse.delta.position.x = mouse.dx;
|
|
200
|
-
snap.mouse.delta.position.y = mouse.dy;
|
|
201
|
-
snap.mouse.delta.scroll.x = mouse.scrollX;
|
|
202
|
-
snap.mouse.delta.scroll.y = mouse.scrollY;
|
|
203
|
-
applyButton(snap.mouse.left, mouse.left, prevMouse.left);
|
|
204
|
-
applyButton(snap.mouse.right, mouse.right, prevMouse.right);
|
|
205
|
-
applyButton(snap.mouse.middle, mouse.middle, prevMouse.middle);
|
|
206
|
-
}
|
|
207
|
-
function applyButton(dst, now, prev) {
|
|
208
|
-
dst.down = now;
|
|
209
|
-
dst.hit = now && !prev;
|
|
210
|
-
dst.released = !now && prev;
|
|
211
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export class BrowserInputSource {
|
|
2
|
-
constructor(keyboardTarget, mouseTarget) {
|
|
3
|
-
this.keyboardTarget = keyboardTarget;
|
|
4
|
-
this.mouseTarget = mouseTarget;
|
|
5
|
-
}
|
|
6
|
-
attach(h) {
|
|
7
|
-
if (this.handlers) {
|
|
8
|
-
this.detach();
|
|
9
|
-
}
|
|
10
|
-
this.handlers = h;
|
|
11
|
-
this.keyboardTarget.addEventListener('keydown', h.keydown);
|
|
12
|
-
this.keyboardTarget.addEventListener('keyup', h.keyup);
|
|
13
|
-
this.mouseTarget.addEventListener('mousemove', h.mousemove);
|
|
14
|
-
this.mouseTarget.addEventListener('mousedown', h.mousedown);
|
|
15
|
-
this.mouseTarget.addEventListener('mouseup', h.mouseup);
|
|
16
|
-
this.mouseTarget.addEventListener('wheel', h.wheel);
|
|
17
|
-
}
|
|
18
|
-
detach() {
|
|
19
|
-
const h = this.handlers;
|
|
20
|
-
if (!h)
|
|
21
|
-
return;
|
|
22
|
-
this.keyboardTarget.removeEventListener('keydown', h.keydown);
|
|
23
|
-
this.keyboardTarget.removeEventListener('keyup', h.keyup);
|
|
24
|
-
this.mouseTarget.removeEventListener('mousemove', h.mousemove);
|
|
25
|
-
this.mouseTarget.removeEventListener('mousedown', h.mousedown);
|
|
26
|
-
this.mouseTarget.removeEventListener('mouseup', h.mouseup);
|
|
27
|
-
this.mouseTarget.removeEventListener('wheel', h.wheel);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./browser";
|
package/dist/core/lerp/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './lerp';
|
package/dist/core/lerp/lerp.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description
|
|
3
|
-
* Performs linear interpolation between two values.
|
|
4
|
-
*
|
|
5
|
-
* Linear interpolation (lerp) calculates a value between a start and end point
|
|
6
|
-
* based on a normalized interpolation factor (t). When t = 0, the result equals
|
|
7
|
-
* the start value; when t = 1, the result equals the end value. Values of t
|
|
8
|
-
* between 0 and 1 produce intermediate results.
|
|
9
|
-
*
|
|
10
|
-
* @remarks
|
|
11
|
-
* - This function does not clamp the interpolation factor. Values of t outside
|
|
12
|
-
* the range [0, 1] will extrapolate beyond the start and end values.
|
|
13
|
-
* - For clamped interpolation, combine with a clamp function on the t parameter.
|
|
14
|
-
* - Commonly used for smooth animations, camera movements, and value transitions.
|
|
15
|
-
*
|
|
16
|
-
* @param start - The starting value (when t = 0)
|
|
17
|
-
* @param end - The ending value (when t = 1)
|
|
18
|
-
* @param t - The interpolation factor, typically in the range [0, 1]
|
|
19
|
-
*
|
|
20
|
-
* @returns {number} The interpolated value between start and end
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* // Basic interpolation
|
|
25
|
-
* lerp(0, 100, 0.5); // Returns 50
|
|
26
|
-
* lerp(0, 100, 0); // Returns 0
|
|
27
|
-
* lerp(0, 100, 1); // Returns 100
|
|
28
|
-
*
|
|
29
|
-
* // Animation example
|
|
30
|
-
* const startPos = 0;
|
|
31
|
-
* const endPos = 100;
|
|
32
|
-
* const progress = 0.75;
|
|
33
|
-
* const currentPos = lerp(startPos, endPos, progress); // Returns 75
|
|
34
|
-
*
|
|
35
|
-
* // Extrapolation (t outside [0, 1])
|
|
36
|
-
* lerp(0, 100, 1.5); // Returns 150
|
|
37
|
-
* lerp(0, 100, -0.5); // Returns -50
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
export function lerp(start, end, t) {
|
|
41
|
-
return start + (end - start) * t;
|
|
42
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './navmesh';
|