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,249 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Builder for creating ergonomic systems with automatic field array caching.
|
|
3
|
-
*
|
|
4
|
-
* Fully chainable API with type safety:
|
|
5
|
-
* - System automatically caches TypedArrays and creates proxies
|
|
6
|
-
* - Two access patterns: ergonomic (getter/setter) or hybrid (direct array)
|
|
7
|
-
* - Full type safety with IntelliSense support for both patterns
|
|
8
|
-
*
|
|
9
|
-
* **Ergonomic pattern (convenient but slower):**
|
|
10
|
-
* ```typescript
|
|
11
|
-
* world.addSystem()
|
|
12
|
-
* .query(Transform2D, Velocity)
|
|
13
|
-
* .fields([{ transform: ['x', 'y'] }, { velocity: ['vx', 'vy'] }])
|
|
14
|
-
* .run((entity, deltaTime) => {
|
|
15
|
-
* // Fully typed property access (uses getters/setters)
|
|
16
|
-
* entity.transform_x += entity.velocity_vx * deltaTime;
|
|
17
|
-
* });
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* **Hybrid pattern (fast and still ergonomic):**
|
|
21
|
-
* ```typescript
|
|
22
|
-
* world.addSystem()
|
|
23
|
-
* .query(Transform2D, Velocity)
|
|
24
|
-
* .fields([{ transform: ['x', 'y'] }, { velocity: ['vx', 'vy'] }])
|
|
25
|
-
* .run((entity, deltaTime) => {
|
|
26
|
-
* // Fully typed direct array access (no getters/setters)
|
|
27
|
-
* const {eid, transform_x_array: tx, velocity_vx_array: vx} = entity;
|
|
28
|
-
* tx[eid] += vx[eid] * deltaTime;
|
|
29
|
-
* });
|
|
30
|
-
* ```
|
|
31
|
-
*
|
|
32
|
-
* **Note:** The hybrid pattern is recommended for performance-critical systems.
|
|
33
|
-
* Both patterns provide full TypeScript autocomplete and type checking.
|
|
34
|
-
*/
|
|
35
|
-
export class SystemBuilder {
|
|
36
|
-
constructor(world, components, fieldMappings, userCallback, conditionPredicate) {
|
|
37
|
-
this.world = world;
|
|
38
|
-
this.components = components;
|
|
39
|
-
this.fieldMappings = fieldMappings;
|
|
40
|
-
this.userCallback = userCallback;
|
|
41
|
-
this.conditionPredicate = conditionPredicate;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Specify which components this system should query for.
|
|
45
|
-
*/
|
|
46
|
-
query(...components) {
|
|
47
|
-
return new SystemBuilder(this.world, components, this.fieldMappings, this.userCallback, this.conditionPredicate);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Specify which component fields should be accessible via proxy.
|
|
51
|
-
*/
|
|
52
|
-
fields(fieldMappings) {
|
|
53
|
-
return new SystemBuilder(this.world, this.components, fieldMappings, this.userCallback, this.conditionPredicate);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Specify a condition to filter entities before running the system callback.
|
|
57
|
-
* @param predicate - Condition to filter entities before running the system callback.
|
|
58
|
-
* @returns A new SystemBuilder instance with the specified condition.
|
|
59
|
-
*/
|
|
60
|
-
when(predicate) {
|
|
61
|
-
if (!this.fieldMappings) {
|
|
62
|
-
throw new Error('Must call .fields() before .when()');
|
|
63
|
-
}
|
|
64
|
-
// Extract all field arrays once (or reuse cached)
|
|
65
|
-
const fieldArrays = {};
|
|
66
|
-
for (let i = 0; i < this.components.length; i++) {
|
|
67
|
-
const component = this.components[i];
|
|
68
|
-
const mapping = this.fieldMappings[i];
|
|
69
|
-
if (!mapping)
|
|
70
|
-
continue;
|
|
71
|
-
const alias = Object.keys(mapping)[0];
|
|
72
|
-
const fields = mapping[alias];
|
|
73
|
-
for (const fieldName of fields) {
|
|
74
|
-
const flattenedName = `${alias}_${fieldName}`;
|
|
75
|
-
const array = this.world.getFieldArray(component, fieldName);
|
|
76
|
-
fieldArrays[flattenedName] = array;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Create reusable proxy (ZERO allocations per entity!)
|
|
80
|
-
const proxyEntity = { eid: 0 };
|
|
81
|
-
// Define getters + expose arrays (for...in instead of Object.entries)
|
|
82
|
-
for (const name in fieldArrays) {
|
|
83
|
-
const array = fieldArrays[name];
|
|
84
|
-
// Ergonomic getter/setter access
|
|
85
|
-
Object.defineProperty(proxyEntity, name, {
|
|
86
|
-
get() { return array[this.eid]; },
|
|
87
|
-
set(value) { array[this.eid] = value; },
|
|
88
|
-
enumerable: true,
|
|
89
|
-
configurable: false
|
|
90
|
-
});
|
|
91
|
-
// Hybrid direct array access
|
|
92
|
-
proxyEntity[`${name}_array`] = array;
|
|
93
|
-
}
|
|
94
|
-
// Seal proxy to lock shape (allows eid updates, prevents additions/deletions)
|
|
95
|
-
Object.seal(proxyEntity);
|
|
96
|
-
// Fast predicate: reuses proxy, updates eid (clean signature)
|
|
97
|
-
const userPredicate = predicate; // Inline reference
|
|
98
|
-
return new SystemBuilder(this.world, this.components, this.fieldMappings, this.userCallback, userPredicate);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Set the system callback. If components and fields are set, builds the system.
|
|
102
|
-
*/
|
|
103
|
-
run(callback) {
|
|
104
|
-
const builder = new SystemBuilder(this.world, this.components, this.fieldMappings, callback, this.conditionPredicate);
|
|
105
|
-
return builder.buildAndRegister();
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Build and register the system.
|
|
109
|
-
* @internal
|
|
110
|
-
*/
|
|
111
|
-
buildAndRegister() {
|
|
112
|
-
if (!this.userCallback) {
|
|
113
|
-
throw new Error('System callback must be set');
|
|
114
|
-
}
|
|
115
|
-
if (!this.fieldMappings) {
|
|
116
|
-
throw new Error('Field mappings must be set');
|
|
117
|
-
}
|
|
118
|
-
const world = this.world;
|
|
119
|
-
const components = this.components;
|
|
120
|
-
const fieldMappings = this.fieldMappings;
|
|
121
|
-
const userCallback = this.userCallback;
|
|
122
|
-
// Cache field arrays once at system creation
|
|
123
|
-
const fieldArrayCache = {};
|
|
124
|
-
const componentByAlias = {};
|
|
125
|
-
const aliases = [];
|
|
126
|
-
// Iterate over components and their field mappings
|
|
127
|
-
for (let i = 0; i < components.length; i++) {
|
|
128
|
-
const component = components[i];
|
|
129
|
-
const mapping = fieldMappings[i];
|
|
130
|
-
if (!mapping)
|
|
131
|
-
continue;
|
|
132
|
-
// Extract alias and fields from { alias: ['fields'] } object
|
|
133
|
-
const alias = Object.keys(mapping)[0];
|
|
134
|
-
const fields = mapping[alias];
|
|
135
|
-
aliases.push(alias);
|
|
136
|
-
componentByAlias[alias] = component;
|
|
137
|
-
fieldArrayCache[alias] = {};
|
|
138
|
-
// Cache all field arrays for this component
|
|
139
|
-
for (const fieldName of fields) {
|
|
140
|
-
const array = world.getFieldArray(component, fieldName);
|
|
141
|
-
fieldArrayCache[alias][fieldName] = array;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// Precompute flat field descriptor list (specialization contract)
|
|
145
|
-
const fieldDescs = [];
|
|
146
|
-
for (const alias of aliases) {
|
|
147
|
-
const fields = fieldArrayCache[alias];
|
|
148
|
-
for (const fieldName in fields) {
|
|
149
|
-
fieldDescs.push({
|
|
150
|
-
prop: `${alias}_${fieldName}`,
|
|
151
|
-
array: fields[fieldName],
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// Precompute query mask and mask key for fast queries
|
|
156
|
-
// This avoids rebuilding the cache key string every frame
|
|
157
|
-
world.query(...components); // Initializes the cache
|
|
158
|
-
const queryMaskKey = world._getQueryMaskKey(components);
|
|
159
|
-
const queryMask = world.getQueryMask(components);
|
|
160
|
-
// Create the executable system with specialized field descriptors
|
|
161
|
-
const system = new ExecutableSystem(world, components, userCallback, fieldDescs, queryMaskKey, queryMask, this.conditionPredicate);
|
|
162
|
-
// Register with world
|
|
163
|
-
world._registerSystem(system);
|
|
164
|
-
return system;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Executable system that can be run with world.runSystems().
|
|
169
|
-
*
|
|
170
|
-
* Uses reusable proxy entity with optimized getter/setter access.
|
|
171
|
-
*/
|
|
172
|
-
export class ExecutableSystem {
|
|
173
|
-
constructor(world, components, userCallback, fieldDescs, queryMaskKey, queryMask, conditionPredicate) {
|
|
174
|
-
this.world = world;
|
|
175
|
-
this.components = components;
|
|
176
|
-
this.userCallback = userCallback;
|
|
177
|
-
this.fieldDescs = fieldDescs;
|
|
178
|
-
this.queryMaskKey = queryMaskKey;
|
|
179
|
-
this.queryMask = queryMask;
|
|
180
|
-
this.conditionPredicate = conditionPredicate;
|
|
181
|
-
// Create proxy entity once and reuse
|
|
182
|
-
this.proxyEntity = this.createProxyEntity();
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Execute the system for all matching entities.
|
|
186
|
-
*
|
|
187
|
-
* @param deltaTime - Time delta to pass to system callback
|
|
188
|
-
*/
|
|
189
|
-
execute(deltaTime) {
|
|
190
|
-
const entities = this.world._queryByMaskKey(this.queryMaskKey, this.queryMask);
|
|
191
|
-
const callback = this.userCallback;
|
|
192
|
-
const world = this.world;
|
|
193
|
-
const entity = this.proxyEntity;
|
|
194
|
-
const length = entities.length;
|
|
195
|
-
// Fast path: no predicate
|
|
196
|
-
if (!this.conditionPredicate) {
|
|
197
|
-
for (let i = 0; i < length; i++) {
|
|
198
|
-
entity.eid = entities[i];
|
|
199
|
-
callback(entity, deltaTime, world);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
// Filtered path: with predicate
|
|
204
|
-
const predicate = this.conditionPredicate;
|
|
205
|
-
for (let i = 0; i < length; i++) {
|
|
206
|
-
entity.eid = entities[i];
|
|
207
|
-
if (predicate(entity)) {
|
|
208
|
-
callback(entity, deltaTime, world);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Create proxy entity that exposes arrays directly.
|
|
215
|
-
*
|
|
216
|
-
* Each getter closes over a specific TypedArray.
|
|
217
|
-
*/
|
|
218
|
-
createProxyEntity() {
|
|
219
|
-
const world = this.world;
|
|
220
|
-
const entity = {
|
|
221
|
-
eid: 0,
|
|
222
|
-
despawn() {
|
|
223
|
-
world.despawn(this.eid);
|
|
224
|
-
},
|
|
225
|
-
};
|
|
226
|
-
// static property list, static closures
|
|
227
|
-
for (let i = 0; i < this.fieldDescs.length; i++) {
|
|
228
|
-
const { prop, array } = this.fieldDescs[i];
|
|
229
|
-
// Hybrid direct array access
|
|
230
|
-
entity[`${prop}_array`] = array;
|
|
231
|
-
// Ergonomic getter/setter access
|
|
232
|
-
Object.defineProperty(entity, prop, {
|
|
233
|
-
get() { return array[this.eid]; },
|
|
234
|
-
set(value) { array[this.eid] = value; },
|
|
235
|
-
enumerable: true,
|
|
236
|
-
configurable: false,
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
Object.seal(entity);
|
|
240
|
-
Object.preventExtensions(entity);
|
|
241
|
-
return entity;
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Get the components this system operates on.
|
|
245
|
-
*/
|
|
246
|
-
getComponents() {
|
|
247
|
-
return this.components;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { SystemBuilder } from "./system-builder";
|
|
2
|
-
/**
|
|
3
|
-
* Systems API for a World.
|
|
4
|
-
*
|
|
5
|
-
* The world extends this class to provide system building capabilities.
|
|
6
|
-
*
|
|
7
|
-
* **Performance Comparison** (50K entities benchmark):
|
|
8
|
-
* - Raw API: 8.94ms (baseline - fastest)
|
|
9
|
-
* - Hybrid API: 15.65ms (1.75x slower - recommended!)
|
|
10
|
-
* - Ergonomic API: 18.79ms (2.1x slower - most convenient)
|
|
11
|
-
*
|
|
12
|
-
* **Recommendation:**
|
|
13
|
-
* Use the hybrid API pattern (see examples below) for the best balance of
|
|
14
|
-
* performance and ergonomics. It's only ~75% slower than raw while maintaining
|
|
15
|
-
* the convenience of the system builder.
|
|
16
|
-
*/
|
|
17
|
-
export class WorldSystems {
|
|
18
|
-
constructor() {
|
|
19
|
-
/** Registered systems that run automatically with runSystems() */
|
|
20
|
-
this.registeredSystems = [];
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Create a new system builder for ergonomic system definition.
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* Basic usage (ergonomic but ~2x slower):
|
|
27
|
-
* ```typescript
|
|
28
|
-
* world.addSystem()
|
|
29
|
-
* .query(Transform2D, Velocity)
|
|
30
|
-
* .fields([
|
|
31
|
-
* { transform: ['x', 'y'] },
|
|
32
|
-
* { velocity: ['vx', 'vy'] }
|
|
33
|
-
* ])
|
|
34
|
-
* .run((entity, deltaTime) => {
|
|
35
|
-
* entity.transform_x += entity.velocity_vx * deltaTime;
|
|
36
|
-
* entity.transform_y += entity.velocity_vy * deltaTime;
|
|
37
|
-
* });
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* Performance mode (raw speed, still ergonomic):
|
|
42
|
-
* ```typescript
|
|
43
|
-
* world.addSystem()
|
|
44
|
-
* .query(Transform2D, Velocity)
|
|
45
|
-
* .fields([
|
|
46
|
-
* { transform: ['x', 'y'] },
|
|
47
|
-
* { velocity: ['vx', 'vy'] }
|
|
48
|
-
* ])
|
|
49
|
-
* .run((entity, deltaTime) => {
|
|
50
|
-
* // Destructure arrays for direct access (fast!)
|
|
51
|
-
* const {eid, transform_x_array: tx, transform_y_array: ty,
|
|
52
|
-
* velocity_vx_array: vx, velocity_vy_array: vy} = entity;
|
|
53
|
-
* tx[eid] += vx[eid] * deltaTime;
|
|
54
|
-
* ty[eid] += vy[eid] * deltaTime;
|
|
55
|
-
* });
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
addSystem() {
|
|
59
|
-
return new SystemBuilder(this, [], undefined, undefined);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Run all registered systems with the given deltaTime.
|
|
63
|
-
* Systems are executed in registration order.
|
|
64
|
-
*
|
|
65
|
-
* @param deltaTime - Time delta to pass to each system
|
|
66
|
-
*/
|
|
67
|
-
runSystems(deltaTime) {
|
|
68
|
-
for (let i = 0; i < this.registeredSystems.length; i++) {
|
|
69
|
-
this.registeredSystems[i].execute(deltaTime);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Register a system for automatic execution.
|
|
74
|
-
* @internal - Called by SystemBuilder
|
|
75
|
-
*/
|
|
76
|
-
_registerSystem(system) {
|
|
77
|
-
this.registeredSystems.push(system);
|
|
78
|
-
}
|
|
79
|
-
}
|