@aura3d/physics 1.5.2 → 2.0.0

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 (81) hide show
  1. package/dist/ArcadeCharacterController.d.ts +53 -0
  2. package/dist/ArcadeCharacterController.d.ts.map +1 -0
  3. package/dist/ArcadeCharacterController.js +98 -0
  4. package/dist/ArcadeCharacterController.js.map +1 -0
  5. package/dist/ArcadeVehicleTelemetry.d.ts +162 -0
  6. package/dist/ArcadeVehicleTelemetry.d.ts.map +1 -0
  7. package/dist/ArcadeVehicleTelemetry.js +363 -0
  8. package/dist/ArcadeVehicleTelemetry.js.map +1 -0
  9. package/dist/CharacterController.d.ts +52 -0
  10. package/dist/CharacterController.d.ts.map +1 -1
  11. package/dist/CharacterController.js +380 -7
  12. package/dist/CharacterController.js.map +1 -1
  13. package/dist/Constraint.d.ts +20 -4
  14. package/dist/Constraint.d.ts.map +1 -1
  15. package/dist/Constraint.js +34 -60
  16. package/dist/Constraint.js.map +1 -1
  17. package/dist/FightingCharacterController.d.ts +32 -0
  18. package/dist/FightingCharacterController.d.ts.map +1 -0
  19. package/dist/FightingCharacterController.js +76 -0
  20. package/dist/FightingCharacterController.js.map +1 -0
  21. package/dist/MeshBVH.d.ts +72 -0
  22. package/dist/MeshBVH.d.ts.map +1 -0
  23. package/dist/MeshBVH.js +244 -0
  24. package/dist/MeshBVH.js.map +1 -0
  25. package/dist/PathFollowDriver.d.ts +162 -0
  26. package/dist/PathFollowDriver.d.ts.map +1 -0
  27. package/dist/PathFollowDriver.js +163 -0
  28. package/dist/PathFollowDriver.js.map +1 -0
  29. package/dist/PhysicsDebugDraw.d.ts +40 -1
  30. package/dist/PhysicsDebugDraw.d.ts.map +1 -1
  31. package/dist/PhysicsDebugDraw.js +87 -17
  32. package/dist/PhysicsDebugDraw.js.map +1 -1
  33. package/dist/PhysicsWorld.d.ts +37 -18
  34. package/dist/PhysicsWorld.d.ts.map +1 -1
  35. package/dist/PhysicsWorld.js +231 -630
  36. package/dist/PhysicsWorld.js.map +1 -1
  37. package/dist/RacingLineProfile.d.ts +116 -0
  38. package/dist/RacingLineProfile.d.ts.map +1 -0
  39. package/dist/RacingLineProfile.js +181 -0
  40. package/dist/RacingLineProfile.js.map +1 -0
  41. package/dist/Raycast.d.ts +11 -0
  42. package/dist/Raycast.d.ts.map +1 -1
  43. package/dist/Raycast.js +62 -8
  44. package/dist/Raycast.js.map +1 -1
  45. package/dist/RigidBody.d.ts +16 -9
  46. package/dist/RigidBody.d.ts.map +1 -1
  47. package/dist/RigidBody.js +23 -75
  48. package/dist/RigidBody.js.map +1 -1
  49. package/dist/SurfaceQuery.d.ts +72 -0
  50. package/dist/SurfaceQuery.d.ts.map +1 -0
  51. package/dist/SurfaceQuery.js +89 -0
  52. package/dist/SurfaceQuery.js.map +1 -0
  53. package/dist/VehicleDynamics.d.ts +10 -0
  54. package/dist/VehicleDynamics.d.ts.map +1 -1
  55. package/dist/VehicleDynamics.js +31 -3
  56. package/dist/VehicleDynamics.js.map +1 -1
  57. package/dist/VehicleMotion.d.ts +125 -0
  58. package/dist/VehicleMotion.d.ts.map +1 -0
  59. package/dist/VehicleMotion.js +373 -0
  60. package/dist/VehicleMotion.js.map +1 -0
  61. package/dist/index.d.ts +62 -17
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +70 -17
  64. package/dist/index.js.map +1 -1
  65. package/dist/solverless-entry.d.ts +41 -0
  66. package/dist/solverless-entry.d.ts.map +1 -0
  67. package/dist/solverless-entry.js +40 -0
  68. package/dist/solverless-entry.js.map +1 -0
  69. package/dist/solverless.d.ts +37 -0
  70. package/dist/solverless.d.ts.map +1 -0
  71. package/dist/solverless.js +36 -0
  72. package/dist/solverless.js.map +1 -0
  73. package/dist/world-entry.d.ts +31 -0
  74. package/dist/world-entry.d.ts.map +1 -0
  75. package/dist/world-entry.js +30 -0
  76. package/dist/world-entry.js.map +1 -0
  77. package/dist/world.d.ts +18 -0
  78. package/dist/world.d.ts.map +1 -0
  79. package/dist/world.js +17 -0
  80. package/dist/world.js.map +1 -0
  81. package/package.json +10 -2
package/dist/Raycast.js CHANGED
@@ -1,4 +1,4 @@
1
- import { addVec3, dotVec3, scaleVec3, subVec3 } from "./Shape.js";
1
+ import { addVec3, dotVec3, rotateVec3ByQuat, scaleVec3, subVec3 } from "./Shape.js";
2
2
  /**
3
3
  * Adapt any downward raycast into the ground query the foot-IK rig needs. `cast` should perform a
4
4
  * straight-down ray (typically a `PhysicsWorld.raycast` bound to a ground layer mask) and return
@@ -28,7 +28,7 @@ export function raycastCollider(origin, direction, collider, body, options = {})
28
28
  return raycastSphere(origin, direction, body.position, collider.shape.radius, collider, maxDistance);
29
29
  case "box":
30
30
  case "capsule":
31
- return raycastAabb(origin, direction, collider.bounds(body.position), collider, body.id, maxDistance);
31
+ return raycastOrientedBox(origin, direction, collider, body, 0, maxDistance);
32
32
  case "plane":
33
33
  return raycastPlane(origin, direction, collider.shape.normal, collider.shape.constant, collider, body.id, maxDistance);
34
34
  case "mesh":
@@ -51,12 +51,7 @@ export function sphereCastCollider(origin, radius, direction, collider, body, op
51
51
  return sphereCastSphere(origin, radius, direction, body.position, collider.shape.radius, collider, maxDistance);
52
52
  case "box":
53
53
  case "capsule": {
54
- const bounds = collider.bounds(body.position);
55
- const expanded = {
56
- min: [bounds.min[0] - radius, bounds.min[1] - radius, bounds.min[2] - radius],
57
- max: [bounds.max[0] + radius, bounds.max[1] + radius, bounds.max[2] + radius]
58
- };
59
- const hit = raycastAabb(origin, direction, expanded, collider, body.id, maxDistance);
54
+ const hit = raycastOrientedBox(origin, direction, collider, body, radius, maxDistance);
60
55
  return hit ? toSphereCastHit(hit, origin, direction, radius) : undefined;
61
56
  }
62
57
  case "plane":
@@ -105,6 +100,65 @@ function sphereCastSphere(origin, castRadius, direction, center, targetRadius, c
105
100
  castRadius
106
101
  };
107
102
  }
103
+ /**
104
+ * Cast against a box or capsule collider **in the body's own frame**, so a rotated collider
105
+ * is a rotated box rather than its axis-aligned bounding box.
106
+ *
107
+ * Defect class: engine, and the same family as the joint no-op — a feature that worked on
108
+ * one path and silently did not on another. Contacts already respected rotation (the
109
+ * narrow phase is OBB-SAT), but every query — `raycast`, `raycastAll`, `sphereCast`,
110
+ * `sphereCastAll` — passed `collider.bounds(body.position)` with **no rotation argument**,
111
+ * even though `Collider.bounds` accepts one. So a tilted platform reported an axis-aligned
112
+ * box with axis-aligned face normals.
113
+ *
114
+ * The visible consequence was that slopes did not exist as far as any query was concerned.
115
+ * Measured on a box rotated 22.5 degrees about +Z with a character standing on it:
116
+ * `groundNormal` came back `[0, 1, 0]` and `slopeAngle` `0.0000`, so `onSteepSlope` could
117
+ * never become true, a 82-degree face read as walkable flat ground, and any route trying to
118
+ * slide a character down a ramp or reject a cliff had nothing to read. Two independent
119
+ * defects, one cause.
120
+ *
121
+ * Method: transform the ray into the collider's local frame by the inverse body rotation,
122
+ * intersect the axis-aligned box there (which is exact, because in that frame it *is* axis
123
+ * aligned), then rotate the hit point and normal back out. A swept sphere is handled by
124
+ * inflating the local extents by its radius, which is the same conservative approximation
125
+ * the previous AABB path used and is exact for the face regions that dominate ground and
126
+ * wall probes.
127
+ */
128
+ function raycastOrientedBox(origin, direction, collider, body, inflate, maxDistance) {
129
+ const rotation = body.rotation;
130
+ const identity = rotation[0] === 0 && rotation[1] === 0 && rotation[2] === 0;
131
+ // Local-frame half extents: the collider's own bounds around the origin, inflated by any
132
+ // sweep radius. Taken from `bounds` at the origin with no rotation so capsules keep the
133
+ // same extents the previous path used.
134
+ const local = collider.bounds([0, 0, 0]);
135
+ const bounds = {
136
+ min: [local.min[0] - inflate, local.min[1] - inflate, local.min[2] - inflate],
137
+ max: [local.max[0] + inflate, local.max[1] + inflate, local.max[2] + inflate]
138
+ };
139
+ if (identity) {
140
+ // Unrotated: the local frame differs from the world frame only by a translation, so
141
+ // shift the ray rather than paying for two quaternion rotations per query.
142
+ const shifted = [origin[0] - body.position[0], origin[1] - body.position[1], origin[2] - body.position[2]];
143
+ const hit = raycastAabb(shifted, direction, bounds, collider, body.id, maxDistance);
144
+ if (!hit)
145
+ return undefined;
146
+ return { ...hit, point: addVec3(hit.point, body.position) };
147
+ }
148
+ const inverse = [-rotation[0], -rotation[1], -rotation[2], rotation[3]];
149
+ const localOrigin = rotateVec3ByQuat(subVec3(origin, body.position), inverse);
150
+ // Rotation preserves length, so the local direction stays unit and `distance` needs no
151
+ // rescaling on the way back out.
152
+ const localDirection = rotateVec3ByQuat(direction, inverse);
153
+ const hit = raycastAabb(localOrigin, localDirection, bounds, collider, body.id, maxDistance);
154
+ if (!hit)
155
+ return undefined;
156
+ return {
157
+ ...hit,
158
+ point: addVec3(rotateVec3ByQuat(hit.point, rotation), body.position),
159
+ normal: rotateVec3ByQuat(hit.normal, rotation)
160
+ };
161
+ }
108
162
  function raycastAabb(origin, direction, bounds, collider, bodyId, maxDistance) {
109
163
  let tmin = 0;
110
164
  let tmax = maxDistance;
@@ -1 +1 @@
1
- {"version":3,"file":"Raycast.js","sourceRoot":"","sources":["../../../../packages/physics/src/Raycast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Raycast.js","sourceRoot":"","sources":["../../../../packages/physics/src/Raycast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAa,MAAM,YAAY,CAAC;AA+C/F;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAoF;IAEpF,OAAO;QACL,WAAW,CAAC,MAAY,EAAE,WAAmB;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG;gBAAE,OAAO,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAY,EAAE,SAAe,EAAE,QAAkB,EAAE,IAAe,EAAE,UAA0B,EAAE;IAC9H,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACpE,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvG,KAAK,KAAK,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QAC/E,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACzH,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAY,EAAE,MAAc,EAAE,SAAe,EAAE,QAAkB,EAAE,IAAe,EAAE,UAA0B,EAAE;IACjJ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACpE,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAClH,KAAK,KAAK,CAAC;QACX,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACvF,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,CAAC;QACD,KAAK,OAAO;YACV,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACnJ,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC;YAC3G,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAY,EAAE,SAAe,EAAE,MAAY,EAAE,MAAc,EAAE,QAAkB,EAAE,WAAmB;IACzH,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5C,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9C,MAAM,QAAQ,GAAG,cAAc,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7C,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAS,CAAC;IACtI,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IACjG,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACvF,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAY,EAAE,UAAkB,EAAE,SAAe,EAAE,MAAY,EAAE,YAAoB,EAAE,QAAkB,EAAE,WAAmB;IACtJ,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;IACjD,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,KAAK,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxK,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;QACrE,MAAM;QACN,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,UAAU;QACV,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,kBAAkB,CACzB,MAAY,EACZ,SAAe,EACf,QAAkB,EAClB,IAAe,EACf,OAAe,EACf,WAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7E,yFAAyF;IACzF,wFAAwF;IACxF,uCAAuC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG;QACb,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAS;QACrF,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAS;KACtF,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,oFAAoF;QACpF,2EAA2E;QAC3E,MAAM,OAAO,GAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACjH,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACpF,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,OAAO,GAA8C,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnH,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,uFAAuF;IACvF,iCAAiC;IACjC,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC7F,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO;QACL,GAAG,GAAG;QACN,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;QACpE,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAY,EAAE,SAAe,EAAE,MAAkD,EAAE,QAAkB,EAAE,MAAc,EAAE,WAAmB;IAC7J,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,WAAW,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,MAAM,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,CAAC;gBAC/D,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,GAAG,GAAG,CAAC;QAC7C,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,GAAG,GAAG,CAAC;QAC7C,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,EAAE,GAAG,EAAE,CAAC;YACR,EAAE,GAAG,IAAI,CAAC;YACV,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;YACd,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,GAAG,CAAC,CAAC;YACT,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAS,CAAC;IAC1H,MAAM,MAAM,GAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,IAAI,YAAY,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,YAAY,CAAC,MAAY,EAAE,SAAe,EAAE,MAAY,EAAE,QAAgB,EAAE,QAAkB,EAAE,MAAc,EAAE,WAAmB;IAC1I,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC;IAC/D,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAS,CAAC;IACtI,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,eAAe,CAAC,MAAY,EAAE,MAAc,EAAE,SAAe,EAAE,MAAY,EAAE,QAAgB,EAAE,aAAmB,EAAE,QAAkB,EAAE,MAAc,EAAE,WAAmB;IAClL,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3F,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC;QAC1B,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,MAAM;YACN,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACjE,MAAM;YACN,QAAQ,EAAE,CAAC;YACX,UAAU;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC;IACnD,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9D,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,MAAM;QACN,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,MAAM;QACN,QAAQ;QACR,UAAU;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAY,EAAE,SAAe,EAAE,QAAkB,EAAE,IAAe,EAAE,WAAmB,EAAE,gBAAyB;IACrI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAA+B,CAAC;IACpC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAE,CAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAE,CAAE,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAE,CAAE,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC1G,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,OAAO,GAAG,GAAG,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CACtB,MAAY,EACZ,SAAe,EACf,CAAO,EACP,CAAO,EACP,CAAO,EACP,QAAkB,EAClB,MAAc,EACd,WAAmB,EACnB,gBAAyB;IAEzB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;IACvB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5C,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAS,CAAC;IACtI,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,SAAS,CAAC,CAAO,EAAE,CAAO;IACjC,OAAO;QACL,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAY,EAAE,SAAe;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAClG,OAAO,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACjG,CAAC;AAED,SAAS,aAAa,CAAC,MAAY,EAAE,SAAe,EAAE,QAAgB;IACpE,OAAO;QACL,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ;QACnC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ;QACnC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAW,EAAE,MAAkD;IACtF,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,SAAe;IACnC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAAE,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,eAAe,CAAC,GAAe,EAAE,MAAY,EAAE,SAAe,EAAE,MAAc;IACrF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClE,OAAO;QACL,GAAG,GAAG;QACN,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACrE,UAAU;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAW;IAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAoB,CAAC;AAC/F,CAAC"}
@@ -43,10 +43,18 @@ export declare class RigidBody {
43
43
  linearDamping: number;
44
44
  angularDamping: number;
45
45
  inverseInertia: [number, number, number];
46
+ /**
47
+ * The principal moments the caller explicitly asked for, or `undefined` when the body
48
+ * accepted the mass-derived default.
49
+ *
50
+ * Retained because the selected Rapier backend derives inertia from collider geometry
51
+ * unless the descriptor explicitly supplies principal moments. The bridge uses this
52
+ * value to preserve that public descriptor contract.
53
+ */
54
+ readonly declaredInertia?: Vec3;
46
55
  sleeping: boolean;
47
56
  private accumulatedForce;
48
57
  private accumulatedTorque;
49
- private sleepTimer;
50
58
  constructor(id: number, descriptor?: RigidBodyDescriptor);
51
59
  setPosition(position: Vec3): void;
52
60
  setVelocity(velocity: Vec3): void;
@@ -57,20 +65,19 @@ export declare class RigidBody {
57
65
  applyImpulse(impulse: Vec3): void;
58
66
  applyAngularImpulse(impulse: Vec3): void;
59
67
  applyImpulseAtPoint(impulse: Vec3, worldPoint: Vec3): void;
68
+ multiplyInverseInertiaWorld(value: Vec3): Vec3;
60
69
  /**
61
- * Applies a solver-owned contact impulse without resetting an already
62
- * accumulating sleep timer. PhysicsWorld performs threshold-based waking
63
- * after the full linear/angular velocity update.
70
+ * Force accumulated since the last step, in world space.
71
+ *
72
+ * The Rapier bridge reads this value on every step and forwards it to the native body.
64
73
  */
65
- applyContactImpulseAtPoint(impulse: Vec3, worldPoint: Vec3): void;
66
- multiplyInverseInertiaWorld(value: Vec3): Vec3;
67
- integrate(dt: number, gravity: Vec3, clearForces?: boolean): void;
74
+ pendingForce(): Vec3;
75
+ /** Torque accumulated since the last step. See {@link pendingForce}. */
76
+ pendingTorque(): Vec3;
68
77
  clearForces(): void;
69
78
  speedSquared(): number;
70
79
  wake(): void;
71
80
  sleep(): void;
72
- resetSleepTimer(): void;
73
- accumulateSleepTime(dt: number): number;
74
81
  snapshot(): RigidBodySnapshot;
75
82
  }
76
83
  //# sourceMappingURL=RigidBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RigidBody.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/RigidBody.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RigidBody.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/RigidBody.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuE,KAAK,IAAI,EAAQ,MAAM,YAAY,CAAC;AAElH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC/D,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,qBAAa,SAAS;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,iBAAiB,CAA2B;gBAExC,EAAE,EAAE,MAAM,EAAE,UAAU,GAAE,mBAAwB;IA8C5D,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAOjC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAMjC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAMjC,kBAAkB,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI;IAM/C,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAS7B,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAS/B,YAAY,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IASjC,mBAAmB,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IASxC,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI;IAU1D,2BAA2B,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAS9C;;;;OAIG;IACH,YAAY,IAAI,IAAI;IAIpB,wEAAwE;IACxE,aAAa,IAAI,IAAI;IAIrB,WAAW,IAAI,IAAI;IAKnB,YAAY,IAAI,MAAM;IAKtB,IAAI,IAAI,IAAI;IAOZ,KAAK,IAAI,IAAI;IAUb,QAAQ,IAAI,iBAAiB;CAc9B"}
package/dist/RigidBody.js CHANGED
@@ -15,10 +15,18 @@ export class RigidBody {
15
15
  linearDamping;
16
16
  angularDamping;
17
17
  inverseInertia;
18
+ /**
19
+ * The principal moments the caller explicitly asked for, or `undefined` when the body
20
+ * accepted the mass-derived default.
21
+ *
22
+ * Retained because the selected Rapier backend derives inertia from collider geometry
23
+ * unless the descriptor explicitly supplies principal moments. The bridge uses this
24
+ * value to preserve that public descriptor contract.
25
+ */
26
+ declaredInertia;
18
27
  sleeping;
19
28
  accumulatedForce;
20
29
  accumulatedTorque;
21
- sleepTimer = 0;
22
30
  constructor(id, descriptor = {}) {
23
31
  if (!Number.isInteger(id) || id <= 0) {
24
32
  throw new Error("RigidBody id must be a positive integer.");
@@ -53,6 +61,9 @@ export class RigidBody {
53
61
  this.mass = mass;
54
62
  this.inverseMass = 1 / mass;
55
63
  this.inverseInertia = inverseInertia(descriptor.inertia ?? [mass, mass, mass]);
64
+ if (descriptor.inertia) {
65
+ this.declaredInertia = [descriptor.inertia[0], descriptor.inertia[1], descriptor.inertia[2]];
66
+ }
56
67
  }
57
68
  else {
58
69
  this.mass = Number.POSITIVE_INFINITY;
@@ -124,20 +135,6 @@ export class RigidBody {
124
135
  this.applyImpulse(impulse);
125
136
  this.applyAngularImpulse(crossVec3(subVec3(worldPoint, this.position), impulse));
126
137
  }
127
- /**
128
- * Applies a solver-owned contact impulse without resetting an already
129
- * accumulating sleep timer. PhysicsWorld performs threshold-based waking
130
- * after the full linear/angular velocity update.
131
- */
132
- applyContactImpulseAtPoint(impulse, worldPoint) {
133
- validateFiniteVec3(impulse, "contact impulse");
134
- validateFiniteVec3(worldPoint, "contact impulse point");
135
- if (this.type !== "dynamic")
136
- return;
137
- this.velocity = addVec3(this.velocity, scaleVec3(impulse, this.inverseMass));
138
- const angularImpulse = crossVec3(subVec3(worldPoint, this.position), impulse);
139
- this.angularVelocity = addVec3(this.angularVelocity, this.multiplyInverseInertiaWorld(angularImpulse));
140
- }
141
138
  multiplyInverseInertiaWorld(value) {
142
139
  validateFiniteVec3(value, "inverse inertia input");
143
140
  if (this.type !== "dynamic")
@@ -147,32 +144,17 @@ export class RigidBody {
147
144
  const localResponse = multiplyVec3(local, this.inverseInertia);
148
145
  return rotateVec3ByQuat(localResponse, this.rotation);
149
146
  }
150
- integrate(dt, gravity, clearForces = true) {
151
- if (!Number.isFinite(dt) || dt <= 0) {
152
- throw new Error("dt must be a finite positive number.");
153
- }
154
- if (this.type !== "dynamic" || this.sleeping) {
155
- if (clearForces) {
156
- this.clearForces();
157
- }
158
- this.previousPosition = cloneVec3(this.position);
159
- this.previousRotation = cloneQuat(this.rotation);
160
- return;
161
- }
162
- this.previousPosition = cloneVec3(this.position);
163
- this.previousRotation = cloneQuat(this.rotation);
164
- const acceleration = addVec3(gravity, scaleVec3(this.accumulatedForce, this.inverseMass));
165
- this.velocity = addVec3(this.velocity, scaleVec3(acceleration, dt));
166
- this.angularVelocity = addVec3(this.angularVelocity, scaleVec3(multiplyVec3(this.accumulatedTorque, this.inverseInertia), dt));
167
- const dampingFactor = Math.max(0, 1 - this.linearDamping * dt);
168
- const angularDampingFactor = Math.max(0, 1 - this.angularDamping * dt);
169
- this.velocity = scaleVec3(this.velocity, dampingFactor);
170
- this.angularVelocity = scaleVec3(this.angularVelocity, angularDampingFactor);
171
- this.position = addVec3(this.position, scaleVec3(this.velocity, dt));
172
- this.rotation = integrateRotation(this.rotation, this.angularVelocity, dt);
173
- if (clearForces) {
174
- this.clearForces();
175
- }
147
+ /**
148
+ * Force accumulated since the last step, in world space.
149
+ *
150
+ * The Rapier bridge reads this value on every step and forwards it to the native body.
151
+ */
152
+ pendingForce() {
153
+ return [this.accumulatedForce[0], this.accumulatedForce[1], this.accumulatedForce[2]];
154
+ }
155
+ /** Torque accumulated since the last step. See {@link pendingForce}. */
156
+ pendingTorque() {
157
+ return [this.accumulatedTorque[0], this.accumulatedTorque[1], this.accumulatedTorque[2]];
176
158
  }
177
159
  clearForces() {
178
160
  this.accumulatedForce = vec3();
@@ -187,7 +169,6 @@ export class RigidBody {
187
169
  return;
188
170
  }
189
171
  this.sleeping = false;
190
- this.sleepTimer = 0;
191
172
  }
192
173
  sleep() {
193
174
  if (this.type !== "dynamic") {
@@ -198,16 +179,6 @@ export class RigidBody {
198
179
  this.clearForces();
199
180
  this.sleeping = true;
200
181
  }
201
- resetSleepTimer() {
202
- this.sleepTimer = 0;
203
- }
204
- accumulateSleepTime(dt) {
205
- if (!Number.isFinite(dt) || dt < 0) {
206
- throw new Error("sleep dt must be finite and non-negative.");
207
- }
208
- this.sleepTimer += dt;
209
- return this.sleepTimer;
210
- }
211
182
  snapshot() {
212
183
  return {
213
184
  id: this.id,
@@ -256,27 +227,4 @@ function crossVec3(a, b) {
256
227
  a[0] * b[1] - a[1] * b[0]
257
228
  ];
258
229
  }
259
- function integrateRotation(rotation, angularVelocity, dt) {
260
- const speed = Math.hypot(angularVelocity[0], angularVelocity[1], angularVelocity[2]);
261
- if (speed <= 1e-12) {
262
- return cloneQuat(rotation);
263
- }
264
- const halfAngle = speed * dt * 0.5;
265
- const sinHalf = Math.sin(halfAngle);
266
- const delta = [
267
- angularVelocity[0] / speed * sinHalf,
268
- angularVelocity[1] / speed * sinHalf,
269
- angularVelocity[2] / speed * sinHalf,
270
- Math.cos(halfAngle)
271
- ];
272
- return normalizeQuat(multiplyQuat(delta, rotation));
273
- }
274
- function multiplyQuat(a, b) {
275
- return [
276
- a[3] * b[0] + a[0] * b[3] + a[1] * b[2] - a[2] * b[1],
277
- a[3] * b[1] - a[0] * b[2] + a[1] * b[3] + a[2] * b[0],
278
- a[3] * b[2] + a[0] * b[1] - a[1] * b[0] + a[2] * b[3],
279
- a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2]
280
- ];
281
- }
282
230
  //# sourceMappingURL=RigidBody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RigidBody.js","sourceRoot":"","sources":["../../../../packages/physics/src/RigidBody.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RigidBody.js","sourceRoot":"","sources":["../../../../packages/physics/src/RigidBody.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { type MeshBVH } from "./MeshBVH.js";
2
+ import type { Vec3 } from "./Shape.js";
3
+ /**
4
+ * Height and normal of a real mesh under a world point.
5
+ *
6
+ * ## The defect class this closes
7
+ *
8
+ * Grounding anything in this library previously meant inventing a surface model and
9
+ * baking it into a route constant. Turbo Drift's vehicle surface was
10
+ * `TRACK_SURFACE_Y - VERGE_DROP * shoulderFraction`: one frozen scalar plus an analytic
11
+ * ramp. That is wrong the moment the track is banked, crowned, kerbed or swapped, and it
12
+ * is why the car's tyres pass through the visible road on corners. The 30-line comment
13
+ * block defending `CAR_GROUND_Y` in that route is the symptom of a missing capability,
14
+ * not a well-understood constant.
15
+ *
16
+ * A surface query removes the need to model the surface at all: ask the triangles.
17
+ *
18
+ * ## Caching
19
+ *
20
+ * A vehicle samples four times per frame, a character once or twice, a crowd hundreds of
21
+ * times. Sampling is cached per integer cell so repeated queries in the same spot are
22
+ * free, and the cache is cleared per frame by the caller rather than by a timer — a
23
+ * time-based cache silently returns stale heights on a moving platform.
24
+ */
25
+ export interface SurfaceSample {
26
+ /** World Y of the surface. */
27
+ readonly height: number;
28
+ /** Unit surface normal, oriented upward. */
29
+ readonly normal: Vec3;
30
+ /** Grip multiplier for this point. 1 unless a grip map is supplied. */
31
+ readonly grip: number;
32
+ /** False when no triangle was found under the point. */
33
+ readonly hit: boolean;
34
+ /** Triangle index, for callers that map triangles to materials. */
35
+ readonly triangle?: number | undefined;
36
+ }
37
+ export interface MeshSurfaceQueryOptions {
38
+ /**
39
+ * Height the downward ray starts from, above the highest point of the mesh.
40
+ *
41
+ * Too low and the ray starts inside overhanging geometry; the default derives it from
42
+ * the mesh bounds so it is correct for any scale without tuning.
43
+ */
44
+ readonly rayStartHeight?: number | undefined;
45
+ /** Grid size for the sample cache, in world units. */
46
+ readonly cacheCellSize?: number | undefined;
47
+ /** Grip per triangle index. Absent triangles use 1. */
48
+ readonly gripByTriangle?: ReadonlyMap<number, number> | undefined;
49
+ /** Fallback height when nothing is under the point. */
50
+ readonly fallbackHeight?: number | undefined;
51
+ }
52
+ export interface MeshSurfaceQuery {
53
+ readonly kind: "aura-mesh-surface-query";
54
+ sampleHeight(x: number, z: number): number;
55
+ sampleNormal(x: number, z: number): Vec3;
56
+ sampleGrip(x: number, z: number): number;
57
+ sample(x: number, z: number): SurfaceSample;
58
+ /** Drop cached samples. Call once per frame if the mesh moves. */
59
+ invalidate(): void;
60
+ readonly bvh: MeshBVH;
61
+ /** Cache statistics, so a caller can prove the query is not thrashing. */
62
+ stats(): {
63
+ readonly samples: number;
64
+ readonly cacheHits: number;
65
+ readonly cachedCells: number;
66
+ };
67
+ }
68
+ export declare function createMeshSurfaceQuery(geometry: {
69
+ readonly positions: Float32Array;
70
+ readonly indices: Uint32Array;
71
+ }, worldMatrix?: readonly number[], options?: MeshSurfaceQueryOptions): MeshSurfaceQuery;
72
+ //# sourceMappingURL=SurfaceQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SurfaceQuery.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/SurfaceQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,sDAAsD;IACtD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,uDAAuD;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAClE,uDAAuD;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAC5C,kEAAkE;IAClE,UAAU,IAAI,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,KAAK,IAAI;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACjG;AAkBD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE;IAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;CAAE,EAC7E,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,EAC/B,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CAsElB"}
@@ -0,0 +1,89 @@
1
+ import { buildMeshBVH, raycastMesh } from "./MeshBVH.js";
2
+ /** Transform positions by a column-major 4x4 world matrix. */
3
+ function transformPositions(positions, worldMatrix) {
4
+ if (!worldMatrix)
5
+ return positions;
6
+ if (worldMatrix.length !== 16)
7
+ throw new Error("createMeshSurfaceQuery worldMatrix must have 16 elements.");
8
+ const out = new Float32Array(positions.length);
9
+ for (let index = 0; index < positions.length; index += 3) {
10
+ const x = positions[index];
11
+ const y = positions[index + 1];
12
+ const z = positions[index + 2];
13
+ out[index] = worldMatrix[0] * x + worldMatrix[4] * y + worldMatrix[8] * z + worldMatrix[12];
14
+ out[index + 1] = worldMatrix[1] * x + worldMatrix[5] * y + worldMatrix[9] * z + worldMatrix[13];
15
+ out[index + 2] = worldMatrix[2] * x + worldMatrix[6] * y + worldMatrix[10] * z + worldMatrix[14];
16
+ }
17
+ return out;
18
+ }
19
+ export function createMeshSurfaceQuery(geometry, worldMatrix, options = {}) {
20
+ const positions = transformPositions(geometry.positions, worldMatrix);
21
+ const bvh = buildMeshBVH(positions, geometry.indices);
22
+ let highest = -Infinity;
23
+ let lowest = Infinity;
24
+ for (let index = 1; index < positions.length; index += 3) {
25
+ const y = positions[index];
26
+ if (y > highest)
27
+ highest = y;
28
+ if (y < lowest)
29
+ lowest = y;
30
+ }
31
+ if (!Number.isFinite(highest)) {
32
+ highest = 0;
33
+ lowest = 0;
34
+ }
35
+ // Start above the mesh and cast the full vertical extent plus margin, so an
36
+ // overhang never shadows the surface beneath a sample point.
37
+ const span = Math.max(1, highest - lowest);
38
+ const rayStart = options.rayStartHeight ?? highest + span;
39
+ const maxDistance = (rayStart - lowest) + span;
40
+ const cellSize = Math.max(1e-4, options.cacheCellSize ?? 0.05);
41
+ const fallbackHeight = options.fallbackHeight ?? lowest;
42
+ const cache = new Map();
43
+ let samples = 0;
44
+ let cacheHits = 0;
45
+ function computeSample(x, z) {
46
+ const hit = raycastMesh(bvh, [x, rayStart, z], [0, -1, 0], { maxDistance });
47
+ if (!hit) {
48
+ return { height: fallbackHeight, normal: [0, 1, 0], grip: 1, hit: false };
49
+ }
50
+ // Force the normal upward: a downward ray against a double-sided road surface can
51
+ // legitimately return either orientation, and a downward "up" normal would invert
52
+ // every attitude calculation built on it.
53
+ const normal = hit.normal[1] < 0
54
+ ? [-hit.normal[0], -hit.normal[1], -hit.normal[2]]
55
+ : hit.normal;
56
+ return {
57
+ height: hit.point[1],
58
+ normal,
59
+ grip: options.gripByTriangle?.get(hit.triangle) ?? 1,
60
+ hit: true,
61
+ triangle: hit.triangle
62
+ };
63
+ }
64
+ function sample(x, z) {
65
+ samples += 1;
66
+ const key = `${Math.round(x / cellSize)}:${Math.round(z / cellSize)}`;
67
+ const cached = cache.get(key);
68
+ if (cached) {
69
+ cacheHits += 1;
70
+ return cached;
71
+ }
72
+ const computed = computeSample(x, z);
73
+ cache.set(key, computed);
74
+ return computed;
75
+ }
76
+ return {
77
+ kind: "aura-mesh-surface-query",
78
+ bvh,
79
+ sample,
80
+ sampleHeight: (x, z) => sample(x, z).height,
81
+ sampleNormal: (x, z) => sample(x, z).normal,
82
+ sampleGrip: (x, z) => sample(x, z).grip,
83
+ invalidate: () => {
84
+ cache.clear();
85
+ },
86
+ stats: () => ({ samples, cacheHits, cachedCells: cache.size })
87
+ };
88
+ }
89
+ //# sourceMappingURL=SurfaceQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SurfaceQuery.js","sourceRoot":"","sources":["../../../../packages/physics/src/SurfaceQuery.ts"],"names":[],"mappings":"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"}
@@ -148,5 +148,15 @@ export declare function sampleVehicleDamage(input: VehicleDamageInput): VehicleD
148
148
  export declare function sampleVehicleEffectEmitters(input: VehicleEffectEmitterInput): VehicleEffectEmitterSample;
149
149
  export declare function sampleVehicleDrivetrain(input: VehicleDrivetrainInput): VehicleDrivetrainSample;
150
150
  export declare function sampleRacingAiDriver(input: RacingAiDriverInput): RacingAiDriverSample;
151
+ /**
152
+ * Peak lateral cornering stiffness of a tyre preset, per newton of vertical load.
153
+ *
154
+ * This is the initial slope of the Magic Formula lateral curve, `d * c * b`, in units of
155
+ * force per radian of slip per newton of load. An integrator needs it to size a stable
156
+ * timestep: the tyre is the stiffest spring in a vehicle model, so it sets the step, and
157
+ * assuming a fixed 1/60 s regardless of tyre, mass and wheelbase is what let the vehicle
158
+ * integrator go unstable and produce yaw opposing its own steering input.
159
+ */
160
+ export declare function tirePeakCorneringStiffness(tire: PacejkaTireCoefficients | PacejkaTirePreset): number;
151
161
  export declare function samplePacejkaTireForces(input: PacejkaTireForceInput): PacejkaTireForceSample;
152
162
  //# sourceMappingURL=VehicleDynamics.d.ts.map