@lagless/physics2d 0.0.43 → 0.0.46

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 CHANGED
@@ -5,10 +5,10 @@ Rapier 2D physics integration for the lagless ECS framework. Deterministic stepp
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- pnpm add @lagless/physics2d @dimforge/rapier2d-compat
8
+ pnpm add @lagless/physics2d @dimforge/rapier2d-deterministic-compat
9
9
  ```
10
10
 
11
- Peer dependency: `@dimforge/rapier2d-compat >= 0.14.0`
11
+ Peer dependency: `@dimforge/rapier2d-deterministic-compat >= 0.15.0`
12
12
 
13
13
  ## Architecture
14
14
 
@@ -18,7 +18,7 @@ Peer dependency: `@dimforge/rapier2d-compat >= 0.14.0`
18
18
 
19
19
  @lagless/physics2d (2D wrappers: PhysicsWorldManager2d, PhysicsStepSync2d, PhysicsRunner2d, ...)
20
20
 
21
- └── peer: @dimforge/rapier2d-compat
21
+ └── peer: @dimforge/rapier2d-deterministic-compat
22
22
  ```
23
23
 
24
24
  ## ECS Schema (codegen)
@@ -54,7 +54,7 @@ filters:
54
54
  ### Runner Setup
55
55
 
56
56
  ```typescript
57
- import RAPIER from '@dimforge/rapier2d-compat';
57
+ import RAPIER from '@dimforge/rapier2d-deterministic-compat';
58
58
  import { PhysicsConfig2d } from '@lagless/physics2d';
59
59
  import { MyGameRunner } from './code-gen/my-game.runner.js';
60
60
 
package/dist/index.d.ts CHANGED
@@ -5,6 +5,6 @@ export * from './lib/physics-world-manager-2d.js';
5
5
  export * from './lib/physics-step-sync-2d.js';
6
6
  export * from './lib/physics-simulation-2d.js';
7
7
  export * from './lib/physics-runner-2d.js';
8
- export { BodyType, type BodyTypeValue, ColliderEntityMap, handleToIndex, CollisionLayers, CollisionEventsBase } from '@lagless/physics-shared';
8
+ export { BodyType, type BodyTypeValue, ColliderEntityMap, UNMAPPED_ENTITY, handleToIndex, CollisionLayers, CollisionEventsBase } from '@lagless/physics-shared';
9
9
  export type { IPhysicsRefsComponent, IFilter, IPhysicsWorldManagerBase, IRapierEventQueue, IColliderSensorChecker } from '@lagless/physics-shared';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC/I,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChK,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,6 @@ export * from './lib/physics-world-manager-2d.js';
5
5
  export * from './lib/physics-step-sync-2d.js';
6
6
  export * from './lib/physics-simulation-2d.js';
7
7
  export * from './lib/physics-runner-2d.js';
8
- export { BodyType, ColliderEntityMap, handleToIndex, CollisionLayers, CollisionEventsBase } from '@lagless/physics-shared';
8
+ export { BodyType, ColliderEntityMap, UNMAPPED_ENTITY, handleToIndex, CollisionLayers, CollisionEventsBase } from '@lagless/physics-shared';
9
9
 
10
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './lib/rapier-types-2d.js';\nexport * from './lib/physics-config-2d.js';\nexport * from './lib/collision-events-2d.js';\nexport * from './lib/physics-world-manager-2d.js';\nexport * from './lib/physics-step-sync-2d.js';\nexport * from './lib/physics-simulation-2d.js';\nexport * from './lib/physics-runner-2d.js';\n\nexport { BodyType, type BodyTypeValue, ColliderEntityMap, handleToIndex, CollisionLayers, CollisionEventsBase } from '@lagless/physics-shared';\nexport type { IPhysicsRefsComponent, IFilter, IPhysicsWorldManagerBase, IRapierEventQueue, IColliderSensorChecker } from '@lagless/physics-shared';\n"],"names":["BodyType","ColliderEntityMap","handleToIndex","CollisionLayers","CollisionEventsBase"],"rangeMappings":";;;;;;;","mappings":"AAAA,cAAc,2BAA2B;AACzC,cAAc,6BAA6B;AAC3C,cAAc,+BAA+B;AAC7C,cAAc,oCAAoC;AAClD,cAAc,gCAAgC;AAC9C,cAAc,iCAAiC;AAC/C,cAAc,6BAA6B;AAE3C,SAASA,QAAQ,EAAsBC,iBAAiB,EAAEC,aAAa,EAAEC,eAAe,EAAEC,mBAAmB,QAAQ,0BAA0B"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './lib/rapier-types-2d.js';\nexport * from './lib/physics-config-2d.js';\nexport * from './lib/collision-events-2d.js';\nexport * from './lib/physics-world-manager-2d.js';\nexport * from './lib/physics-step-sync-2d.js';\nexport * from './lib/physics-simulation-2d.js';\nexport * from './lib/physics-runner-2d.js';\n\nexport { BodyType, type BodyTypeValue, ColliderEntityMap, UNMAPPED_ENTITY, handleToIndex, CollisionLayers, CollisionEventsBase } from '@lagless/physics-shared';\nexport type { IPhysicsRefsComponent, IFilter, IPhysicsWorldManagerBase, IRapierEventQueue, IColliderSensorChecker } from '@lagless/physics-shared';\n"],"names":["BodyType","ColliderEntityMap","UNMAPPED_ENTITY","handleToIndex","CollisionLayers","CollisionEventsBase"],"rangeMappings":";;;;;;;","mappings":"AAAA,cAAc,2BAA2B;AACzC,cAAc,6BAA6B;AAC3C,cAAc,+BAA+B;AAC7C,cAAc,oCAAoC;AAClD,cAAc,gCAAgC;AAC9C,cAAc,iCAAiC;AAC/C,cAAc,6BAA6B;AAE3C,SAASA,QAAQ,EAAsBC,iBAAiB,EAAEC,eAAe,EAAEC,aAAa,EAAEC,eAAe,EAAEC,mBAAmB,QAAQ,0BAA0B"}
@@ -2,8 +2,6 @@ export declare class PhysicsConfig2d {
2
2
  readonly gravityX: number;
3
3
  readonly gravityY: number;
4
4
  readonly substeps: number;
5
- /** Per-substep dt in seconds, derived from frameDt / substeps */
6
- readonly substepDt: number;
7
- constructor(options?: Partial<Pick<PhysicsConfig2d, 'gravityX' | 'gravityY' | 'substeps'>>, frameDt?: number);
5
+ constructor(options?: Partial<Pick<PhysicsConfig2d, 'gravityX' | 'gravityY' | 'substeps'>>);
8
6
  }
9
7
  //# sourceMappingURL=physics-config-2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"physics-config-2d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-config-2d.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,iEAAiE;IACjE,SAAgB,SAAS,EAAE,MAAM,CAAC;gBAGhC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,EAC9E,OAAO,GAAE,MAAe;CAO3B"}
1
+ {"version":3,"file":"physics-config-2d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-config-2d.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAG/B,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;CAMjF"}
@@ -1,12 +1,11 @@
1
1
  export class PhysicsConfig2d {
2
- constructor(options, frameDt = 1 / 60){
2
+ constructor(options){
3
3
  var _options_gravityX;
4
4
  this.gravityX = (_options_gravityX = options == null ? void 0 : options.gravityX) != null ? _options_gravityX : 0;
5
5
  var _options_gravityY;
6
6
  this.gravityY = (_options_gravityY = options == null ? void 0 : options.gravityY) != null ? _options_gravityY : -9.81;
7
7
  var _options_substeps;
8
8
  this.substeps = (_options_substeps = options == null ? void 0 : options.substeps) != null ? _options_substeps : 1;
9
- this.substepDt = frameDt / this.substeps;
10
9
  }
11
10
  }
12
11
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/physics-config-2d.ts"],"sourcesContent":["export class PhysicsConfig2d {\n public readonly gravityX: number;\n public readonly gravityY: number;\n public readonly substeps: number;\n /** Per-substep dt in seconds, derived from frameDt / substeps */\n public readonly substepDt: number;\n\n constructor(\n options?: Partial<Pick<PhysicsConfig2d, 'gravityX' | 'gravityY' | 'substeps'>>,\n frameDt: number = 1 / 60,\n ) {\n this.gravityX = options?.gravityX ?? 0;\n this.gravityY = options?.gravityY ?? -9.81;\n this.substeps = options?.substeps ?? 1;\n this.substepDt = frameDt / this.substeps;\n }\n}\n"],"names":["PhysicsConfig2d","constructor","options","frameDt","gravityX","gravityY","substeps","substepDt"],"rangeMappings":";;;;;;;;;;","mappings":"AAAA,OAAO,MAAMA;IAOXC,YACEC,OAA8E,EAC9EC,UAAkB,IAAI,EAAE,CACxB;YACgBD;QAAhB,IAAI,CAACE,QAAQ,GAAGF,CAAAA,oBAAAA,2BAAAA,QAASE,QAAQ,YAAjBF,oBAAqB;YACrBA;QAAhB,IAAI,CAACG,QAAQ,GAAGH,CAAAA,oBAAAA,2BAAAA,QAASG,QAAQ,YAAjBH,oBAAqB,CAAC;YACtBA;QAAhB,IAAI,CAACI,QAAQ,GAAGJ,CAAAA,oBAAAA,2BAAAA,QAASI,QAAQ,YAAjBJ,oBAAqB;QACrC,IAAI,CAACK,SAAS,GAAGJ,UAAU,IAAI,CAACG,QAAQ;IAC1C;AACF"}
1
+ {"version":3,"sources":["../../src/lib/physics-config-2d.ts"],"sourcesContent":["export class PhysicsConfig2d {\n public readonly gravityX: number;\n public readonly gravityY: number;\n public readonly substeps: number;\n\n constructor(\n options?: Partial<Pick<PhysicsConfig2d, 'gravityX' | 'gravityY' | 'substeps'>>,\n ) {\n this.gravityX = options?.gravityX ?? 0;\n this.gravityY = options?.gravityY ?? -9.81;\n this.substeps = options?.substeps ?? 1;\n }\n}\n"],"names":["PhysicsConfig2d","constructor","options","gravityX","gravityY","substeps"],"rangeMappings":";;;;;;;;;","mappings":"AAAA,OAAO,MAAMA;IAKXC,YACEC,OAA8E,CAC9E;YACgBA;QAAhB,IAAI,CAACC,QAAQ,GAAGD,CAAAA,oBAAAA,2BAAAA,QAASC,QAAQ,YAAjBD,oBAAqB;YACrBA;QAAhB,IAAI,CAACE,QAAQ,GAAGF,CAAAA,oBAAAA,2BAAAA,QAASE,QAAQ,YAAjBF,oBAAqB,CAAC;YACtBA;QAAhB,IAAI,CAACG,QAAQ,GAAGH,CAAAA,oBAAAA,2BAAAA,QAASG,QAAQ,YAAjBH,oBAAqB;IACvC;AACF"}
@@ -1,16 +1,15 @@
1
1
  import { AbstractInputProvider, ECSConfig, ECSRunner, ECSDeps, IECSSystemConstructor } from '@lagless/core';
2
2
  import { ISignalConstructor } from '@lagless/core';
3
- import { CollisionLayers } from '@lagless/physics-shared';
3
+ import { CollisionLayers, PhysicsSimulationBase } from '@lagless/physics-shared';
4
4
  import { CollisionEvents2d } from './collision-events-2d.js';
5
5
  import { PhysicsConfig2d } from './physics-config-2d.js';
6
- import { PhysicsSimulation2d } from './physics-simulation-2d.js';
7
6
  import { PhysicsWorldManager2d } from './physics-world-manager-2d.js';
8
7
  import { RapierModule2d } from './rapier-types-2d.js';
9
8
  export declare abstract class PhysicsRunner2d extends ECSRunner {
10
9
  readonly PhysicsWorldManager: PhysicsWorldManager2d;
11
10
  readonly PhysicsConfig: PhysicsConfig2d;
12
11
  readonly CollisionEvents: CollisionEvents2d;
13
- readonly Simulation: PhysicsSimulation2d;
12
+ readonly Simulation: PhysicsSimulationBase;
14
13
  protected constructor(Config: ECSConfig, InputProviderInstance: AbstractInputProvider, Systems: Array<IECSSystemConstructor>, Signals: Array<ISignalConstructor>, Deps: ECSDeps, rapier: RapierModule2d, physicsConfig?: PhysicsConfig2d, collisionLayers?: CollisionLayers, extraRegistrations?: Array<[unknown, unknown]>);
15
14
  dispose(): void;
16
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"physics-runner-2d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-runner-2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8BAAsB,eAAgB,SAAQ,SAAS;IACrD,SAAgB,mBAAmB,EAAE,qBAAqB,CAAC;IAC3D,SAAgB,aAAa,EAAE,eAAe,CAAC;IAC/C,SAAgB,eAAe,EAAE,iBAAiB,CAAC;IACnD,SAAyB,UAAU,EAAE,mBAAmB,CAAC;IAEzD,SAAS,aACP,MAAM,EAAE,SAAS,EACjB,qBAAqB,EAAE,qBAAqB,EAC5C,OAAO,EAAE,KAAK,CAAC,qBAAqB,CAAC,EACrC,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC,EAClC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,cAAc,EACtB,aAAa,CAAC,EAAE,eAAe,EAC/B,eAAe,CAAC,EAAE,eAAe,EACjC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IA0BhC,OAAO,IAAI,IAAI;CAIhC"}
1
+ {"version":3,"file":"physics-runner-2d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-runner-2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAgC,MAAM,yBAAyB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8BAAsB,eAAgB,SAAQ,SAAS;IACrD,SAAgB,mBAAmB,EAAE,qBAAqB,CAAC;IAC3D,SAAgB,aAAa,EAAE,eAAe,CAAC;IAC/C,SAAgB,eAAe,EAAE,iBAAiB,CAAC;IACnD,SAAyB,UAAU,EAAE,qBAAqB,CAAC;IAE3D,SAAS,aACP,MAAM,EAAE,SAAS,EACjB,qBAAqB,EAAE,qBAAqB,EAC5C,OAAO,EAAE,KAAK,CAAC,qBAAqB,CAAC,EACrC,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC,EAClC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,cAAc,EACtB,aAAa,CAAC,EAAE,eAAe,EAC/B,eAAe,CAAC,EAAE,eAAe,EACjC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IA4BhC,OAAO,IAAI,IAAI;CAIhC"}
@@ -1,8 +1,7 @@
1
1
  import { ECSRunner } from '@lagless/core';
2
- import { CollisionLayers } from '@lagless/physics-shared';
2
+ import { CollisionLayers, PhysicsSimulationBase, wireColliderEntityMapRebuild } from '@lagless/physics-shared';
3
3
  import { CollisionEvents2d } from './collision-events-2d.js';
4
4
  import { PhysicsConfig2d } from './physics-config-2d.js';
5
- import { PhysicsSimulation2d } from './physics-simulation-2d.js';
6
5
  import { PhysicsWorldManager2d } from './physics-world-manager-2d.js';
7
6
  export class PhysicsRunner2d extends ECSRunner {
8
7
  dispose() {
@@ -12,7 +11,7 @@ export class PhysicsRunner2d extends ECSRunner {
12
11
  constructor(Config, InputProviderInstance, Systems, Signals, Deps, rapier, physicsConfig, collisionLayers, extraRegistrations){
13
12
  const config = physicsConfig != null ? physicsConfig : new PhysicsConfig2d();
14
13
  const worldManager = new PhysicsWorldManager2d(rapier, config, Config.frameLength);
15
- const simulation = new PhysicsSimulation2d(Config, Deps, InputProviderInstance, worldManager);
14
+ const simulation = new PhysicsSimulationBase(Config, Deps, InputProviderInstance, worldManager);
16
15
  const extraRegs = [
17
16
  [
18
17
  PhysicsWorldManager2d,
@@ -41,6 +40,7 @@ export class PhysicsRunner2d extends ECSRunner {
41
40
  this.PhysicsConfig = config;
42
41
  this.Simulation = simulation;
43
42
  this.CollisionEvents = worldManager.collisionEvents;
43
+ wireColliderEntityMapRebuild(Deps, simulation, worldManager.colliderEntityMap);
44
44
  }
45
45
  }
46
46
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/physics-runner-2d.ts"],"sourcesContent":["import { AbstractInputProvider, ECSConfig, ECSRunner, ECSDeps, IECSSystemConstructor } from '@lagless/core';\nimport { ISignalConstructor } from '@lagless/core';\nimport { CollisionLayers } from '@lagless/physics-shared';\nimport { CollisionEvents2d } from './collision-events-2d.js';\nimport { PhysicsConfig2d } from './physics-config-2d.js';\nimport { PhysicsSimulation2d } from './physics-simulation-2d.js';\nimport { PhysicsWorldManager2d } from './physics-world-manager-2d.js';\nimport { RapierModule2d } from './rapier-types-2d.js';\n\nexport abstract class PhysicsRunner2d extends ECSRunner {\n public readonly PhysicsWorldManager: PhysicsWorldManager2d;\n public readonly PhysicsConfig: PhysicsConfig2d;\n public readonly CollisionEvents: CollisionEvents2d;\n public override readonly Simulation: PhysicsSimulation2d;\n\n protected constructor(\n Config: ECSConfig,\n InputProviderInstance: AbstractInputProvider,\n Systems: Array<IECSSystemConstructor>,\n Signals: Array<ISignalConstructor>,\n Deps: ECSDeps,\n rapier: RapierModule2d,\n physicsConfig?: PhysicsConfig2d,\n collisionLayers?: CollisionLayers,\n extraRegistrations?: Array<[unknown, unknown]>,\n ) {\n const config = physicsConfig ?? new PhysicsConfig2d();\n const worldManager = new PhysicsWorldManager2d(rapier, config, Config.frameLength);\n const simulation = new PhysicsSimulation2d(Config, Deps, InputProviderInstance, worldManager);\n\n const extraRegs: Array<[unknown, unknown]> = [\n [PhysicsWorldManager2d, worldManager],\n [PhysicsConfig2d, config],\n [CollisionEvents2d, worldManager.collisionEvents],\n ];\n if (collisionLayers) {\n extraRegs.push([CollisionLayers, collisionLayers]);\n }\n if (extraRegistrations) {\n extraRegs.push(...extraRegistrations);\n }\n\n super(Config, InputProviderInstance, Systems, Signals, Deps, simulation, extraRegs);\n\n this.PhysicsWorldManager = worldManager;\n this.PhysicsConfig = config;\n this.Simulation = simulation;\n this.CollisionEvents = worldManager.collisionEvents;\n }\n\n public override dispose(): void {\n super.dispose();\n this.PhysicsWorldManager.dispose();\n }\n}\n"],"names":["ECSRunner","CollisionLayers","CollisionEvents2d","PhysicsConfig2d","PhysicsSimulation2d","PhysicsWorldManager2d","PhysicsRunner2d","dispose","PhysicsWorldManager","Config","InputProviderInstance","Systems","Signals","Deps","rapier","physicsConfig","collisionLayers","extraRegistrations","config","worldManager","frameLength","simulation","extraRegs","collisionEvents","push","PhysicsConfig","Simulation","CollisionEvents"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAA2CA,SAAS,QAAwC,gBAAgB;AAE5G,SAASC,eAAe,QAAQ,0BAA0B;AAC1D,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,qBAAqB,QAAQ,gCAAgC;AAGtE,OAAO,MAAeC,wBAAwBN;IAyC5BO,UAAgB;QAC9B,KAAK,CAACA;QACN,IAAI,CAACC,mBAAmB,CAACD,OAAO;IAClC;IAtCA,YACEE,MAAiB,EACjBC,qBAA4C,EAC5CC,OAAqC,EACrCC,OAAkC,EAClCC,IAAa,EACbC,MAAsB,EACtBC,aAA+B,EAC/BC,eAAiC,EACjCC,kBAA8C,CAC9C;QACA,MAAMC,SAASH,wBAAAA,gBAAiB,IAAIZ;QACpC,MAAMgB,eAAe,IAAId,sBAAsBS,QAAQI,QAAQT,OAAOW,WAAW;QACjF,MAAMC,aAAa,IAAIjB,oBAAoBK,QAAQI,MAAMH,uBAAuBS;QAEhF,MAAMG,YAAuC;YAC3C;gBAACjB;gBAAuBc;aAAa;YACrC;gBAAChB;gBAAiBe;aAAO;YACzB;gBAAChB;gBAAmBiB,aAAaI,eAAe;aAAC;SAClD;QACD,IAAIP,iBAAiB;YACnBM,UAAUE,IAAI,CAAC;gBAACvB;gBAAiBe;aAAgB;QACnD;QACA,IAAIC,oBAAoB;YACtBK,UAAUE,IAAI,IAAIP;QACpB;QAEA,KAAK,CAACR,QAAQC,uBAAuBC,SAASC,SAASC,MAAMQ,YAAYC;QAEzE,IAAI,CAACd,mBAAmB,GAAGW;QAC3B,IAAI,CAACM,aAAa,GAAGP;QACrB,IAAI,CAACQ,UAAU,GAAGL;QAClB,IAAI,CAACM,eAAe,GAAGR,aAAaI,eAAe;IACrD;AAMF"}
1
+ {"version":3,"sources":["../../src/lib/physics-runner-2d.ts"],"sourcesContent":["import { AbstractInputProvider, ECSConfig, ECSRunner, ECSDeps, IECSSystemConstructor } from '@lagless/core';\nimport { ISignalConstructor } from '@lagless/core';\nimport { CollisionLayers, PhysicsSimulationBase, wireColliderEntityMapRebuild } from '@lagless/physics-shared';\nimport { CollisionEvents2d } from './collision-events-2d.js';\nimport { PhysicsConfig2d } from './physics-config-2d.js';\nimport { PhysicsWorldManager2d } from './physics-world-manager-2d.js';\nimport { RapierModule2d } from './rapier-types-2d.js';\n\nexport abstract class PhysicsRunner2d extends ECSRunner {\n public readonly PhysicsWorldManager: PhysicsWorldManager2d;\n public readonly PhysicsConfig: PhysicsConfig2d;\n public readonly CollisionEvents: CollisionEvents2d;\n public override readonly Simulation: PhysicsSimulationBase;\n\n protected constructor(\n Config: ECSConfig,\n InputProviderInstance: AbstractInputProvider,\n Systems: Array<IECSSystemConstructor>,\n Signals: Array<ISignalConstructor>,\n Deps: ECSDeps,\n rapier: RapierModule2d,\n physicsConfig?: PhysicsConfig2d,\n collisionLayers?: CollisionLayers,\n extraRegistrations?: Array<[unknown, unknown]>,\n ) {\n const config = physicsConfig ?? new PhysicsConfig2d();\n const worldManager = new PhysicsWorldManager2d(rapier, config, Config.frameLength);\n const simulation = new PhysicsSimulationBase(Config, Deps, InputProviderInstance, worldManager);\n\n const extraRegs: Array<[unknown, unknown]> = [\n [PhysicsWorldManager2d, worldManager],\n [PhysicsConfig2d, config],\n [CollisionEvents2d, worldManager.collisionEvents],\n ];\n if (collisionLayers) {\n extraRegs.push([CollisionLayers, collisionLayers]);\n }\n if (extraRegistrations) {\n extraRegs.push(...extraRegistrations);\n }\n\n super(Config, InputProviderInstance, Systems, Signals, Deps, simulation, extraRegs);\n\n this.PhysicsWorldManager = worldManager;\n this.PhysicsConfig = config;\n this.Simulation = simulation;\n this.CollisionEvents = worldManager.collisionEvents;\n\n wireColliderEntityMapRebuild(Deps, simulation, worldManager.colliderEntityMap);\n }\n\n public override dispose(): void {\n super.dispose();\n this.PhysicsWorldManager.dispose();\n }\n}\n"],"names":["ECSRunner","CollisionLayers","PhysicsSimulationBase","wireColliderEntityMapRebuild","CollisionEvents2d","PhysicsConfig2d","PhysicsWorldManager2d","PhysicsRunner2d","dispose","PhysicsWorldManager","Config","InputProviderInstance","Systems","Signals","Deps","rapier","physicsConfig","collisionLayers","extraRegistrations","config","worldManager","frameLength","simulation","extraRegs","collisionEvents","push","PhysicsConfig","Simulation","CollisionEvents","colliderEntityMap"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAA2CA,SAAS,QAAwC,gBAAgB;AAE5G,SAASC,eAAe,EAAEC,qBAAqB,EAAEC,4BAA4B,QAAQ,0BAA0B;AAC/G,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,qBAAqB,QAAQ,gCAAgC;AAGtE,OAAO,MAAeC,wBAAwBP;IA2C5BQ,UAAgB;QAC9B,KAAK,CAACA;QACN,IAAI,CAACC,mBAAmB,CAACD,OAAO;IAClC;IAxCA,YACEE,MAAiB,EACjBC,qBAA4C,EAC5CC,OAAqC,EACrCC,OAAkC,EAClCC,IAAa,EACbC,MAAsB,EACtBC,aAA+B,EAC/BC,eAAiC,EACjCC,kBAA8C,CAC9C;QACA,MAAMC,SAASH,wBAAAA,gBAAiB,IAAIX;QACpC,MAAMe,eAAe,IAAId,sBAAsBS,QAAQI,QAAQT,OAAOW,WAAW;QACjF,MAAMC,aAAa,IAAIpB,sBAAsBQ,QAAQI,MAAMH,uBAAuBS;QAElF,MAAMG,YAAuC;YAC3C;gBAACjB;gBAAuBc;aAAa;YACrC;gBAACf;gBAAiBc;aAAO;YACzB;gBAACf;gBAAmBgB,aAAaI,eAAe;aAAC;SAClD;QACD,IAAIP,iBAAiB;YACnBM,UAAUE,IAAI,CAAC;gBAACxB;gBAAiBgB;aAAgB;QACnD;QACA,IAAIC,oBAAoB;YACtBK,UAAUE,IAAI,IAAIP;QACpB;QAEA,KAAK,CAACR,QAAQC,uBAAuBC,SAASC,SAASC,MAAMQ,YAAYC;QAEzE,IAAI,CAACd,mBAAmB,GAAGW;QAC3B,IAAI,CAACM,aAAa,GAAGP;QACrB,IAAI,CAACQ,UAAU,GAAGL;QAClB,IAAI,CAACM,eAAe,GAAGR,aAAaI,eAAe;QAEnDrB,6BAA6BW,MAAMQ,YAAYF,aAAaS,iBAAiB;IAC/E;AAMF"}
@@ -1,7 +1,3 @@
1
- import { ECSConfig, AbstractInputProvider, ECSDeps } from '@lagless/core';
2
- import { PhysicsSimulationBase } from '@lagless/physics-shared';
3
- import { PhysicsWorldManager2d } from './physics-world-manager-2d.js';
4
- export declare class PhysicsSimulation2d extends PhysicsSimulationBase {
5
- constructor(config: ECSConfig, deps: ECSDeps, inputProvider: AbstractInputProvider, physicsWorldManager: PhysicsWorldManager2d);
6
- }
1
+ /** @deprecated Use `PhysicsSimulationBase` from `@lagless/physics-shared` directly. */
2
+ export { PhysicsSimulationBase as PhysicsSimulation2d } from '@lagless/physics-shared';
7
3
  //# sourceMappingURL=physics-simulation-2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"physics-simulation-2d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-simulation-2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,qBAAa,mBAAoB,SAAQ,qBAAqB;gBAE1D,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,qBAAqB,EACpC,mBAAmB,EAAE,qBAAqB;CAI7C"}
1
+ {"version":3,"file":"physics-simulation-2d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-simulation-2d.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,qBAAqB,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,8 +1,3 @@
1
- import { PhysicsSimulationBase } from '@lagless/physics-shared';
2
- export class PhysicsSimulation2d extends PhysicsSimulationBase {
3
- constructor(config, deps, inputProvider, physicsWorldManager){
4
- super(config, deps, inputProvider, physicsWorldManager);
5
- }
6
- }
1
+ /** @deprecated Use `PhysicsSimulationBase` from `@lagless/physics-shared` directly. */ export { PhysicsSimulationBase as PhysicsSimulation2d } from '@lagless/physics-shared';
7
2
 
8
3
  //# sourceMappingURL=physics-simulation-2d.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/physics-simulation-2d.ts"],"sourcesContent":["import { ECSConfig, AbstractInputProvider, ECSDeps } from '@lagless/core';\nimport { PhysicsSimulationBase } from '@lagless/physics-shared';\nimport { PhysicsWorldManager2d } from './physics-world-manager-2d.js';\n\nexport class PhysicsSimulation2d extends PhysicsSimulationBase {\n constructor(\n config: ECSConfig,\n deps: ECSDeps,\n inputProvider: AbstractInputProvider,\n physicsWorldManager: PhysicsWorldManager2d,\n ) {\n super(config, deps, inputProvider, physicsWorldManager);\n }\n}\n"],"names":["PhysicsSimulationBase","PhysicsSimulation2d","constructor","config","deps","inputProvider","physicsWorldManager"],"rangeMappings":";;;;;","mappings":"AACA,SAASA,qBAAqB,QAAQ,0BAA0B;AAGhE,OAAO,MAAMC,4BAA4BD;IACvCE,YACEC,MAAiB,EACjBC,IAAa,EACbC,aAAoC,EACpCC,mBAA0C,CAC1C;QACA,KAAK,CAACH,QAAQC,MAAMC,eAAeC;IACrC;AACF"}
1
+ {"version":3,"sources":["../../src/lib/physics-simulation-2d.ts"],"sourcesContent":["/** @deprecated Use `PhysicsSimulationBase` from `@lagless/physics-shared` directly. */\nexport { PhysicsSimulationBase as PhysicsSimulation2d } from '@lagless/physics-shared';\n"],"names":["PhysicsSimulationBase","PhysicsSimulation2d"],"rangeMappings":"","mappings":"AAAA,qFAAqF,GACrF,SAASA,yBAAyBC,mBAAmB,QAAQ,0BAA0B"}
@@ -12,6 +12,7 @@ export declare class PhysicsWorldManager2d {
12
12
  private readonly _colliderEntityMap;
13
13
  get world(): RapierWorld2d;
14
14
  get substeps(): number;
15
+ get substepDt(): number;
15
16
  get colliderEntityMap(): ColliderEntityMap;
16
17
  get collisionEvents(): CollisionEvents2d;
17
18
  constructor(_rapier: RapierModule2d, _config: PhysicsConfig2d, frameLengthMs: number);
@@ -34,7 +35,7 @@ export declare class PhysicsWorldManager2d {
34
35
  createCuboidCollider(hx: number, hy: number, parent?: RapierRigidBody2d, groups?: number, activeEvents?: number): RapierCollider2d;
35
36
  createCapsuleCollider(halfHeight: number, radius: number, parent?: RapierRigidBody2d, groups?: number, activeEvents?: number): RapierCollider2d;
36
37
  createConvexHullCollider(points: Float32Array, parent?: RapierRigidBody2d, groups?: number, activeEvents?: number): RapierCollider2d | null;
37
- createTrimeshCollider(vertices: Float32Array, indices: Uint32Array, parent?: RapierRigidBody2d): RapierCollider2d;
38
+ createTrimeshCollider(vertices: Float32Array, indices: Uint32Array, parent?: RapierRigidBody2d, groups?: number, activeEvents?: number): RapierCollider2d;
38
39
  createColliderFromDesc(desc: RapierColliderDesc2d, parent?: RapierRigidBody2d): RapierCollider2d;
39
40
  getBody(handle: number): RapierRigidBody2d;
40
41
  getCollider(handle: number): RapierCollider2d;
@@ -1 +1 @@
1
- {"version":3,"file":"physics-world-manager-2d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-world-manager-2d.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EAEpB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAI9B,qBAAa,qBAAqB;IAwB9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAxB1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAE9D,IAAW,KAAK,IAAI,aAAa,CAEhC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,iBAAiB,IAAI,iBAAiB,CAEhD;IAED,IAAW,eAAe,IAAI,iBAAiB,CAE9C;gBAGkB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,eAAe,EACzC,aAAa,EAAE,MAAM;IAavB;;;;OAIG;IACI,IAAI,IAAI,IAAI;IAQZ,YAAY,IAAI,UAAU;IAI1B,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAmBvC,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI9D,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAKhD,iBAAiB,IAAI,iBAAiB;IAKtC,eAAe,IAAI,iBAAiB;IAKpC,2BAA2B,IAAI,iBAAiB;IAKhD,2BAA2B,IAAI,iBAAiB;IAKhD,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB;IAKlE,kBAAkB,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB;IAOZ,oBAAoB,CACzB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB;IAOZ,qBAAqB,CAC1B,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAClC,MAAM,CAAC,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB;IAOZ,wBAAwB,CAC7B,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,GAAG,IAAI;IAQnB,qBAAqB,CAC1B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,iBAAiB,GACzB,gBAAgB;IAKZ,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,gBAAgB;IAKhG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAI1C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAK7C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKhC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI;IAM1D,IAAW,MAAM,IAAI,cAAc,CAElC;IAEM,OAAO,IAAI,IAAI;CAIvB"}
1
+ {"version":3,"file":"physics-world-manager-2d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-world-manager-2d.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,9 @@ export class PhysicsWorldManager2d {
9
9
  get substeps() {
10
10
  return this._substeps;
11
11
  }
12
+ get substepDt() {
13
+ return this._substepDt;
14
+ }
12
15
  get colliderEntityMap() {
13
16
  return this._colliderEntityMap;
14
17
  }
@@ -41,10 +44,6 @@ export class PhysicsWorldManager2d {
41
44
  return;
42
45
  }
43
46
  this._world = restored;
44
- // CRITICAL: QueryPipeline is NOT included in the Rapier snapshot format.
45
- // After restoreSnapshot(), the world has a fresh empty QueryPipeline.
46
- // Any scene queries (ray casts, shape casts) will return wrong results until rebuilt.
47
- this._world.updateSceneQueries();
48
47
  }
49
48
  // Entity-collider mapping
50
49
  registerCollider(colliderHandle, entity) {
@@ -99,8 +98,10 @@ export class PhysicsWorldManager2d {
99
98
  if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);
100
99
  return this._world.createCollider(desc, parent);
101
100
  }
102
- createTrimeshCollider(vertices, indices, parent) {
101
+ createTrimeshCollider(vertices, indices, parent, groups, activeEvents) {
103
102
  const desc = this._rapier.ColliderDesc.trimesh(vertices, indices);
103
+ if (groups !== undefined) desc.setCollisionGroups(groups);
104
+ if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);
104
105
  return this._world.createCollider(desc, parent);
105
106
  }
106
107
  createColliderFromDesc(desc, parent) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/physics-world-manager-2d.ts"],"sourcesContent":["import { createLogger } from '@lagless/misc';\nimport { ColliderEntityMap } from '@lagless/physics-shared';\nimport { CollisionEvents2d } from './collision-events-2d.js';\nimport { PhysicsConfig2d } from './physics-config-2d.js';\nimport {\n RapierCollider2d,\n RapierColliderDesc2d,\n RapierEventQueue,\n RapierModule2d,\n RapierRigidBody2d,\n RapierRigidBodyDesc2d,\n RapierWorld2d,\n} from './rapier-types-2d.js';\n\nconst log = createLogger('PhysicsWorldManager2d');\n\nexport class PhysicsWorldManager2d {\n private _world: RapierWorld2d;\n private readonly _substeps: number;\n private readonly _substepDt: number;\n private readonly _collisionEvents: CollisionEvents2d;\n private readonly _colliderEntityMap = new ColliderEntityMap();\n\n public get world(): RapierWorld2d {\n return this._world;\n }\n\n public get substeps(): number {\n return this._substeps;\n }\n\n public get colliderEntityMap(): ColliderEntityMap {\n return this._colliderEntityMap;\n }\n\n public get collisionEvents(): CollisionEvents2d {\n return this._collisionEvents;\n }\n\n constructor(\n private readonly _rapier: RapierModule2d,\n private readonly _config: PhysicsConfig2d,\n frameLengthMs: number,\n ) {\n this._world = new _rapier.World({\n x: _config.gravityX,\n y: _config.gravityY,\n });\n\n this._substeps = _config.substeps;\n this._substepDt = (frameLengthMs / 1000) / this._substeps;\n this._world.timestep = this._substepDt;\n this._collisionEvents = new CollisionEvents2d(_rapier);\n }\n\n /**\n * Step the physics world for one ECS frame.\n * Executes `substeps` Rapier steps, each with a fixed dt derived from frameLength / substeps.\n * When collision events are enabled, drains the event queue after all substeps.\n */\n public step(): void {\n const eq = this._collisionEvents.eventQueue as RapierEventQueue;\n for (let i = 0; i < this._substeps; i++) {\n this._world.step(eq);\n }\n this._collisionEvents.drain(this._colliderEntityMap, this._world);\n }\n\n public takeSnapshot(): Uint8Array {\n return this._world.takeSnapshot();\n }\n\n public restoreSnapshot(data: Uint8Array): void {\n this._world.free();\n const restored = this._rapier.World.restoreSnapshot(data);\n if (!restored) {\n log.warn('Failed to restore Rapier snapshot, recreating world');\n this._world = new this._rapier.World({\n x: this._config.gravityX,\n y: this._config.gravityY,\n });\n return;\n }\n this._world = restored;\n // CRITICAL: QueryPipeline is NOT included in the Rapier snapshot format.\n // After restoreSnapshot(), the world has a fresh empty QueryPipeline.\n // Any scene queries (ray casts, shape casts) will return wrong results until rebuilt.\n this._world.updateSceneQueries();\n }\n\n // Entity-collider mapping\n public registerCollider(colliderHandle: number, entity: number): void {\n this._colliderEntityMap.set(colliderHandle, entity);\n }\n\n public unregisterCollider(colliderHandle: number): void {\n this._colliderEntityMap.delete(colliderHandle);\n }\n\n // Body factories\n public createDynamicBody(): RapierRigidBody2d {\n const desc = this._rapier.RigidBodyDesc.dynamic();\n return this._world.createRigidBody(desc);\n }\n\n public createFixedBody(): RapierRigidBody2d {\n const desc = this._rapier.RigidBodyDesc.fixed();\n return this._world.createRigidBody(desc);\n }\n\n public createKinematicPositionBody(): RapierRigidBody2d {\n const desc = this._rapier.RigidBodyDesc.kinematicPositionBased();\n return this._world.createRigidBody(desc);\n }\n\n public createKinematicVelocityBody(): RapierRigidBody2d {\n const desc = this._rapier.RigidBodyDesc.kinematicVelocityBased();\n return this._world.createRigidBody(desc);\n }\n\n public createBodyFromDesc(desc: RapierRigidBodyDesc2d): RapierRigidBody2d {\n return this._world.createRigidBody(desc);\n }\n\n // Collider factories (with optional collision groups and active events)\n public createBallCollider(\n radius: number,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d {\n const desc = this._rapier.ColliderDesc.ball(radius);\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createCuboidCollider(\n hx: number, hy: number,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d {\n const desc = this._rapier.ColliderDesc.cuboid(hx, hy);\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createCapsuleCollider(\n halfHeight: number, radius: number,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d {\n const desc = this._rapier.ColliderDesc.capsule(halfHeight, radius);\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createConvexHullCollider(\n points: Float32Array,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d | null {\n const desc = this._rapier.ColliderDesc.convexHull(points);\n if (!desc) return null;\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createTrimeshCollider(\n vertices: Float32Array,\n indices: Uint32Array,\n parent?: RapierRigidBody2d,\n ): RapierCollider2d {\n const desc = this._rapier.ColliderDesc.trimesh(vertices, indices);\n return this._world.createCollider(desc, parent);\n }\n\n public createColliderFromDesc(desc: RapierColliderDesc2d, parent?: RapierRigidBody2d): RapierCollider2d {\n return this._world.createCollider(desc, parent);\n }\n\n // Accessors\n public getBody(handle: number): RapierRigidBody2d {\n return this._world.getRigidBody(handle);\n }\n\n public getCollider(handle: number): RapierCollider2d {\n return this._world.getCollider(handle);\n }\n\n // Removal\n public removeBody(handle: number): void {\n const body = this._world.getRigidBody(handle);\n this._world.removeRigidBody(body);\n }\n\n public removeCollider(handle: number, wakeUp = true): void {\n const collider = this._world.getCollider(handle);\n this._world.removeCollider(collider, wakeUp);\n }\n\n // Rapier module access (for creating descs in game code)\n public get rapier(): RapierModule2d {\n return this._rapier;\n }\n\n public dispose(): void {\n this._collisionEvents.dispose();\n this._world.free();\n }\n}\n"],"names":["createLogger","ColliderEntityMap","CollisionEvents2d","log","PhysicsWorldManager2d","world","_world","substeps","_substeps","colliderEntityMap","_colliderEntityMap","collisionEvents","_collisionEvents","step","eq","eventQueue","i","drain","takeSnapshot","restoreSnapshot","data","free","restored","_rapier","World","warn","x","_config","gravityX","y","gravityY","updateSceneQueries","registerCollider","colliderHandle","entity","set","unregisterCollider","delete","createDynamicBody","desc","RigidBodyDesc","dynamic","createRigidBody","createFixedBody","fixed","createKinematicPositionBody","kinematicPositionBased","createKinematicVelocityBody","kinematicVelocityBased","createBodyFromDesc","createBallCollider","radius","parent","groups","activeEvents","ColliderDesc","ball","undefined","setCollisionGroups","setActiveEvents","createCollider","createCuboidCollider","hx","hy","cuboid","createCapsuleCollider","halfHeight","capsule","createConvexHullCollider","points","convexHull","createTrimeshCollider","vertices","indices","trimesh","createColliderFromDesc","getBody","handle","getRigidBody","getCollider","removeBody","body","removeRigidBody","removeCollider","wakeUp","collider","rapier","dispose","constructor","frameLengthMs","_substepDt","timestep"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/lib/physics-world-manager-2d.ts"],"sourcesContent":["import { createLogger } from '@lagless/misc';\nimport { ColliderEntityMap } from '@lagless/physics-shared';\nimport { CollisionEvents2d } from './collision-events-2d.js';\nimport { PhysicsConfig2d } from './physics-config-2d.js';\nimport {\n RapierCollider2d,\n RapierColliderDesc2d,\n RapierEventQueue,\n RapierModule2d,\n RapierRigidBody2d,\n RapierRigidBodyDesc2d,\n RapierWorld2d,\n} from './rapier-types-2d.js';\n\nconst log = createLogger('PhysicsWorldManager2d');\n\nexport class PhysicsWorldManager2d {\n private _world: RapierWorld2d;\n private readonly _substeps: number;\n private readonly _substepDt: number;\n private readonly _collisionEvents: CollisionEvents2d;\n private readonly _colliderEntityMap = new ColliderEntityMap();\n\n public get world(): RapierWorld2d {\n return this._world;\n }\n\n public get substeps(): number {\n return this._substeps;\n }\n\n public get substepDt(): number {\n return this._substepDt;\n }\n\n public get colliderEntityMap(): ColliderEntityMap {\n return this._colliderEntityMap;\n }\n\n public get collisionEvents(): CollisionEvents2d {\n return this._collisionEvents;\n }\n\n constructor(\n private readonly _rapier: RapierModule2d,\n private readonly _config: PhysicsConfig2d,\n frameLengthMs: number,\n ) {\n this._world = new _rapier.World({\n x: _config.gravityX,\n y: _config.gravityY,\n });\n\n this._substeps = _config.substeps;\n this._substepDt = (frameLengthMs / 1000) / this._substeps;\n this._world.timestep = this._substepDt;\n this._collisionEvents = new CollisionEvents2d(_rapier);\n }\n\n /**\n * Step the physics world for one ECS frame.\n * Executes `substeps` Rapier steps, each with a fixed dt derived from frameLength / substeps.\n * When collision events are enabled, drains the event queue after all substeps.\n */\n public step(): void {\n const eq = this._collisionEvents.eventQueue as RapierEventQueue;\n for (let i = 0; i < this._substeps; i++) {\n this._world.step(eq);\n }\n this._collisionEvents.drain(this._colliderEntityMap, this._world);\n }\n\n public takeSnapshot(): Uint8Array {\n return this._world.takeSnapshot();\n }\n\n public restoreSnapshot(data: Uint8Array): void {\n this._world.free();\n const restored = this._rapier.World.restoreSnapshot(data);\n if (!restored) {\n log.warn('Failed to restore Rapier snapshot, recreating world');\n this._world = new this._rapier.World({\n x: this._config.gravityX,\n y: this._config.gravityY,\n });\n return;\n }\n this._world = restored;\n }\n\n // Entity-collider mapping\n public registerCollider(colliderHandle: number, entity: number): void {\n this._colliderEntityMap.set(colliderHandle, entity);\n }\n\n public unregisterCollider(colliderHandle: number): void {\n this._colliderEntityMap.delete(colliderHandle);\n }\n\n // Body factories\n public createDynamicBody(): RapierRigidBody2d {\n const desc = this._rapier.RigidBodyDesc.dynamic();\n return this._world.createRigidBody(desc);\n }\n\n public createFixedBody(): RapierRigidBody2d {\n const desc = this._rapier.RigidBodyDesc.fixed();\n return this._world.createRigidBody(desc);\n }\n\n public createKinematicPositionBody(): RapierRigidBody2d {\n const desc = this._rapier.RigidBodyDesc.kinematicPositionBased();\n return this._world.createRigidBody(desc);\n }\n\n public createKinematicVelocityBody(): RapierRigidBody2d {\n const desc = this._rapier.RigidBodyDesc.kinematicVelocityBased();\n return this._world.createRigidBody(desc);\n }\n\n public createBodyFromDesc(desc: RapierRigidBodyDesc2d): RapierRigidBody2d {\n return this._world.createRigidBody(desc);\n }\n\n // Collider factories (with optional collision groups and active events)\n public createBallCollider(\n radius: number,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d {\n const desc = this._rapier.ColliderDesc.ball(radius);\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createCuboidCollider(\n hx: number, hy: number,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d {\n const desc = this._rapier.ColliderDesc.cuboid(hx, hy);\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createCapsuleCollider(\n halfHeight: number, radius: number,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d {\n const desc = this._rapier.ColliderDesc.capsule(halfHeight, radius);\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createConvexHullCollider(\n points: Float32Array,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d | null {\n const desc = this._rapier.ColliderDesc.convexHull(points);\n if (!desc) return null;\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createTrimeshCollider(\n vertices: Float32Array,\n indices: Uint32Array,\n parent?: RapierRigidBody2d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider2d {\n const desc = this._rapier.ColliderDesc.trimesh(vertices, indices);\n if (groups !== undefined) desc.setCollisionGroups(groups);\n if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);\n return this._world.createCollider(desc, parent);\n }\n\n public createColliderFromDesc(desc: RapierColliderDesc2d, parent?: RapierRigidBody2d): RapierCollider2d {\n return this._world.createCollider(desc, parent);\n }\n\n // Accessors\n public getBody(handle: number): RapierRigidBody2d {\n return this._world.getRigidBody(handle);\n }\n\n public getCollider(handle: number): RapierCollider2d {\n return this._world.getCollider(handle);\n }\n\n // Removal\n public removeBody(handle: number): void {\n const body = this._world.getRigidBody(handle);\n this._world.removeRigidBody(body);\n }\n\n public removeCollider(handle: number, wakeUp = true): void {\n const collider = this._world.getCollider(handle);\n this._world.removeCollider(collider, wakeUp);\n }\n\n // Rapier module access (for creating descs in game code)\n public get rapier(): RapierModule2d {\n return this._rapier;\n }\n\n public dispose(): void {\n this._collisionEvents.dispose();\n this._world.free();\n }\n}\n"],"names":["createLogger","ColliderEntityMap","CollisionEvents2d","log","PhysicsWorldManager2d","world","_world","substeps","_substeps","substepDt","_substepDt","colliderEntityMap","_colliderEntityMap","collisionEvents","_collisionEvents","step","eq","eventQueue","i","drain","takeSnapshot","restoreSnapshot","data","free","restored","_rapier","World","warn","x","_config","gravityX","y","gravityY","registerCollider","colliderHandle","entity","set","unregisterCollider","delete","createDynamicBody","desc","RigidBodyDesc","dynamic","createRigidBody","createFixedBody","fixed","createKinematicPositionBody","kinematicPositionBased","createKinematicVelocityBody","kinematicVelocityBased","createBodyFromDesc","createBallCollider","radius","parent","groups","activeEvents","ColliderDesc","ball","undefined","setCollisionGroups","setActiveEvents","createCollider","createCuboidCollider","hx","hy","cuboid","createCapsuleCollider","halfHeight","capsule","createConvexHullCollider","points","convexHull","createTrimeshCollider","vertices","indices","trimesh","createColliderFromDesc","getBody","handle","getRigidBody","getCollider","removeBody","body","removeRigidBody","removeCollider","wakeUp","collider","rapier","dispose","constructor","frameLengthMs","timestep"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Minimal type abstractions for Rapier 2D API.
3
- * Works with both @dimforge/rapier2d and @dimforge/rapier2d-compat.
3
+ * Works with both @dimforge/rapier2d-deterministic and @dimforge/rapier2d-deterministic-compat.
4
4
  * The consumer project injects the actual RAPIER module at runtime.
5
5
  */
6
6
  export interface RapierVector2 {
@@ -77,8 +77,34 @@ export interface RapierWorld2d {
77
77
  createCollider(desc: RapierColliderDesc2d, parent?: RapierRigidBody2d): RapierCollider2d;
78
78
  removeRigidBody(body: RapierRigidBody2d): void;
79
79
  removeCollider(collider: RapierCollider2d, wakeUp: boolean): void;
80
- /** Rebuilds the query pipeline (BVH) from current collider positions. Must be called after restoreSnapshot(). */
81
- updateSceneQueries(): void;
80
+ createCharacterController(offset: number): RapierKinematicCharacterController2d;
81
+ }
82
+ export interface RapierCharacterCollision2d {
83
+ toi: number;
84
+ witness1: RapierVector2;
85
+ witness2: RapierVector2;
86
+ normal1: RapierVector2;
87
+ normal2: RapierVector2;
88
+ translationDeltaApplied: RapierVector2;
89
+ translationDeltaRemaining: RapierVector2;
90
+ }
91
+ export interface RapierKinematicCharacterController2d {
92
+ setUp(up: RapierVector2): void;
93
+ setMaxSlopeClimbAngle(angle: number): void;
94
+ setMinSlopeSlideAngle(angle: number): void;
95
+ enableAutostep(maxHeight: number, minWidth: number, includeDynamicBodies: boolean): void;
96
+ disableAutostep(): void;
97
+ enableSnapToGround(distance: number): void;
98
+ disableSnapToGround(): void;
99
+ setSlideEnabled(enabled: boolean): void;
100
+ setCharacterMass(mass: number): void;
101
+ setApplyImpulsesToDynamicBodies(apply: boolean): void;
102
+ computeColliderMovement(collider: RapierCollider2d, desiredTranslation: RapierVector2, filterFlags?: number, filterGroups?: number): void;
103
+ computedMovement(): RapierVector2;
104
+ computedGrounded(): boolean;
105
+ numComputedCollisions(): number;
106
+ computedCollision(index: number): RapierCharacterCollision2d | null;
107
+ free(): void;
82
108
  }
83
109
  export interface RapierModule2d {
84
110
  World: {
@@ -106,5 +132,15 @@ export interface RapierModule2d {
106
132
  COLLISION_EVENTS: number;
107
133
  CONTACT_FORCE_EVENTS: number;
108
134
  };
135
+ QueryFilterFlags: {
136
+ ONLY_DYNAMIC: number;
137
+ ONLY_KINEMATIC: number;
138
+ ONLY_FIXED: number;
139
+ EXCLUDE_DYNAMIC: number;
140
+ EXCLUDE_KINEMATIC: number;
141
+ EXCLUDE_FIXED: number;
142
+ EXCLUDE_SENSORS: number;
143
+ EXCLUDE_SOLIDS: number;
144
+ };
109
145
  }
110
146
  //# sourceMappingURL=rapier-types-2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rapier-types-2d.d.ts","sourceRoot":"","sources":["../../src/lib/rapier-types-2d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rapier-types-2d.d.ts","sourceRoot":"","sources":["../../src/lib/rapier-types-2d.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Minimal type abstractions for Rapier 2D API.
3
- * Works with both @dimforge/rapier2d and @dimforge/rapier2d-compat.
3
+ * Works with both @dimforge/rapier2d-deterministic and @dimforge/rapier2d-deterministic-compat.
4
4
  * The consumer project injects the actual RAPIER module at runtime.
5
5
  */ export { };
6
6
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/rapier-types-2d.ts"],"sourcesContent":["/**\n * Minimal type abstractions for Rapier 2D API.\n * Works with both @dimforge/rapier2d and @dimforge/rapier2d-compat.\n * The consumer project injects the actual RAPIER module at runtime.\n */\n\nexport interface RapierVector2 {\n x: number;\n y: number;\n}\n\nexport interface RapierRigidBody2d {\n handle: number;\n translation(): RapierVector2;\n rotation(): number;\n linvel(): RapierVector2;\n angvel(): number;\n setTranslation(translation: RapierVector2, wakeUp: boolean): void;\n setRotation(angle: number, wakeUp: boolean): void;\n setLinvel(linvel: RapierVector2, wakeUp: boolean): void;\n setAngvel(angvel: number, wakeUp: boolean): void;\n setLinearDamping(damping: number): void;\n setAngularDamping(damping: number): void;\n setAdditionalMass(mass: number): void;\n isKinematic(): boolean;\n isDynamic(): boolean;\n isFixed(): boolean;\n setNextKinematicTranslation(translation: RapierVector2): void;\n setNextKinematicRotation(angle: number): void;\n}\n\nexport interface RapierCollider2d {\n handle: number;\n parent(): RapierRigidBody2d | null;\n isSensor(): boolean;\n collisionGroups(): number;\n setCollisionGroups(groups: number): void;\n setActiveEvents(events: number): void;\n setSensor(isSensor: boolean): void;\n}\n\nexport interface RapierRigidBodyDesc2d {\n setTranslation(x: number, y: number): RapierRigidBodyDesc2d;\n setRotation(angle: number): RapierRigidBodyDesc2d;\n setLinearDamping(damping: number): RapierRigidBodyDesc2d;\n setAngularDamping(damping: number): RapierRigidBodyDesc2d;\n setAdditionalMass(mass: number): RapierRigidBodyDesc2d;\n}\n\nexport interface RapierColliderDesc2d {\n setTranslation(x: number, y: number): RapierColliderDesc2d;\n setRotation(angle: number): RapierColliderDesc2d;\n setRestitution(restitution: number): RapierColliderDesc2d;\n setFriction(friction: number): RapierColliderDesc2d;\n setDensity(density: number): RapierColliderDesc2d;\n setMass(mass: number): RapierColliderDesc2d;\n setSensor(isSensor: boolean): RapierColliderDesc2d;\n setCollisionGroups(groups: number): RapierColliderDesc2d;\n setActiveEvents(events: number): RapierColliderDesc2d;\n}\n\nexport interface RapierEventQueue {\n free(): void;\n drainCollisionEvents(f: (h1: number, h2: number, started: boolean) => void): void;\n drainContactForceEvents(f: (event: RapierTempContactForceEvent2d) => void): void;\n clear(): void;\n}\n\nexport interface RapierTempContactForceEvent2d {\n collider1(): number;\n collider2(): number;\n totalForceMagnitude(): number;\n maxForceMagnitude(): number;\n maxForceDirection(): RapierVector2;\n}\n\nexport interface RapierWorld2d {\n timestep: number;\n step(eventQueue?: RapierEventQueue): void;\n free(): void;\n takeSnapshot(): Uint8Array;\n getRigidBody(handle: number): RapierRigidBody2d;\n getCollider(handle: number): RapierCollider2d;\n createRigidBody(desc: RapierRigidBodyDesc2d): RapierRigidBody2d;\n createCollider(desc: RapierColliderDesc2d, parent?: RapierRigidBody2d): RapierCollider2d;\n removeRigidBody(body: RapierRigidBody2d): void;\n removeCollider(collider: RapierCollider2d, wakeUp: boolean): void;\n /** Rebuilds the query pipeline (BVH) from current collider positions. Must be called after restoreSnapshot(). */\n updateSceneQueries(): void;\n}\n\nexport interface RapierModule2d {\n World: {\n new (gravity: RapierVector2): RapierWorld2d;\n restoreSnapshot(data: Uint8Array): RapierWorld2d | null;\n };\n RigidBodyDesc: {\n dynamic(): RapierRigidBodyDesc2d;\n fixed(): RapierRigidBodyDesc2d;\n kinematicPositionBased(): RapierRigidBodyDesc2d;\n kinematicVelocityBased(): RapierRigidBodyDesc2d;\n };\n ColliderDesc: {\n ball(radius: number): RapierColliderDesc2d;\n cuboid(hx: number, hy: number): RapierColliderDesc2d;\n capsule(halfHeight: number, radius: number): RapierColliderDesc2d;\n trimesh(vertices: Float32Array, indices: Uint32Array): RapierColliderDesc2d;\n convexHull(points: Float32Array): RapierColliderDesc2d | null;\n };\n EventQueue: {\n new (autoDrain: boolean): RapierEventQueue;\n };\n ActiveEvents: {\n NONE: number;\n COLLISION_EVENTS: number;\n CONTACT_FORCE_EVENTS: number;\n };\n}\n"],"names":[],"rangeMappings":";;;;","mappings":"AAAA;;;;CAIC,GAuFD,WA0BC"}
1
+ {"version":3,"sources":["../../src/lib/rapier-types-2d.ts"],"sourcesContent":["/**\n * Minimal type abstractions for Rapier 2D API.\n * Works with both @dimforge/rapier2d-deterministic and @dimforge/rapier2d-deterministic-compat.\n * The consumer project injects the actual RAPIER module at runtime.\n */\n\nexport interface RapierVector2 {\n x: number;\n y: number;\n}\n\nexport interface RapierRigidBody2d {\n handle: number;\n translation(): RapierVector2;\n rotation(): number;\n linvel(): RapierVector2;\n angvel(): number;\n setTranslation(translation: RapierVector2, wakeUp: boolean): void;\n setRotation(angle: number, wakeUp: boolean): void;\n setLinvel(linvel: RapierVector2, wakeUp: boolean): void;\n setAngvel(angvel: number, wakeUp: boolean): void;\n setLinearDamping(damping: number): void;\n setAngularDamping(damping: number): void;\n setAdditionalMass(mass: number): void;\n isKinematic(): boolean;\n isDynamic(): boolean;\n isFixed(): boolean;\n setNextKinematicTranslation(translation: RapierVector2): void;\n setNextKinematicRotation(angle: number): void;\n}\n\nexport interface RapierCollider2d {\n handle: number;\n parent(): RapierRigidBody2d | null;\n isSensor(): boolean;\n collisionGroups(): number;\n setCollisionGroups(groups: number): void;\n setActiveEvents(events: number): void;\n setSensor(isSensor: boolean): void;\n}\n\nexport interface RapierRigidBodyDesc2d {\n setTranslation(x: number, y: number): RapierRigidBodyDesc2d;\n setRotation(angle: number): RapierRigidBodyDesc2d;\n setLinearDamping(damping: number): RapierRigidBodyDesc2d;\n setAngularDamping(damping: number): RapierRigidBodyDesc2d;\n setAdditionalMass(mass: number): RapierRigidBodyDesc2d;\n}\n\nexport interface RapierColliderDesc2d {\n setTranslation(x: number, y: number): RapierColliderDesc2d;\n setRotation(angle: number): RapierColliderDesc2d;\n setRestitution(restitution: number): RapierColliderDesc2d;\n setFriction(friction: number): RapierColliderDesc2d;\n setDensity(density: number): RapierColliderDesc2d;\n setMass(mass: number): RapierColliderDesc2d;\n setSensor(isSensor: boolean): RapierColliderDesc2d;\n setCollisionGroups(groups: number): RapierColliderDesc2d;\n setActiveEvents(events: number): RapierColliderDesc2d;\n}\n\nexport interface RapierEventQueue {\n free(): void;\n drainCollisionEvents(f: (h1: number, h2: number, started: boolean) => void): void;\n drainContactForceEvents(f: (event: RapierTempContactForceEvent2d) => void): void;\n clear(): void;\n}\n\nexport interface RapierTempContactForceEvent2d {\n collider1(): number;\n collider2(): number;\n totalForceMagnitude(): number;\n maxForceMagnitude(): number;\n maxForceDirection(): RapierVector2;\n}\n\nexport interface RapierWorld2d {\n timestep: number;\n step(eventQueue?: RapierEventQueue): void;\n free(): void;\n takeSnapshot(): Uint8Array;\n getRigidBody(handle: number): RapierRigidBody2d;\n getCollider(handle: number): RapierCollider2d;\n createRigidBody(desc: RapierRigidBodyDesc2d): RapierRigidBody2d;\n createCollider(desc: RapierColliderDesc2d, parent?: RapierRigidBody2d): RapierCollider2d;\n removeRigidBody(body: RapierRigidBody2d): void;\n removeCollider(collider: RapierCollider2d, wakeUp: boolean): void;\n createCharacterController(offset: number): RapierKinematicCharacterController2d;\n}\n\n// ─── Kinematic Character Controller (2D) ────────────────────────\n\nexport interface RapierCharacterCollision2d {\n toi: number;\n witness1: RapierVector2;\n witness2: RapierVector2;\n normal1: RapierVector2;\n normal2: RapierVector2;\n translationDeltaApplied: RapierVector2;\n translationDeltaRemaining: RapierVector2;\n}\n\nexport interface RapierKinematicCharacterController2d {\n setUp(up: RapierVector2): void;\n setMaxSlopeClimbAngle(angle: number): void;\n setMinSlopeSlideAngle(angle: number): void;\n enableAutostep(maxHeight: number, minWidth: number, includeDynamicBodies: boolean): void;\n disableAutostep(): void;\n enableSnapToGround(distance: number): void;\n disableSnapToGround(): void;\n setSlideEnabled(enabled: boolean): void;\n setCharacterMass(mass: number): void;\n setApplyImpulsesToDynamicBodies(apply: boolean): void;\n computeColliderMovement(\n collider: RapierCollider2d,\n desiredTranslation: RapierVector2,\n filterFlags?: number,\n filterGroups?: number,\n ): void;\n computedMovement(): RapierVector2;\n computedGrounded(): boolean;\n numComputedCollisions(): number;\n computedCollision(index: number): RapierCharacterCollision2d | null;\n free(): void;\n}\n\nexport interface RapierModule2d {\n World: {\n new (gravity: RapierVector2): RapierWorld2d;\n restoreSnapshot(data: Uint8Array): RapierWorld2d | null;\n };\n RigidBodyDesc: {\n dynamic(): RapierRigidBodyDesc2d;\n fixed(): RapierRigidBodyDesc2d;\n kinematicPositionBased(): RapierRigidBodyDesc2d;\n kinematicVelocityBased(): RapierRigidBodyDesc2d;\n };\n ColliderDesc: {\n ball(radius: number): RapierColliderDesc2d;\n cuboid(hx: number, hy: number): RapierColliderDesc2d;\n capsule(halfHeight: number, radius: number): RapierColliderDesc2d;\n trimesh(vertices: Float32Array, indices: Uint32Array): RapierColliderDesc2d;\n convexHull(points: Float32Array): RapierColliderDesc2d | null;\n };\n EventQueue: {\n new (autoDrain: boolean): RapierEventQueue;\n };\n ActiveEvents: {\n NONE: number;\n COLLISION_EVENTS: number;\n CONTACT_FORCE_EVENTS: number;\n };\n QueryFilterFlags: {\n ONLY_DYNAMIC: number;\n ONLY_KINEMATIC: number;\n ONLY_FIXED: number;\n EXCLUDE_DYNAMIC: number;\n EXCLUDE_KINEMATIC: number;\n EXCLUDE_FIXED: number;\n EXCLUDE_SENSORS: number;\n EXCLUDE_SOLIDS: number;\n };\n}\n"],"names":[],"rangeMappings":";;;;","mappings":"AAAA;;;;CAIC,GA0HD,WAoCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lagless/physics2d",
3
- "version": "0.0.43",
3
+ "version": "0.0.46",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -39,15 +39,15 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@swc/helpers": "~0.5.11",
42
- "@lagless/core": "0.0.43",
43
- "@lagless/misc": "0.0.43",
44
- "@lagless/physics-shared": "0.0.43"
42
+ "@lagless/core": "0.0.46",
43
+ "@lagless/physics-shared": "0.0.46",
44
+ "@lagless/misc": "0.0.46"
45
45
  },
46
46
  "peerDependencies": {
47
- "@dimforge/rapier2d-compat": ">=0.14.0"
47
+ "@dimforge/rapier2d-deterministic-compat": ">=0.15.0"
48
48
  },
49
49
  "devDependencies": {
50
- "@dimforge/rapier2d-compat": "^0.14.0",
50
+ "@dimforge/rapier2d-deterministic-compat": "^0.19.0",
51
51
  "unplugin-swc": "^1.5.7"
52
52
  },
53
53
  "files": [