@lagless/physics2d 0.0.46 → 0.0.48

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-deterministic-compat
8
+ pnpm add @lagless/physics2d @lagless/rapier2d-deterministic-compat
9
9
  ```
10
10
 
11
- Peer dependency: `@dimforge/rapier2d-deterministic-compat >= 0.15.0`
11
+ Peer dependency: `@lagless/rapier2d-deterministic-compat >= 0.15.0`
12
12
 
13
13
  ## Architecture
14
14
 
@@ -18,7 +18,7 @@ Peer dependency: `@dimforge/rapier2d-deterministic-compat >= 0.15.0`
18
18
 
19
19
  @lagless/physics2d (2D wrappers: PhysicsWorldManager2d, PhysicsStepSync2d, PhysicsRunner2d, ...)
20
20
 
21
- └── peer: @dimforge/rapier2d-deterministic-compat
21
+ └── peer: @lagless/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-deterministic-compat';
57
+ import RAPIER from '@lagless/rapier2d-deterministic-compat';
58
58
  import { PhysicsConfig2d } from '@lagless/physics2d';
59
59
  import { MyGameRunner } from './code-gen/my-game.runner.js';
60
60
 
@@ -159,6 +159,7 @@ class SpawnSystem implements IECSSystem {
159
159
  | `gravityY` | `number` | `-9.81` | Gravity Y component |
160
160
  | `substeps` | `number` | `1` | Physics substeps per frame |
161
161
  | `substepDt` | `number` | (derived) | `frameDt / substeps` |
162
+ | `warmstartCoefficient` | `number` | `0` | Rapier solver warm-start coefficient. `0` disables warm-starting for determinism. |
162
163
 
163
164
  ## Collision Layers
164
165
 
@@ -2,6 +2,7 @@ export declare class PhysicsConfig2d {
2
2
  readonly gravityX: number;
3
3
  readonly gravityY: number;
4
4
  readonly substeps: number;
5
- constructor(options?: Partial<Pick<PhysicsConfig2d, 'gravityX' | 'gravityY' | 'substeps'>>);
5
+ readonly warmstartCoefficient: number;
6
+ constructor(options?: Partial<Pick<PhysicsConfig2d, 'gravityX' | 'gravityY' | 'substeps' | 'warmstartCoefficient'>>);
6
7
  }
7
8
  //# 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;gBAG/B,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;CAMjF"}
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,SAAgB,oBAAoB,EAAE,MAAM,CAAC;gBAG3C,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,sBAAsB,CAAC,CAAC;CAO1G"}
@@ -6,6 +6,8 @@ export class PhysicsConfig2d {
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
+ var _options_warmstartCoefficient;
10
+ this.warmstartCoefficient = (_options_warmstartCoefficient = options == null ? void 0 : options.warmstartCoefficient) != null ? _options_warmstartCoefficient : 0;
9
11
  }
10
12
  }
11
13
 
@@ -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\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
+ {"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 public readonly warmstartCoefficient: number;\n\n constructor(\n options?: Partial<Pick<PhysicsConfig2d, 'gravityX' | 'gravityY' | 'substeps' | 'warmstartCoefficient'>>,\n ) {\n this.gravityX = options?.gravityX ?? 0;\n this.gravityY = options?.gravityY ?? -9.81;\n this.substeps = options?.substeps ?? 1;\n this.warmstartCoefficient = options?.warmstartCoefficient ?? 0;\n }\n}\n"],"names":["PhysicsConfig2d","constructor","options","gravityX","gravityY","substeps","warmstartCoefficient"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,OAAO,MAAMA;IAMXC,YACEC,OAAuG,CACvG;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;YACTA;QAA5B,IAAI,CAACI,oBAAoB,GAAGJ,CAAAA,gCAAAA,2BAAAA,QAASI,oBAAoB,YAA7BJ,gCAAiC;IAC/D;AACF"}
@@ -1,7 +1,7 @@
1
1
  import { ColliderEntityMap } from '@lagless/physics-shared';
2
2
  import { CollisionEvents2d } from './collision-events-2d.js';
3
3
  import { PhysicsConfig2d } from './physics-config-2d.js';
4
- import { RapierCollider2d, RapierColliderDesc2d, RapierModule2d, RapierRigidBody2d, RapierRigidBodyDesc2d, RapierWorld2d } from './rapier-types-2d.js';
4
+ import type { DebugRenderBuffers, RapierCollider2d, RapierColliderDesc2d, RapierModule2d, RapierRigidBody2d, RapierRigidBodyDesc2d, RapierWorld2d } from './rapier-types-2d.js';
5
5
  export declare class PhysicsWorldManager2d {
6
6
  private readonly _rapier;
7
7
  private readonly _config;
@@ -41,6 +41,7 @@ export declare class PhysicsWorldManager2d {
41
41
  getCollider(handle: number): RapierCollider2d;
42
42
  removeBody(handle: number): void;
43
43
  removeCollider(handle: number, wakeUp?: boolean): void;
44
+ debugRender(): DebugRenderBuffers;
44
45
  get rapier(): RapierModule2d;
45
46
  dispose(): void;
46
47
  }
@@ -1 +1 @@
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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"}
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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"}
@@ -41,9 +41,11 @@ export class PhysicsWorldManager2d {
41
41
  x: this._config.gravityX,
42
42
  y: this._config.gravityY
43
43
  });
44
+ this._world.integrationParameters.warmstartCoefficient = this._config.warmstartCoefficient;
44
45
  return;
45
46
  }
46
47
  this._world = restored;
48
+ this._world.integrationParameters.warmstartCoefficient = this._config.warmstartCoefficient;
47
49
  }
48
50
  // Entity-collider mapping
49
51
  registerCollider(colliderHandle, entity) {
@@ -123,6 +125,9 @@ export class PhysicsWorldManager2d {
123
125
  const collider = this._world.getCollider(handle);
124
126
  this._world.removeCollider(collider, wakeUp);
125
127
  }
128
+ debugRender() {
129
+ return this._world.debugRender();
130
+ }
126
131
  // Rapier module access (for creating descs in game code)
127
132
  get rapier() {
128
133
  return this._rapier;
@@ -142,6 +147,7 @@ export class PhysicsWorldManager2d {
142
147
  this._substeps = _config.substeps;
143
148
  this._substepDt = frameLengthMs / 1000 / this._substeps;
144
149
  this._world.timestep = this._substepDt;
150
+ this._world.integrationParameters.warmstartCoefficient = _config.warmstartCoefficient;
145
151
  this._collisionEvents = new CollisionEvents2d(_rapier);
146
152
  }
147
153
  }
@@ -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 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
+ {"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 type {\n DebugRenderBuffers,\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._world.integrationParameters.warmstartCoefficient = _config.warmstartCoefficient;\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 this._world.integrationParameters.warmstartCoefficient = this._config.warmstartCoefficient;\n return;\n }\n this._world = restored;\n this._world.integrationParameters.warmstartCoefficient = this._config.warmstartCoefficient;\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 public debugRender(): DebugRenderBuffers {\n return this._world.debugRender();\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","integrationParameters","warmstartCoefficient","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","debugRender","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-deterministic and @dimforge/rapier2d-deterministic-compat.
3
+ * Works with @lagless/rapier2d-deterministic-compat.
4
4
  * The consumer project injects the actual RAPIER module at runtime.
5
5
  */
6
6
  export interface RapierVector2 {
@@ -66,11 +66,20 @@ export interface RapierTempContactForceEvent2d {
66
66
  maxForceMagnitude(): number;
67
67
  maxForceDirection(): RapierVector2;
68
68
  }
69
+ export interface DebugRenderBuffers {
70
+ vertices: Float32Array;
71
+ colors: Float32Array;
72
+ }
73
+ export interface RapierIntegrationParameters {
74
+ warmstartCoefficient: number;
75
+ }
69
76
  export interface RapierWorld2d {
70
77
  timestep: number;
78
+ integrationParameters: RapierIntegrationParameters;
71
79
  step(eventQueue?: RapierEventQueue): void;
72
80
  free(): void;
73
81
  takeSnapshot(): Uint8Array;
82
+ debugRender(): DebugRenderBuffers;
74
83
  getRigidBody(handle: number): RapierRigidBody2d;
75
84
  getCollider(handle: number): RapierCollider2d;
76
85
  createRigidBody(desc: RapierRigidBodyDesc2d): RapierRigidBody2d;
@@ -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":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,IAAI,aAAa,CAAC;IAC7B,QAAQ,IAAI,MAAM,CAAC;IACnB,MAAM,IAAI,aAAa,CAAC;IACxB,MAAM,IAAI,MAAM,CAAC;IACjB,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAClE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,IAAI,OAAO,CAAC;IACvB,SAAS,IAAI,OAAO,CAAC;IACrB,OAAO,IAAI,OAAO,CAAC;IACnB,2BAA2B,CAAC,WAAW,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9D,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,IAAI,iBAAiB,GAAG,IAAI,CAAC;IACnC,QAAQ,IAAI,OAAO,CAAC;IACpB,eAAe,IAAI,MAAM,CAAC;IAC1B,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC5D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAClD,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAAC;IACzD,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC1D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAC;CACxD;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC3D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAAC;IACjD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC1D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAAC;IACpD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAClD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC5C,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACnD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAAC;IACzD,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,IAAI,CAAC;IACb,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAClF,uBAAuB,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,IAAI,MAAM,CAAC;IACpB,mBAAmB,IAAI,MAAM,CAAC;IAC9B,iBAAiB,IAAI,MAAM,CAAC;IAC5B,iBAAiB,IAAI,aAAa,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,2BAA2B,CAAC;IACnD,IAAI,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,IAAI,IAAI,IAAI,CAAC;IACb,YAAY,IAAI,UAAU,CAAC;IAC3B,WAAW,IAAI,kBAAkB,CAAC;IAClC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAChD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9C,eAAe,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CAAC;IAChE,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;IACzF,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/C,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAClE,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,oCAAoC,CAAC;CACjF;AAID,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,uBAAuB,EAAE,aAAa,CAAC;IACvC,yBAAyB,EAAE,aAAa,CAAC;CAC1C;AAED,MAAM,WAAW,oCAAoC;IACnD,KAAK,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,GAAG,IAAI,CAAC;IACzF,eAAe,IAAI,IAAI,CAAC;IACxB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,mBAAmB,IAAI,IAAI,CAAC;IAC5B,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtD,uBAAuB,CACrB,QAAQ,EAAE,gBAAgB,EAC1B,kBAAkB,EAAE,aAAa,EACjC,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI,CAAC;IACR,gBAAgB,IAAI,aAAa,CAAC;IAClC,gBAAgB,IAAI,OAAO,CAAC;IAC5B,qBAAqB,IAAI,MAAM,CAAC;IAChC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,0BAA0B,GAAG,IAAI,CAAC;IACpE,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE;QACL,KAAK,OAAO,EAAE,aAAa,GAAG,aAAa,CAAC;QAC5C,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;KACzD,CAAC;IACF,aAAa,EAAE;QACb,OAAO,IAAI,qBAAqB,CAAC;QACjC,KAAK,IAAI,qBAAqB,CAAC;QAC/B,sBAAsB,IAAI,qBAAqB,CAAC;QAChD,sBAAsB,IAAI,qBAAqB,CAAC;KACjD,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAAC;QAC3C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,oBAAoB,CAAC;QACrD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAAC;QAClE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,oBAAoB,CAAC;QAC5E,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,oBAAoB,GAAG,IAAI,CAAC;KAC/D,CAAC;IACF,UAAU,EAAE;QACV,KAAK,SAAS,EAAE,OAAO,GAAG,gBAAgB,CAAC;KAC5C,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,gBAAgB,EAAE;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Minimal type abstractions for Rapier 2D API.
3
- * Works with both @dimforge/rapier2d-deterministic and @dimforge/rapier2d-deterministic-compat.
3
+ * Works with @lagless/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-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"}
1
+ {"version":3,"sources":["../../src/lib/rapier-types-2d.ts"],"sourcesContent":["/**\n * Minimal type abstractions for Rapier 2D API.\n * Works with @lagless/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 DebugRenderBuffers {\n vertices: Float32Array;\n colors: Float32Array;\n}\n\nexport interface RapierIntegrationParameters {\n warmstartCoefficient: number;\n}\n\nexport interface RapierWorld2d {\n timestep: number;\n integrationParameters: RapierIntegrationParameters;\n step(eventQueue?: RapierEventQueue): void;\n free(): void;\n takeSnapshot(): Uint8Array;\n debugRender(): DebugRenderBuffers;\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,GAqID,WAoCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lagless/physics2d",
3
- "version": "0.0.46",
3
+ "version": "0.0.48",
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.46",
43
- "@lagless/physics-shared": "0.0.46",
44
- "@lagless/misc": "0.0.46"
42
+ "@lagless/core": "0.0.48",
43
+ "@lagless/misc": "0.0.48",
44
+ "@lagless/physics-shared": "0.0.48"
45
45
  },
46
46
  "peerDependencies": {
47
- "@dimforge/rapier2d-deterministic-compat": ">=0.15.0"
47
+ "@lagless/rapier2d-deterministic-compat": ">=0.15.0"
48
48
  },
49
49
  "devDependencies": {
50
- "@dimforge/rapier2d-deterministic-compat": "^0.19.0",
50
+ "@lagless/rapier2d-deterministic-compat": "^0.19.0",
51
51
  "unplugin-swc": "^1.5.7"
52
52
  },
53
53
  "files": [