@flighthq/physics3d 0.4.0-next.1821.efb1cbc → 0.4.0-next.1836.147ae1e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/broadphase.d.ts.map +1 -1
- package/dist/broadphase.js +7 -3
- package/dist/broadphase.js.map +1 -1
- package/dist/enablePhysics3DGuards.d.ts.map +1 -1
- package/dist/enablePhysics3DGuards.js +38 -2
- package/dist/enablePhysics3DGuards.js.map +1 -1
- package/dist/physics3DBroadphasePublication.d.ts +5 -0
- package/dist/physics3DBroadphasePublication.d.ts.map +1 -0
- package/dist/physics3DBroadphasePublication.js +49 -0
- package/dist/physics3DBroadphasePublication.js.map +1 -0
- package/dist/physics3DSpatialIndexingGuards.d.ts +4 -0
- package/dist/physics3DSpatialIndexingGuards.d.ts.map +1 -0
- package/dist/physics3DSpatialIndexingGuards.js +11 -0
- package/dist/physics3DSpatialIndexingGuards.js.map +1 -0
- package/dist/world.d.ts.map +1 -1
- package/dist/world.js +4 -3
- package/dist/world.js.map +1 -1
- package/package.json +6 -6
- package/src/broadphase.test.ts +31 -1
- package/src/enablePhysics3DGuards.test.ts +39 -0
- package/src/physics3DBroadphasePublication.test.ts +63 -0
- package/src/physics3DSpatialIndexingGuards.test.ts +43 -0
package/dist/broadphase.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadphase.d.ts","sourceRoot":"","sources":["../src/broadphase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"broadphase.d.ts","sourceRoot":"","sources":["../src/broadphase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAa9E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAO1E;AAQD,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAO3F"}
|
package/dist/broadphase.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { updatePhysics3DColliderWorldShape, writePhysics3DColliderBounds } from './colliderTransform';
|
|
2
|
+
import { getPhysics3DBroadphaseBodyIndices, publishPhysics3DBroadphaseBody, withdrawPhysics3DBroadphaseBody, } from './physics3DBroadphasePublication';
|
|
3
|
+
import { reportPhysics3DSpatialIndexing } from './physics3DSpatialIndexingGuards';
|
|
2
4
|
// Refreshes every collider's world shape and republishes its body's bounds to the broadphase index. The
|
|
3
5
|
// step and the public world queries share this path, so a query observes the body's current authored
|
|
4
6
|
// pose rather than the pre-integration snapshot the most recent contact set was built from.
|
|
@@ -31,6 +33,7 @@ export function synchronizePhysics3DSweptBroadphase(world, dt) {
|
|
|
31
33
|
// refines a body pair down to its collider pairs — which is where the filter and sensor decisions live
|
|
32
34
|
// anyway.
|
|
33
35
|
function synchronizePhysics3DBroadphaseWithScratch(world, scratch, dt) {
|
|
36
|
+
const publishedBodyIndices = getPhysics3DBroadphaseBodyIndices(world);
|
|
34
37
|
for (let bodyIndex = 0; bodyIndex < world.bodies.length; bodyIndex += 1) {
|
|
35
38
|
const body = world.bodies[bodyIndex];
|
|
36
39
|
let minX = Infinity;
|
|
@@ -69,7 +72,7 @@ function synchronizePhysics3DBroadphaseWithScratch(world, scratch, dt) {
|
|
|
69
72
|
// No collider produced bounds, so there is nothing to index. Withdraw rather than skip: the id may
|
|
70
73
|
// have been indexed on a previous step, and stale bounds would keep returning a body that has since
|
|
71
74
|
// lost its geometry.
|
|
72
|
-
world
|
|
75
|
+
withdrawPhysics3DBroadphaseBody(world, body.index, publishedBodyIndices);
|
|
73
76
|
continue;
|
|
74
77
|
}
|
|
75
78
|
if (dt > 0 && body.type !== 'static' && !body.sleeping) {
|
|
@@ -116,7 +119,7 @@ function synchronizePhysics3DBroadphaseWithScratch(world, scratch, dt) {
|
|
|
116
119
|
maxX - minX > MAX_SIMULATED_EXTENT ||
|
|
117
120
|
maxY - minY > MAX_SIMULATED_EXTENT ||
|
|
118
121
|
maxZ - minZ > MAX_SIMULATED_EXTENT) {
|
|
119
|
-
world
|
|
122
|
+
withdrawPhysics3DBroadphaseBody(world, body.index, publishedBodyIndices);
|
|
120
123
|
continue;
|
|
121
124
|
}
|
|
122
125
|
scratch.bodyBounds.minX = minX;
|
|
@@ -128,8 +131,9 @@ function synchronizePhysics3DBroadphaseWithScratch(world, scratch, dt) {
|
|
|
128
131
|
scratch.bodyBounds.maxX = paddedUpperBound(maxX);
|
|
129
132
|
scratch.bodyBounds.maxY = paddedUpperBound(maxY);
|
|
130
133
|
scratch.bodyBounds.maxZ = paddedUpperBound(maxZ);
|
|
131
|
-
world
|
|
134
|
+
publishPhysics3DBroadphaseBody(world, body.index, scratch.bodyBounds, publishedBodyIndices);
|
|
132
135
|
}
|
|
136
|
+
reportPhysics3DSpatialIndexing(world);
|
|
133
137
|
}
|
|
134
138
|
function paddedUpperBound(value) {
|
|
135
139
|
const padded = value + Math.max(1, Math.abs(value)) * Number.EPSILON * 4;
|
package/dist/broadphase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadphase.js","sourceRoot":"","sources":["../src/broadphase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"broadphase.js","sourceRoot":"","sources":["../src/broadphase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enablePhysics3DGuards.d.ts","sourceRoot":"","sources":["../src/enablePhysics3DGuards.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"enablePhysics3DGuards.d.ts","sourceRoot":"","sources":["../src/enablePhysics3DGuards.ts"],"names":[],"mappings":"AAYA,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAM7C;AAqBD,wBAAgB,qBAAqB,IAAI,IAAI,CAM5C"}
|
|
@@ -5,6 +5,7 @@ import { explainPhysics3DCollision } from './explainPhysics3DCollision';
|
|
|
5
5
|
import { explainPhysics3DJoints } from './explainPhysics3DJoints';
|
|
6
6
|
import { explainPhysics3DStep } from './explainPhysics3DStep';
|
|
7
7
|
import { setPhysics3DJointResolutionGuard } from './islands';
|
|
8
|
+
import { setPhysics3DSpatialIndexingGuard } from './physics3DSpatialIndexingGuards';
|
|
8
9
|
import { setPhysics3DStepGuard } from './step';
|
|
9
10
|
export function arePhysics3DGuardsEnabled() {
|
|
10
11
|
return physics3DGuardsEnabled;
|
|
@@ -13,10 +14,11 @@ export function disablePhysics3DGuards() {
|
|
|
13
14
|
setPhysics3DStepGuard(null);
|
|
14
15
|
setPhysics3DContactIntakeGuard(null);
|
|
15
16
|
setPhysics3DJointResolutionGuard(null);
|
|
17
|
+
setPhysics3DSpatialIndexingGuard(null);
|
|
16
18
|
physics3DGuardsEnabled = false;
|
|
17
19
|
}
|
|
18
|
-
// Installs opt-in diagnostics for the
|
|
19
|
-
//
|
|
20
|
+
// Installs opt-in diagnostics for the ways a world can advance without simulating what its data appears
|
|
21
|
+
// to describe, plus the broadphase cost fallback that preserves results while defeating spatial pruning.
|
|
20
22
|
//
|
|
21
23
|
// `stepPhysics3D` declines silently on any failed precondition, which is the right behaviour — a NaN
|
|
22
24
|
// velocity is a state a caller reaches by writing a field, and throwing would take down a frame loop over
|
|
@@ -31,12 +33,44 @@ export function disablePhysics3DGuards() {
|
|
|
31
33
|
// The third is a stored joint omitted from the solve because its kind has no solver or an endpoint no
|
|
32
34
|
// longer resolves. Deserializing ahead of registration is supported, so storing it stays silent; stepping
|
|
33
35
|
// while it remains inert is the moment the opt-in guard names it.
|
|
36
|
+
// The fourth is a body routed through a backend's overflow path. Collision remains correct, but every
|
|
37
|
+
// broadphase query scans that body linearly, so a mixed-scale world can retain the right contacts while
|
|
38
|
+
// silently shedding the pruning its index exists to provide.
|
|
34
39
|
export function enablePhysics3DGuards() {
|
|
35
40
|
setPhysics3DStepGuard(warnOnUnsteppablePhysics3DWorld);
|
|
36
41
|
setPhysics3DContactIntakeGuard(warnOnUndetectablePhysics3DColliders);
|
|
37
42
|
setPhysics3DJointResolutionGuard(warnOnUnresolvedPhysics3DJoints);
|
|
43
|
+
setPhysics3DSpatialIndexingGuard(warnOnPhysics3DSpatialIndexing);
|
|
38
44
|
physics3DGuardsEnabled = true;
|
|
39
45
|
}
|
|
46
|
+
// Reports the broadphase fallback that preserves correctness while materially changing cost. Reading the
|
|
47
|
+
// world's own backend keeps this diagnostic scoped to physics3d instead of taking ownership of spatial's
|
|
48
|
+
// process-wide caller-composed guard.
|
|
49
|
+
function warnOnPhysics3DSpatialIndexing(world) {
|
|
50
|
+
const overflowBodyIndices = [];
|
|
51
|
+
for (let bodyIndex = 0; bodyIndex < world.bodies.length; bodyIndex += 1) {
|
|
52
|
+
const index = world.bodies[bodyIndex].index;
|
|
53
|
+
const explanation = world.index.explainSpatialIndexing(index);
|
|
54
|
+
if (explanation.mode === 'overflow')
|
|
55
|
+
overflowBodyIndices.push(index);
|
|
56
|
+
}
|
|
57
|
+
if (overflowBodyIndices.length > 0) {
|
|
58
|
+
logOnce(`physics3d:spatial-overflow:${getPhysics3DGuardWorldId(world)}`, LogLevel.Warn, {
|
|
59
|
+
bodyIndices: overflowBodyIndices,
|
|
60
|
+
message: `synchronizePhysics3DBroadphase: ${overflowBodyIndices.length} ${overflowBodyIndices.length === 1 ? 'body is' : 'bodies are'} held in the spatial backend's overflow path, so broadphase queries scan ${overflowBodyIndices.length === 1 ? 'it' : 'them'} linearly — pass createBvhSpatialBackend3D() to createPhysics3DWorld(index) for a mixed-scale world, or tune createUniformGridSpatialBackend3D(cellSize) to the workload's typical body size.`,
|
|
61
|
+
status: 'spatial-overflow',
|
|
62
|
+
}, 'physics3d');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function getPhysics3DGuardWorldId(world) {
|
|
66
|
+
const existing = physics3DGuardWorldIds.get(world);
|
|
67
|
+
if (existing !== undefined)
|
|
68
|
+
return existing;
|
|
69
|
+
const created = nextPhysics3DGuardWorldId;
|
|
70
|
+
nextPhysics3DGuardWorldId += 1;
|
|
71
|
+
physics3DGuardWorldIds.set(world, created);
|
|
72
|
+
return created;
|
|
73
|
+
}
|
|
40
74
|
// Warns once per distinct set of undetectable collider kinds.
|
|
41
75
|
//
|
|
42
76
|
// Keyed on the kinds rather than logged per step, so a 60Hz loop says this once — and a world that later
|
|
@@ -116,4 +150,6 @@ const physics3DPreconditionFlags = [
|
|
|
116
150
|
'positionIterationsValid',
|
|
117
151
|
];
|
|
118
152
|
let physics3DGuardsEnabled = false;
|
|
153
|
+
let nextPhysics3DGuardWorldId = 0;
|
|
154
|
+
const physics3DGuardWorldIds = new WeakMap();
|
|
119
155
|
//# sourceMappingURL=enablePhysics3DGuards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enablePhysics3DGuards.js","sourceRoot":"","sources":["../src/enablePhysics3DGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gCAAgC,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAE/C,MAAM,UAAU,yBAAyB;IACvC,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,gCAAgC,CAAC,IAAI,CAAC,CAAC;IACvC,sBAAsB,GAAG,KAAK,CAAC;AACjC,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"enablePhysics3DGuards.js","sourceRoot":"","sources":["../src/enablePhysics3DGuards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Physics3DWorld, SpatialAabb3D } from '@flighthq/types/contract';
|
|
2
|
+
export declare function getPhysics3DBroadphaseBodyIndices(world: Physics3DWorld): Set<number>;
|
|
3
|
+
export declare function publishPhysics3DBroadphaseBody(world: Physics3DWorld, bodyIndex: number, bounds: Readonly<SpatialAabb3D>, bodyIndices?: Set<number>): void;
|
|
4
|
+
export declare function withdrawPhysics3DBroadphaseBody(world: Physics3DWorld, bodyIndex: number, bodyIndices?: Set<number>): void;
|
|
5
|
+
//# sourceMappingURL=physics3DBroadphasePublication.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics3DBroadphasePublication.d.ts","sourceRoot":"","sources":["../src/physics3DBroadphasePublication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9E,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAepF;AAMD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,WAAW,cAA2C,GACrD,IAAI,CAaN;AAKD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,WAAW,cAA2C,GACrD,IAAI,CAQN"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export function getPhysics3DBroadphaseBodyIndices(world) {
|
|
2
|
+
const existing = physics3DBroadphasePublicationByWorld.get(world);
|
|
3
|
+
if (existing !== undefined && existing.index === world.index)
|
|
4
|
+
return existing.bodyIndices;
|
|
5
|
+
// A hydrated world or a caller-supplied pre-populated backend can already hold bodies before this
|
|
6
|
+
// module has observed it. Rebuild once when the world/index pairing is first seen (and whenever the
|
|
7
|
+
// public backend reference changes), then maintain the set alongside physics3d's own operations.
|
|
8
|
+
const bodyIndices = new Set();
|
|
9
|
+
for (let bodyIndex = 0; bodyIndex < world.bodies.length; bodyIndex += 1) {
|
|
10
|
+
const id = world.bodies[bodyIndex].index;
|
|
11
|
+
if (world.index.explainSpatialIndexing(id).mode !== 'absent')
|
|
12
|
+
bodyIndices.add(id);
|
|
13
|
+
}
|
|
14
|
+
const created = { bodyIndices, index: world.index };
|
|
15
|
+
physics3DBroadphasePublicationByWorld.set(world, created);
|
|
16
|
+
return created.bodyIndices;
|
|
17
|
+
}
|
|
18
|
+
// Uses the backend's distinct insert/update vocabulary even though update is contractually an upsert. The
|
|
19
|
+
// latter is result-correct, but spatial diagnostics deliberately report update of a missing id as a
|
|
20
|
+
// lifecycle fault. Physics3d knows whether it has published each body, so preserving that information
|
|
21
|
+
// keeps a supported add-body-then-add-collider sequence silent without paying explain() on the hot path.
|
|
22
|
+
export function publishPhysics3DBroadphaseBody(world, bodyIndex, bounds, bodyIndices = getPhysics3DBroadphaseBodyIndices(world)) {
|
|
23
|
+
if (bodyIndices.has(bodyIndex)) {
|
|
24
|
+
const updated = world.index.updateSpatialObject(bodyIndex, bounds);
|
|
25
|
+
if (!updated && world.index.explainSpatialIndexing(bodyIndex).mode === 'absent') {
|
|
26
|
+
bodyIndices.delete(bodyIndex);
|
|
27
|
+
}
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const inserted = world.index.insertSpatialObject(bodyIndex, bounds);
|
|
31
|
+
if (inserted || world.index.explainSpatialIndexing(bodyIndex).mode !== 'absent') {
|
|
32
|
+
bodyIndices.add(bodyIndex);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Removes a body's publication only when physics3d previously placed it in the backend. A colliderless
|
|
36
|
+
// body is valid authored state, and repeatedly asking the backend to remove its never-published id would
|
|
37
|
+
// turn that ordinary state into a false `missing-id` lifecycle notice whenever spatial diagnostics are on.
|
|
38
|
+
export function withdrawPhysics3DBroadphaseBody(world, bodyIndex, bodyIndices = getPhysics3DBroadphaseBodyIndices(world)) {
|
|
39
|
+
if (!bodyIndices.delete(bodyIndex)) {
|
|
40
|
+
// A caller-supplied backend may already contain the id when physics3d first sees it. Consult the
|
|
41
|
+
// backend only on this uncommon withdrawal path so stale external publication is still removed
|
|
42
|
+
// without adding another map lookup to every moving body on every step.
|
|
43
|
+
if (world.index.explainSpatialIndexing(bodyIndex).mode === 'absent')
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
world.index.removeSpatialObject(bodyIndex);
|
|
47
|
+
}
|
|
48
|
+
const physics3DBroadphasePublicationByWorld = new WeakMap();
|
|
49
|
+
//# sourceMappingURL=physics3DBroadphasePublication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics3DBroadphasePublication.js","sourceRoot":"","sources":["../src/physics3DBroadphasePublication.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iCAAiC,CAAC,KAAqB;IACrE,MAAM,QAAQ,GAAG,qCAAqC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC,WAAW,CAAC;IAE1F,kGAAkG;IAClG,oGAAoG;IACpG,iGAAiG;IACjG,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QACxE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;QACzC,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACpD,qCAAqC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC;AAED,0GAA0G;AAC1G,oGAAoG;AACpG,sGAAsG;AACtG,yGAAyG;AACzG,MAAM,UAAU,8BAA8B,CAC5C,KAAqB,EACrB,SAAiB,EACjB,MAA+B,EAC/B,WAAW,GAAG,iCAAiC,CAAC,KAAK,CAAC;IAEtD,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChF,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpE,IAAI,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChF,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,yGAAyG;AACzG,2GAA2G;AAC3G,MAAM,UAAU,+BAA+B,CAC7C,KAAqB,EACrB,SAAiB,EACjB,WAAW,GAAG,iCAAiC,CAAC,KAAK,CAAC;IAEtD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,iGAAiG;QACjG,+FAA+F;QAC/F,wEAAwE;QACxE,IAAI,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;IAC9E,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAOD,MAAM,qCAAqC,GAAG,IAAI,OAAO,EAAkD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Physics3DWorld } from '@flighthq/types/contract';
|
|
2
|
+
export declare function reportPhysics3DSpatialIndexing(world: Readonly<Physics3DWorld>): void;
|
|
3
|
+
export declare function setPhysics3DSpatialIndexingGuard(guard: ((world: Readonly<Physics3DWorld>) => void) | null): void;
|
|
4
|
+
//# sourceMappingURL=physics3DSpatialIndexingGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics3DSpatialIndexingGuards.d.ts","sourceRoot":"","sources":["../src/physics3DSpatialIndexingGuards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK/D,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAEpF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAEhH"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// The core-side seam for physics3d's spatial outcome diagnostics. It is deliberately local rather than
|
|
2
|
+
// installing spatial's global caller-composed guard: doing that would overwrite application policy and
|
|
3
|
+
// receive notices from every unrelated 2D and 3D index in the process.
|
|
4
|
+
export function reportPhysics3DSpatialIndexing(world) {
|
|
5
|
+
physics3DSpatialIndexingGuard?.(world);
|
|
6
|
+
}
|
|
7
|
+
export function setPhysics3DSpatialIndexingGuard(guard) {
|
|
8
|
+
physics3DSpatialIndexingGuard = guard;
|
|
9
|
+
}
|
|
10
|
+
let physics3DSpatialIndexingGuard = null;
|
|
11
|
+
//# sourceMappingURL=physics3DSpatialIndexingGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics3DSpatialIndexingGuards.js","sourceRoot":"","sources":["../src/physics3DSpatialIndexingGuards.ts"],"names":[],"mappings":"AAEA,uGAAuG;AACvG,uGAAuG;AACvG,uEAAuE;AACvE,MAAM,UAAU,8BAA8B,CAAC,KAA+B;IAC5E,6BAA6B,EAAE,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAAyD;IACxG,6BAA6B,GAAG,KAAK,CAAC;AACxC,CAAC;AAED,IAAI,6BAA6B,GAAuD,IAAI,CAAC"}
|
package/dist/world.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EAGxB,iBAAiB,EACjB,gCAAgC,EAChC,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|
package/dist/world.js
CHANGED
|
@@ -5,6 +5,7 @@ import { refreshRigidBody3DWorldInertia } from './integrate';
|
|
|
5
5
|
import { rebuildPhysics3DJointCollisionSuppressions } from './jointCollisionSuppression';
|
|
6
6
|
import { createPhysics3DMassData, setRigidBody3DMassData, updateRigidBody3DMassData } from './massProperties';
|
|
7
7
|
import { assertPhysics3DBodyNotStepping, assertPhysics3DWorldNotStepping, physics3DBodyOwners, physics3DColliderOwners, physics3DJointOwners, } from './ownership';
|
|
8
|
+
import { withdrawPhysics3DBroadphaseBody } from './physics3DBroadphasePublication';
|
|
8
9
|
import { applySymmetricTensor, TENSOR_XX, TENSOR_XY, TENSOR_XZ, TENSOR_YY, TENSOR_YZ, TENSOR_ZZ, } from './symmetricTensor';
|
|
9
10
|
// World and body lifecycle: allocation, membership, and the mutations that have to run through a
|
|
10
11
|
// function because something derived follows from them.
|
|
@@ -240,8 +241,8 @@ export function createPhysics3DSolverConfig() {
|
|
|
240
241
|
//
|
|
241
242
|
// The broadphase defaults to a uniform grid and is a constructor PARAMETER rather than a fixed choice:
|
|
242
243
|
// `SpatialIndexBackend3D` is the swap point, so a caller with a scene the grid suits badly — a sparse
|
|
243
|
-
// world spanning kilometres, say — hands over
|
|
244
|
-
// changing.
|
|
244
|
+
// world spanning kilometres or carrying bodies at widely different scales, say — hands over the BVH or
|
|
245
|
+
// its own implementation without this package changing.
|
|
245
246
|
export function createPhysics3DWorld(index) {
|
|
246
247
|
return {
|
|
247
248
|
version: Physics3DWorldVersion,
|
|
@@ -445,7 +446,7 @@ export function removePhysics3DBody(world, body) {
|
|
|
445
446
|
physics3DJointOwners.delete(joint);
|
|
446
447
|
}
|
|
447
448
|
rebuildPhysics3DJointCollisionSuppressions(world);
|
|
448
|
-
world
|
|
449
|
+
withdrawPhysics3DBroadphaseBody(world, index);
|
|
449
450
|
body.index = -1;
|
|
450
451
|
physics3DBodyOwners.delete(body);
|
|
451
452
|
return true;
|
package/dist/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/physics3d",
|
|
3
|
-
"version": "0.4.0-next.
|
|
3
|
+
"version": "0.4.0-next.1836.147ae1e",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/collision": "0.4.0-next.
|
|
42
|
-
"@flighthq/log": "0.4.0-next.
|
|
43
|
-
"@flighthq/math": "0.4.0-next.
|
|
44
|
-
"@flighthq/spatial": "0.4.0-next.
|
|
45
|
-
"@flighthq/types": "0.4.0-next.
|
|
41
|
+
"@flighthq/collision": "0.4.0-next.1836.147ae1e",
|
|
42
|
+
"@flighthq/log": "0.4.0-next.1836.147ae1e",
|
|
43
|
+
"@flighthq/math": "0.4.0-next.1836.147ae1e",
|
|
44
|
+
"@flighthq/spatial": "0.4.0-next.1836.147ae1e",
|
|
45
|
+
"@flighthq/types": "0.4.0-next.1836.147ae1e"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@flighthq/geometry": "*",
|
package/src/broadphase.test.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { setSpatialIndexingGuard } from '@flighthq/spatial/contract';
|
|
2
|
+
import type {
|
|
3
|
+
CollisionBuiltInShape3D,
|
|
4
|
+
Physics3DWorld,
|
|
5
|
+
RigidBody3D,
|
|
6
|
+
SpatialIndexingNotice,
|
|
7
|
+
SpatialPair,
|
|
8
|
+
} from '@flighthq/types/contract';
|
|
2
9
|
import { describe, expect, it } from 'vitest';
|
|
3
10
|
|
|
4
11
|
import { synchronizePhysics3DBroadphase, synchronizePhysics3DSweptBroadphase } from './broadphase';
|
|
@@ -8,8 +15,13 @@ import {
|
|
|
8
15
|
createPhysics3DCollider,
|
|
9
16
|
createPhysics3DWorld,
|
|
10
17
|
createRigidBody3D,
|
|
18
|
+
removePhysics3DBody,
|
|
11
19
|
} from './world';
|
|
12
20
|
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
setSpatialIndexingGuard(null);
|
|
23
|
+
});
|
|
24
|
+
|
|
13
25
|
function unitBox(): CollisionBuiltInShape3D {
|
|
14
26
|
return { kind: 'aabb', minX: -0.5, minY: -0.5, minZ: -0.5, maxX: 0.5, maxY: 0.5, maxZ: 0.5 };
|
|
15
27
|
}
|
|
@@ -31,6 +43,24 @@ function pairs(world: Readonly<Physics3DWorld>): SpatialPair[] {
|
|
|
31
43
|
}
|
|
32
44
|
|
|
33
45
|
describe('synchronizePhysics3DBroadphase', () => {
|
|
46
|
+
it('uses insert, update, and remove without false missing-id lifecycle notices', () => {
|
|
47
|
+
const notices: SpatialIndexingNotice[] = [];
|
|
48
|
+
setSpatialIndexingGuard((notice) => notices.push({ ...notice }));
|
|
49
|
+
const world = createPhysics3DWorld();
|
|
50
|
+
const body = createRigidBody3D('dynamic');
|
|
51
|
+
|
|
52
|
+
addPhysics3DBody(world, body);
|
|
53
|
+
for (let step = 0; step < 100; step += 1) synchronizePhysics3DBroadphase(world);
|
|
54
|
+
addPhysics3DCollider(world, body, createPhysics3DCollider(unitBox()));
|
|
55
|
+
synchronizePhysics3DBroadphase(world);
|
|
56
|
+
body.colliders.length = 0;
|
|
57
|
+
synchronizePhysics3DBroadphase(world);
|
|
58
|
+
synchronizePhysics3DBroadphase(world);
|
|
59
|
+
removePhysics3DBody(world, body);
|
|
60
|
+
|
|
61
|
+
expect(notices.filter((notice) => notice.reason === 'missing-id')).toEqual([]);
|
|
62
|
+
});
|
|
63
|
+
|
|
34
64
|
it('publishes a body so an overlapping neighbour becomes a candidate pair', () => {
|
|
35
65
|
const world = createPhysics3DWorld();
|
|
36
66
|
addBoxBody(world, 0, 0, 0);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { addLogSink, createMemoryLogSink, getMemoryLogSinkEntries, removeLogSink } from '@flighthq/log/contract';
|
|
2
2
|
import type { LogEntry, Physics3DWorld } from '@flighthq/types/contract';
|
|
3
3
|
|
|
4
|
+
import { synchronizePhysics3DBroadphase } from './broadphase';
|
|
4
5
|
import { arePhysics3DGuardsEnabled, disablePhysics3DGuards, enablePhysics3DGuards } from './enablePhysics3DGuards';
|
|
5
6
|
import { createPhysics3DHingeJoint } from './jointFactories';
|
|
6
7
|
import { addPhysics3DJoint } from './jointRegistry';
|
|
@@ -59,6 +60,15 @@ describe('disablePhysics3DGuards', () => {
|
|
|
59
60
|
|
|
60
61
|
expect(entries).toHaveLength(0);
|
|
61
62
|
});
|
|
63
|
+
|
|
64
|
+
it('removes the spatial-indexing seam', () => {
|
|
65
|
+
enablePhysics3DGuards();
|
|
66
|
+
disablePhysics3DGuards();
|
|
67
|
+
|
|
68
|
+
const entries = captureLog(() => addPhysics3DBody(createPhysics3DWorld(), createOverflowBody()));
|
|
69
|
+
|
|
70
|
+
expect(entries).toHaveLength(0);
|
|
71
|
+
});
|
|
62
72
|
});
|
|
63
73
|
|
|
64
74
|
describe('enablePhysics3DGuards', () => {
|
|
@@ -141,6 +151,27 @@ describe('enablePhysics3DGuards', () => {
|
|
|
141
151
|
{ index: 1, kind: 'Hinge', status: 'invalid-bodies' },
|
|
142
152
|
]);
|
|
143
153
|
});
|
|
154
|
+
|
|
155
|
+
it('reports a body routed through spatial overflow once and stays silent for ordinary indexing', () => {
|
|
156
|
+
enablePhysics3DGuards();
|
|
157
|
+
const world = createPhysics3DWorld();
|
|
158
|
+
|
|
159
|
+
const entries = captureLog(() => {
|
|
160
|
+
const ordinary = createRigidBody3D('dynamic');
|
|
161
|
+
ordinary.colliders.push(createPhysics3DCollider({ kind: 'sphere', x: 0, y: 0, z: 0, radius: 0.5 }));
|
|
162
|
+
addPhysics3DBody(world, ordinary);
|
|
163
|
+
addPhysics3DBody(world, createOverflowBody());
|
|
164
|
+
addPhysics3DBody(world, createOverflowBody());
|
|
165
|
+
synchronizePhysics3DBroadphase(world);
|
|
166
|
+
synchronizePhysics3DBroadphase(world);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
expect(entries).toHaveLength(1);
|
|
170
|
+
expect(entries[0]).toMatchObject({
|
|
171
|
+
channel: 'physics3d',
|
|
172
|
+
data: { bodyIndices: [1], status: 'spatial-overflow' },
|
|
173
|
+
});
|
|
174
|
+
});
|
|
144
175
|
});
|
|
145
176
|
|
|
146
177
|
// `LogData` is deliberately `string | Record<string, unknown>`, so a structured entry's fields are only
|
|
@@ -165,3 +196,11 @@ function createTestWorld(): Physics3DWorld {
|
|
|
165
196
|
addPhysics3DBody(world, createRigidBody3D('dynamic'));
|
|
166
197
|
return world;
|
|
167
198
|
}
|
|
199
|
+
|
|
200
|
+
function createOverflowBody() {
|
|
201
|
+
const body = createRigidBody3D('static');
|
|
202
|
+
body.colliders.push(
|
|
203
|
+
createPhysics3DCollider({ kind: 'aabb', minX: -16, minY: -16, minZ: -16, maxX: 16, maxY: 16, maxZ: 16 }),
|
|
204
|
+
);
|
|
205
|
+
return body;
|
|
206
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { createBvhSpatialBackend3D, setSpatialIndexingGuard } from '@flighthq/spatial/contract';
|
|
2
|
+
import type { SpatialAabb3D, SpatialIndexingNotice } from '@flighthq/types/contract';
|
|
3
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
getPhysics3DBroadphaseBodyIndices,
|
|
7
|
+
publishPhysics3DBroadphaseBody,
|
|
8
|
+
withdrawPhysics3DBroadphaseBody,
|
|
9
|
+
} from './physics3DBroadphasePublication';
|
|
10
|
+
import { createPhysics3DWorld } from './world';
|
|
11
|
+
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
setSpatialIndexingGuard(null);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe('getPhysics3DBroadphaseBodyIndices', () => {
|
|
17
|
+
it('retains publication state for one backend and rebuilds it when the backend changes', () => {
|
|
18
|
+
const world = createPhysics3DWorld();
|
|
19
|
+
const first = getPhysics3DBroadphaseBodyIndices(world);
|
|
20
|
+
first.add(7);
|
|
21
|
+
expect(getPhysics3DBroadphaseBodyIndices(world)).toBe(first);
|
|
22
|
+
|
|
23
|
+
world.index = createBvhSpatialBackend3D();
|
|
24
|
+
|
|
25
|
+
const replaced = getPhysics3DBroadphaseBodyIndices(world);
|
|
26
|
+
expect(replaced).not.toBe(first);
|
|
27
|
+
expect(replaced.size).toBe(0);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('publishPhysics3DBroadphaseBody', () => {
|
|
32
|
+
it('inserts once and then updates without reporting a missing-id lifecycle fault', () => {
|
|
33
|
+
const notices: SpatialIndexingNotice[] = [];
|
|
34
|
+
setSpatialIndexingGuard((notice) => notices.push({ ...notice }));
|
|
35
|
+
const world = createPhysics3DWorld();
|
|
36
|
+
|
|
37
|
+
publishPhysics3DBroadphaseBody(world, 7, box(0));
|
|
38
|
+
publishPhysics3DBroadphaseBody(world, 7, box(1));
|
|
39
|
+
|
|
40
|
+
expect(world.index.explainSpatialIndexing(7).mode).toBe('cells');
|
|
41
|
+
expect(notices.filter((notice) => notice.reason === 'missing-id')).toEqual([]);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
describe('withdrawPhysics3DBroadphaseBody', () => {
|
|
46
|
+
it('removes a publication once and leaves a never-published id alone', () => {
|
|
47
|
+
const notices: SpatialIndexingNotice[] = [];
|
|
48
|
+
setSpatialIndexingGuard((notice) => notices.push({ ...notice }));
|
|
49
|
+
const world = createPhysics3DWorld();
|
|
50
|
+
|
|
51
|
+
withdrawPhysics3DBroadphaseBody(world, 8);
|
|
52
|
+
publishPhysics3DBroadphaseBody(world, 7, box(0));
|
|
53
|
+
withdrawPhysics3DBroadphaseBody(world, 7);
|
|
54
|
+
withdrawPhysics3DBroadphaseBody(world, 7);
|
|
55
|
+
|
|
56
|
+
expect(world.index.explainSpatialIndexing(7).mode).toBe('absent');
|
|
57
|
+
expect(notices.filter((notice) => notice.reason === 'missing-id')).toEqual([]);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
function box(offset: number): SpatialAabb3D {
|
|
62
|
+
return { minX: offset, minY: 0, minZ: 0, maxX: offset + 1, maxY: 1, maxZ: 1 };
|
|
63
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Physics3DWorld } from '@flighthq/types/contract';
|
|
2
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
3
|
+
|
|
4
|
+
import { reportPhysics3DSpatialIndexing, setPhysics3DSpatialIndexingGuard } from './physics3DSpatialIndexingGuards';
|
|
5
|
+
import { createPhysics3DWorld } from './world';
|
|
6
|
+
|
|
7
|
+
afterEach(() => {
|
|
8
|
+
setPhysics3DSpatialIndexingGuard(null);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
describe('reportPhysics3DSpatialIndexing', () => {
|
|
12
|
+
it('reports the world only while the optional seam is installed', () => {
|
|
13
|
+
const world = createPhysics3DWorld();
|
|
14
|
+
const received: Readonly<Physics3DWorld>[] = [];
|
|
15
|
+
|
|
16
|
+
reportPhysics3DSpatialIndexing(world);
|
|
17
|
+
setPhysics3DSpatialIndexingGuard((reported) => received.push(reported));
|
|
18
|
+
reportPhysics3DSpatialIndexing(world);
|
|
19
|
+
setPhysics3DSpatialIndexingGuard(null);
|
|
20
|
+
reportPhysics3DSpatialIndexing(world);
|
|
21
|
+
|
|
22
|
+
expect(received).toEqual([world]);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
describe('setPhysics3DSpatialIndexingGuard', () => {
|
|
27
|
+
it('replaces the previous guard instead of accumulating callbacks', () => {
|
|
28
|
+
const world = createPhysics3DWorld();
|
|
29
|
+
let firstCalls = 0;
|
|
30
|
+
let secondCalls = 0;
|
|
31
|
+
setPhysics3DSpatialIndexingGuard(() => {
|
|
32
|
+
firstCalls += 1;
|
|
33
|
+
});
|
|
34
|
+
setPhysics3DSpatialIndexingGuard(() => {
|
|
35
|
+
secondCalls += 1;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
reportPhysics3DSpatialIndexing(world);
|
|
39
|
+
|
|
40
|
+
expect(firstCalls).toBe(0);
|
|
41
|
+
expect(secondCalls).toBe(1);
|
|
42
|
+
});
|
|
43
|
+
});
|