@aura3d/engine 4.1.3 → 4.3.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 (281) hide show
  1. package/README.md +3 -3
  2. package/dist/aura3d-cli/cli-help.d.ts.map +1 -1
  3. package/dist/aura3d-cli/cli-help.js +4 -2
  4. package/dist/aura3d-cli/cli-help.js.map +1 -1
  5. package/dist/aura3d-cli/cli.d.ts.map +1 -1
  6. package/dist/aura3d-cli/cli.js +129 -19
  7. package/dist/aura3d-cli/cli.js.map +1 -1
  8. package/dist/aura3d-cli/commands/assets/index.js +2 -2
  9. package/dist/aura3d-cli/commands/assets/index.js.map +1 -1
  10. package/dist/aura3d-cli/commands/meshyLedger.d.ts +125 -14
  11. package/dist/aura3d-cli/commands/meshyLedger.d.ts.map +1 -1
  12. package/dist/aura3d-cli/commands/meshyLedger.js +262 -35
  13. package/dist/aura3d-cli/commands/meshyLedger.js.map +1 -1
  14. package/dist/aura3d-cli/commands/prd13/run.js +19 -16
  15. package/dist/aura3d-cli/commands/prd13/run.js.map +1 -1
  16. package/dist/aura3d-cli/index.d.ts +8 -0
  17. package/dist/aura3d-cli/index.d.ts.map +1 -1
  18. package/dist/aura3d-cli/index.js +12 -0
  19. package/dist/aura3d-cli/index.js.map +1 -1
  20. package/dist/aura3d-cli/pull-bridge/adapters.d.ts +9 -1
  21. package/dist/aura3d-cli/pull-bridge/adapters.d.ts.map +1 -1
  22. package/dist/aura3d-cli/pull-bridge/adapters.js +30 -7
  23. package/dist/aura3d-cli/pull-bridge/adapters.js.map +1 -1
  24. package/dist/aura3d-cli/pull-bridge/search.d.ts +5 -0
  25. package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -1
  26. package/dist/aura3d-cli/pull-bridge/search.js +7 -1
  27. package/dist/aura3d-cli/pull-bridge/search.js.map +1 -1
  28. package/dist/aura3d-cli/pull-bridge.js +1 -1
  29. package/dist/aura3d-cli/pull-bridge.js.map +1 -1
  30. package/dist/aura3d-cli/resolve-ladder.d.ts +123 -0
  31. package/dist/aura3d-cli/resolve-ladder.d.ts.map +1 -0
  32. package/dist/aura3d-cli/resolve-ladder.js +410 -0
  33. package/dist/aura3d-cli/resolve-ladder.js.map +1 -0
  34. package/dist/aura3d-cli/skin/analysis.d.ts +137 -0
  35. package/dist/aura3d-cli/skin/analysis.d.ts.map +1 -0
  36. package/dist/aura3d-cli/skin/analysis.js +382 -0
  37. package/dist/aura3d-cli/skin/analysis.js.map +1 -0
  38. package/dist/aura3d-cli/skin/command.d.ts +71 -0
  39. package/dist/aura3d-cli/skin/command.d.ts.map +1 -0
  40. package/dist/aura3d-cli/skin/command.js +186 -0
  41. package/dist/aura3d-cli/skin/command.js.map +1 -0
  42. package/dist/aura3d-cli/skin/glbEdit.d.ts +14 -0
  43. package/dist/aura3d-cli/skin/glbEdit.d.ts.map +1 -0
  44. package/dist/aura3d-cli/skin/glbEdit.js +152 -0
  45. package/dist/aura3d-cli/skin/glbEdit.js.map +1 -0
  46. package/dist/aura3d-cli/skin/gltf.d.ts +159 -0
  47. package/dist/aura3d-cli/skin/gltf.d.ts.map +1 -0
  48. package/dist/aura3d-cli/skin/gltf.js +379 -0
  49. package/dist/aura3d-cli/skin/gltf.js.map +1 -0
  50. package/dist/aura3d-cli/skin/rebuildLimbs.d.ts +31 -0
  51. package/dist/aura3d-cli/skin/rebuildLimbs.d.ts.map +1 -0
  52. package/dist/aura3d-cli/skin/rebuildLimbs.js +326 -0
  53. package/dist/aura3d-cli/skin/rebuildLimbs.js.map +1 -0
  54. package/dist/aura3d-cli/skin/repair.d.ts +41 -0
  55. package/dist/aura3d-cli/skin/repair.d.ts.map +1 -0
  56. package/dist/aura3d-cli/skin/repair.js +180 -0
  57. package/dist/aura3d-cli/skin/repair.js.map +1 -0
  58. package/dist/create-aura3d/index.js +1 -1
  59. package/dist/debug/index.d.ts +2 -2
  60. package/dist/debug/index.d.ts.map +1 -1
  61. package/dist/debug/index.js +1 -1
  62. package/dist/debug/index.js.map +1 -1
  63. package/dist/debug/safety/frameBoundary.d.ts +33 -0
  64. package/dist/debug/safety/frameBoundary.d.ts.map +1 -0
  65. package/dist/debug/safety/frameBoundary.js +40 -0
  66. package/dist/debug/safety/frameBoundary.js.map +1 -0
  67. package/dist/debug/safety/index.d.ts +1 -0
  68. package/dist/debug/safety/index.d.ts.map +1 -1
  69. package/dist/debug/safety/index.js +1 -0
  70. package/dist/debug/safety/index.js.map +1 -1
  71. package/dist/engine/agent-api/app/actorBoneMatrixLookup.d.ts +22 -0
  72. package/dist/engine/agent-api/app/actorBoneMatrixLookup.d.ts.map +1 -0
  73. package/dist/engine/agent-api/app/actorBoneMatrixLookup.js +24 -0
  74. package/dist/engine/agent-api/app/actorBoneMatrixLookup.js.map +1 -0
  75. package/dist/engine/agent-api/app/canvas.d.ts +16 -0
  76. package/dist/engine/agent-api/app/canvas.d.ts.map +1 -1
  77. package/dist/engine/agent-api/app/canvas.js +15 -0
  78. package/dist/engine/agent-api/app/canvas.js.map +1 -1
  79. package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
  80. package/dist/engine/agent-api/app/createAuraApp.js +21 -3
  81. package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
  82. package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
  83. package/dist/engine/agent-api/app/frameLoop.js +21 -3
  84. package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
  85. package/dist/engine/agent-api/app/mountFailure.d.ts +6 -0
  86. package/dist/engine/agent-api/app/mountFailure.d.ts.map +1 -0
  87. package/dist/engine/agent-api/app/mountFailure.js +9 -0
  88. package/dist/engine/agent-api/app/mountFailure.js.map +1 -0
  89. package/dist/engine/agent-api/app/parentFit.d.ts +35 -0
  90. package/dist/engine/agent-api/app/parentFit.d.ts.map +1 -0
  91. package/dist/engine/agent-api/app/parentFit.js +36 -0
  92. package/dist/engine/agent-api/app/parentFit.js.map +1 -0
  93. package/dist/engine/agent-api/compiler/customMaterial.d.ts.map +1 -1
  94. package/dist/engine/agent-api/compiler/customMaterial.js +15 -3
  95. package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -1
  96. package/dist/engine/agent-api/nodes/batched.d.ts +10 -0
  97. package/dist/engine/agent-api/nodes/batched.d.ts.map +1 -1
  98. package/dist/engine/agent-api/nodes/batched.js +7 -5
  99. package/dist/engine/agent-api/nodes/batched.js.map +1 -1
  100. package/dist/engine/agent-api/nodes/builder.d.ts +13 -0
  101. package/dist/engine/agent-api/nodes/builder.d.ts.map +1 -1
  102. package/dist/engine/agent-api/nodes/builder.js +7 -3
  103. package/dist/engine/agent-api/nodes/builder.js.map +1 -1
  104. package/dist/engine/agent-api/nodes/instancedMesh.d.ts +10 -0
  105. package/dist/engine/agent-api/nodes/instancedMesh.d.ts.map +1 -1
  106. package/dist/engine/agent-api/nodes/instancedMesh.js +7 -5
  107. package/dist/engine/agent-api/nodes/instancedMesh.js.map +1 -1
  108. package/dist/engine/agent-api/nodes/types.d.ts +6 -0
  109. package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
  110. package/dist/engine/lanes/prd06.d.ts.map +1 -1
  111. package/dist/engine/lanes/prd06.js +1 -16
  112. package/dist/engine/lanes/prd06.js.map +1 -1
  113. package/dist/engine/qa/fixedStepLoop.d.ts +2 -0
  114. package/dist/engine/qa/fixedStepLoop.d.ts.map +1 -1
  115. package/dist/engine/qa/fixedStepLoop.js +3 -0
  116. package/dist/engine/qa/fixedStepLoop.js.map +1 -1
  117. package/dist/game/evidence/textureStatus.d.ts +24 -0
  118. package/dist/game/evidence/textureStatus.d.ts.map +1 -0
  119. package/dist/game/evidence/textureStatus.js +27 -0
  120. package/dist/game/evidence/textureStatus.js.map +1 -0
  121. package/dist/game/index.d.ts +5 -0
  122. package/dist/game/index.d.ts.map +1 -1
  123. package/dist/game/index.js +3 -0
  124. package/dist/game/index.js.map +1 -1
  125. package/dist/game/motion/boneAttach.d.ts +42 -0
  126. package/dist/game/motion/boneAttach.d.ts.map +1 -0
  127. package/dist/game/motion/boneAttach.js +166 -0
  128. package/dist/game/motion/boneAttach.js.map +1 -0
  129. package/dist/game/motion/cameraClear.d.ts +35 -0
  130. package/dist/game/motion/cameraClear.d.ts.map +1 -0
  131. package/dist/game/motion/cameraClear.js +64 -0
  132. package/dist/game/motion/cameraClear.js.map +1 -0
  133. package/dist/game/motion/doubleFrame.d.ts +37 -0
  134. package/dist/game/motion/doubleFrame.d.ts.map +1 -0
  135. package/dist/game/motion/doubleFrame.js +59 -0
  136. package/dist/game/motion/doubleFrame.js.map +1 -0
  137. package/dist/game/motion/footSlide.d.ts +32 -0
  138. package/dist/game/motion/footSlide.d.ts.map +1 -0
  139. package/dist/game/motion/footSlide.js +59 -0
  140. package/dist/game/motion/footSlide.js.map +1 -0
  141. package/dist/game/motion/handBounce.d.ts +206 -0
  142. package/dist/game/motion/handBounce.d.ts.map +1 -0
  143. package/dist/game/motion/handBounce.js +267 -0
  144. package/dist/game/motion/handBounce.js.map +1 -0
  145. package/dist/game/motion/impact.d.ts +113 -0
  146. package/dist/game/motion/impact.d.ts.map +1 -0
  147. package/dist/game/motion/impact.js +233 -0
  148. package/dist/game/motion/impact.js.map +1 -0
  149. package/dist/game/motion/index.d.ts +21 -0
  150. package/dist/game/motion/index.d.ts.map +1 -0
  151. package/dist/game/motion/index.js +11 -0
  152. package/dist/game/motion/index.js.map +1 -0
  153. package/dist/game/motion/locomotion.d.ts +55 -0
  154. package/dist/game/motion/locomotion.d.ts.map +1 -0
  155. package/dist/game/motion/locomotion.js +107 -0
  156. package/dist/game/motion/locomotion.js.map +1 -0
  157. package/dist/game/motion/motionGate.d.ts +41 -0
  158. package/dist/game/motion/motionGate.d.ts.map +1 -0
  159. package/dist/game/motion/motionGate.js +71 -0
  160. package/dist/game/motion/motionGate.js.map +1 -0
  161. package/dist/game/motion/presenter.d.ts +37 -0
  162. package/dist/game/motion/presenter.d.ts.map +1 -0
  163. package/dist/game/motion/presenter.js +72 -0
  164. package/dist/game/motion/presenter.js.map +1 -0
  165. package/dist/game/motion/smoothing.d.ts +34 -0
  166. package/dist/game/motion/smoothing.d.ts.map +1 -0
  167. package/dist/game/motion/smoothing.js +92 -0
  168. package/dist/game/motion/smoothing.js.map +1 -0
  169. package/dist/game/session/warmPrograms.d.ts +75 -0
  170. package/dist/game/session/warmPrograms.d.ts.map +1 -0
  171. package/dist/game/session/warmPrograms.js +80 -0
  172. package/dist/game/session/warmPrograms.js.map +1 -0
  173. package/dist/physics/ensure.d.ts +2 -0
  174. package/dist/physics/ensure.d.ts.map +1 -0
  175. package/dist/physics/ensure.js +4 -0
  176. package/dist/physics/ensure.js.map +1 -0
  177. package/dist/physics/index.d.ts +1 -0
  178. package/dist/physics/index.d.ts.map +1 -1
  179. package/dist/physics/index.js +1 -0
  180. package/dist/physics/index.js.map +1 -1
  181. package/dist/physics/world.d.ts +1 -0
  182. package/dist/physics/world.d.ts.map +1 -1
  183. package/dist/physics/world.js +1 -0
  184. package/dist/physics/world.js.map +1 -1
  185. package/dist/physics-rapier/index.d.ts +2 -0
  186. package/dist/physics-rapier/index.d.ts.map +1 -1
  187. package/dist/physics-rapier/index.js +12 -10
  188. package/dist/physics-rapier/index.js.map +1 -1
  189. package/dist/physics-rapier/rapierInit.d.ts +6 -0
  190. package/dist/physics-rapier/rapierInit.d.ts.map +1 -0
  191. package/dist/physics-rapier/rapierInit.js +12 -0
  192. package/dist/physics-rapier/rapierInit.js.map +1 -0
  193. package/dist/physics-rapier/rapierInit.lazy.d.ts +6 -0
  194. package/dist/physics-rapier/rapierInit.lazy.d.ts.map +1 -0
  195. package/dist/physics-rapier/rapierInit.lazy.js +19 -0
  196. package/dist/physics-rapier/rapierInit.lazy.js.map +1 -0
  197. package/dist/rendering/DepthPass.d.ts.map +1 -1
  198. package/dist/rendering/DepthPass.js +30 -8
  199. package/dist/rendering/DepthPass.js.map +1 -1
  200. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  201. package/dist/rendering/ForwardPass.js +7 -0
  202. package/dist/rendering/ForwardPass.js.map +1 -1
  203. package/dist/rendering/Renderer.d.ts +0 -2
  204. package/dist/rendering/Renderer.d.ts.map +1 -1
  205. package/dist/rendering/Renderer.js +6 -16
  206. package/dist/rendering/Renderer.js.map +1 -1
  207. package/dist/rendering/contracts/output.d.ts +9 -1
  208. package/dist/rendering/contracts/output.d.ts.map +1 -1
  209. package/dist/rendering/contracts/output.js.map +1 -1
  210. package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
  211. package/dist/rendering/environment/EnvironmentCache.js +6 -1
  212. package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
  213. package/dist/rendering/environment/neutralEmbedded.d.ts +5 -0
  214. package/dist/rendering/environment/neutralEmbedded.d.ts.map +1 -0
  215. package/dist/rendering/environment/neutralEmbedded.js +1118 -0
  216. package/dist/rendering/environment/neutralEmbedded.js.map +1 -0
  217. package/dist/rendering/environment/neutralEmbeddedLoader.d.ts +5 -0
  218. package/dist/rendering/environment/neutralEmbeddedLoader.d.ts.map +1 -0
  219. package/dist/rendering/environment/neutralEmbeddedLoader.js +32 -0
  220. package/dist/rendering/environment/neutralEmbeddedLoader.js.map +1 -0
  221. package/dist/rendering/output/OutputPass.d.ts +2 -0
  222. package/dist/rendering/output/OutputPass.d.ts.map +1 -1
  223. package/dist/rendering/output/OutputPass.js +26 -3
  224. package/dist/rendering/output/OutputPass.js.map +1 -1
  225. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts +3 -1
  226. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts.map +1 -1
  227. package/dist/rendering/output/ToneMappingOperators.glsl.js +19 -1
  228. package/dist/rendering/output/ToneMappingOperators.glsl.js.map +1 -1
  229. package/dist/rendering/post/v2Stages.d.ts +2 -7
  230. package/dist/rendering/post/v2Stages.d.ts.map +1 -1
  231. package/dist/rendering/post/v2Stages.js +2 -17
  232. package/dist/rendering/post/v2Stages.js.map +1 -1
  233. package/dist/rendering/post/vignetteColor.d.ts +8 -0
  234. package/dist/rendering/post/vignetteColor.d.ts.map +1 -0
  235. package/dist/rendering/post/vignetteColor.js +18 -0
  236. package/dist/rendering/post/vignetteColor.js.map +1 -0
  237. package/dist/rendering/renderer/PostprocessExecution.d.ts +10 -0
  238. package/dist/rendering/renderer/PostprocessExecution.d.ts.map +1 -1
  239. package/dist/rendering/renderer/PostprocessExecution.js +38 -38
  240. package/dist/rendering/renderer/PostprocessExecution.js.map +1 -1
  241. package/dist/rendering/renderer/coreOutputPostRoute.d.ts +25 -17
  242. package/dist/rendering/renderer/coreOutputPostRoute.d.ts.map +1 -1
  243. package/dist/rendering/renderer/coreOutputPostRoute.js +27 -18
  244. package/dist/rendering/renderer/coreOutputPostRoute.js.map +1 -1
  245. package/dist/rendering/renderer/qrSubFlags.d.ts +1 -1
  246. package/dist/rendering/renderer/qrSubFlags.d.ts.map +1 -1
  247. package/dist/rendering/renderer/qrSubFlags.js +2 -8
  248. package/dist/rendering/renderer/qrSubFlags.js.map +1 -1
  249. package/dist/rendering/shaders/chunks/author/index.d.ts.map +1 -1
  250. package/dist/rendering/shaders/chunks/author/index.js +7 -0
  251. package/dist/rendering/shaders/chunks/author/index.js.map +1 -1
  252. package/dist/rendering/shaders/chunks/author/shadow.glsl.d.ts +11 -0
  253. package/dist/rendering/shaders/chunks/author/shadow.glsl.d.ts.map +1 -0
  254. package/dist/rendering/shaders/chunks/author/shadow.glsl.js +57 -0
  255. package/dist/rendering/shaders/chunks/author/shadow.glsl.js.map +1 -0
  256. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts +20 -0
  257. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts.map +1 -1
  258. package/dist/rendering/shadows/DirectionalCascadeFitter.js +80 -7
  259. package/dist/rendering/shadows/DirectionalCascadeFitter.js.map +1 -1
  260. package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
  261. package/dist/rendering/shadows/Prd02DepthShaderLibrary.js +9 -1
  262. package/dist/rendering/shadows/Prd02DepthShaderLibrary.js.map +1 -1
  263. package/dist/rendering/shadows/ShadowSystem.d.ts.map +1 -1
  264. package/dist/rendering/shadows/ShadowSystem.js +7 -2
  265. package/dist/rendering/shadows/ShadowSystem.js.map +1 -1
  266. package/dist/rendering/webgl2/LdrPostprocessShader.d.ts +2 -0
  267. package/dist/rendering/webgl2/LdrPostprocessShader.d.ts.map +1 -1
  268. package/dist/rendering/webgl2/LdrPostprocessShader.js +25 -3
  269. package/dist/rendering/webgl2/LdrPostprocessShader.js.map +1 -1
  270. package/dist/rendering/webgl2/LegacyPost.d.ts +11 -2
  271. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  272. package/dist/rendering/webgl2/LegacyPost.js +191 -16
  273. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  274. package/package.json +33 -26
  275. package/templates/cinematic-scene/package.json +2 -2
  276. package/templates/mini-game/package.json +2 -2
  277. package/templates/product-viewer/package.json +2 -2
  278. package/templates/production-asset-inspector/package.json +1 -1
  279. package/templates/production-material-studio/package.json +1 -1
  280. package/templates/production-product-configurator/package.json +1 -1
  281. package/templates/production-product-viewer/package.json +1 -1
@@ -35,6 +35,7 @@ export function prd06RenderingLaneReady() {
35
35
  import { setPoseMixerBlendFlagProvider } from "../../animation/lanes/index.js";
36
36
  import { registerDiagnosticsSection } from "../contracts/diagnostics.js";
37
37
  import { DIAGNOSTIC_ONLY_FIELDS, registerOptionCoverage } from "../contracts/compiler.js";
38
+ import { createActorBoneMatrixLookup } from "../agent-api/app/actorBoneMatrixLookup.js";
38
39
  import { collectPrd06AnimationDiagnostics, createPrd06ActorAnimationApi, qrAnimationFlags, registerActorAnimationApplySource, registerActorBoneMatrixSource, registerActorBindMatrixSource, clearActorBoneAttachments, registerActorClipInfoSource, registerPrd06AnimationActor } from "../agent-api/app/actorAnimationHandle.js";
39
40
  import { PRD06_DIAGNOSTIC_ONLY_FIELDS, PRD06_OPTION_COVERAGE } from "../agent-api/compiler/diagnosticOnly.prd06.js";
40
41
  import { beginPrd06ShaderWarmup, disposePrd06ShaderWarmup, filterPrd06ShaderWarmupItems, setPrd06ShaderWarmupCompiler } from "../production-runtime/actor/TypedGLBActorAnimation.js";
@@ -68,22 +69,6 @@ registerNodeHandleExtension({
68
69
  appliesTo: ["model"],
69
70
  create: (handle, app) => createPrd06ActorAnimationApi(handle, app)
70
71
  });
71
- /**
72
- * T0.18 — the bone→world-matrix lookup behind `handle.animation.socket(bone)`:
73
- * snapshot the actor's scene nodes by name once, then read the live
74
- * `transform.worldMatrix` on each call (it re-writes every applied frame).
75
- */
76
- function createActorBoneMatrixLookup(actor) {
77
- const nodesByName = new Map();
78
- actor.pipeline.resources.scene.traverse((node) => {
79
- if (node.name && !nodesByName.has(node.name))
80
- nodesByName.set(node.name, node);
81
- });
82
- return (bone) => {
83
- const node = nodesByName.get(bone);
84
- return node ? Float32Array.from(node.transform.worldMatrix) : null;
85
- };
86
- }
87
72
  /**
88
73
  * The bind-pose variant of the bone lookup: the same nodes frozen once at
89
74
  * actor load — before any clip or pose has applied — so rigs with non-identity
@@ -1 +1 @@
1
- {"version":3,"file":"prd06.js","sourceRoot":"","sources":["../../../../../packages/engine/src/lanes/prd06.ts"],"names":[],"mappings":"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"}
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,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,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;AAGH;;;;GAIG;AACH,SAAS,2BAA2B,CAAC,KAAoB;IACvD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;IACjD,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAsB,CAAC;AAC7D,MAAM,4BAA4B,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEvE,8BAA8B,CAAC;IAC7B,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC1B,sBAAsB,CAAC,GAAG,CACxB,KAAK,CAAC,EAAE,EACR,2BAA2B,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CACjF,CAAC;QACF,sBAAsB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;QACpF,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;YACzC,iCAAiC,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC;YACvF,6BAA6B,CAAC,KAAK,CAAC,EAAE,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;YAC3E,6BAA6B,CAAC,KAAK,CAAC,EAAE,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC5E,CAAC,CAAC;QACH,wEAAwE;QACxE,6DAA6D;QAC7D,sBAAsB,CAAC,KAAK,EAAE,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC;IAChF,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChC,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,sDAAsD;QACtD,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC1B,yEAAyE;QACzE,2EAA2E;QAC3E,qCAAqC;QACrC,mBAAmB,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,MAAM,UAAU,GAAG,CAAC,CAAmB,EAAE,EAAE;YACzC,KAAK,MAAM,IAAI,IAAI,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC;QACF,IAAI,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;;YACtB,KAAK,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,aAAc,CAAC,CAAC,CAAC;QACvE,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YAClD,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACpC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,aAAa,IAAI,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,aAAa,EAAE,CAAC;QAC9F,4BAA4B,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9C,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;CACF,CAAC,CAAC;AAEH,4EAA4E;AAE5E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,8BAA8B,GAAG,IAAI,OAAO,EAAwC,CAAC;AAE3F,8BAA8B,CAAC;IAC7B,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,kBAAkB;IACxB,kBAAkB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACpC,iEAAiE;QACjE,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBACvF,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS;YAAE,OAAO,KAAqB,CAAC;QAC7C,mBAAmB,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,IAAI,UAAU,GAAG,KAAqB,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnF,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACnG,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,oBAAoB,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnE,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,QAAQ,GAAG,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnE,IAAI,QAAQ;oBAAE,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC;gBACvE,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1F,CAAC;YACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,IAAI,UAAU,KAAK,KAAK;oBAAE,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBACrD,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAC,CAAC;AAEH,4EAA4E;AAE5E;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAiC;IACxE,gFAAgF;IAChF,4EAA4E;IAC5E,IAAI,MAAqE,CAAC;IAC1E,IAAI,OAAqC,CAAC;IAC1C,4BAA4B,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,6BAA6B,EAAE,EAAE,EAAE;gBACjF,MAAM,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
@@ -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,CA6EhF"}
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":"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"}
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"}
@@ -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, createHandBounce, resolveHandBounceConfig, handBounceCycle, handBounceBallY, handBounceContactWeight, handBounceBallXZ, clampPalmReach, handBounceOverlayAngles, measureHandBall, DEFAULT_HAND_BOUNCE_LIMITS } 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, HandBounceVec3, HandBounceGait, HandBounceOptions, HandBouncePhases, HandBounceConfig, HandBounceCycle, HandBounceOverlayBone, HandBounceOverlay, HandBounceInput, HandBounceFrame, HandBounceState, HandBounceRelease, HandBounce, HandBounceSample, HandBounceReport, HandBounceLimits } 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";
@@ -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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"}
@@ -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, createHandBounce, resolveHandBounceConfig, handBounceCycle, handBounceBallY, handBounceContactWeight, handBounceBallXZ, clampPalmReach, handBounceOverlayAngles, measureHandBall, DEFAULT_HAND_BOUNCE_LIMITS } 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.
@@ -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":"AASA,MAAM,UAAU,GAA6E;IAC3F,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IACpF,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IAChG,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IAClG,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;IACpG,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;IACpG,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;IACxF,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IACpF,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IACpF,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;CACnH,CAAC;AAEF,kJAAkJ;AAClJ,MAAM,UAAU,GAA8C;IAC5D,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC;IAC1C,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC;IACtC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IAClC,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;IACrC,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;IACnD,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;IAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;IACnC,IAAI,EAAE,CAAC,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAErF,oFAAoF;AACpF,MAAM,YAAY,GAA8C;IAC9D,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;IAClE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;IAChD,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IAC9C,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;IAC1D,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;IAChD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC1C,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;IAC5C,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC/F,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3D,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAAU,EAA8E,EAAE,CAC3G,IAAI,KAAK,MAAM;IACb,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9B,CAAC,CAAC,IAAI,KAAK,OAAO;QAChB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;QAC1G,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;AAE5G,2FAA2F;AAC3F,SAAS,WAAW,CAAC,IAAc;IACjC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7F,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,IAAI,IAAI,KAAK,MAAM;gBAAE,SAAS;YAC9B,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE;QACxB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM;YAAE,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM;YAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;YAClB,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,SAAS,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;YAAE,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM;gBAAE,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IAC1G,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACtB,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,kEAAkE;IAClE,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,WAAW,CAAC,SAA4B,EAAE,UAA6B;IACrF,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,UAAU,IAAI,UAAU;QAAE,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,UAAsB,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAoCD,mHAAmH;AACnH,MAAM,UAAU,YAAY,CAAC,KAAsB,EAAE,OAA4B;IAC/E,IAAI,IAAwB,CAAC;IAC7B,IAAI,KAAK,GAAsB,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,IAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpH,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChH,KAAK,GAAG,UAAU,CAAC;QACnB,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxG,MAAM,IAAI,KAAK,CACb,2CAA2C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,0DAA0D,CACxM,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAA4J;QACpK,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;IACF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,iBAAiB,CAAC,KAAsC,EAAE,IAAY;IACpF,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,CAAC,CAAC,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC;AAClC,CAAC;AAED,sIAAsI;AACtI,MAAM,UAAU,kBAAkB,CAAC,YAA+C,EAAE,YAA+C;IACjI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7H,CAAC"}
@@ -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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"}