@lagless/physics3d 0.0.44 → 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.
Files changed (41) hide show
  1. package/README.md +4 -4
  2. package/dist/index.d.ts +5 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +7 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/collider-entity-map-3d.d.ts +1 -0
  7. package/dist/lib/collider-entity-map-3d.d.ts.map +1 -1
  8. package/dist/lib/collider-entity-map-3d.js +1 -1
  9. package/dist/lib/collider-entity-map-3d.js.map +1 -1
  10. package/dist/lib/collision-events-3d.d.ts +1 -1
  11. package/dist/lib/collision-events-3d.d.ts.map +1 -1
  12. package/dist/lib/collision-events-3d.js.map +1 -1
  13. package/dist/lib/collision-layers-3d.d.ts +1 -0
  14. package/dist/lib/collision-layers-3d.d.ts.map +1 -1
  15. package/dist/lib/collision-layers-3d.js +1 -1
  16. package/dist/lib/collision-layers-3d.js.map +1 -1
  17. package/dist/lib/physics-config-3d.d.ts +1 -3
  18. package/dist/lib/physics-config-3d.d.ts.map +1 -1
  19. package/dist/lib/physics-config-3d.js +1 -2
  20. package/dist/lib/physics-config-3d.js.map +1 -1
  21. package/dist/lib/physics-runner-3d.d.ts +3 -4
  22. package/dist/lib/physics-runner-3d.d.ts.map +1 -1
  23. package/dist/lib/physics-runner-3d.js +3 -3
  24. package/dist/lib/physics-runner-3d.js.map +1 -1
  25. package/dist/lib/physics-simulation-3d.d.ts +2 -6
  26. package/dist/lib/physics-simulation-3d.d.ts.map +1 -1
  27. package/dist/lib/physics-simulation-3d.js +1 -6
  28. package/dist/lib/physics-simulation-3d.js.map +1 -1
  29. package/dist/lib/physics-world-manager-3d.d.ts +8 -4
  30. package/dist/lib/physics-world-manager-3d.d.ts.map +1 -1
  31. package/dist/lib/physics-world-manager-3d.js +25 -7
  32. package/dist/lib/physics-world-manager-3d.js.map +1 -1
  33. package/dist/lib/rapier-types-3d.d.ts +155 -0
  34. package/dist/lib/rapier-types-3d.d.ts.map +1 -0
  35. package/dist/lib/rapier-types-3d.js +7 -0
  36. package/dist/lib/rapier-types-3d.js.map +1 -0
  37. package/dist/lib/rapier-types.d.ts +7 -153
  38. package/dist/lib/rapier-types.d.ts.map +1 -1
  39. package/dist/lib/rapier-types.js +5 -4
  40. package/dist/lib/rapier-types.js.map +1 -1
  41. package/package.json +6 -6
package/README.md CHANGED
@@ -5,10 +5,10 @@ Rapier 3D physics integration for the lagless ECS framework. Deterministic stepp
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- pnpm add @lagless/physics3d @dimforge/rapier3d-compat
8
+ pnpm add @lagless/physics3d @dimforge/rapier3d-deterministic-compat
9
9
  ```
10
10
 
11
- Peer dependency: `@dimforge/rapier3d-compat >= 0.14.0`
11
+ Peer dependency: `@dimforge/rapier3d-deterministic-compat >= 0.15.0`
12
12
 
13
13
  ## Architecture
14
14
 
@@ -18,7 +18,7 @@ Peer dependency: `@dimforge/rapier3d-compat >= 0.14.0`
18
18
 
19
19
  @lagless/physics3d (3D wrappers: PhysicsWorldManager3d, PhysicsStepSync3d, PhysicsRunner3d, ...)
20
20
 
21
- └── peer: @dimforge/rapier3d-compat
21
+ └── peer: @dimforge/rapier3d-deterministic-compat
22
22
  ```
23
23
 
24
24
  ## ECS Schema (codegen)
@@ -55,7 +55,7 @@ filters:
55
55
  ### Runner Setup
56
56
 
57
57
  ```typescript
58
- import RAPIER from '@dimforge/rapier3d-compat';
58
+ import RAPIER from '@dimforge/rapier3d-deterministic-compat';
59
59
  import { PhysicsConfig3d } from '@lagless/physics3d';
60
60
  import { MyGameRunner } from './code-gen/my-game.runner.js';
61
61
 
package/dist/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
- export * from './lib/rapier-types.js';
1
+ export * from './lib/rapier-types-3d.js';
2
2
  export * from './lib/physics-config-3d.js';
3
3
  export * from './lib/physics-world-manager-3d.js';
4
4
  export * from './lib/physics-simulation-3d.js';
5
5
  export * from './lib/physics-runner-3d.js';
6
6
  export * from './lib/physics-step-sync-3d.js';
7
- export * from './lib/collision-layers-3d.js';
8
7
  export * from './lib/collision-events-3d.js';
8
+ export { BodyType, type BodyTypeValue, ColliderEntityMap, UNMAPPED_ENTITY, handleToIndex, CollisionLayers, CollisionEventsBase } from '@lagless/physics-shared';
9
+ export type { IPhysicsRefsComponent, IFilter, IPhysicsWorldManagerBase, IRapierEventQueue, IColliderSensorChecker } from '@lagless/physics-shared';
9
10
  export * from './lib/collider-entity-map-3d.js';
11
+ export * from './lib/collision-layers-3d.js';
12
+ export * from './lib/rapier-types.js';
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,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,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAG7C,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;AAGnJ,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAG7C,cAAc,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,16 @@
1
- export * from './lib/rapier-types.js';
1
+ export * from './lib/rapier-types-3d.js';
2
2
  export * from './lib/physics-config-3d.js';
3
3
  export * from './lib/physics-world-manager-3d.js';
4
4
  export * from './lib/physics-simulation-3d.js';
5
5
  export * from './lib/physics-runner-3d.js';
6
6
  export * from './lib/physics-step-sync-3d.js';
7
- export * from './lib/collision-layers-3d.js';
8
7
  export * from './lib/collision-events-3d.js';
8
+ // Re-exports from @lagless/physics-shared (matching physics2d pattern)
9
+ export { BodyType, ColliderEntityMap, UNMAPPED_ENTITY, handleToIndex, CollisionLayers, CollisionEventsBase } from '@lagless/physics-shared';
10
+ // Deprecated aliases (use ColliderEntityMap and CollisionLayers from @lagless/physics-shared directly)
9
11
  export * from './lib/collider-entity-map-3d.js';
12
+ export * from './lib/collision-layers-3d.js';
13
+ // Deprecated unsuffixed type names (use suffixed names from rapier-types-3d.js)
14
+ export * from './lib/rapier-types.js';
10
15
 
11
16
  //# 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.js';\nexport * from './lib/physics-config-3d.js';\nexport * from './lib/physics-world-manager-3d.js';\nexport * from './lib/physics-simulation-3d.js';\nexport * from './lib/physics-runner-3d.js';\nexport * from './lib/physics-step-sync-3d.js';\nexport * from './lib/collision-layers-3d.js';\nexport * from './lib/collision-events-3d.js';\nexport * from './lib/collider-entity-map-3d.js';\n"],"names":[],"rangeMappings":";;;;;;;;","mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,oCAAoC;AAClD,cAAc,iCAAiC;AAC/C,cAAc,6BAA6B;AAC3C,cAAc,gCAAgC;AAC9C,cAAc,+BAA+B;AAC7C,cAAc,+BAA+B;AAC7C,cAAc,kCAAkC"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './lib/rapier-types-3d.js';\nexport * from './lib/physics-config-3d.js';\nexport * from './lib/physics-world-manager-3d.js';\nexport * from './lib/physics-simulation-3d.js';\nexport * from './lib/physics-runner-3d.js';\nexport * from './lib/physics-step-sync-3d.js';\nexport * from './lib/collision-events-3d.js';\n\n// Re-exports from @lagless/physics-shared (matching physics2d pattern)\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\n// Deprecated aliases (use ColliderEntityMap and CollisionLayers from @lagless/physics-shared directly)\nexport * from './lib/collider-entity-map-3d.js';\nexport * from './lib/collision-layers-3d.js';\n\n// Deprecated unsuffixed type names (use suffixed names from rapier-types-3d.js)\nexport * from './lib/rapier-types.js';\n"],"names":["BodyType","ColliderEntityMap","UNMAPPED_ENTITY","handleToIndex","CollisionLayers","CollisionEventsBase"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAAA,cAAc,2BAA2B;AACzC,cAAc,6BAA6B;AAC3C,cAAc,oCAAoC;AAClD,cAAc,iCAAiC;AAC/C,cAAc,6BAA6B;AAC3C,cAAc,gCAAgC;AAC9C,cAAc,+BAA+B;AAE7C,uEAAuE;AACvE,SAASA,QAAQ,EAAsBC,iBAAiB,EAAEC,eAAe,EAAEC,aAAa,EAAEC,eAAe,EAAEC,mBAAmB,QAAQ,0BAA0B;AAGhK,uGAAuG;AACvG,cAAc,kCAAkC;AAChD,cAAc,+BAA+B;AAE7C,gFAAgF;AAChF,cAAc,wBAAwB"}
@@ -1,2 +1,3 @@
1
+ /** @deprecated Use `ColliderEntityMap` from `@lagless/physics-shared` or `@lagless/physics3d` directly. */
1
2
  export { ColliderEntityMap as ColliderEntityMap3d, handleToIndex } from '@lagless/physics-shared';
2
3
  //# sourceMappingURL=collider-entity-map-3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collider-entity-map-3d.d.ts","sourceRoot":"","sources":["../../src/lib/collider-entity-map-3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,mBAAmB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"collider-entity-map-3d.d.ts","sourceRoot":"","sources":["../../src/lib/collider-entity-map-3d.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,OAAO,EAAE,iBAAiB,IAAI,mBAAmB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,3 +1,3 @@
1
- export { ColliderEntityMap as ColliderEntityMap3d, handleToIndex } from '@lagless/physics-shared';
1
+ /** @deprecated Use `ColliderEntityMap` from `@lagless/physics-shared` or `@lagless/physics3d` directly. */ export { ColliderEntityMap as ColliderEntityMap3d, handleToIndex } from '@lagless/physics-shared';
2
2
 
3
3
  //# sourceMappingURL=collider-entity-map-3d.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/collider-entity-map-3d.ts"],"sourcesContent":["export { ColliderEntityMap as ColliderEntityMap3d, handleToIndex } from '@lagless/physics-shared';\n"],"names":["ColliderEntityMap","ColliderEntityMap3d","handleToIndex"],"rangeMappings":"","mappings":"AAAA,SAASA,qBAAqBC,mBAAmB,EAAEC,aAAa,QAAQ,0BAA0B"}
1
+ {"version":3,"sources":["../../src/lib/collider-entity-map-3d.ts"],"sourcesContent":["/** @deprecated Use `ColliderEntityMap` from `@lagless/physics-shared` or `@lagless/physics3d` directly. */\nexport { ColliderEntityMap as ColliderEntityMap3d, handleToIndex } from '@lagless/physics-shared';\n"],"names":["ColliderEntityMap","ColliderEntityMap3d","handleToIndex"],"rangeMappings":"","mappings":"AAAA,yGAAyG,GACzG,SAASA,qBAAqBC,mBAAmB,EAAEC,aAAa,QAAQ,0BAA0B"}
@@ -1,5 +1,5 @@
1
1
  import { CollisionEventsBase } from '@lagless/physics-shared';
2
- import type { RapierModule3d } from './rapier-types.js';
2
+ import type { RapierModule3d } from './rapier-types-3d.js';
3
3
  export declare class CollisionEvents3d extends CollisionEventsBase {
4
4
  constructor(rapier: RapierModule3d, initialCapacity?: number);
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collision-events-3d.d.ts","sourceRoot":"","sources":["../../src/lib/collision-events-3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAa,iBAAkB,SAAQ,mBAAmB;gBAC5C,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM;CAG7D"}
1
+ {"version":3,"file":"collision-events-3d.d.ts","sourceRoot":"","sources":["../../src/lib/collision-events-3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,iBAAkB,SAAQ,mBAAmB;gBAC5C,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM;CAG7D"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/collision-events-3d.ts"],"sourcesContent":["import { CollisionEventsBase } from '@lagless/physics-shared';\nimport type { RapierModule3d } from './rapier-types.js';\n\nexport class CollisionEvents3d extends CollisionEventsBase {\n constructor(rapier: RapierModule3d, initialCapacity?: number) {\n super(rapier.EventQueue, initialCapacity);\n }\n}\n"],"names":["CollisionEventsBase","CollisionEvents3d","constructor","rapier","initialCapacity","EventQueue"],"rangeMappings":";;;;;","mappings":"AAAA,SAASA,mBAAmB,QAAQ,0BAA0B;AAG9D,OAAO,MAAMC,0BAA0BD;IACrCE,YAAYC,MAAsB,EAAEC,eAAwB,CAAE;QAC5D,KAAK,CAACD,OAAOE,UAAU,EAAED;IAC3B;AACF"}
1
+ {"version":3,"sources":["../../src/lib/collision-events-3d.ts"],"sourcesContent":["import { CollisionEventsBase } from '@lagless/physics-shared';\nimport type { RapierModule3d } from './rapier-types-3d.js';\n\nexport class CollisionEvents3d extends CollisionEventsBase {\n constructor(rapier: RapierModule3d, initialCapacity?: number) {\n super(rapier.EventQueue, initialCapacity);\n }\n}\n"],"names":["CollisionEventsBase","CollisionEvents3d","constructor","rapier","initialCapacity","EventQueue"],"rangeMappings":";;;;;","mappings":"AAAA,SAASA,mBAAmB,QAAQ,0BAA0B;AAG9D,OAAO,MAAMC,0BAA0BD;IACrCE,YAAYC,MAAsB,EAAEC,eAAwB,CAAE;QAC5D,KAAK,CAACD,OAAOE,UAAU,EAAED;IAC3B;AACF"}
@@ -1,2 +1,3 @@
1
+ /** @deprecated Use `CollisionLayers` from `@lagless/physics-shared` or `@lagless/physics3d` directly. */
1
2
  export { CollisionLayers as CollisionLayers3d } from '@lagless/physics-shared';
2
3
  //# sourceMappingURL=collision-layers-3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collision-layers-3d.d.ts","sourceRoot":"","sources":["../../src/lib/collision-layers-3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"collision-layers-3d.d.ts","sourceRoot":"","sources":["../../src/lib/collision-layers-3d.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,OAAO,EAAE,eAAe,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,3 +1,3 @@
1
- export { CollisionLayers as CollisionLayers3d } from '@lagless/physics-shared';
1
+ /** @deprecated Use `CollisionLayers` from `@lagless/physics-shared` or `@lagless/physics3d` directly. */ export { CollisionLayers as CollisionLayers3d } from '@lagless/physics-shared';
2
2
 
3
3
  //# sourceMappingURL=collision-layers-3d.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/collision-layers-3d.ts"],"sourcesContent":["export { CollisionLayers as CollisionLayers3d } from '@lagless/physics-shared';\n"],"names":["CollisionLayers","CollisionLayers3d"],"rangeMappings":"","mappings":"AAAA,SAASA,mBAAmBC,iBAAiB,QAAQ,0BAA0B"}
1
+ {"version":3,"sources":["../../src/lib/collision-layers-3d.ts"],"sourcesContent":["/** @deprecated Use `CollisionLayers` from `@lagless/physics-shared` or `@lagless/physics3d` directly. */\nexport { CollisionLayers as CollisionLayers3d } from '@lagless/physics-shared';\n"],"names":["CollisionLayers","CollisionLayers3d"],"rangeMappings":"","mappings":"AAAA,uGAAuG,GACvG,SAASA,mBAAmBC,iBAAiB,QAAQ,0BAA0B"}
@@ -3,8 +3,6 @@ export declare class PhysicsConfig3d {
3
3
  readonly gravityY: number;
4
4
  readonly gravityZ: number;
5
5
  readonly substeps: number;
6
- /** Per-substep dt in seconds, derived from frameDt / substeps */
7
- readonly substepDt: number;
8
- constructor(options?: Partial<Pick<PhysicsConfig3d, 'gravityX' | 'gravityY' | 'gravityZ' | 'substeps'>>, frameDt?: number);
6
+ constructor(options?: Partial<Pick<PhysicsConfig3d, 'gravityX' | 'gravityY' | 'gravityZ' | 'substeps'>>);
9
7
  }
10
8
  //# sourceMappingURL=physics-config-3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"physics-config-3d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-config-3d.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,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,GAAG,UAAU,CAAC,CAAC,EAC3F,OAAO,GAAE,MAAe;CAQ3B"}
1
+ {"version":3,"file":"physics-config-3d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-config-3d.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,QAAQ,EAAE,MAAM,CAAC;gBAG/B,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;CAO9F"}
@@ -1,5 +1,5 @@
1
1
  export class PhysicsConfig3d {
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;
@@ -8,7 +8,6 @@ export class PhysicsConfig3d {
8
8
  this.gravityZ = (_options_gravityZ = options == null ? void 0 : options.gravityZ) != null ? _options_gravityZ : 0;
9
9
  var _options_substeps;
10
10
  this.substeps = (_options_substeps = options == null ? void 0 : options.substeps) != null ? _options_substeps : 1;
11
- this.substepDt = frameDt / this.substeps;
12
11
  }
13
12
  }
14
13
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/physics-config-3d.ts"],"sourcesContent":["export class PhysicsConfig3d {\n public readonly gravityX: number;\n public readonly gravityY: number;\n public readonly gravityZ: 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<PhysicsConfig3d, 'gravityX' | 'gravityY' | 'gravityZ' | 'substeps'>>,\n frameDt: number = 1 / 60,\n ) {\n this.gravityX = options?.gravityX ?? 0;\n this.gravityY = options?.gravityY ?? -9.81;\n this.gravityZ = options?.gravityZ ?? 0;\n this.substeps = options?.substeps ?? 1;\n this.substepDt = frameDt / this.substeps;\n }\n}\n"],"names":["PhysicsConfig3d","constructor","options","frameDt","gravityX","gravityY","gravityZ","substeps","substepDt"],"rangeMappings":";;;;;;;;;;;;","mappings":"AAAA,OAAO,MAAMA;IAQXC,YACEC,OAA2F,EAC3FC,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;YACrBA;QAAhB,IAAI,CAACK,QAAQ,GAAGL,CAAAA,oBAAAA,2BAAAA,QAASK,QAAQ,YAAjBL,oBAAqB;QACrC,IAAI,CAACM,SAAS,GAAGL,UAAU,IAAI,CAACI,QAAQ;IAC1C;AACF"}
1
+ {"version":3,"sources":["../../src/lib/physics-config-3d.ts"],"sourcesContent":["export class PhysicsConfig3d {\n public readonly gravityX: number;\n public readonly gravityY: number;\n public readonly gravityZ: number;\n public readonly substeps: number;\n\n constructor(\n options?: Partial<Pick<PhysicsConfig3d, 'gravityX' | 'gravityY' | 'gravityZ' | 'substeps'>>,\n ) {\n this.gravityX = options?.gravityX ?? 0;\n this.gravityY = options?.gravityY ?? -9.81;\n this.gravityZ = options?.gravityZ ?? 0;\n this.substeps = options?.substeps ?? 1;\n }\n}\n"],"names":["PhysicsConfig3d","constructor","options","gravityX","gravityY","gravityZ","substeps"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,OAAO,MAAMA;IAMXC,YACEC,OAA2F,CAC3F;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;YACrBA;QAAhB,IAAI,CAACI,QAAQ,GAAGJ,CAAAA,oBAAAA,2BAAAA,QAASI,QAAQ,YAAjBJ,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 { CollisionEvents3d } from './collision-events-3d.js';
5
5
  import { PhysicsConfig3d } from './physics-config-3d.js';
6
- import { PhysicsSimulation3d } from './physics-simulation-3d.js';
7
6
  import { PhysicsWorldManager3d } from './physics-world-manager-3d.js';
8
- import { RapierModule3d } from './rapier-types.js';
7
+ import { RapierModule3d } from './rapier-types-3d.js';
9
8
  export declare abstract class PhysicsRunner3d extends ECSRunner {
10
9
  readonly PhysicsWorldManager: PhysicsWorldManager3d;
11
10
  readonly PhysicsConfig: PhysicsConfig3d;
12
11
  readonly CollisionEvents: CollisionEvents3d;
13
- readonly Simulation: PhysicsSimulation3d;
12
+ readonly Simulation: PhysicsSimulationBase;
14
13
  protected constructor(Config: ECSConfig, InputProviderInstance: AbstractInputProvider, Systems: Array<IECSSystemConstructor>, Signals: Array<ISignalConstructor>, Deps: ECSDeps, rapier: RapierModule3d, physicsConfig?: PhysicsConfig3d, collisionLayers?: CollisionLayers, extraRegistrations?: Array<[unknown, unknown]>);
15
14
  dispose(): void;
16
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"physics-runner-3d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-runner-3d.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,mBAAmB,CAAC;AAEnD,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-3d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-runner-3d.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 { CollisionEvents3d } from './collision-events-3d.js';
4
4
  import { PhysicsConfig3d } from './physics-config-3d.js';
5
- import { PhysicsSimulation3d } from './physics-simulation-3d.js';
6
5
  import { PhysicsWorldManager3d } from './physics-world-manager-3d.js';
7
6
  export class PhysicsRunner3d extends ECSRunner {
8
7
  dispose() {
@@ -12,7 +11,7 @@ export class PhysicsRunner3d extends ECSRunner {
12
11
  constructor(Config, InputProviderInstance, Systems, Signals, Deps, rapier, physicsConfig, collisionLayers, extraRegistrations){
13
12
  const config = physicsConfig != null ? physicsConfig : new PhysicsConfig3d();
14
13
  const worldManager = new PhysicsWorldManager3d(rapier, config, Config.frameLength);
15
- const simulation = new PhysicsSimulation3d(Config, Deps, InputProviderInstance, worldManager);
14
+ const simulation = new PhysicsSimulationBase(Config, Deps, InputProviderInstance, worldManager);
16
15
  const extraRegs = [
17
16
  [
18
17
  PhysicsWorldManager3d,
@@ -41,6 +40,7 @@ export class PhysicsRunner3d 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-3d.ts"],"sourcesContent":["import { AbstractInputProvider, ECSConfig, ECSRunner, ECSDeps, IECSSystemConstructor } from '@lagless/core';\nimport { ISignalConstructor } from '@lagless/core';\nimport { CollisionLayers } from '@lagless/physics-shared';\nimport { CollisionEvents3d } from './collision-events-3d.js';\nimport { PhysicsConfig3d } from './physics-config-3d.js';\nimport { PhysicsSimulation3d } from './physics-simulation-3d.js';\nimport { PhysicsWorldManager3d } from './physics-world-manager-3d.js';\nimport { RapierModule3d } from './rapier-types.js';\n\nexport abstract class PhysicsRunner3d extends ECSRunner {\n public readonly PhysicsWorldManager: PhysicsWorldManager3d;\n public readonly PhysicsConfig: PhysicsConfig3d;\n public readonly CollisionEvents: CollisionEvents3d;\n public override readonly Simulation: PhysicsSimulation3d;\n\n protected constructor(\n Config: ECSConfig,\n InputProviderInstance: AbstractInputProvider,\n Systems: Array<IECSSystemConstructor>,\n Signals: Array<ISignalConstructor>,\n Deps: ECSDeps,\n rapier: RapierModule3d,\n physicsConfig?: PhysicsConfig3d,\n collisionLayers?: CollisionLayers,\n extraRegistrations?: Array<[unknown, unknown]>,\n ) {\n const config = physicsConfig ?? new PhysicsConfig3d();\n const worldManager = new PhysicsWorldManager3d(rapier, config, Config.frameLength);\n const simulation = new PhysicsSimulation3d(Config, Deps, InputProviderInstance, worldManager);\n\n const extraRegs: Array<[unknown, unknown]> = [\n [PhysicsWorldManager3d, worldManager],\n [PhysicsConfig3d, config],\n [CollisionEvents3d, 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","CollisionEvents3d","PhysicsConfig3d","PhysicsSimulation3d","PhysicsWorldManager3d","PhysicsRunner3d","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-3d.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 { CollisionEvents3d } from './collision-events-3d.js';\nimport { PhysicsConfig3d } from './physics-config-3d.js';\nimport { PhysicsWorldManager3d } from './physics-world-manager-3d.js';\nimport { RapierModule3d } from './rapier-types-3d.js';\n\nexport abstract class PhysicsRunner3d extends ECSRunner {\n public readonly PhysicsWorldManager: PhysicsWorldManager3d;\n public readonly PhysicsConfig: PhysicsConfig3d;\n public readonly CollisionEvents: CollisionEvents3d;\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: RapierModule3d,\n physicsConfig?: PhysicsConfig3d,\n collisionLayers?: CollisionLayers,\n extraRegistrations?: Array<[unknown, unknown]>,\n ) {\n const config = physicsConfig ?? new PhysicsConfig3d();\n const worldManager = new PhysicsWorldManager3d(rapier, config, Config.frameLength);\n const simulation = new PhysicsSimulationBase(Config, Deps, InputProviderInstance, worldManager);\n\n const extraRegs: Array<[unknown, unknown]> = [\n [PhysicsWorldManager3d, worldManager],\n [PhysicsConfig3d, config],\n [CollisionEvents3d, 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","CollisionEvents3d","PhysicsConfig3d","PhysicsWorldManager3d","PhysicsRunner3d","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 { PhysicsWorldManager3d } from './physics-world-manager-3d.js';
4
- export declare class PhysicsSimulation3d extends PhysicsSimulationBase {
5
- constructor(config: ECSConfig, deps: ECSDeps, inputProvider: AbstractInputProvider, physicsWorldManager: PhysicsWorldManager3d);
6
- }
1
+ /** @deprecated Use `PhysicsSimulationBase` from `@lagless/physics-shared` directly. */
2
+ export { PhysicsSimulationBase as PhysicsSimulation3d } from '@lagless/physics-shared';
7
3
  //# sourceMappingURL=physics-simulation-3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"physics-simulation-3d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-simulation-3d.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-3d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-simulation-3d.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 PhysicsSimulation3d 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 PhysicsSimulation3d } from '@lagless/physics-shared';
7
2
 
8
3
  //# sourceMappingURL=physics-simulation-3d.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/physics-simulation-3d.ts"],"sourcesContent":["import { ECSConfig, AbstractInputProvider, ECSDeps } from '@lagless/core';\nimport { PhysicsSimulationBase } from '@lagless/physics-shared';\nimport { PhysicsWorldManager3d } from './physics-world-manager-3d.js';\n\nexport class PhysicsSimulation3d extends PhysicsSimulationBase {\n constructor(\n config: ECSConfig,\n deps: ECSDeps,\n inputProvider: AbstractInputProvider,\n physicsWorldManager: PhysicsWorldManager3d,\n ) {\n super(config, deps, inputProvider, physicsWorldManager);\n }\n}\n"],"names":["PhysicsSimulationBase","PhysicsSimulation3d","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-3d.ts"],"sourcesContent":["/** @deprecated Use `PhysicsSimulationBase` from `@lagless/physics-shared` directly. */\nexport { PhysicsSimulationBase as PhysicsSimulation3d } from '@lagless/physics-shared';\n"],"names":["PhysicsSimulationBase","PhysicsSimulation3d"],"rangeMappings":"","mappings":"AAAA,qFAAqF,GACrF,SAASA,yBAAyBC,mBAAmB,QAAQ,0BAA0B"}
@@ -1,7 +1,7 @@
1
1
  import { ColliderEntityMap } from '@lagless/physics-shared';
2
2
  import { CollisionEvents3d } from './collision-events-3d.js';
3
3
  import { PhysicsConfig3d } from './physics-config-3d.js';
4
- import { RapierCollider3d, RapierColliderDesc, RapierModule3d, RapierRigidBody3d, RapierRigidBodyDesc, RapierWorld3d } from './rapier-types.js';
4
+ import { RapierCollider3d, RapierColliderDesc3d, RapierModule3d, RapierRigidBody3d, RapierRigidBodyDesc3d, RapierWorld3d } from './rapier-types-3d.js';
5
5
  export declare class PhysicsWorldManager3d {
6
6
  private readonly _rapier;
7
7
  private readonly _config;
@@ -12,6 +12,7 @@ export declare class PhysicsWorldManager3d {
12
12
  private readonly _colliderEntityMap;
13
13
  get world(): RapierWorld3d;
14
14
  get substeps(): number;
15
+ get substepDt(): number;
15
16
  get colliderEntityMap(): ColliderEntityMap;
16
17
  get collisionEvents(): CollisionEvents3d;
17
18
  constructor(_rapier: RapierModule3d, _config: PhysicsConfig3d, frameLengthMs: number);
@@ -29,12 +30,15 @@ export declare class PhysicsWorldManager3d {
29
30
  createFixedBody(): RapierRigidBody3d;
30
31
  createKinematicPositionBody(): RapierRigidBody3d;
31
32
  createKinematicVelocityBody(): RapierRigidBody3d;
32
- createBodyFromDesc(desc: RapierRigidBodyDesc): RapierRigidBody3d;
33
+ createBodyFromDesc(desc: RapierRigidBodyDesc3d): RapierRigidBody3d;
33
34
  createBallCollider(radius: number, parent?: RapierRigidBody3d, groups?: number, activeEvents?: number): RapierCollider3d;
34
35
  createCuboidCollider(hx: number, hy: number, hz: number, parent?: RapierRigidBody3d, groups?: number, activeEvents?: number): RapierCollider3d;
35
36
  createCapsuleCollider(halfHeight: number, radius: number, parent?: RapierRigidBody3d, groups?: number, activeEvents?: number): RapierCollider3d;
36
- createTrimeshCollider(vertices: Float32Array, indices: Uint32Array, parent?: RapierRigidBody3d): RapierCollider3d;
37
- createColliderFromDesc(desc: RapierColliderDesc, parent?: RapierRigidBody3d): RapierCollider3d;
37
+ createCylinderCollider(halfHeight: number, radius: number, parent?: RapierRigidBody3d, groups?: number, activeEvents?: number): RapierCollider3d;
38
+ createConeCollider(halfHeight: number, radius: number, parent?: RapierRigidBody3d, groups?: number, activeEvents?: number): RapierCollider3d;
39
+ createConvexHullCollider(points: Float32Array, parent?: RapierRigidBody3d, groups?: number, activeEvents?: number): RapierCollider3d | null;
40
+ createTrimeshCollider(vertices: Float32Array, indices: Uint32Array, parent?: RapierRigidBody3d, groups?: number, activeEvents?: number): RapierCollider3d;
41
+ createColliderFromDesc(desc: RapierColliderDesc3d, parent?: RapierRigidBody3d): RapierCollider3d;
38
42
  getBody(handle: number): RapierRigidBody3d;
39
43
  getCollider(handle: number): RapierCollider3d;
40
44
  removeBody(handle: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"physics-world-manager-3d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-world-manager-3d.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,kBAAkB,EAElB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAI3B,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;IAcvB;;;;OAIG;IACI,IAAI,IAAI,IAAI;IAQZ,YAAY,IAAI,UAAU;IAI1B,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAsBvC,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,mBAAmB,GAAG,iBAAiB;IAKhE,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,EAAE,EAAE,EAAE,MAAM,EAClC,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,qBAAqB,CAC1B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,iBAAiB,GACzB,gBAAgB;IAKZ,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,gBAAgB;IAK9F,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-3d.d.ts","sourceRoot":"","sources":["../../src/lib/physics-world-manager-3d.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,9 @@ export class PhysicsWorldManager3d {
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
  }
@@ -42,12 +45,6 @@ export class PhysicsWorldManager3d {
42
45
  return;
43
46
  }
44
47
  this._world = restored;
45
- // CRITICAL: QueryPipeline is NOT included in the Rapier snapshot format.
46
- // After restoreSnapshot(), the world has a fresh empty QueryPipeline.
47
- // computeColliderMovement() queries the QueryPipeline, so if we don't rebuild it
48
- // here, KCC will detect no collisions on the first tick after rollback,
49
- // causing non-deterministic movement and client divergence.
50
- this._world.updateSceneQueries();
51
48
  }
52
49
  // Entity-collider mapping
53
50
  registerCollider(colliderHandle, entity) {
@@ -95,8 +92,29 @@ export class PhysicsWorldManager3d {
95
92
  if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);
96
93
  return this._world.createCollider(desc, parent);
97
94
  }
98
- createTrimeshCollider(vertices, indices, parent) {
95
+ createCylinderCollider(halfHeight, radius, parent, groups, activeEvents) {
96
+ const desc = this._rapier.ColliderDesc.cylinder(halfHeight, radius);
97
+ if (groups !== undefined) desc.setCollisionGroups(groups);
98
+ if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);
99
+ return this._world.createCollider(desc, parent);
100
+ }
101
+ createConeCollider(halfHeight, radius, parent, groups, activeEvents) {
102
+ const desc = this._rapier.ColliderDesc.cone(halfHeight, radius);
103
+ if (groups !== undefined) desc.setCollisionGroups(groups);
104
+ if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);
105
+ return this._world.createCollider(desc, parent);
106
+ }
107
+ createConvexHullCollider(points, parent, groups, activeEvents) {
108
+ const desc = this._rapier.ColliderDesc.convexHull(points);
109
+ if (!desc) return null;
110
+ if (groups !== undefined) desc.setCollisionGroups(groups);
111
+ if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);
112
+ return this._world.createCollider(desc, parent);
113
+ }
114
+ createTrimeshCollider(vertices, indices, parent, groups, activeEvents) {
99
115
  const desc = this._rapier.ColliderDesc.trimesh(vertices, indices);
116
+ if (groups !== undefined) desc.setCollisionGroups(groups);
117
+ if (activeEvents !== undefined) desc.setActiveEvents(activeEvents);
100
118
  return this._world.createCollider(desc, parent);
101
119
  }
102
120
  createColliderFromDesc(desc, parent) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/physics-world-manager-3d.ts"],"sourcesContent":["import { createLogger } from '@lagless/misc';\nimport { ColliderEntityMap } from '@lagless/physics-shared';\nimport { CollisionEvents3d } from './collision-events-3d.js';\nimport { PhysicsConfig3d } from './physics-config-3d.js';\nimport {\n RapierCollider3d,\n RapierColliderDesc,\n RapierEventQueue,\n RapierModule3d,\n RapierRigidBody3d,\n RapierRigidBodyDesc,\n RapierWorld3d,\n} from './rapier-types.js';\n\nconst log = createLogger('PhysicsWorldManager3d');\n\nexport class PhysicsWorldManager3d {\n private _world: RapierWorld3d;\n private readonly _substeps: number;\n private readonly _substepDt: number;\n private readonly _collisionEvents: CollisionEvents3d;\n private readonly _colliderEntityMap = new ColliderEntityMap();\n\n public get world(): RapierWorld3d {\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(): CollisionEvents3d {\n return this._collisionEvents;\n }\n\n constructor(\n private readonly _rapier: RapierModule3d,\n private readonly _config: PhysicsConfig3d,\n frameLengthMs: number,\n ) {\n this._world = new _rapier.World({\n x: _config.gravityX,\n y: _config.gravityY,\n z: _config.gravityZ,\n });\n\n this._substeps = _config.substeps;\n this._substepDt = (frameLengthMs / 1000) / this._substeps;\n this._world.timestep = this._substepDt;\n this._collisionEvents = new CollisionEvents3d(_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 z: this._config.gravityZ,\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 // computeColliderMovement() queries the QueryPipeline, so if we don't rebuild it\n // here, KCC will detect no collisions on the first tick after rollback,\n // causing non-deterministic movement and client divergence.\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(): RapierRigidBody3d {\n const desc = this._rapier.RigidBodyDesc.dynamic();\n return this._world.createRigidBody(desc);\n }\n\n public createFixedBody(): RapierRigidBody3d {\n const desc = this._rapier.RigidBodyDesc.fixed();\n return this._world.createRigidBody(desc);\n }\n\n public createKinematicPositionBody(): RapierRigidBody3d {\n const desc = this._rapier.RigidBodyDesc.kinematicPositionBased();\n return this._world.createRigidBody(desc);\n }\n\n public createKinematicVelocityBody(): RapierRigidBody3d {\n const desc = this._rapier.RigidBodyDesc.kinematicVelocityBased();\n return this._world.createRigidBody(desc);\n }\n\n public createBodyFromDesc(desc: RapierRigidBodyDesc): RapierRigidBody3d {\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?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\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, hz: number,\n parent?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\n const desc = this._rapier.ColliderDesc.cuboid(hx, hy, hz);\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?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\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 createTrimeshCollider(\n vertices: Float32Array,\n indices: Uint32Array,\n parent?: RapierRigidBody3d,\n ): RapierCollider3d {\n const desc = this._rapier.ColliderDesc.trimesh(vertices, indices);\n return this._world.createCollider(desc, parent);\n }\n\n public createColliderFromDesc(desc: RapierColliderDesc, parent?: RapierRigidBody3d): RapierCollider3d {\n return this._world.createCollider(desc, parent);\n }\n\n // Accessors\n public getBody(handle: number): RapierRigidBody3d {\n return this._world.getRigidBody(handle);\n }\n\n public getCollider(handle: number): RapierCollider3d {\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(): RapierModule3d {\n return this._rapier;\n }\n\n public dispose(): void {\n this._collisionEvents.dispose();\n this._world.free();\n }\n}\n"],"names":["createLogger","ColliderEntityMap","CollisionEvents3d","log","PhysicsWorldManager3d","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","z","gravityZ","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","hz","cuboid","createCapsuleCollider","halfHeight","capsule","createTrimeshCollider","vertices","indices","trimesh","createColliderFromDesc","getBody","handle","getRigidBody","getCollider","removeBody","body","removeRigidBody","removeCollider","wakeUp","collider","rapier","dispose","constructor","frameLengthMs","_substepDt","timestep"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAASC,iBAAiB,QAAQ,2BAA2B;AAY7D,MAAMC,MAAMH,aAAa;AAEzB,OAAO,MAAMI;IAOX,IAAWC,QAAuB;QAChC,OAAO,IAAI,CAACC,MAAM;IACpB;IAEA,IAAWC,WAAmB;QAC5B,OAAO,IAAI,CAACC,SAAS;IACvB;IAEA,IAAWC,oBAAuC;QAChD,OAAO,IAAI,CAACC,kBAAkB;IAChC;IAEA,IAAWC,kBAAqC;QAC9C,OAAO,IAAI,CAACC,gBAAgB;IAC9B;IAmBA;;;;GAIC,GACD,AAAOC,OAAa;QAClB,MAAMC,KAAK,IAAI,CAACF,gBAAgB,CAACG,UAAU;QAC3C,IAAK,IAAIC,IAAI,GAAGA,IAAI,IAAI,CAACR,SAAS,EAAEQ,IAAK;YACvC,IAAI,CAACV,MAAM,CAACO,IAAI,CAACC;QACnB;QACA,IAAI,CAACF,gBAAgB,CAACK,KAAK,CAAC,IAAI,CAACP,kBAAkB,EAAE,IAAI,CAACJ,MAAM;IAClE;IAEOY,eAA2B;QAChC,OAAO,IAAI,CAACZ,MAAM,CAACY,YAAY;IACjC;IAEOC,gBAAgBC,IAAgB,EAAQ;QAC7C,IAAI,CAACd,MAAM,CAACe,IAAI;QAChB,MAAMC,WAAW,IAAI,CAACC,OAAO,CAACC,KAAK,CAACL,eAAe,CAACC;QACpD,IAAI,CAACE,UAAU;YACbnB,IAAIsB,IAAI,CAAC;YACT,IAAI,CAACnB,MAAM,GAAG,IAAI,IAAI,CAACiB,OAAO,CAACC,KAAK,CAAC;gBACnCE,GAAG,IAAI,CAACC,OAAO,CAACC,QAAQ;gBACxBC,GAAG,IAAI,CAACF,OAAO,CAACG,QAAQ;gBACxBC,GAAG,IAAI,CAACJ,OAAO,CAACK,QAAQ;YAC1B;YACA;QACF;QACA,IAAI,CAAC1B,MAAM,GAAGgB;QACd,yEAAyE;QACzE,sEAAsE;QACtE,iFAAiF;QACjF,wEAAwE;QACxE,4DAA4D;QAC5D,IAAI,CAAChB,MAAM,CAAC2B,kBAAkB;IAChC;IAEA,0BAA0B;IACnBC,iBAAiBC,cAAsB,EAAEC,MAAc,EAAQ;QACpE,IAAI,CAAC1B,kBAAkB,CAAC2B,GAAG,CAACF,gBAAgBC;IAC9C;IAEOE,mBAAmBH,cAAsB,EAAQ;QACtD,IAAI,CAACzB,kBAAkB,CAAC6B,MAAM,CAACJ;IACjC;IAEA,iBAAiB;IACVK,oBAAuC;QAC5C,MAAMC,OAAO,IAAI,CAAClB,OAAO,CAACmB,aAAa,CAACC,OAAO;QAC/C,OAAO,IAAI,CAACrC,MAAM,CAACsC,eAAe,CAACH;IACrC;IAEOI,kBAAqC;QAC1C,MAAMJ,OAAO,IAAI,CAAClB,OAAO,CAACmB,aAAa,CAACI,KAAK;QAC7C,OAAO,IAAI,CAACxC,MAAM,CAACsC,eAAe,CAACH;IACrC;IAEOM,8BAAiD;QACtD,MAAMN,OAAO,IAAI,CAAClB,OAAO,CAACmB,aAAa,CAACM,sBAAsB;QAC9D,OAAO,IAAI,CAAC1C,MAAM,CAACsC,eAAe,CAACH;IACrC;IAEOQ,8BAAiD;QACtD,MAAMR,OAAO,IAAI,CAAClB,OAAO,CAACmB,aAAa,CAACQ,sBAAsB;QAC9D,OAAO,IAAI,CAAC5C,MAAM,CAACsC,eAAe,CAACH;IACrC;IAEOU,mBAAmBV,IAAyB,EAAqB;QACtE,OAAO,IAAI,CAACnC,MAAM,CAACsC,eAAe,CAACH;IACrC;IAEA,wEAAwE;IACjEW,mBACLC,MAAc,EACdC,MAA0B,EAC1BC,MAAe,EACfC,YAAqB,EACH;QAClB,MAAMf,OAAO,IAAI,CAAClB,OAAO,CAACkC,YAAY,CAACC,IAAI,CAACL;QAC5C,IAAIE,WAAWI,WAAWlB,KAAKmB,kBAAkB,CAACL;QAClD,IAAIC,iBAAiBG,WAAWlB,KAAKoB,eAAe,CAACL;QACrD,OAAO,IAAI,CAAClD,MAAM,CAACwD,cAAc,CAACrB,MAAMa;IAC1C;IAEOS,qBACLC,EAAU,EAAEC,EAAU,EAAEC,EAAU,EAClCZ,MAA0B,EAC1BC,MAAe,EACfC,YAAqB,EACH;QAClB,MAAMf,OAAO,IAAI,CAAClB,OAAO,CAACkC,YAAY,CAACU,MAAM,CAACH,IAAIC,IAAIC;QACtD,IAAIX,WAAWI,WAAWlB,KAAKmB,kBAAkB,CAACL;QAClD,IAAIC,iBAAiBG,WAAWlB,KAAKoB,eAAe,CAACL;QACrD,OAAO,IAAI,CAAClD,MAAM,CAACwD,cAAc,CAACrB,MAAMa;IAC1C;IAEOc,sBACLC,UAAkB,EAAEhB,MAAc,EAClCC,MAA0B,EAC1BC,MAAe,EACfC,YAAqB,EACH;QAClB,MAAMf,OAAO,IAAI,CAAClB,OAAO,CAACkC,YAAY,CAACa,OAAO,CAACD,YAAYhB;QAC3D,IAAIE,WAAWI,WAAWlB,KAAKmB,kBAAkB,CAACL;QAClD,IAAIC,iBAAiBG,WAAWlB,KAAKoB,eAAe,CAACL;QACrD,OAAO,IAAI,CAAClD,MAAM,CAACwD,cAAc,CAACrB,MAAMa;IAC1C;IAEOiB,sBACLC,QAAsB,EACtBC,OAAoB,EACpBnB,MAA0B,EACR;QAClB,MAAMb,OAAO,IAAI,CAAClB,OAAO,CAACkC,YAAY,CAACiB,OAAO,CAACF,UAAUC;QACzD,OAAO,IAAI,CAACnE,MAAM,CAACwD,cAAc,CAACrB,MAAMa;IAC1C;IAEOqB,uBAAuBlC,IAAwB,EAAEa,MAA0B,EAAoB;QACpG,OAAO,IAAI,CAAChD,MAAM,CAACwD,cAAc,CAACrB,MAAMa;IAC1C;IAEA,YAAY;IACLsB,QAAQC,MAAc,EAAqB;QAChD,OAAO,IAAI,CAACvE,MAAM,CAACwE,YAAY,CAACD;IAClC;IAEOE,YAAYF,MAAc,EAAoB;QACnD,OAAO,IAAI,CAACvE,MAAM,CAACyE,WAAW,CAACF;IACjC;IAEA,UAAU;IACHG,WAAWH,MAAc,EAAQ;QACtC,MAAMI,OAAO,IAAI,CAAC3E,MAAM,CAACwE,YAAY,CAACD;QACtC,IAAI,CAACvE,MAAM,CAAC4E,eAAe,CAACD;IAC9B;IAEOE,eAAeN,MAAc,EAAEO,SAAS,IAAI,EAAQ;QACzD,MAAMC,WAAW,IAAI,CAAC/E,MAAM,CAACyE,WAAW,CAACF;QACzC,IAAI,CAACvE,MAAM,CAAC6E,cAAc,CAACE,UAAUD;IACvC;IAEA,yDAAyD;IACzD,IAAWE,SAAyB;QAClC,OAAO,IAAI,CAAC/D,OAAO;IACrB;IAEOgE,UAAgB;QACrB,IAAI,CAAC3E,gBAAgB,CAAC2E,OAAO;QAC7B,IAAI,CAACjF,MAAM,CAACe,IAAI;IAClB;IAvKAmE,YACE,AAAiBjE,OAAuB,EACxC,AAAiBI,OAAwB,EACzC8D,aAAqB,CACrB;aAHiBlE,UAAAA;aACAI,UAAAA;aApBFjB,qBAAqB,IAAIT;QAuBxC,IAAI,CAACK,MAAM,GAAG,IAAIiB,QAAQC,KAAK,CAAC;YAC9BE,GAAGC,QAAQC,QAAQ;YACnBC,GAAGF,QAAQG,QAAQ;YACnBC,GAAGJ,QAAQK,QAAQ;QACrB;QAEA,IAAI,CAACxB,SAAS,GAAGmB,QAAQpB,QAAQ;QACjC,IAAI,CAACmF,UAAU,GAAG,AAACD,gBAAgB,OAAQ,IAAI,CAACjF,SAAS;QACzD,IAAI,CAACF,MAAM,CAACqF,QAAQ,GAAG,IAAI,CAACD,UAAU;QACtC,IAAI,CAAC9E,gBAAgB,GAAG,IAAIV,kBAAkBqB;IAChD;AAyJF"}
1
+ {"version":3,"sources":["../../src/lib/physics-world-manager-3d.ts"],"sourcesContent":["import { createLogger } from '@lagless/misc';\nimport { ColliderEntityMap } from '@lagless/physics-shared';\nimport { CollisionEvents3d } from './collision-events-3d.js';\nimport { PhysicsConfig3d } from './physics-config-3d.js';\nimport {\n RapierCollider3d,\n RapierColliderDesc3d,\n RapierEventQueue3d,\n RapierModule3d,\n RapierRigidBody3d,\n RapierRigidBodyDesc3d,\n RapierWorld3d,\n} from './rapier-types-3d.js';\n\nconst log = createLogger('PhysicsWorldManager3d');\n\nexport class PhysicsWorldManager3d {\n private _world: RapierWorld3d;\n private readonly _substeps: number;\n private readonly _substepDt: number;\n private readonly _collisionEvents: CollisionEvents3d;\n private readonly _colliderEntityMap = new ColliderEntityMap();\n\n public get world(): RapierWorld3d {\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(): CollisionEvents3d {\n return this._collisionEvents;\n }\n\n constructor(\n private readonly _rapier: RapierModule3d,\n private readonly _config: PhysicsConfig3d,\n frameLengthMs: number,\n ) {\n this._world = new _rapier.World({\n x: _config.gravityX,\n y: _config.gravityY,\n z: _config.gravityZ,\n });\n\n this._substeps = _config.substeps;\n this._substepDt = (frameLengthMs / 1000) / this._substeps;\n this._world.timestep = this._substepDt;\n this._collisionEvents = new CollisionEvents3d(_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 RapierEventQueue3d;\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 z: this._config.gravityZ,\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(): RapierRigidBody3d {\n const desc = this._rapier.RigidBodyDesc.dynamic();\n return this._world.createRigidBody(desc);\n }\n\n public createFixedBody(): RapierRigidBody3d {\n const desc = this._rapier.RigidBodyDesc.fixed();\n return this._world.createRigidBody(desc);\n }\n\n public createKinematicPositionBody(): RapierRigidBody3d {\n const desc = this._rapier.RigidBodyDesc.kinematicPositionBased();\n return this._world.createRigidBody(desc);\n }\n\n public createKinematicVelocityBody(): RapierRigidBody3d {\n const desc = this._rapier.RigidBodyDesc.kinematicVelocityBased();\n return this._world.createRigidBody(desc);\n }\n\n public createBodyFromDesc(desc: RapierRigidBodyDesc3d): RapierRigidBody3d {\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?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\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, hz: number,\n parent?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\n const desc = this._rapier.ColliderDesc.cuboid(hx, hy, hz);\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?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\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 createCylinderCollider(\n halfHeight: number, radius: number,\n parent?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\n const desc = this._rapier.ColliderDesc.cylinder(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 createConeCollider(\n halfHeight: number, radius: number,\n parent?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\n const desc = this._rapier.ColliderDesc.cone(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?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d | 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?: RapierRigidBody3d,\n groups?: number,\n activeEvents?: number,\n ): RapierCollider3d {\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: RapierColliderDesc3d, parent?: RapierRigidBody3d): RapierCollider3d {\n return this._world.createCollider(desc, parent);\n }\n\n // Accessors\n public getBody(handle: number): RapierRigidBody3d {\n return this._world.getRigidBody(handle);\n }\n\n public getCollider(handle: number): RapierCollider3d {\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(): RapierModule3d {\n return this._rapier;\n }\n\n public dispose(): void {\n this._collisionEvents.dispose();\n this._world.free();\n }\n}\n"],"names":["createLogger","ColliderEntityMap","CollisionEvents3d","log","PhysicsWorldManager3d","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","z","gravityZ","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","hz","cuboid","createCapsuleCollider","halfHeight","capsule","createCylinderCollider","cylinder","createConeCollider","cone","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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"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Minimal type abstractions for Rapier 3D API.
3
+ * Works with both @dimforge/rapier3d-deterministic and @dimforge/rapier3d-deterministic-compat.
4
+ * The consumer project injects the actual RAPIER module at runtime.
5
+ */
6
+ export interface RapierVector3 {
7
+ x: number;
8
+ y: number;
9
+ z: number;
10
+ }
11
+ export interface RapierQuaternion {
12
+ x: number;
13
+ y: number;
14
+ z: number;
15
+ w: number;
16
+ }
17
+ export interface RapierRigidBody3d {
18
+ handle: number;
19
+ translation(): RapierVector3;
20
+ rotation(): RapierQuaternion;
21
+ linvel(): RapierVector3;
22
+ angvel(): RapierVector3;
23
+ setTranslation(translation: RapierVector3, wakeUp: boolean): void;
24
+ setRotation(rotation: RapierQuaternion, wakeUp: boolean): void;
25
+ setLinvel(linvel: RapierVector3, wakeUp: boolean): void;
26
+ setAngvel(angvel: RapierVector3, wakeUp: boolean): void;
27
+ setLinearDamping(damping: number): void;
28
+ setAngularDamping(damping: number): void;
29
+ setAdditionalMass(mass: number): void;
30
+ isKinematic(): boolean;
31
+ isDynamic(): boolean;
32
+ isFixed(): boolean;
33
+ setNextKinematicTranslation(translation: RapierVector3): void;
34
+ setNextKinematicRotation(rotation: RapierQuaternion): void;
35
+ }
36
+ export interface RapierCollider3d {
37
+ handle: number;
38
+ parent(): RapierRigidBody3d | null;
39
+ isSensor(): boolean;
40
+ collisionGroups(): number;
41
+ setCollisionGroups(groups: number): void;
42
+ setActiveEvents(events: number): void;
43
+ setSensor(isSensor: boolean): void;
44
+ }
45
+ export interface RapierRigidBodyDesc3d {
46
+ setTranslation(x: number, y: number, z: number): RapierRigidBodyDesc3d;
47
+ setRotation(rotation: RapierQuaternion): RapierRigidBodyDesc3d;
48
+ setLinearDamping(damping: number): RapierRigidBodyDesc3d;
49
+ setAngularDamping(damping: number): RapierRigidBodyDesc3d;
50
+ setAdditionalMass(mass: number): RapierRigidBodyDesc3d;
51
+ }
52
+ export interface RapierColliderDesc3d {
53
+ setTranslation(x: number, y: number, z: number): RapierColliderDesc3d;
54
+ setRotation(rotation: RapierQuaternion): RapierColliderDesc3d;
55
+ setRestitution(restitution: number): RapierColliderDesc3d;
56
+ setFriction(friction: number): RapierColliderDesc3d;
57
+ setDensity(density: number): RapierColliderDesc3d;
58
+ setMass(mass: number): RapierColliderDesc3d;
59
+ setSensor(isSensor: boolean): RapierColliderDesc3d;
60
+ setCollisionGroups(groups: number): RapierColliderDesc3d;
61
+ setActiveEvents(events: number): RapierColliderDesc3d;
62
+ }
63
+ export interface RapierEventQueue3d {
64
+ free(): void;
65
+ drainCollisionEvents(f: (h1: number, h2: number, started: boolean) => void): void;
66
+ drainContactForceEvents(f: (event: RapierTempContactForceEvent3d) => void): void;
67
+ clear(): void;
68
+ }
69
+ export interface RapierTempContactForceEvent3d {
70
+ collider1(): number;
71
+ collider2(): number;
72
+ totalForceMagnitude(): number;
73
+ maxForceMagnitude(): number;
74
+ maxForceDirection(): RapierVector3;
75
+ }
76
+ export interface RapierWorld3d {
77
+ timestep: number;
78
+ step(eventQueue?: RapierEventQueue3d): void;
79
+ free(): void;
80
+ takeSnapshot(): Uint8Array;
81
+ getRigidBody(handle: number): RapierRigidBody3d;
82
+ getCollider(handle: number): RapierCollider3d;
83
+ createRigidBody(desc: RapierRigidBodyDesc3d): RapierRigidBody3d;
84
+ createCollider(desc: RapierColliderDesc3d, parent?: RapierRigidBody3d): RapierCollider3d;
85
+ removeRigidBody(body: RapierRigidBody3d): void;
86
+ removeCollider(collider: RapierCollider3d, wakeUp: boolean): void;
87
+ createCharacterController(offset: number): RapierKinematicCharacterController;
88
+ }
89
+ export interface RapierCharacterCollision {
90
+ toi: number;
91
+ witness1: RapierVector3;
92
+ witness2: RapierVector3;
93
+ normal1: RapierVector3;
94
+ normal2: RapierVector3;
95
+ translationDeltaApplied: RapierVector3;
96
+ translationDeltaRemaining: RapierVector3;
97
+ }
98
+ export interface RapierKinematicCharacterController {
99
+ setUp(up: RapierVector3): void;
100
+ setMaxSlopeClimbAngle(angle: number): void;
101
+ setMinSlopeSlideAngle(angle: number): void;
102
+ enableAutostep(maxHeight: number, minWidth: number, includeDynamicBodies: boolean): void;
103
+ disableAutostep(): void;
104
+ enableSnapToGround(distance: number): void;
105
+ disableSnapToGround(): void;
106
+ setSlideEnabled(enabled: boolean): void;
107
+ setCharacterMass(mass: number): void;
108
+ setApplyImpulsesToDynamicBodies(apply: boolean): void;
109
+ computeColliderMovement(collider: RapierCollider3d, desiredTranslation: RapierVector3, filterFlags?: number, filterGroups?: number): void;
110
+ computedMovement(): RapierVector3;
111
+ computedGrounded(): boolean;
112
+ numComputedCollisions(): number;
113
+ computedCollision(index: number): RapierCharacterCollision | null;
114
+ free(): void;
115
+ }
116
+ export interface RapierModule3d {
117
+ World: {
118
+ new (gravity: RapierVector3): RapierWorld3d;
119
+ restoreSnapshot(data: Uint8Array): RapierWorld3d | null;
120
+ };
121
+ RigidBodyDesc: {
122
+ dynamic(): RapierRigidBodyDesc3d;
123
+ fixed(): RapierRigidBodyDesc3d;
124
+ kinematicPositionBased(): RapierRigidBodyDesc3d;
125
+ kinematicVelocityBased(): RapierRigidBodyDesc3d;
126
+ };
127
+ ColliderDesc: {
128
+ ball(radius: number): RapierColliderDesc3d;
129
+ cuboid(hx: number, hy: number, hz: number): RapierColliderDesc3d;
130
+ capsule(halfHeight: number, radius: number): RapierColliderDesc3d;
131
+ trimesh(vertices: Float32Array, indices: Uint32Array): RapierColliderDesc3d;
132
+ cylinder(halfHeight: number, radius: number): RapierColliderDesc3d;
133
+ cone(halfHeight: number, radius: number): RapierColliderDesc3d;
134
+ convexHull(points: Float32Array): RapierColliderDesc3d | null;
135
+ };
136
+ EventQueue: {
137
+ new (autoDrain: boolean): RapierEventQueue3d;
138
+ };
139
+ ActiveEvents: {
140
+ NONE: number;
141
+ COLLISION_EVENTS: number;
142
+ CONTACT_FORCE_EVENTS: number;
143
+ };
144
+ QueryFilterFlags: {
145
+ ONLY_DYNAMIC: number;
146
+ ONLY_KINEMATIC: number;
147
+ ONLY_FIXED: number;
148
+ EXCLUDE_DYNAMIC: number;
149
+ EXCLUDE_KINEMATIC: number;
150
+ EXCLUDE_FIXED: number;
151
+ EXCLUDE_SENSORS: number;
152
+ EXCLUDE_SOLIDS: number;
153
+ };
154
+ }
155
+ //# sourceMappingURL=rapier-types-3d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rapier-types-3d.d.ts","sourceRoot":"","sources":["../../src/lib/rapier-types-3d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Minimal type abstractions for Rapier 3D API.
3
+ * Works with both @dimforge/rapier3d-deterministic and @dimforge/rapier3d-deterministic-compat.
4
+ * The consumer project injects the actual RAPIER module at runtime.
5
+ */ export { };
6
+
7
+ //# sourceMappingURL=rapier-types-3d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/rapier-types-3d.ts"],"sourcesContent":["/**\n * Minimal type abstractions for Rapier 3D API.\n * Works with both @dimforge/rapier3d-deterministic and @dimforge/rapier3d-deterministic-compat.\n * The consumer project injects the actual RAPIER module at runtime.\n */\n\nexport interface RapierVector3 {\n x: number;\n y: number;\n z: number;\n}\n\nexport interface RapierQuaternion {\n x: number;\n y: number;\n z: number;\n w: number;\n}\n\nexport interface RapierRigidBody3d {\n handle: number;\n translation(): RapierVector3;\n rotation(): RapierQuaternion;\n linvel(): RapierVector3;\n angvel(): RapierVector3;\n setTranslation(translation: RapierVector3, wakeUp: boolean): void;\n setRotation(rotation: RapierQuaternion, wakeUp: boolean): void;\n setLinvel(linvel: RapierVector3, wakeUp: boolean): void;\n setAngvel(angvel: RapierVector3, 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: RapierVector3): void;\n setNextKinematicRotation(rotation: RapierQuaternion): void;\n}\n\nexport interface RapierCollider3d {\n handle: number;\n parent(): RapierRigidBody3d | 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 RapierRigidBodyDesc3d {\n setTranslation(x: number, y: number, z: number): RapierRigidBodyDesc3d;\n setRotation(rotation: RapierQuaternion): RapierRigidBodyDesc3d;\n setLinearDamping(damping: number): RapierRigidBodyDesc3d;\n setAngularDamping(damping: number): RapierRigidBodyDesc3d;\n setAdditionalMass(mass: number): RapierRigidBodyDesc3d;\n}\n\nexport interface RapierColliderDesc3d {\n setTranslation(x: number, y: number, z: number): RapierColliderDesc3d;\n setRotation(rotation: RapierQuaternion): RapierColliderDesc3d;\n setRestitution(restitution: number): RapierColliderDesc3d;\n setFriction(friction: number): RapierColliderDesc3d;\n setDensity(density: number): RapierColliderDesc3d;\n setMass(mass: number): RapierColliderDesc3d;\n setSensor(isSensor: boolean): RapierColliderDesc3d;\n setCollisionGroups(groups: number): RapierColliderDesc3d;\n setActiveEvents(events: number): RapierColliderDesc3d;\n}\n\nexport interface RapierEventQueue3d {\n free(): void;\n drainCollisionEvents(f: (h1: number, h2: number, started: boolean) => void): void;\n drainContactForceEvents(f: (event: RapierTempContactForceEvent3d) => void): void;\n clear(): void;\n}\n\nexport interface RapierTempContactForceEvent3d {\n collider1(): number;\n collider2(): number;\n totalForceMagnitude(): number;\n maxForceMagnitude(): number;\n maxForceDirection(): RapierVector3;\n}\n\nexport interface RapierWorld3d {\n timestep: number;\n step(eventQueue?: RapierEventQueue3d): void;\n free(): void;\n takeSnapshot(): Uint8Array;\n getRigidBody(handle: number): RapierRigidBody3d;\n getCollider(handle: number): RapierCollider3d;\n createRigidBody(desc: RapierRigidBodyDesc3d): RapierRigidBody3d;\n createCollider(desc: RapierColliderDesc3d, parent?: RapierRigidBody3d): RapierCollider3d;\n removeRigidBody(body: RapierRigidBody3d): void;\n removeCollider(collider: RapierCollider3d, wakeUp: boolean): void;\n createCharacterController(offset: number): RapierKinematicCharacterController;\n}\n\n// ─── Kinematic Character Controller ────────────────────────\n\nexport interface RapierCharacterCollision {\n toi: number;\n witness1: RapierVector3;\n witness2: RapierVector3;\n normal1: RapierVector3;\n normal2: RapierVector3;\n translationDeltaApplied: RapierVector3;\n translationDeltaRemaining: RapierVector3;\n}\n\nexport interface RapierKinematicCharacterController {\n setUp(up: RapierVector3): 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: RapierCollider3d,\n desiredTranslation: RapierVector3,\n filterFlags?: number,\n filterGroups?: number,\n ): void;\n computedMovement(): RapierVector3;\n computedGrounded(): boolean;\n numComputedCollisions(): number;\n computedCollision(index: number): RapierCharacterCollision | null;\n free(): void;\n}\n\nexport interface RapierModule3d {\n World: {\n new (gravity: RapierVector3): RapierWorld3d;\n restoreSnapshot(data: Uint8Array): RapierWorld3d | null;\n };\n RigidBodyDesc: {\n dynamic(): RapierRigidBodyDesc3d;\n fixed(): RapierRigidBodyDesc3d;\n kinematicPositionBased(): RapierRigidBodyDesc3d;\n kinematicVelocityBased(): RapierRigidBodyDesc3d;\n };\n ColliderDesc: {\n ball(radius: number): RapierColliderDesc3d;\n cuboid(hx: number, hy: number, hz: number): RapierColliderDesc3d;\n capsule(halfHeight: number, radius: number): RapierColliderDesc3d;\n trimesh(vertices: Float32Array, indices: Uint32Array): RapierColliderDesc3d;\n cylinder(halfHeight: number, radius: number): RapierColliderDesc3d;\n cone(halfHeight: number, radius: number): RapierColliderDesc3d;\n convexHull(points: Float32Array): RapierColliderDesc3d | null;\n };\n EventQueue: {\n new (autoDrain: boolean): RapierEventQueue3d;\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,GAkID,WAsCC"}
@@ -1,156 +1,10 @@
1
1
  /**
2
- * Minimal type abstractions for Rapier 3D API.
3
- * Works with both @dimforge/rapier3d and @dimforge/rapier3d-compat.
4
- * The consumer project injects the actual RAPIER module at runtime.
2
+ * @deprecated Import from `./rapier-types-3d.js` and use suffixed names
3
+ * (e.g. `RapierRigidBodyDesc3d` instead of `RapierRigidBodyDesc`).
5
4
  */
6
- export interface RapierVector3 {
7
- x: number;
8
- y: number;
9
- z: number;
10
- }
11
- export interface RapierQuaternion {
12
- x: number;
13
- y: number;
14
- z: number;
15
- w: number;
16
- }
17
- export interface RapierRigidBody3d {
18
- handle: number;
19
- translation(): RapierVector3;
20
- rotation(): RapierQuaternion;
21
- linvel(): RapierVector3;
22
- angvel(): RapierVector3;
23
- setTranslation(translation: RapierVector3, wakeUp: boolean): void;
24
- setRotation(rotation: RapierQuaternion, wakeUp: boolean): void;
25
- setLinvel(linvel: RapierVector3, wakeUp: boolean): void;
26
- setAngvel(angvel: RapierVector3, wakeUp: boolean): void;
27
- setLinearDamping(damping: number): void;
28
- setAngularDamping(damping: number): void;
29
- setAdditionalMass(mass: number): void;
30
- isKinematic(): boolean;
31
- isDynamic(): boolean;
32
- isFixed(): boolean;
33
- setNextKinematicTranslation(translation: RapierVector3): void;
34
- setNextKinematicRotation(rotation: RapierQuaternion): void;
35
- }
36
- export interface RapierCollider3d {
37
- handle: number;
38
- parent(): RapierRigidBody3d | null;
39
- isSensor(): boolean;
40
- collisionGroups(): number;
41
- setCollisionGroups(groups: number): void;
42
- setActiveEvents(events: number): void;
43
- setSensor(isSensor: boolean): void;
44
- }
45
- export interface RapierRigidBodyDesc {
46
- setTranslation(x: number, y: number, z: number): RapierRigidBodyDesc;
47
- setRotation(rotation: RapierQuaternion): RapierRigidBodyDesc;
48
- setLinearDamping(damping: number): RapierRigidBodyDesc;
49
- setAngularDamping(damping: number): RapierRigidBodyDesc;
50
- setAdditionalMass(mass: number): RapierRigidBodyDesc;
51
- }
52
- export interface RapierColliderDesc {
53
- setTranslation(x: number, y: number, z: number): RapierColliderDesc;
54
- setRotation(rotation: RapierQuaternion): RapierColliderDesc;
55
- setRestitution(restitution: number): RapierColliderDesc;
56
- setFriction(friction: number): RapierColliderDesc;
57
- setDensity(density: number): RapierColliderDesc;
58
- setMass(mass: number): RapierColliderDesc;
59
- setSensor(isSensor: boolean): RapierColliderDesc;
60
- setCollisionGroups(groups: number): RapierColliderDesc;
61
- setActiveEvents(events: number): RapierColliderDesc;
62
- }
63
- export interface RapierEventQueue {
64
- free(): void;
65
- drainCollisionEvents(f: (h1: number, h2: number, started: boolean) => void): void;
66
- drainContactForceEvents(f: (event: RapierTempContactForceEvent) => void): void;
67
- clear(): void;
68
- }
69
- export interface RapierTempContactForceEvent {
70
- collider1(): number;
71
- collider2(): number;
72
- totalForceMagnitude(): number;
73
- maxForceMagnitude(): number;
74
- maxForceDirection(): RapierVector3;
75
- }
76
- export interface RapierWorld3d {
77
- timestep: number;
78
- step(eventQueue?: RapierEventQueue): void;
79
- free(): void;
80
- takeSnapshot(): Uint8Array;
81
- getRigidBody(handle: number): RapierRigidBody3d;
82
- getCollider(handle: number): RapierCollider3d;
83
- createRigidBody(desc: RapierRigidBodyDesc): RapierRigidBody3d;
84
- createCollider(desc: RapierColliderDesc, parent?: RapierRigidBody3d): RapierCollider3d;
85
- removeRigidBody(body: RapierRigidBody3d): void;
86
- removeCollider(collider: RapierCollider3d, wakeUp: boolean): void;
87
- createCharacterController(offset: number): RapierKinematicCharacterController;
88
- /** Rebuilds the query pipeline (BVH) from current collider positions. Must be called after restoreSnapshot(). */
89
- updateSceneQueries(): void;
90
- }
91
- export interface RapierCharacterCollision {
92
- toi: number;
93
- witness1: RapierVector3;
94
- witness2: RapierVector3;
95
- normal1: RapierVector3;
96
- normal2: RapierVector3;
97
- translationDeltaApplied: RapierVector3;
98
- translationDeltaRemaining: RapierVector3;
99
- }
100
- export interface RapierKinematicCharacterController {
101
- setUp(up: RapierVector3): void;
102
- setMaxSlopeClimbAngle(angle: number): void;
103
- setMinSlopeSlideAngle(angle: number): void;
104
- enableAutostep(maxHeight: number, minWidth: number, includeDynamicBodies: boolean): void;
105
- disableAutostep(): void;
106
- enableSnapToGround(distance: number): void;
107
- disableSnapToGround(): void;
108
- setSlideEnabled(enabled: boolean): void;
109
- setCharacterMass(mass: number): void;
110
- setApplyImpulsesToDynamicBodies(apply: boolean): void;
111
- computeColliderMovement(collider: RapierCollider3d, desiredTranslation: RapierVector3, filterFlags?: number, filterGroups?: number): void;
112
- computedMovement(): RapierVector3;
113
- computedGrounded(): boolean;
114
- numComputedCollisions(): number;
115
- computedCollision(index: number): RapierCharacterCollision | null;
116
- free(): void;
117
- }
118
- export interface RapierModule3d {
119
- World: {
120
- new (gravity: RapierVector3): RapierWorld3d;
121
- restoreSnapshot(data: Uint8Array): RapierWorld3d | null;
122
- };
123
- RigidBodyDesc: {
124
- dynamic(): RapierRigidBodyDesc;
125
- fixed(): RapierRigidBodyDesc;
126
- kinematicPositionBased(): RapierRigidBodyDesc;
127
- kinematicVelocityBased(): RapierRigidBodyDesc;
128
- };
129
- ColliderDesc: {
130
- ball(radius: number): RapierColliderDesc;
131
- cuboid(hx: number, hy: number, hz: number): RapierColliderDesc;
132
- capsule(halfHeight: number, radius: number): RapierColliderDesc;
133
- trimesh(vertices: Float32Array, indices: Uint32Array): RapierColliderDesc;
134
- cylinder(halfHeight: number, radius: number): RapierColliderDesc;
135
- cone(halfHeight: number, radius: number): RapierColliderDesc;
136
- };
137
- EventQueue: {
138
- new (autoDrain: boolean): RapierEventQueue;
139
- };
140
- ActiveEvents: {
141
- NONE: number;
142
- COLLISION_EVENTS: number;
143
- CONTACT_FORCE_EVENTS: number;
144
- };
145
- QueryFilterFlags: {
146
- ONLY_DYNAMIC: number;
147
- ONLY_KINEMATIC: number;
148
- ONLY_FIXED: number;
149
- EXCLUDE_DYNAMIC: number;
150
- EXCLUDE_KINEMATIC: number;
151
- EXCLUDE_FIXED: number;
152
- EXCLUDE_SENSORS: number;
153
- EXCLUDE_SOLIDS: number;
154
- };
155
- }
5
+ export type { RapierRigidBodyDesc3d as RapierRigidBodyDesc } from './rapier-types-3d.js';
6
+ export type { RapierColliderDesc3d as RapierColliderDesc } from './rapier-types-3d.js';
7
+ export type { RapierTempContactForceEvent3d as RapierTempContactForceEvent } from './rapier-types-3d.js';
8
+ export type { RapierEventQueue3d as RapierEventQueue } from './rapier-types-3d.js';
9
+ export type { RapierVector3, RapierQuaternion, RapierRigidBody3d, RapierCollider3d, RapierWorld3d, RapierModule3d, RapierCharacterCollision, RapierKinematicCharacterController, } from './rapier-types-3d.js';
156
10
  //# sourceMappingURL=rapier-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rapier-types.d.ts","sourceRoot":"","sources":["../../src/lib/rapier-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rapier-types.d.ts","sourceRoot":"","sources":["../../src/lib/rapier-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,qBAAqB,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACzF,YAAY,EAAE,oBAAoB,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACvF,YAAY,EAAE,6BAA6B,IAAI,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACzG,YAAY,EAAE,kBAAkB,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGnF,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,kCAAkC,GACnC,MAAM,sBAAsB,CAAC"}
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Minimal type abstractions for Rapier 3D API.
3
- * Works with both @dimforge/rapier3d and @dimforge/rapier3d-compat.
4
- * The consumer project injects the actual RAPIER module at runtime.
5
- */ export { };
2
+ * @deprecated Import from `./rapier-types-3d.js` and use suffixed names
3
+ * (e.g. `RapierRigidBodyDesc3d` instead of `RapierRigidBodyDesc`).
4
+ */ // Re-export suffixed names as the old unsuffixed names for backward compatibility
5
+ // Forward all other exports unchanged (already have correct names)
6
+ export { };
6
7
 
7
8
  //# sourceMappingURL=rapier-types.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/rapier-types.ts"],"sourcesContent":["/**\n * Minimal type abstractions for Rapier 3D API.\n * Works with both @dimforge/rapier3d and @dimforge/rapier3d-compat.\n * The consumer project injects the actual RAPIER module at runtime.\n */\n\nexport interface RapierVector3 {\n x: number;\n y: number;\n z: number;\n}\n\nexport interface RapierQuaternion {\n x: number;\n y: number;\n z: number;\n w: number;\n}\n\nexport interface RapierRigidBody3d {\n handle: number;\n translation(): RapierVector3;\n rotation(): RapierQuaternion;\n linvel(): RapierVector3;\n angvel(): RapierVector3;\n setTranslation(translation: RapierVector3, wakeUp: boolean): void;\n setRotation(rotation: RapierQuaternion, wakeUp: boolean): void;\n setLinvel(linvel: RapierVector3, wakeUp: boolean): void;\n setAngvel(angvel: RapierVector3, 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: RapierVector3): void;\n setNextKinematicRotation(rotation: RapierQuaternion): void;\n}\n\nexport interface RapierCollider3d {\n handle: number;\n parent(): RapierRigidBody3d | 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 RapierRigidBodyDesc {\n setTranslation(x: number, y: number, z: number): RapierRigidBodyDesc;\n setRotation(rotation: RapierQuaternion): RapierRigidBodyDesc;\n setLinearDamping(damping: number): RapierRigidBodyDesc;\n setAngularDamping(damping: number): RapierRigidBodyDesc;\n setAdditionalMass(mass: number): RapierRigidBodyDesc;\n}\n\nexport interface RapierColliderDesc {\n setTranslation(x: number, y: number, z: number): RapierColliderDesc;\n setRotation(rotation: RapierQuaternion): RapierColliderDesc;\n setRestitution(restitution: number): RapierColliderDesc;\n setFriction(friction: number): RapierColliderDesc;\n setDensity(density: number): RapierColliderDesc;\n setMass(mass: number): RapierColliderDesc;\n setSensor(isSensor: boolean): RapierColliderDesc;\n setCollisionGroups(groups: number): RapierColliderDesc;\n setActiveEvents(events: number): RapierColliderDesc;\n}\n\nexport interface RapierEventQueue {\n free(): void;\n drainCollisionEvents(f: (h1: number, h2: number, started: boolean) => void): void;\n drainContactForceEvents(f: (event: RapierTempContactForceEvent) => void): void;\n clear(): void;\n}\n\nexport interface RapierTempContactForceEvent {\n collider1(): number;\n collider2(): number;\n totalForceMagnitude(): number;\n maxForceMagnitude(): number;\n maxForceDirection(): RapierVector3;\n}\n\nexport interface RapierWorld3d {\n timestep: number;\n step(eventQueue?: RapierEventQueue): void;\n free(): void;\n takeSnapshot(): Uint8Array;\n getRigidBody(handle: number): RapierRigidBody3d;\n getCollider(handle: number): RapierCollider3d;\n createRigidBody(desc: RapierRigidBodyDesc): RapierRigidBody3d;\n createCollider(desc: RapierColliderDesc, parent?: RapierRigidBody3d): RapierCollider3d;\n removeRigidBody(body: RapierRigidBody3d): void;\n removeCollider(collider: RapierCollider3d, wakeUp: boolean): void;\n createCharacterController(offset: number): RapierKinematicCharacterController;\n /** Rebuilds the query pipeline (BVH) from current collider positions. Must be called after restoreSnapshot(). */\n updateSceneQueries(): void;\n}\n\n// ─── Kinematic Character Controller ────────────────────────\n\nexport interface RapierCharacterCollision {\n toi: number;\n witness1: RapierVector3;\n witness2: RapierVector3;\n normal1: RapierVector3;\n normal2: RapierVector3;\n translationDeltaApplied: RapierVector3;\n translationDeltaRemaining: RapierVector3;\n}\n\nexport interface RapierKinematicCharacterController {\n setUp(up: RapierVector3): 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: RapierCollider3d,\n desiredTranslation: RapierVector3,\n filterFlags?: number,\n filterGroups?: number,\n ): void;\n computedMovement(): RapierVector3;\n computedGrounded(): boolean;\n numComputedCollisions(): number;\n computedCollision(index: number): RapierCharacterCollision | null;\n free(): void;\n}\n\nexport interface RapierModule3d {\n World: {\n new (gravity: RapierVector3): RapierWorld3d;\n restoreSnapshot(data: Uint8Array): RapierWorld3d | null;\n };\n RigidBodyDesc: {\n dynamic(): RapierRigidBodyDesc;\n fixed(): RapierRigidBodyDesc;\n kinematicPositionBased(): RapierRigidBodyDesc;\n kinematicVelocityBased(): RapierRigidBodyDesc;\n };\n ColliderDesc: {\n ball(radius: number): RapierColliderDesc;\n cuboid(hx: number, hy: number, hz: number): RapierColliderDesc;\n capsule(halfHeight: number, radius: number): RapierColliderDesc;\n trimesh(vertices: Float32Array, indices: Uint32Array): RapierColliderDesc;\n cylinder(halfHeight: number, radius: number): RapierColliderDesc;\n cone(halfHeight: number, radius: number): RapierColliderDesc;\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,GAoID,WAqCC"}
1
+ {"version":3,"sources":["../../src/lib/rapier-types.ts"],"sourcesContent":["/**\n * @deprecated Import from `./rapier-types-3d.js` and use suffixed names\n * (e.g. `RapierRigidBodyDesc3d` instead of `RapierRigidBodyDesc`).\n */\n\n// Re-export suffixed names as the old unsuffixed names for backward compatibility\nexport type { RapierRigidBodyDesc3d as RapierRigidBodyDesc } from './rapier-types-3d.js';\nexport type { RapierColliderDesc3d as RapierColliderDesc } from './rapier-types-3d.js';\nexport type { RapierTempContactForceEvent3d as RapierTempContactForceEvent } from './rapier-types-3d.js';\nexport type { RapierEventQueue3d as RapierEventQueue } from './rapier-types-3d.js';\n\n// Forward all other exports unchanged (already have correct names)\nexport type {\n RapierVector3,\n RapierQuaternion,\n RapierRigidBody3d,\n RapierCollider3d,\n RapierWorld3d,\n RapierModule3d,\n RapierCharacterCollision,\n RapierKinematicCharacterController,\n} from './rapier-types-3d.js';\n"],"names":[],"rangeMappings":";;;;;","mappings":"AAAA;;;CAGC,GAED,kFAAkF;AAMlF,mEAAmE;AACnE,WAS8B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lagless/physics3d",
3
- "version": "0.0.44",
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.44",
43
- "@lagless/misc": "0.0.44",
44
- "@lagless/physics-shared": "0.0.44"
42
+ "@lagless/core": "0.0.48",
43
+ "@lagless/physics-shared": "0.0.48",
44
+ "@lagless/misc": "0.0.48"
45
45
  },
46
46
  "peerDependencies": {
47
- "@dimforge/rapier3d-compat": ">=0.14.0"
47
+ "@dimforge/rapier3d-deterministic-compat": ">=0.15.0"
48
48
  },
49
49
  "devDependencies": {
50
- "@dimforge/rapier3d-compat": "^0.14.0",
50
+ "@dimforge/rapier3d-deterministic-compat": "^0.19.0",
51
51
  "unplugin-swc": "^1.5.7"
52
52
  },
53
53
  "files": [