@aura3d/engine 4.1.3 → 4.2.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.
- package/README.md +3 -3
- package/dist/aura3d-cli/cli.d.ts.map +1 -1
- package/dist/aura3d-cli/cli.js +49 -17
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/adapters.d.ts +9 -1
- package/dist/aura3d-cli/pull-bridge/adapters.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge/adapters.js +30 -7
- package/dist/aura3d-cli/pull-bridge/adapters.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/search.d.ts +5 -0
- package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge/search.js +7 -1
- package/dist/aura3d-cli/pull-bridge/search.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge.js +1 -1
- package/dist/aura3d-cli/pull-bridge.js.map +1 -1
- package/dist/aura3d-cli/resolve-ladder.d.ts +123 -0
- package/dist/aura3d-cli/resolve-ladder.d.ts.map +1 -0
- package/dist/aura3d-cli/resolve-ladder.js +410 -0
- package/dist/aura3d-cli/resolve-ladder.js.map +1 -0
- package/dist/create-aura3d/index.js +1 -1
- package/dist/debug/index.d.ts +2 -2
- package/dist/debug/index.d.ts.map +1 -1
- package/dist/debug/index.js +1 -1
- package/dist/debug/index.js.map +1 -1
- package/dist/debug/safety/frameBoundary.d.ts +33 -0
- package/dist/debug/safety/frameBoundary.d.ts.map +1 -0
- package/dist/debug/safety/frameBoundary.js +40 -0
- package/dist/debug/safety/frameBoundary.js.map +1 -0
- package/dist/debug/safety/index.d.ts +1 -0
- package/dist/debug/safety/index.d.ts.map +1 -1
- package/dist/debug/safety/index.js +1 -0
- package/dist/debug/safety/index.js.map +1 -1
- package/dist/engine/agent-api/app/actorBoneMatrixLookup.d.ts +22 -0
- package/dist/engine/agent-api/app/actorBoneMatrixLookup.d.ts.map +1 -0
- package/dist/engine/agent-api/app/actorBoneMatrixLookup.js +24 -0
- package/dist/engine/agent-api/app/actorBoneMatrixLookup.js.map +1 -0
- package/dist/engine/agent-api/app/canvas.d.ts +16 -0
- package/dist/engine/agent-api/app/canvas.d.ts.map +1 -1
- package/dist/engine/agent-api/app/canvas.js +15 -0
- package/dist/engine/agent-api/app/canvas.js.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.js +21 -3
- package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.js +21 -3
- package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
- package/dist/engine/agent-api/app/mountFailure.d.ts +6 -0
- package/dist/engine/agent-api/app/mountFailure.d.ts.map +1 -0
- package/dist/engine/agent-api/app/mountFailure.js +9 -0
- package/dist/engine/agent-api/app/mountFailure.js.map +1 -0
- package/dist/engine/agent-api/app/parentFit.d.ts +35 -0
- package/dist/engine/agent-api/app/parentFit.d.ts.map +1 -0
- package/dist/engine/agent-api/app/parentFit.js +36 -0
- package/dist/engine/agent-api/app/parentFit.js.map +1 -0
- package/dist/engine/agent-api/compiler/customMaterial.js +3 -2
- package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -1
- package/dist/engine/agent-api/nodes/batched.d.ts +10 -0
- package/dist/engine/agent-api/nodes/batched.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/batched.js +7 -5
- package/dist/engine/agent-api/nodes/batched.js.map +1 -1
- package/dist/engine/agent-api/nodes/builder.d.ts +13 -0
- package/dist/engine/agent-api/nodes/builder.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/builder.js +7 -3
- package/dist/engine/agent-api/nodes/builder.js.map +1 -1
- package/dist/engine/agent-api/nodes/instancedMesh.d.ts +10 -0
- package/dist/engine/agent-api/nodes/instancedMesh.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/instancedMesh.js +7 -5
- package/dist/engine/agent-api/nodes/instancedMesh.js.map +1 -1
- package/dist/engine/lanes/prd06.d.ts.map +1 -1
- package/dist/engine/lanes/prd06.js +1 -16
- package/dist/engine/lanes/prd06.js.map +1 -1
- package/dist/engine/qa/fixedStepLoop.d.ts +2 -0
- package/dist/engine/qa/fixedStepLoop.d.ts.map +1 -1
- package/dist/engine/qa/fixedStepLoop.js +3 -0
- package/dist/engine/qa/fixedStepLoop.js.map +1 -1
- package/dist/game/evidence/textureStatus.d.ts +24 -0
- package/dist/game/evidence/textureStatus.d.ts.map +1 -0
- package/dist/game/evidence/textureStatus.js +27 -0
- package/dist/game/evidence/textureStatus.js.map +1 -0
- package/dist/game/index.d.ts +5 -0
- package/dist/game/index.d.ts.map +1 -1
- package/dist/game/index.js +3 -0
- package/dist/game/index.js.map +1 -1
- package/dist/game/motion/boneAttach.d.ts +42 -0
- package/dist/game/motion/boneAttach.d.ts.map +1 -0
- package/dist/game/motion/boneAttach.js +166 -0
- package/dist/game/motion/boneAttach.js.map +1 -0
- package/dist/game/motion/cameraClear.d.ts +35 -0
- package/dist/game/motion/cameraClear.d.ts.map +1 -0
- package/dist/game/motion/cameraClear.js +64 -0
- package/dist/game/motion/cameraClear.js.map +1 -0
- package/dist/game/motion/doubleFrame.d.ts +37 -0
- package/dist/game/motion/doubleFrame.d.ts.map +1 -0
- package/dist/game/motion/doubleFrame.js +59 -0
- package/dist/game/motion/doubleFrame.js.map +1 -0
- package/dist/game/motion/footSlide.d.ts +32 -0
- package/dist/game/motion/footSlide.d.ts.map +1 -0
- package/dist/game/motion/footSlide.js +59 -0
- package/dist/game/motion/footSlide.js.map +1 -0
- package/dist/game/motion/impact.d.ts +113 -0
- package/dist/game/motion/impact.d.ts.map +1 -0
- package/dist/game/motion/impact.js +233 -0
- package/dist/game/motion/impact.js.map +1 -0
- package/dist/game/motion/index.d.ts +19 -0
- package/dist/game/motion/index.d.ts.map +1 -0
- package/dist/game/motion/index.js +10 -0
- package/dist/game/motion/index.js.map +1 -0
- package/dist/game/motion/locomotion.d.ts +55 -0
- package/dist/game/motion/locomotion.d.ts.map +1 -0
- package/dist/game/motion/locomotion.js +107 -0
- package/dist/game/motion/locomotion.js.map +1 -0
- package/dist/game/motion/motionGate.d.ts +41 -0
- package/dist/game/motion/motionGate.d.ts.map +1 -0
- package/dist/game/motion/motionGate.js +71 -0
- package/dist/game/motion/motionGate.js.map +1 -0
- package/dist/game/motion/presenter.d.ts +37 -0
- package/dist/game/motion/presenter.d.ts.map +1 -0
- package/dist/game/motion/presenter.js +72 -0
- package/dist/game/motion/presenter.js.map +1 -0
- package/dist/game/motion/smoothing.d.ts +34 -0
- package/dist/game/motion/smoothing.d.ts.map +1 -0
- package/dist/game/motion/smoothing.js +92 -0
- package/dist/game/motion/smoothing.js.map +1 -0
- package/dist/game/session/warmPrograms.d.ts +58 -0
- package/dist/game/session/warmPrograms.d.ts.map +1 -0
- package/dist/game/session/warmPrograms.js +63 -0
- package/dist/game/session/warmPrograms.js.map +1 -0
- package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
- package/dist/rendering/environment/EnvironmentCache.js +6 -1
- package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
- package/dist/rendering/environment/neutralEmbedded.d.ts +5 -0
- package/dist/rendering/environment/neutralEmbedded.d.ts.map +1 -0
- package/dist/rendering/environment/neutralEmbedded.js +1118 -0
- package/dist/rendering/environment/neutralEmbedded.js.map +1 -0
- package/dist/rendering/environment/neutralEmbeddedLoader.d.ts +5 -0
- package/dist/rendering/environment/neutralEmbeddedLoader.d.ts.map +1 -0
- package/dist/rendering/environment/neutralEmbeddedLoader.js +32 -0
- package/dist/rendering/environment/neutralEmbeddedLoader.js.map +1 -0
- package/package.json +25 -25
- package/templates/cinematic-scene/package.json +2 -2
- package/templates/mini-game/package.json +2 -2
- package/templates/product-viewer/package.json +2 -2
- package/templates/production-asset-inspector/package.json +1 -1
- package/templates/production-material-studio/package.json +1 -1
- package/templates/production-product-configurator/package.json +1 -1
- package/templates/production-product-viewer/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prd06.js","sourceRoot":"","sources":["../../../../../packages/engine/src/lanes/prd06.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAiB3F,IAAI,aAA2C,CAAC;AAChD,IAAI,oBAAkD,CAAC;AACvD,MAAM,mBAAmB,GAAG,GAAS,EAAE;IACrC,oBAAoB,KAAK,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CACvD,CAAC,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,YAAY,EAAE,EAAE,EAAE;QACjG,aAAa,GAAG,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC;IACjH,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AACF;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,mBAAmB,EAAE,CAAC;IACtB,OAAO,oBAAqB,CAAC;AAC/B,CAAC;AACD,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAG1F,OAAO,EACL,gCAAgC,EAChC,4BAA4B,EAC5B,gBAAgB,EAChB,iCAAiC,EACjC,6BAA6B,EAC7B,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACpH,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,4BAA4B,EAAkC,MAAM,uDAAuD,CAAC;AAErN,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAEzF,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAC7E,0EAA0E;AAC1E,0BAA0B;AAC1B,6BAA6B,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAE1F,6EAA6E;AAC7E,yDAAyD;AACzD,cAAc,wCAAwC,CAAC;AAEvD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,CACX,sBAAgG,EAChG,4BAA4B,CAC7B,CAAC;AACF,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;AAE9C,+EAA+E;AAC/E,wDAAwD;AACxD,0BAA0B,CAAC;IACzB,EAAE,EAAE,6BAA6B;IACjC,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,WAAW;IAChB,OAAO,EAAE,GAAG,EAAE,CAAC,gCAAgC,EAAE;CAClD,CAAC,CAAC;AAEH,2BAA2B,CAAC;IAC1B,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,WAAW;IACnB,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,4BAA4B,CAAC,MAAM,EAAE,GAAG,CAAC;CACnE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"prd06.js","sourceRoot":"","sources":["../../../../../packages/engine/src/lanes/prd06.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,8 @@ export interface FixedStepLoop {
|
|
|
30
30
|
readonly steps: number;
|
|
31
31
|
/** Seconds of unsimulated time carried to the next frame. */
|
|
32
32
|
readonly accumulator: number;
|
|
33
|
+
/** Progress through the current step, `accumulator / stepSeconds` clamped to 0..1: the blend factor for render interpolation. */
|
|
34
|
+
readonly alpha: number;
|
|
33
35
|
/** Drop the carried time so a restart does not inherit a partial step from before it. */
|
|
34
36
|
resetAccumulator(): void;
|
|
35
37
|
/** Run one animation frame at `nowMs` (what the scheduler calls); returns the steps it executed. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixedStepLoop.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/fixedStepLoop.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,qHAAqH;IACrH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,kDAAkD;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,wFAAwF;IACxF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,uGAAuG;IACvG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yFAAyF;IACzF,gBAAgB,IAAI,IAAI,CAAC;IACzB,oGAAoG;IACpG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,mGAAmG;IACnG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;CAC7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"fixedStepLoop.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/fixedStepLoop.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,qHAAqH;IACrH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,kDAAkD;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,wFAAwF;IACxF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,uGAAuG;IACvG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iIAAiI;IACjI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,gBAAgB,IAAI,IAAI,CAAC;IACzB,oGAAoG;IACpG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,mGAAmG;IACnG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;CAC7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAgFhF"}
|
|
@@ -32,6 +32,9 @@ export function createFixedStepLoop(options) {
|
|
|
32
32
|
get accumulator() {
|
|
33
33
|
return accumulator;
|
|
34
34
|
},
|
|
35
|
+
get alpha() {
|
|
36
|
+
return Math.max(0, Math.min(1, accumulator / stepSeconds));
|
|
37
|
+
},
|
|
35
38
|
tick(nowMs) {
|
|
36
39
|
const frameSeconds = Math.min(maxFrame, Math.max(minFrame, (nowMs - last) / 1000));
|
|
37
40
|
last = nowMs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixedStepLoop.js","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/fixedStepLoop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixedStepLoop.js","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/fixedStepLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** One textured-material row of `app.diagnostics().renderer.runtime.texturedMaterials`. */
|
|
2
|
+
export interface TexturedMaterialRow {
|
|
3
|
+
readonly nodeName: string;
|
|
4
|
+
readonly status: string;
|
|
5
|
+
}
|
|
6
|
+
export interface TextureUpgradeSummary {
|
|
7
|
+
readonly total: number;
|
|
8
|
+
readonly textured: number;
|
|
9
|
+
readonly pending: number;
|
|
10
|
+
readonly fallback: number;
|
|
11
|
+
/** Rows the upgrade pass has not reached yet, or that carry no texture. */
|
|
12
|
+
readonly none: number;
|
|
13
|
+
/** Node name to status, for waiting on specific nodes. */
|
|
14
|
+
readonly byNode: Readonly<Record<string, string>>;
|
|
15
|
+
}
|
|
16
|
+
/** Reads the engine's per-material texture upgrade status. Textures upgrade one material at a time after mount, so a frame taken early shows untextured (white) models. */
|
|
17
|
+
export declare function summarizeTextureUpgrade(diagnostics: unknown): TextureUpgradeSummary;
|
|
18
|
+
/** True when every node whose name matches `test` is textured (or has settled on its scalar fallback), and at least one matches. */
|
|
19
|
+
export declare function texturedNodesReady(summary: TextureUpgradeSummary, test: (nodeName: string) => boolean): {
|
|
20
|
+
readonly ready: boolean;
|
|
21
|
+
readonly waiting: readonly string[];
|
|
22
|
+
readonly matched: number;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=textureStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textureStatus.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/evidence/textureStatus.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAED,2KAA2K;AAC3K,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAcnF;AAED,oIAAoI;AACpI,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAIlM"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Reads the engine's per-material texture upgrade status. Textures upgrade one material at a time after mount, so a frame taken early shows untextured (white) models. */
|
|
2
|
+
export function summarizeTextureUpgrade(diagnostics) {
|
|
3
|
+
const rows = (diagnostics?.renderer?.runtime?.texturedMaterials) ?? [];
|
|
4
|
+
const byNode = {};
|
|
5
|
+
let textured = 0, pending = 0, fallback = 0, none = 0;
|
|
6
|
+
for (const row of rows) {
|
|
7
|
+
const previous = byNode[row.nodeName];
|
|
8
|
+
// A node with several resources is as ready as its least ready resource.
|
|
9
|
+
byNode[row.nodeName] = previous === undefined || previous === "textured" ? row.status : previous;
|
|
10
|
+
if (row.status === "textured")
|
|
11
|
+
textured += 1;
|
|
12
|
+
else if (row.status === "pending")
|
|
13
|
+
pending += 1;
|
|
14
|
+
else if (row.status === "fallback")
|
|
15
|
+
fallback += 1;
|
|
16
|
+
else
|
|
17
|
+
none += 1;
|
|
18
|
+
}
|
|
19
|
+
return { total: rows.length, textured, pending, fallback, none, byNode };
|
|
20
|
+
}
|
|
21
|
+
/** True when every node whose name matches `test` is textured (or has settled on its scalar fallback), and at least one matches. */
|
|
22
|
+
export function texturedNodesReady(summary, test) {
|
|
23
|
+
const names = Object.keys(summary.byNode).filter(test);
|
|
24
|
+
const waiting = names.filter((name) => summary.byNode[name] !== "textured" && summary.byNode[name] !== "fallback");
|
|
25
|
+
return { ready: names.length > 0 && waiting.length === 0, waiting, matched: names.length };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=textureStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textureStatus.js","sourceRoot":"","sources":["../../../../../packages/game/src/evidence/textureStatus.ts"],"names":[],"mappings":"AAiBA,2KAA2K;AAC3K,MAAM,UAAU,uBAAuB,CAAC,WAAoB;IAC1D,MAAM,IAAI,GAAG,CAAE,WAAsH,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC;IACnL,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,yEAAyE;QACzE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjG,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;YAAE,QAAQ,IAAI,CAAC,CAAC;aACxC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,CAAC;aAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;YAAE,QAAQ,IAAI,CAAC,CAAC;;YAC7C,IAAI,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC;AAED,oIAAoI;AACpI,MAAM,UAAU,kBAAkB,CAAC,OAA8B,EAAE,IAAmC;IACpG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC;IACnH,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAC7F,CAAC"}
|
package/dist/game/index.d.ts
CHANGED
|
@@ -16,7 +16,12 @@ export { createGameImpl, type Prd09Game } from "./createGame.js";
|
|
|
16
16
|
export { GameSessionImpl } from "./session/GameSession.js";
|
|
17
17
|
export { attachSessionLifecycle } from "./session/lifecycle.js";
|
|
18
18
|
export { createAccessibility } from "./session/accessibility.js";
|
|
19
|
+
export { warmPrograms, type WarmableApp, type WarmProgramsOptions, type WarmProgramsResult } from "./session/warmPrograms.js";
|
|
19
20
|
export { installGameBeacon } from "./evidence/beacon.js";
|
|
21
|
+
export { summarizeTextureUpgrade, texturedNodesReady } from "./evidence/textureStatus.js";
|
|
22
|
+
export type { TexturedMaterialRow, TextureUpgradeSummary } from "./evidence/textureStatus.js";
|
|
23
|
+
export { smoothDamp, createSmoothFollow3, lerpAngle, createRenderInterpolator, secondDifferenceRms, jitterReport, createLocomotion, proceduralLegSwing, createFootSlideMeter, createImpactWorld, createHitStop, createCameraShake, createImpactFeedback, attachToBone, resolveBone, boneAliases, boneWorldPosition, attachmentDistance, checkDoubleFrame, detectSharedSkeleton, detectCoincidentModels, detectDoubleBlend, createFixedStepPresenter, createRecordBlend, runMotionGate, clearCameraEye, createCameraClearance } from "./motion/index.js";
|
|
24
|
+
export type { DampResult, SmoothFollow3, RenderInterpolator, JitterReport, LocomotionGait, LocomotionOptions, LocomotionFrame, Locomotion, LegPose, ProceduralGait, FootSlideOptions, FootSlideReport, FootSlideMeter, ImpactBoxCollider, ImpactSphereCollider, ImpactCollider, ImpactBody, Impact, ImpactWorldOptions, ImpactWorld, HitStop, CameraShake, ParticleBurst, ImpactFeedbackOptions, ImpactFeedbackResult, BoneRole, SocketLike, AttachableActor, AttachToBoneOptions, BoneAttachment, DrawEntry, ModelInstance, AnimLayer, DoubleFrameFinding, DoubleFrameReport, AlphaSource, FixedStepPresenterOptions, FixedStepPresenter, RecordBlendOptions, MotionGateOptions, MotionGateReport, CameraVec3, ClearEyeOptions, ClearEye, CameraClearanceOptions, CameraClearance } from "./motion/index.js";
|
|
20
25
|
export { installEvidenceChannel, createPerfRing, type EvidenceChannelContract } from "./evidence/channel.js";
|
|
21
26
|
export type { Prd09CreateGameOptions } from "./createGame.js";
|
|
22
27
|
export type { Game, CreateGameOptions, GameSession, GameSessionState, GameShell, Hud, TouchControls, GameFxLayer, CaptureContext, GameBeacon } from "../engine/index.js";
|
package/dist/game/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/game/src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/game/src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/game/index.js
CHANGED
|
@@ -44,7 +44,10 @@ export { createGameImpl } from "./createGame.js";
|
|
|
44
44
|
export { GameSessionImpl } from "./session/GameSession.js";
|
|
45
45
|
export { attachSessionLifecycle } from "./session/lifecycle.js";
|
|
46
46
|
export { createAccessibility } from "./session/accessibility.js";
|
|
47
|
+
export { warmPrograms } from "./session/warmPrograms.js";
|
|
47
48
|
export { installGameBeacon } from "./evidence/beacon.js";
|
|
49
|
+
export { summarizeTextureUpgrade, texturedNodesReady } from "./evidence/textureStatus.js";
|
|
50
|
+
export { smoothDamp, createSmoothFollow3, lerpAngle, createRenderInterpolator, secondDifferenceRms, jitterReport, createLocomotion, proceduralLegSwing, createFootSlideMeter, createImpactWorld, createHitStop, createCameraShake, createImpactFeedback, attachToBone, resolveBone, boneAliases, boneWorldPosition, attachmentDistance, checkDoubleFrame, detectSharedSkeleton, detectCoincidentModels, detectDoubleBlend, createFixedStepPresenter, createRecordBlend, runMotionGate, clearCameraEye, createCameraClearance } from "./motion/index.js";
|
|
48
51
|
export { installEvidenceChannel, createPerfRing } from "./evidence/channel.js";
|
|
49
52
|
// PRD-09 juice surface (§7.6): tween engine, Juice facade, overlay driver,
|
|
50
53
|
// fx pools (instanced backend A / particle-pass backend B), rumble adapter.
|
package/dist/game/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/game/src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/game/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type BoneRole = "rightHand" | "leftHand" | "head" | "hips" | "spine" | "rightFoot" | "leftFoot" | "rightForearm" | "leftForearm" | "rightLowerArm" | "leftLowerArm" | "rightUpperArm" | "leftUpperArm" | "rightShoulder" | "leftShoulder" | "rightShin" | "leftShin" | "rightThigh" | "leftThigh";
|
|
2
|
+
/** Candidate bone names to probe for a role, ordered from most to least common rig naming. */
|
|
3
|
+
export declare function boneAliases(role: BoneRole): readonly string[];
|
|
4
|
+
/** Resolve a role or exact bone name against a skeleton's bone names; case-, punctuation- and rig-prefix-insensitive. */
|
|
5
|
+
export declare function resolveBone(boneNames: readonly string[], roleOrName: BoneRole | string): string | undefined;
|
|
6
|
+
export interface SocketLike {
|
|
7
|
+
readonly valid: boolean;
|
|
8
|
+
worldMatrix(out?: Float32Array): Float32Array;
|
|
9
|
+
}
|
|
10
|
+
export interface AttachableActor {
|
|
11
|
+
socket(bone: string): SocketLike;
|
|
12
|
+
attach(spec: {
|
|
13
|
+
readonly socket: string;
|
|
14
|
+
readonly target: string | object;
|
|
15
|
+
readonly position?: readonly [number, number, number];
|
|
16
|
+
readonly rotation?: readonly [number, number, number];
|
|
17
|
+
readonly scale?: number;
|
|
18
|
+
}): () => void;
|
|
19
|
+
}
|
|
20
|
+
export interface AttachToBoneOptions {
|
|
21
|
+
/** A role (for example "rightHand") or an exact bone name. */
|
|
22
|
+
readonly bone: BoneRole | string;
|
|
23
|
+
readonly target: string | object;
|
|
24
|
+
/** Skeleton bone names if known; otherwise aliases are probed with `socket(name).valid`. */
|
|
25
|
+
readonly boneNames?: readonly string[];
|
|
26
|
+
/** Offset in bone space. */
|
|
27
|
+
readonly position?: readonly [number, number, number];
|
|
28
|
+
/** XYZ Euler radians in bone space. */
|
|
29
|
+
readonly rotation?: readonly [number, number, number];
|
|
30
|
+
readonly scale?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface BoneAttachment {
|
|
33
|
+
readonly bone: string;
|
|
34
|
+
detach(): void;
|
|
35
|
+
}
|
|
36
|
+
/** Pin a node to a bone (bat to hand, club to hand, ball to hand) with bone-name resolution and a loud failure. */
|
|
37
|
+
export declare function attachToBone(actor: AttachableActor, options: AttachToBoneOptions): BoneAttachment;
|
|
38
|
+
/** World position of a bone (translation of its world matrix). */
|
|
39
|
+
export declare function boneWorldPosition(actor: Pick<AttachableActor, "socket">, bone: string): [number, number, number];
|
|
40
|
+
/** Distance in metres between an attached node and its bone (accounts for no offset: pass the expected offset-free node position). */
|
|
41
|
+
export declare function attachmentDistance(nodePosition: readonly [number, number, number], bonePosition: readonly [number, number, number]): number;
|
|
42
|
+
//# sourceMappingURL=boneAttach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boneAttach.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/motion/boneAttach.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAC/E,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,cAAc,GACjE,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GACnE,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAkF1D,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,MAAM,EAAE,CAiC7D;AAED,yHAAyH;AACzH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAM3G;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE;QACX,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,MAAM,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,4BAA4B;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,mHAAmH;AACnH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,GAAG,cAAc,CA4BjG;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGhH;AAED,sIAAsI;AACtI,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE3I"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
const ROLE_PARTS = {
|
|
2
|
+
rightHand: { side: "right", part: "hand" }, leftHand: { side: "left", part: "hand" },
|
|
3
|
+
rightForearm: { side: "right", part: "forearm" }, leftForearm: { side: "left", part: "forearm" },
|
|
4
|
+
rightLowerArm: { side: "right", part: "forearm" }, leftLowerArm: { side: "left", part: "forearm" },
|
|
5
|
+
rightUpperArm: { side: "right", part: "upperArm" }, leftUpperArm: { side: "left", part: "upperArm" },
|
|
6
|
+
rightShoulder: { side: "right", part: "shoulder" }, leftShoulder: { side: "left", part: "shoulder" },
|
|
7
|
+
rightThigh: { side: "right", part: "thigh" }, leftThigh: { side: "left", part: "thigh" },
|
|
8
|
+
rightShin: { side: "right", part: "shin" }, leftShin: { side: "left", part: "shin" },
|
|
9
|
+
rightFoot: { side: "right", part: "foot" }, leftFoot: { side: "left", part: "foot" },
|
|
10
|
+
hips: { side: "none", part: "hips" }, spine: { side: "none", part: "spine" }, head: { side: "none", part: "head" }
|
|
11
|
+
};
|
|
12
|
+
/** Normalised synonyms per part (lowercase, no punctuation). Mixamo, Meshy, Rigify, Unreal, glTF Avatar (VRM, Ready Player Me), 3ds Max Biped. */
|
|
13
|
+
const PART_WORDS = {
|
|
14
|
+
hand: ["hand"],
|
|
15
|
+
forearm: ["forearm", "lowerarm", "lowarm"],
|
|
16
|
+
upperArm: ["upperarm", "uparm", "arm"],
|
|
17
|
+
shoulder: ["shoulder", "clavicle"],
|
|
18
|
+
thigh: ["upleg", "upperleg", "thigh"],
|
|
19
|
+
shin: ["leg", "lowerleg", "lowleg", "shin", "calf"],
|
|
20
|
+
foot: ["foot"],
|
|
21
|
+
hips: ["hips", "pelvis", "hip"],
|
|
22
|
+
spine: ["spine", "spine1", "chest"],
|
|
23
|
+
head: ["head"]
|
|
24
|
+
};
|
|
25
|
+
const RIG_PREFIXES = ["mixamorig", "bip001", "bip01", "def", "org", "tweak", "ctrl"];
|
|
26
|
+
/** Written forms tried when probing without a bone list, most common rigs first. */
|
|
27
|
+
const PART_WRITTEN = {
|
|
28
|
+
hand: ["Hand", "hand"],
|
|
29
|
+
forearm: ["ForeArm", "Forearm", "forearm", "LowerArm", "lowerarm"],
|
|
30
|
+
upperArm: ["Arm", "UpperArm", "upperarm", "arm"],
|
|
31
|
+
shoulder: ["Shoulder", "shoulder", "clavicle"],
|
|
32
|
+
thigh: ["UpLeg", "UpperLeg", "Thigh", "upperleg", "thigh"],
|
|
33
|
+
shin: ["Leg", "LowerLeg", "calf", "shin", "leg"],
|
|
34
|
+
foot: ["Foot", "foot"],
|
|
35
|
+
hips: ["Hips", "hips", "Pelvis", "pelvis"],
|
|
36
|
+
spine: ["Spine", "spine", "Spine1", "Chest"],
|
|
37
|
+
head: ["Head", "head"]
|
|
38
|
+
};
|
|
39
|
+
const normalize = (name) => {
|
|
40
|
+
const colon = name.lastIndexOf(":");
|
|
41
|
+
let base = (colon >= 0 ? name.slice(colon + 1) : name).toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
42
|
+
for (const prefix of RIG_PREFIXES) {
|
|
43
|
+
if (base.startsWith(prefix) && base.length > prefix.length) {
|
|
44
|
+
base = base.slice(prefix.length);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return base;
|
|
49
|
+
};
|
|
50
|
+
const sideForms = (side) => side === "none"
|
|
51
|
+
? { prefix: [""], suffix: [] }
|
|
52
|
+
: side === "right"
|
|
53
|
+
? { prefix: ["Right", "right_", "R_", "right", "R"], suffix: [".R", "_R", "_r", ".r", "Right", "_right"] }
|
|
54
|
+
: { prefix: ["Left", "left_", "L_", "left", "L"], suffix: [".L", "_L", "_l", ".l", "Left", "_left"] };
|
|
55
|
+
/** Normalised strings that name a role: side+part and part+side forms of every synonym. */
|
|
56
|
+
function roleNormals(role) {
|
|
57
|
+
const { side, part } = ROLE_PARTS[role];
|
|
58
|
+
const out = new Set();
|
|
59
|
+
const sideWords = side === "none" ? [""] : side === "right" ? ["right", "r"] : ["left", "l"];
|
|
60
|
+
for (const word of PART_WORDS[part]) {
|
|
61
|
+
if (side === "none")
|
|
62
|
+
out.add(word);
|
|
63
|
+
for (const sw of sideWords) {
|
|
64
|
+
if (side === "none")
|
|
65
|
+
continue;
|
|
66
|
+
out.add(sw + word);
|
|
67
|
+
out.add(word + sw);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
/** Candidate bone names to probe for a role, ordered from most to least common rig naming. */
|
|
73
|
+
export function boneAliases(role) {
|
|
74
|
+
const { side, part } = ROLE_PARTS[role];
|
|
75
|
+
const forms = sideForms(side);
|
|
76
|
+
const out = [];
|
|
77
|
+
const add = (n) => {
|
|
78
|
+
if (!out.includes(n))
|
|
79
|
+
out.push(n);
|
|
80
|
+
};
|
|
81
|
+
for (const w of PART_WRITTEN[part]) {
|
|
82
|
+
for (const pre of forms.prefix)
|
|
83
|
+
add(`mixamorig:${pre}${w}`);
|
|
84
|
+
for (const pre of forms.prefix)
|
|
85
|
+
add(`${pre}${w}`);
|
|
86
|
+
}
|
|
87
|
+
for (const w of PART_WRITTEN[part]) {
|
|
88
|
+
for (const suf of forms.suffix) {
|
|
89
|
+
add(`${w}${suf}`);
|
|
90
|
+
add(`${w.toLowerCase()}${suf}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (side !== "none") {
|
|
94
|
+
const letter = side === "right" ? "R" : "L";
|
|
95
|
+
for (const w of PART_WRITTEN[part])
|
|
96
|
+
add(`Bip01 ${letter} ${w}`);
|
|
97
|
+
for (const w of PART_WRITTEN[part])
|
|
98
|
+
for (const suf of forms.suffix)
|
|
99
|
+
add(`DEF-${w.toLowerCase()}${suf}`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
for (const w of PART_WRITTEN[part]) {
|
|
103
|
+
add(`mixamorig:${w}`);
|
|
104
|
+
add(`Bip01 ${w}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Exotic casing last, so common rigs hit within the first probes.
|
|
108
|
+
for (const n of [...out]) {
|
|
109
|
+
add(n.toLowerCase());
|
|
110
|
+
add(n.toUpperCase());
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
/** Resolve a role or exact bone name against a skeleton's bone names; case-, punctuation- and rig-prefix-insensitive. */
|
|
115
|
+
export function resolveBone(boneNames, roleOrName) {
|
|
116
|
+
const exact = boneNames.find((b) => b === roleOrName);
|
|
117
|
+
if (exact !== undefined)
|
|
118
|
+
return exact;
|
|
119
|
+
const wanted = new Set([normalize(roleOrName)]);
|
|
120
|
+
if (roleOrName in ROLE_PARTS)
|
|
121
|
+
for (const n of roleNormals(roleOrName))
|
|
122
|
+
wanted.add(n);
|
|
123
|
+
return boneNames.find((b) => wanted.has(normalize(b)));
|
|
124
|
+
}
|
|
125
|
+
/** Pin a node to a bone (bat to hand, club to hand, ball to hand) with bone-name resolution and a loud failure. */
|
|
126
|
+
export function attachToBone(actor, options) {
|
|
127
|
+
let bone;
|
|
128
|
+
let tried = [];
|
|
129
|
+
if (options.boneNames !== undefined) {
|
|
130
|
+
bone = resolveBone(options.boneNames, options.bone);
|
|
131
|
+
tried = [String(options.bone), ...(options.bone in ROLE_PARTS ? [...roleNormals(options.bone)] : [])];
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
const candidates = [options.bone, ...(options.bone in ROLE_PARTS ? boneAliases(options.bone) : [])];
|
|
135
|
+
tried = candidates;
|
|
136
|
+
bone = candidates.find((c) => actor.socket(c).valid);
|
|
137
|
+
}
|
|
138
|
+
if (bone === undefined) {
|
|
139
|
+
const key = normalize(String(options.bone)).slice(0, 4);
|
|
140
|
+
const near = options.boneNames?.filter((b) => normalize(b).includes(key)).slice(0, 8) ?? [];
|
|
141
|
+
const shown = tried.slice(0, 24).join(", ") + (tried.length > 24 ? `, +${tried.length - 24} more` : "");
|
|
142
|
+
throw new Error(`ATTACH_BONE_NOT_FOUND: no bone matches "${String(options.bone)}". Tried: ${shown}.${near.length ? ` Similar bones: ${near.join(", ")}.` : ""} Pass boneNames from the skeleton or an exact bone name.`);
|
|
143
|
+
}
|
|
144
|
+
const spec = {
|
|
145
|
+
socket: bone,
|
|
146
|
+
target: options.target
|
|
147
|
+
};
|
|
148
|
+
if (options.position !== undefined)
|
|
149
|
+
spec.position = options.position;
|
|
150
|
+
if (options.rotation !== undefined)
|
|
151
|
+
spec.rotation = options.rotation;
|
|
152
|
+
if (options.scale !== undefined)
|
|
153
|
+
spec.scale = options.scale;
|
|
154
|
+
const detach = actor.attach(spec);
|
|
155
|
+
return { bone, detach };
|
|
156
|
+
}
|
|
157
|
+
/** World position of a bone (translation of its world matrix). */
|
|
158
|
+
export function boneWorldPosition(actor, bone) {
|
|
159
|
+
const m = actor.socket(bone).worldMatrix();
|
|
160
|
+
return [m[12], m[13], m[14]];
|
|
161
|
+
}
|
|
162
|
+
/** Distance in metres between an attached node and its bone (accounts for no offset: pass the expected offset-free node position). */
|
|
163
|
+
export function attachmentDistance(nodePosition, bonePosition) {
|
|
164
|
+
return Math.hypot(nodePosition[0] - bonePosition[0], nodePosition[1] - bonePosition[1], nodePosition[2] - bonePosition[2]);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=boneAttach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boneAttach.js","sourceRoot":"","sources":["../../../../../packages/game/src/motion/boneAttach.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type CameraVec3 = readonly [number, number, number];
|
|
2
|
+
export interface ClearEyeOptions {
|
|
3
|
+
/** What the camera looks at (the rider, ball or car), already above the ground. */
|
|
4
|
+
readonly focus: CameraVec3;
|
|
5
|
+
/** Where the chase rig wants the eye. */
|
|
6
|
+
readonly eye: CameraVec3;
|
|
7
|
+
/** True when a point is inside solid space (a collider with margin, or below the floor). */
|
|
8
|
+
readonly blocked: (x: number, y: number, z: number) => boolean;
|
|
9
|
+
/** Never pull closer than this to the focus unless the focus itself is blocked. Default 2. */
|
|
10
|
+
readonly minDistance?: number;
|
|
11
|
+
/** Samples along the focus-to-eye segment. Default 24. */
|
|
12
|
+
readonly samples?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ClearEye {
|
|
15
|
+
readonly eye: [number, number, number];
|
|
16
|
+
/** 1 when the wanted eye is clear, lower when the eye was pulled toward the focus. */
|
|
17
|
+
readonly t: number;
|
|
18
|
+
}
|
|
19
|
+
/** Pulls the camera eye along the focus-to-eye segment to just before the first solid sample, so a chase camera never sits inside scenery. */
|
|
20
|
+
export declare function clearCameraEye(options: ClearEyeOptions): ClearEye;
|
|
21
|
+
export interface CameraClearanceOptions {
|
|
22
|
+
/** Exponential rate (1/s) at which the eye moves in when something blocks it. Default 18. */
|
|
23
|
+
readonly pullRate?: number;
|
|
24
|
+
/** Exponential rate (1/s) at which it moves back out once clear. Default 2. */
|
|
25
|
+
readonly releaseRate?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface CameraClearance {
|
|
28
|
+
/** Smoothed clearance factor in (0, 1]: 1 means the full chase distance. */
|
|
29
|
+
readonly factor: number;
|
|
30
|
+
update(dt: number, options: ClearEyeOptions): [number, number, number];
|
|
31
|
+
reset(): void;
|
|
32
|
+
}
|
|
33
|
+
/** Stateful wrapper: snaps in fast when blocked and eases back out, so the camera does not pop at a doorway. */
|
|
34
|
+
export declare function createCameraClearance(options?: CameraClearanceOptions): CameraClearance;
|
|
35
|
+
//# sourceMappingURL=cameraClear.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraClear.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/motion/cameraClear.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/D,8FAA8F;IAC9F,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sFAAsF;IACtF,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8IAA8I;AAC9I,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAyBjE;AAED,MAAM,WAAW,sBAAsB;IACrC,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,gHAAgH;AAChH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAyB3F"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** Pulls the camera eye along the focus-to-eye segment to just before the first solid sample, so a chase camera never sits inside scenery. */
|
|
2
|
+
export function clearCameraEye(options) {
|
|
3
|
+
const { focus, eye, blocked } = options;
|
|
4
|
+
const samples = Math.max(2, Math.trunc(options.samples ?? 24));
|
|
5
|
+
const dx = eye[0] - focus[0], dy = eye[1] - focus[1], dz = eye[2] - focus[2];
|
|
6
|
+
const length = Math.hypot(dx, dy, dz);
|
|
7
|
+
const point = (t) => [focus[0] + dx * t, focus[1] + dy * t, focus[2] + dz * t];
|
|
8
|
+
if (length < 1e-6)
|
|
9
|
+
return { eye: point(1), t: 1 };
|
|
10
|
+
const tMin = Math.min(1, (options.minDistance ?? 2) / length);
|
|
11
|
+
let clear = 0;
|
|
12
|
+
let hit = -1;
|
|
13
|
+
for (let i = 1; i <= samples; i += 1) {
|
|
14
|
+
const t = i / samples;
|
|
15
|
+
const p = point(t);
|
|
16
|
+
if (blocked(p[0], p[1], p[2])) {
|
|
17
|
+
hit = t;
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
clear = t;
|
|
21
|
+
}
|
|
22
|
+
if (hit < 0)
|
|
23
|
+
return { eye: point(1), t: 1 };
|
|
24
|
+
let lo = clear, hi = hit;
|
|
25
|
+
for (let i = 0; i < 6; i += 1) {
|
|
26
|
+
const mid = (lo + hi) / 2;
|
|
27
|
+
const p = point(mid);
|
|
28
|
+
if (blocked(p[0], p[1], p[2]))
|
|
29
|
+
hi = mid;
|
|
30
|
+
else
|
|
31
|
+
lo = mid;
|
|
32
|
+
}
|
|
33
|
+
const t = Math.max(Math.min(lo, 1), Math.min(tMin, 1));
|
|
34
|
+
return { eye: point(t), t };
|
|
35
|
+
}
|
|
36
|
+
/** Stateful wrapper: snaps in fast when blocked and eases back out, so the camera does not pop at a doorway. */
|
|
37
|
+
export function createCameraClearance(options = {}) {
|
|
38
|
+
const pullRate = options.pullRate ?? 18;
|
|
39
|
+
const releaseRate = options.releaseRate ?? 2;
|
|
40
|
+
let factor = 1;
|
|
41
|
+
return {
|
|
42
|
+
get factor() { return factor; },
|
|
43
|
+
update(dt, eyeOptions) {
|
|
44
|
+
const { t } = clearCameraEye(eyeOptions);
|
|
45
|
+
const rate = t < factor ? pullRate : releaseRate;
|
|
46
|
+
const k = dt > 0 ? 1 - Math.exp(-dt * rate) : 1;
|
|
47
|
+
factor += (t - factor) * k;
|
|
48
|
+
if (t >= 1 && factor > 0.9995)
|
|
49
|
+
factor = 1;
|
|
50
|
+
const f = eyeOptions.focus, e = eyeOptions.eye;
|
|
51
|
+
const wanted = Math.min(factor, 1);
|
|
52
|
+
const out = [f[0] + (e[0] - f[0]) * wanted, f[1] + (e[1] - f[1]) * wanted, f[2] + (e[2] - f[2]) * wanted];
|
|
53
|
+
// The smoothed eye can lag behind a hard wall on the pull-in frame: never return a blocked point when a clear one exists.
|
|
54
|
+
if (eyeOptions.blocked(out[0], out[1], out[2])) {
|
|
55
|
+
const clear = clearCameraEye(eyeOptions);
|
|
56
|
+
factor = Math.min(factor, clear.t);
|
|
57
|
+
return clear.eye;
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
},
|
|
61
|
+
reset() { factor = 1; }
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=cameraClear.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraClear.js","sourceRoot":"","sources":["../../../../../packages/game/src/motion/cameraClear.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface DrawEntry {
|
|
2
|
+
readonly meshId: string;
|
|
3
|
+
readonly skeletonId?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface DoubleFrameFinding {
|
|
6
|
+
readonly kind: "shared-skeleton" | "coincident-model" | "double-blend";
|
|
7
|
+
readonly detail: string;
|
|
8
|
+
readonly ids: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
export interface DoubleFrameReport {
|
|
11
|
+
readonly ok: boolean;
|
|
12
|
+
readonly findings: readonly DoubleFrameFinding[];
|
|
13
|
+
}
|
|
14
|
+
/** Two skinned meshes bound to one skeleton in the same frame draw the pose twice. */
|
|
15
|
+
export declare function detectSharedSkeleton(draws: readonly DrawEntry[]): DoubleFrameFinding[];
|
|
16
|
+
export interface ModelInstance {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly modelId: string;
|
|
19
|
+
readonly position: readonly [number, number, number];
|
|
20
|
+
}
|
|
21
|
+
/** Two instances of the same model at nearly the same place read as a ghost or doubled player. */
|
|
22
|
+
export declare function detectCoincidentModels(instances: readonly ModelInstance[], epsilon?: number): DoubleFrameFinding[];
|
|
23
|
+
export interface AnimLayer {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly clip: string;
|
|
26
|
+
readonly weight: number;
|
|
27
|
+
readonly blendMode?: "override" | "additive";
|
|
28
|
+
}
|
|
29
|
+
/** Override layers summing past 1, or one clip applied on two layers, give the doubled look. */
|
|
30
|
+
export declare function detectDoubleBlend(layers: readonly AnimLayer[]): DoubleFrameFinding[];
|
|
31
|
+
export declare function checkDoubleFrame(input: {
|
|
32
|
+
readonly draws?: readonly DrawEntry[];
|
|
33
|
+
readonly instances?: readonly ModelInstance[];
|
|
34
|
+
readonly layers?: readonly AnimLayer[];
|
|
35
|
+
readonly epsilon?: number;
|
|
36
|
+
}): DoubleFrameReport;
|
|
37
|
+
//# sourceMappingURL=doubleFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubleFrame.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/motion/doubleFrame.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,CAAC;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAatF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACtD;AAED,kGAAkG;AAClG,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,EAAE,OAAO,SAAO,GAAG,kBAAkB,EAAE,CAYhH;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAC9C;AAED,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAWpF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAOtN"}
|