@forgeax/engine-debug-draw 0.1.4 → 0.1.6
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 +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/debug-draw.d.ts +0 -1
- package/dist/debug-draw.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +62 -4
- package/dist/index.mjs.map +1 -1
- package/dist/render-feature.d.ts +12 -0
- package/dist/render-feature.d.ts.map +1 -0
- package/dist/types.d.ts +0 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/debug-draw.ts +0 -4
- package/src/index.ts +4 -0
- package/src/render-feature.ts +73 -0
- package/src/types.ts +2 -4
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ All shapes are **line-list** wireframe (never filled). No persistent storage --
|
|
|
34
34
|
|
|
35
35
|
## Package positioning
|
|
36
36
|
|
|
37
|
-
`@forgeax/engine-debug-draw`
|
|
37
|
+
`@forgeax/engine-debug-draw` keeps shape generation at the leaf layer alongside `@forgeax/engine-math`; its RenderFeature adapter consumes only the declarative render contract. Dependencies are `@forgeax/engine-render` + `@forgeax/engine-rhi` + `@forgeax/engine-math` + `@forgeax/engine-types`. It does **not** depend on `engine-ecs` / `engine-runtime` / `engine-render-graph` / `engine-shader`.
|
|
38
38
|
|
|
39
39
|
| Layer | Package | Depends on |
|
|
40
40
|
|:--|:--|:--|
|
package/dist/.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/constants.ts","../../math/dist/types.d.ts","../../math/dist/circle2.d.ts","../../math/dist/box2.d.ts","../../math/dist/box3.d.ts","../../math/dist/color.d.ts","../../math/dist/easing.d.ts","../../math/dist/euler.d.ts","../../math/dist/f32-to-f16-bytes.d.ts","../../math/dist/frustum.d.ts","../../math/dist/mat3.d.ts","../../math/dist/mat4.d.ts","../../math/dist/noise.d.ts","../../math/dist/quat.d.ts","../../math/dist/ray.d.ts","../../math/dist/ray2.d.ts","../../math/dist/sphere.d.ts","../../math/dist/vec2.d.ts","../../math/dist/vec3.d.ts","../../math/dist/vec4.d.ts","../../math/dist/index.d.ts","../../types/dist/animation-target.d.ts","../../types/dist/asset-errors.d.ts","../../types/dist/result.d.ts","../../types/dist/asset-evidence.d.ts","../../types/dist/asset.d.ts","../../types/dist/asset-runtime.d.ts","../../types/dist/material/color-space.d.ts","../../types/dist/material/asset.d.ts","../../types/dist/vfx.d.ts","../../types/dist/handle.d.ts","../../types/dist/material/errors.d.ts","../../types/dist/material/resolve.d.ts","../../types/dist/material/index.d.ts","../../types/dist/asset-producer.d.ts","../../types/dist/catalog.d.ts","../../types/dist/runtime-scope.d.ts","../../types/dist/derive-paramschema.d.ts","../../types/dist/import.d.ts","../../types/dist/index.d.ts","../../rhi/dist/errors.d.ts","../../rhi/dist/queue-writes.d.ts","../../rhi/dist/index.d.ts","../src/errors.ts","../src/shapes/aabb.ts","../src/shapes/arrow.ts","../src/shapes/axes.ts","../src/shapes/frustum.ts","../src/shapes/line.ts","../src/shapes/sphere.ts","../src/types.ts","../src/debug-draw.ts","../src/index.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.5/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/tasks.d-Bh0IjN67.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.5/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.5/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.5/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/index.d.ts","../src/__tests__/errors.test-d.ts"],"fileIdsList":[[141,142],[114,120,138,139,140,143],[150],[150,151],[118,120,121],[118,120],[118],[113,118,129,130],[113,118,129],[137],[113,119],[113],[115],[113,114,115,116,117],[156,157],[156,157,158,159],[156,158],[156],[124],[124,125,126,127],[126],[122,145,146,148],[122,123,135,148],[113,120,122,123,131,148],[128],[113,122,123,131,144,147,148],[122,123,128,131,148],[122,145,146,147,148],[122,128,132,133,134,148],[113,118,120,122,123,128,131,132,133,134,135,136,138,144,145,146,147,148,149,152,153,154,155,160],[113,120,122,123,131,132,145,146,147,148,153],[103,161],[60,80,99,102,103,104,105,106,107,108,109,110],[99],[60,103,110,111],[80],[80,105],[80,99,102,103],[61,62],[61],[61,63],[61,64],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79],[61,62,63],[99,100,101],[82,83,85],[82,83,85,99],[84],[83,85,94],[82,94,95,96,99],[81,82,83,85,86,88,89,90,93,94,95,96,97,98],[86,87,99],[88],[87,88,91,92],[83,88,91],[94,95]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b0436f33af5ec1f590606bf9b95f7e8a517be0c811feb1b959f73f76ac94a4f","signature":"72df39a46542c36a902347763f9e89bde3a4652bfc612c5e1bb54e2e41286745"},"728cc7c21f319d38b1dafdbdf1258350b675055a3fb61ae1a7c34562c58b8557","d474818de812636654d86a3f0f6f3b8f6ae725b5487f344a5d3a32decd68311f","87cb945db71dbb2cceac65375b84cc0c55bfe70a749b11e55b59a40df53503f6","dcadfb7e3411bb19e717855d891658f3d71c065248d25f09e027e4a6cdfa0e9f","1c3f1fae8db7ce0bb537e509ceb0243892e68a3b6e66ab1245c15932be41d037","b3b63929f7475d02520bde84913450bf633e86f6a5d51fcc13e95376ec3483a6","11fbb66f203aa1855d34dbb3d835879a75924cae9f08eb16997318fed41f9078","56d65795b8f53c0f68d66369fc42fb8f79f669f868fc8eda2f634297c47b156f","a35dc82e5a7955568d2883e308e7a3e138961dd3b40956b22fccd415dd307e4a","a10051e664b2713d31f07db5fdd71d0854732e57429cbfa00ebb329e89a27981","3cb9e3f85ef9f989394133fe2e4ef4f39da5578fe583124fc0cbb00474b471e8","8bbc25b37d24570dffba7209cb9e427a63c7eeed18412af5e57c450a37d6c059","27d3d1f171d4b7b86bdf1c352f22319c0915b17cfd919deb070bef13510a33a2","40a12a4c54a6564f2c1547a10bcafc9210fce809dc57d2a7815c918972f48895","a8f81f646b1bd12b6b0758d1f97cc6d26646d5ac72d92362cb3b340271589e8f","05d6d9fbf9c8fbb9fa36b4e0ad91292e57f6a9233dc407875d0fb06cdfd59bda","d08b909fffadfa1dece31aa587aca1c34782cafd9294c5c8b66cbab2aa897719","a49e93ed1861aa2493d363f26ee826ab71c7105b20c85cf8bd26bbb4e0b32cd6","9aca2738b7400d1d8c2d009ec6cbbaf3204e6413219edc962cea5bb6ef50db10","f23fc64dfc9c3e5b718eca7f1fdb0640d5c1f5c8993a599e66ce73ab33502036","89fe170d9a59f81cd9a9d95de3278f108ff91491810b2529cc0ffb502a57b6c0","0b4928041c807c01b33b1fa028236df635c52f7acff5a40f2c2d0d677b53428b","5ad2e5b8b17893d0eb1f11a1b6e8c03b17344be03a6a72a624cd38ab05fe4d5c","6a1e553079e654a1771463e9eeb98ea4f7bb4b6417a5237d4fdf9b546d49647f","7f11be86b9ac5c2cd5127cd9d40ccc7694c58868a3157692a153d452fc171525","8b52dd8be86f44f871db89a6c1f77f7585688d53141ff55b6c5fac3eb67b1241","6e3488ee1183ea915eb43f08aebc5f75e30be25aef1f678d1965324bdd7506e1","59ca967d9cb92088499ce15a1c389e55a39bb2cb905844439565d9f7d8b1ed5d","a318d8734523d9e750681e7b8e685ef817d4049c5612451f4e849da8b2b572a9","99440a4820b8621d65822e29b01afd8a5938ea94ebea634fdd31d32d3e735629","080e7748d9754ccaea8debbc933552c7976c1ef588f9642a6f07e5a4d139d43b","51342c51a9090c0bc8bae60c5ec1a0f46d6d44db84392f12a8cd46e6d8a9f617","ae777307a0baeb9b5d7ba18e6a029a54eb0b612b1491591dcedb020cc8d36f97","d7ba738e316b7baed10ca49cc156b57b8c973b747bec6612e62a925e9f7f33a4","1d5292578fcf0329a43ef19fe2481d7d1cde75e75610019a7897c70dcfff0b31","459b3765e622008ed590474ae6b61ab55107a7b9529a28d05087a6fef51d7248","ce15f7fa66eb0ff73351db6a626a397eb441aa3572707c2a156897c646b2911d","c68fbed241cfa01237d9d15cff9bab1ebdd06f2fe337f536e218c1c39aa5a841","a6fcec9d447e7ea2763d1e5f9cf32a20e7f7cff2fe0da4c48639db063b9cc531","8d6101c60d99ac57af23b947db35bedaa5580f2e7ae126c5b39841aa423cd242","cd253019e2f5488d5de2a1dbe4d1f5821b182135f66acc582d526f964ef6293f","5bb2ba05ee7656cd2c64c8bd9dd987d571dba2e7a18456a489e0b7253250cbfc",{"version":"ea42bbde3bb6846358facaaef862f2dbe631e660e89a04d049fbc6f9a92c3dad","signature":"574c4d5d4db678ee8d03ff57c27df25ccf6a09bfe3d2bd07bd99aef9efe9300e"},{"version":"639313a61a44c4a3fe702c9505e29717fe3275ad7f0796f8ca04aa1b69b50ec6","signature":"e798e4b85a8176af72ebf4de53373de730ad0ef610194cd12613d85ae6ef57cc"},{"version":"0d7ca2aaf26c6c55ef0cf2a25fe5992379d2695593b114eac6dfe77e2eb512d0","signature":"b94ef8d72ca3bdad91fc2622c40fbdf2a59a21e69c8863efec0db39b10d4672e"},{"version":"75ceed524a8eaedf05d2b9ea1caa8ed173393792d9ea4b138b7beb56cac3b060","signature":"5ac73528981a07e0f28476c1b1003874279d06a59e5c56a54946df8b4501c9ac"},{"version":"d44674572f1ac03d45c824270c5edac02b48549f773868d18419d91975af34b7","signature":"4346529327eca7088d5999fd384d33699e7428f869ba00190bc89dfd5372d241"},{"version":"6103c423e2e720d88143a86f582f3bc878fa1698d7a51d0e05dc4eb9aec270a1","signature":"b300e90901e77abe7b78d5c2dcdaf2e8ea8baad2c5ffa551d34b2b5792ba69fa"},{"version":"b6ed1fa5dc94d5ebb3de31d71a7ae0a3f5df976a7e30ba08b9b22e7e91fb569c","signature":"3f7818f5259bb7228e9b36c3bd030fe3b0160c286016615b041aa2a0c4d4d389"},{"version":"22f484785d906bd4e30f6eb922365004f520ec26574567f5c478653c65642162","signature":"9422da3a003cedd56094a660454ec3fcde83cb2f91a0d086e8468382599f72ee"},{"version":"1b46f76e64f2f35aa60f723ae2dfaa0a375334c0de3047f8bbb126b414ffb330","signature":"55caaaa4543006b80f6ae31176cbbe3606d9996b3097f2cee118ea8feb2c03c4"},{"version":"36e8750d50594c8f2362d73dc59772d940e6c08d2ccca862d7b64f0276b0c6bd","signature":"3dad512895718890f27b055f965245f5fde38adfb42e212c2f09c3201e3a8767"},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"3b0a56d056d81a011e484b9c05d5e430711aaecd561a788bad1d0498aad782c7","impliedFormat":99},{"version":"9443967db823b66d1682be7fc66392be7c7924e10c3e54900f456341e94591a6","impliedFormat":99},{"version":"424f71d1fae96ac2e878af92345bb87bea1d29f757228fbc190133b305643f2c","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"82179358c2d9d7347f1602dc9300039a2250e483137b38ebf31d4d2e5519c181","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"605450898939e8abce51e8085a41b60640278337a969c33cd6b169e7c4f9c3f2","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"ed9bb55ddcbebd5cb3eee991f57ff21438546ee40ee1c310281bd12a6c7cf65b","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"65959d0fae226419e710d132c492e9fc5c52af6e1e925b307ba476694896107c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[60,[103,112],162],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[143,1],[144,2],[151,3],[152,4],[122,5],[121,6],[145,5],[129,7],[131,8],[130,9],[138,10],[120,11],[114,12],[116,13],[118,14],[119,12],[158,15],[160,16],[159,17],[157,18],[125,19],[128,20],[126,19],[127,21],[147,22],[136,23],[132,24],[133,7],[154,25],[148,26],[134,27],[153,28],[135,29],[161,30],[155,31],[162,32],[111,33],[103,34],[112,35],[104,36],[105,36],[106,37],[107,36],[108,36],[109,36],[110,38],[63,39],[64,40],[62,41],[65,40],[67,40],[69,42],[80,43],[70,40],[71,40],[73,40],[74,42],[75,44],[76,42],[77,40],[78,40],[79,40],[100,34],[102,45],[84,46],[86,47],[85,48],[95,49],[97,34],[90,34],[98,50],[99,51],[88,52],[87,53],[93,54],[92,55],[96,56]],"latestChangedDtsFile":"./__tests__/errors.test-d.d.ts","version":"6.0.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/constants.ts","../../math/dist/types.d.ts","../../math/dist/circle2.d.ts","../../math/dist/box2.d.ts","../../math/dist/box3.d.ts","../../math/dist/color.d.ts","../../math/dist/easing.d.ts","../../math/dist/euler.d.ts","../../math/dist/f32-to-f16-bytes.d.ts","../../math/dist/frustum.d.ts","../../math/dist/mat3.d.ts","../../math/dist/mat4.d.ts","../../math/dist/noise.d.ts","../../math/dist/quat.d.ts","../../math/dist/ray.d.ts","../../math/dist/ray2.d.ts","../../math/dist/sphere.d.ts","../../math/dist/vec2.d.ts","../../math/dist/vec3.d.ts","../../math/dist/vec4.d.ts","../../math/dist/index.d.ts","../../types/dist/animation-target.d.ts","../../types/dist/asset-errors.d.ts","../../types/dist/result.d.ts","../../types/dist/asset-evidence.d.ts","../../types/dist/asset.d.ts","../../types/dist/material/color-space.d.ts","../../types/dist/material/asset.d.ts","../../types/dist/vfx.d.ts","../../types/dist/asset-runtime.d.ts","../../types/dist/handle.d.ts","../../types/dist/material/errors.d.ts","../../types/dist/material/resolve.d.ts","../../types/dist/material/index.d.ts","../../types/dist/asset-producer.d.ts","../../types/dist/catalog.d.ts","../../types/dist/runtime-scope.d.ts","../../types/dist/derive-paramschema.d.ts","../../types/dist/import.d.ts","../../types/dist/index.d.ts","../../rhi/dist/errors.d.ts","../../rhi/dist/index.d.ts","../src/errors.ts","../src/shapes/aabb.ts","../src/shapes/arrow.ts","../src/shapes/axes.ts","../src/shapes/frustum.ts","../src/shapes/line.ts","../src/shapes/sphere.ts","../src/types.ts","../src/debug-draw.ts","../../render/dist/assets/asset-decoders.d.ts","../../ecs/dist/entity-handle.d.ts","../../ecs/dist/storage/column.d.ts","../../ecs/dist/component-schema.d.ts","../../ecs/dist/component.d.ts","../../ecs/dist/entity.d.ts","../../ecs/dist/errors/query-and-component-errors.d.ts","../../ecs/dist/errors/relationship-errors.d.ts","../../ecs/dist/errors/sprite-and-shared-errors.d.ts","../../ecs/dist/errors/validation-errors.d.ts","../../ecs/dist/world-internal.d.ts","../../ecs/dist/query/query.d.ts","../../ecs/dist/relationship-index.d.ts","../../ecs/dist/shared-ref-store.d.ts","../../ecs/dist/world-change-journal.d.ts","../../ecs/dist/storage/table.d.ts","../../ecs/dist/storage/archetype.d.ts","../../ecs/dist/storage/archetype-graph.d.ts","../../ecs/dist/storage/change-detection.d.ts","../../ecs/dist/time.d.ts","../../ecs/dist/schedule-token.d.ts","../../ecs/dist/world.d.ts","../../ecs/dist/commands.d.ts","../../ecs/dist/schedule.d.ts","../../ecs/dist/execution/shared-kernel.d.ts","../../ecs/dist/errors.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/array.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/types.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/misc.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/string.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/time.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/utils.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/registry.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/reflect.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/fiber.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/events.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/logger.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/context.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/service.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/index.d.ts","../../tool-runtime/dist/types.d.ts","../../tool-runtime/dist/errors.d.ts","../../tool-runtime/dist/artifacts.d.ts","../../tool-runtime/dist/capability.d.ts","../../tool-runtime/dist/carrier.d.ts","../../tool-runtime/dist/lease.d.ts","../../tool-runtime/dist/migration.d.ts","../../tool-runtime/dist/runtime.d.ts","../../tool-runtime/dist/snapshot.d.ts","../../tool-runtime/dist/timing.d.ts","../../tool-runtime/dist/transport.d.ts","../../tool-runtime/dist/index.d.ts","../../plugin/dist/capability.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/internal.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/tree.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/group.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/entry.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/isolate.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/utils.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/index.d.ts","../../plugin/dist/tool-plugin.d.ts","../../plugin/dist/loader.d.ts","../../plugin/dist/index.d.ts","../../ecs/dist/plugin-service.d.ts","../../ecs/dist/index.d.ts","../../render/dist/components/camera.d.ts","../../render/dist/components/directional-light.d.ts","../../render/dist/components/instances.d.ts","../../render/dist/components/layer.d.ts","../../render/dist/components/mesh-filter.d.ts","../../render/dist/components/mesh-renderer.d.ts","../../render/dist/components/point-light.d.ts","../../render/dist/components/point-light-shadow.d.ts","../../render/dist/components/post-process-params.d.ts","../../render/dist/components/scene-instance.d.ts","../../render/dist/components/skybox-background.d.ts","../../render/dist/components/skylight.d.ts","../../render/dist/components/sort-key.d.ts","../../render/dist/components/spot-light.d.ts","../../render/dist/components/visibility.d.ts","../../render/dist/device/resource-types.d.ts","../../render/dist/features/vocabulary.d.ts","../../render/dist/errors/render.d.ts","../../scene/dist/assets/scene-decoder.d.ts","../../scene/dist/collect-subtree.d.ts","../../scene/dist/components/children.d.ts","../../scene/dist/components/child-of.d.ts","../../scene/dist/components/morph-weights.d.ts","../../scene/dist/components/name.d.ts","../../scene/dist/components/transform.d.ts","../../ecs/dist/component-default-fallback.d.ts","../../ecs/dist/projection/index.d.ts","../../scene/dist/errors.d.ts","../../scene/dist/instances/collect-profile.d.ts","../../scene/dist/instances/externalization.d.ts","../../scene/dist/instances/scene-instances.d.ts","../../scene/dist/plugin.d.ts","../../scene/dist/systems/hierarchy-projection.d.ts","../../scene/dist/systems/propagate-transforms.d.ts","../../scene/dist/index.d.ts","../../render/dist/extract/visibility.d.ts","../../render-graph/dist/errors.d.ts","../../render-graph/dist/types.d.ts","../../render-graph/dist/builder.d.ts","../../render-graph/dist/observation.d.ts","../../render-graph/dist/pass-registry.d.ts","../../render-graph/dist/pipeline/color-value-domain.d.ts","../../render-graph/dist/resource-registry.d.ts","../../render-graph/dist/graph.d.ts","../../render-graph/dist/index.d.ts","../../shader/dist/errors.d.ts","../../shader/dist/material/artifact-registry.d.ts","../../shader/dist/material/artifact-types.d.ts","../../shader/dist/material-schemas.d.ts","../../shader/dist/register-default-sprite-lit.d.ts","../../shader/dist/register-default-standard-pbr-skin.d.ts","../../shader/dist/types.d.ts","../../shader/dist/ShaderRegistry.d.ts","../../shader/dist/tonemap.d.ts","../../shader/dist/index.d.ts","../../render/dist/pipeline-builder.d.ts","../../render/dist/features/prepared-gpu-work.d.ts","../../render/dist/features/targets.d.ts","../../render/dist/features/prepared-graphics.d.ts","../../render/dist/features/plan.d.ts","../../render/dist/features/types.d.ts","../../render/dist/materials.d.ts","../../render/dist/pipeline/standard-profile.d.ts","../../render/dist/plugin.d.ts","../../assets-runtime/dist/asset-kind.d.ts","../../pack/dist/errors.d.ts","../../pack/dist/guid.d.ts","../../assets-runtime/dist/loader-registry.d.ts","../../assets-runtime/dist/catalog-source.d.ts","../../pack/dist/evidence/material-cook.d.ts","../../pack/dist/evidence/offline-evidence.d.ts","../../pack/dist/mesh-bin-contract.d.ts","../../pack/dist/producer-contract.d.ts","../../pack/dist/scriptable-pack.d.ts","../../pack/dist/topology.d.ts","../../pack/dist/artifact-path.d.ts","../../pack/dist/material/artifact-writer.d.ts","../../pack/dist/runtime-projection.d.ts","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/errors.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/json-schema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/jtd-schema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/ajv.d.ts","../../pack/dist/schema-compiled.d.ts","../../pack/dist/index.d.ts","../../assets-runtime/dist/material/loader.d.ts","../../assets-runtime/dist/registry/artifact-io.d.ts","../../assets-runtime/dist/registry/asset-evidence.d.ts","../../assets-runtime/dist/registry/catalog.d.ts","../../assets-runtime/dist/registry/catalog-state.d.ts","../../assets-runtime/dist/registry/scene-publication-fence.d.ts","../../assets-runtime/dist/registry/instantiate.d.ts","../../assets-runtime/dist/registry/load-state.d.ts","../../assets-runtime/dist/handles.d.ts","../../assets-runtime/dist/loaders/pack-artifact.d.ts","../../assets-runtime/dist/loaders/inline-pack.d.ts","../../assets-runtime/dist/payload-validate.d.ts","../../assets-runtime/dist/asset-registry.d.ts","../../assets-runtime/dist/builtin-asset-registry.d.ts","../../assets-runtime/dist/decode-image-bytes.d.ts","../../assets-runtime/dist/dynamic-texture-store.d.ts","../../assets-runtime/dist/errors/asset.d.ts","../../assets-runtime/dist/internal/asset-graph.d.ts","../../assets-runtime/dist/internal/validate-runtime-row.d.ts","../../assets-runtime/dist/internal/catalog-session.d.ts","../../assets-runtime/dist/internal/load-asset.d.ts","../../geometry/dist/assets/mesh-decoder.d.ts","../../geometry/dist/assets/primitive-mesh.d.ts","../../geometry/dist/box.d.ts","../../geometry/dist/capsule.d.ts","../../geometry/dist/cone.d.ts","../../geometry/dist/cylinder.d.ts","../../geometry/dist/dim2.d.ts","../../geometry/dist/plane.d.ts","../../geometry/dist/sphere.d.ts","../../geometry/dist/tangent.d.ts","../../geometry/dist/torus.d.ts","../../geometry/dist/vertex-attribute-layout.d.ts","../../geometry/dist/index.d.ts","../../assets-runtime/dist/loaders/mesh-bin.d.ts","../../assets-runtime/dist/material/generation-cache.d.ts","../../assets-runtime/dist/material/inspection.d.ts","../../assets-runtime/dist/material/runtime-shader.d.ts","../../assets-runtime/dist/mipmap-generator.d.ts","../../assets-runtime/dist/plugin.d.ts","../../assets-runtime/dist/registry/load-by-guid.d.ts","../../assets-runtime/dist/resolve-asset-handle.d.ts","../../assets-runtime/dist/resolve-tileset-runtime.d.ts","../../assets-runtime/dist/scene-payload.d.ts","../../assets-runtime/dist/wire-default-loaders.d.ts","../../assets-runtime/dist/index.d.ts","../../profiler/dist/clock.d.ts","../../profiler/dist/generated/profile-capture.d.ts","../../profiler/dist/types.d.ts","../../profiler/dist/errors.d.ts","../../profiler/dist/recorder.d.ts","../../profiler/dist/profiler.d.ts","../../profiler/dist/browser-user-timing.d.ts","../../profiler/dist/schema.d.ts","../../profiler/dist/model.d.ts","../../profiler/dist/compare.d.ts","../../profiler/dist/index.d.ts","../../skinning/dist/assets/skin-decoder.d.ts","../../skinning/dist/errors.d.ts","../../skinning/dist/plugin.d.ts","../../skinning/dist/resolve-skin-joints.d.ts","../../skinning/dist/skin.d.ts","../../skinning/dist/index.d.ts","../../render/dist/assembly/backend-contract.d.ts","../../render/dist/fullscreen-post-process-pass.d.ts","../../render/dist/inspection-types.d.ts","../../render/dist/mesh-material-bindings.d.ts","../../render/dist/post-process-errors.d.ts","../../render/dist/render-contract.d.ts","../../render/dist/index.d.ts","../src/render-feature.ts","../src/index.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.5/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/tasks.d-Bh0IjN67.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.5/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.5/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.5/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/index.d.ts","../src/__tests__/errors.test-d.ts"],"fileIdsList":[[152,167,168,172,175],[152,167,169,170,172,175],[142,152,169,170,172,175],[142,152,168,169,170,172,175],[142,152,166,167,168,169,170,171,172,175],[142],[142,144,145,146,147,148,149],[142,145,146,147,148,149,150],[142,143,144,145,146,147,148,149,150],[144,145,146,147,148,149,150,151],[144,145,146,147,148,149,150],[152,172,175],[137,138,139,140,141],[402,403],[143,376,382,400,401,404],[411],[411,412],[380,382,383],[380,382],[380],[375,380,391,392],[375,380,391],[399],[375,381],[375],[377],[375,376,377,378,379],[259,260,264,291,292,294,295,296,298,299],[257,258],[257],[259,299],[259,260,296,297,299],[299],[256,299,300],[259,260,298,299],[259,260,262,263,298,299],[259,260,261,298,299],[259,260,264,291,292,293,294,295,298,299],[256,259,260,264,296,298],[264,299],[266,267,268,269,270,271,272,273,274,275,299],[289,299],[265,276,284,285,286,287,288,290],[269,299],[277,278,279,280,281,282,283,299],[417,418],[417,418,419,420],[417,419],[417],[386],[386,387,388,389],[388],[384,406,407,409],[384,385,397,409],[375,382,384,385,393,409],[390],[375,384,385,393,405,408,409],[384,385,390,393,409],[384,406,407,408,409],[384,390,394,395,396,409],[375,380,382,384,385,390,393,394,395,396,397,398,400,405,406,407,408,409,410,413,414,415,416,421],[375,382,384,385,393,394,406,407,408,409,414],[99],[99,101,177,232,243,244,245,246,303,304,305,306,307,308,309,310,311,312,313,314],[99,101],[99,302],[99,242,245,246,303,305,307,308,309,311,312,313,314,315,316,317,318,319,323,337,338,339,340,341,342,343,344,345,346,347],[99,246,321],[99,246,320,322],[99,312],[99,319,336],[303],[302],[99,232,303],[101],[99,175,176,245,315,342],[99,101,246],[99,101,315],[99,101,177,243,308,315],[99,101,244,303,315],[99,101,177,244],[99,177],[99,245],[102,422],[60,80,99,101,102,103,104,105,106,107,108,109],[60,102,109,110,373],[101,372],[80],[80,104],[80,99,101,102],[99,112,115,121,132,136],[115,136],[115],[99,112,113,114],[117,118,119,120,135],[122,131,134],[112,114,115,116,122,123,124,130,131,132,133,134,136,176],[132,175,176,342],[99,112,115,124,129,132,136,203],[99,112,115,121,136],[112,115],[99,115,122,131,132,133,136],[99,136],[115,126,127,129],[115,126],[112,115,125,126,128],[112,113,115,129],[112],[99,112,115,121,122,123,124,129,130,131,134,135,136],[80,99],[99,324,325,326,327,328,329,330,331,332,333,334,335],[61,62],[61],[61,63],[61,64],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79],[61,62,63],[243],[99,247,248,249,250,251,252,253,254,255,301],[99,300],[152,164,172,175],[152,165,172,173,174,175],[152,164,165,172,173,175],[351,354],[351,356,357],[351],[349,351,352,353,354,355,356,357,358],[351,356],[349,351,352,353],[349,351,352],[350,351],[350],[101,214,215],[101,214,217,218,219,220],[214,215,216,217,219,221],[101,214],[221],[214],[101,214,219,221],[177],[193,194],[177,192,212],[99,101,195,222,234,236],[99,101,195,222,233],[99,101,194,195,234,235],[99,101,177,194,195,213,235,237],[111,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,195,213,237,238,239,240,241,371],[99,101,232],[175,176,342],[80,99,101,177,178,195,204,222,238,240,348,359,365,366,367,368,369,370],[99,100],[198],[177,204],[196,197,198,199,200,201,202,205,206,207,208,209,210,211],[177,205],[99,177,205,210],[99,101,223,229],[99,223,224,225,226,227,228,229,230,231],[232],[360,361,362,363,364],[177,361],[153,154],[153],[153,154,155,156,157,158,159,160,161,162,163],[153,157],[82,83,85],[82,83,85,99],[84],[83,85,94],[82,94,95,96,99],[81,82,83,85,87,88,89,90,93,94,95,96,97,98],[86,99],[87],[86,87,91,92],[83,87,91],[94,95]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b0436f33af5ec1f590606bf9b95f7e8a517be0c811feb1b959f73f76ac94a4f","signature":"72df39a46542c36a902347763f9e89bde3a4652bfc612c5e1bb54e2e41286745"},"728cc7c21f319d38b1dafdbdf1258350b675055a3fb61ae1a7c34562c58b8557","d474818de812636654d86a3f0f6f3b8f6ae725b5487f344a5d3a32decd68311f","87cb945db71dbb2cceac65375b84cc0c55bfe70a749b11e55b59a40df53503f6","dcadfb7e3411bb19e717855d891658f3d71c065248d25f09e027e4a6cdfa0e9f","1c3f1fae8db7ce0bb537e509ceb0243892e68a3b6e66ab1245c15932be41d037","b3b63929f7475d02520bde84913450bf633e86f6a5d51fcc13e95376ec3483a6","11fbb66f203aa1855d34dbb3d835879a75924cae9f08eb16997318fed41f9078","56d65795b8f53c0f68d66369fc42fb8f79f669f868fc8eda2f634297c47b156f","a35dc82e5a7955568d2883e308e7a3e138961dd3b40956b22fccd415dd307e4a","a10051e664b2713d31f07db5fdd71d0854732e57429cbfa00ebb329e89a27981","3cb9e3f85ef9f989394133fe2e4ef4f39da5578fe583124fc0cbb00474b471e8","8bbc25b37d24570dffba7209cb9e427a63c7eeed18412af5e57c450a37d6c059","27d3d1f171d4b7b86bdf1c352f22319c0915b17cfd919deb070bef13510a33a2","40a12a4c54a6564f2c1547a10bcafc9210fce809dc57d2a7815c918972f48895","a8f81f646b1bd12b6b0758d1f97cc6d26646d5ac72d92362cb3b340271589e8f","05d6d9fbf9c8fbb9fa36b4e0ad91292e57f6a9233dc407875d0fb06cdfd59bda","d08b909fffadfa1dece31aa587aca1c34782cafd9294c5c8b66cbab2aa897719","a49e93ed1861aa2493d363f26ee826ab71c7105b20c85cf8bd26bbb4e0b32cd6","9aca2738b7400d1d8c2d009ec6cbbaf3204e6413219edc962cea5bb6ef50db10","f23fc64dfc9c3e5b718eca7f1fdb0640d5c1f5c8993a599e66ce73ab33502036","89fe170d9a59f81cd9a9d95de3278f108ff91491810b2529cc0ffb502a57b6c0","0b4928041c807c01b33b1fa028236df635c52f7acff5a40f2c2d0d677b53428b","5ad2e5b8b17893d0eb1f11a1b6e8c03b17344be03a6a72a624cd38ab05fe4d5c","6a1e553079e654a1771463e9eeb98ea4f7bb4b6417a5237d4fdf9b546d49647f","7f11be86b9ac5c2cd5127cd9d40ccc7694c58868a3157692a153d452fc171525","6e3488ee1183ea915eb43f08aebc5f75e30be25aef1f678d1965324bdd7506e1","c71859d3170823cd9ff0e35c6ebaa44435bfac2737e31cb55d18477abc30013e","a318d8734523d9e750681e7b8e685ef817d4049c5612451f4e849da8b2b572a9","8b52dd8be86f44f871db89a6c1f77f7585688d53141ff55b6c5fac3eb67b1241","beae2d03867dde9fdf8da461c7e7e84da71612842422d4b482ab1c2a15fe6b12","080e7748d9754ccaea8debbc933552c7976c1ef588f9642a6f07e5a4d139d43b","51342c51a9090c0bc8bae60c5ec1a0f46d6d44db84392f12a8cd46e6d8a9f617","ae777307a0baeb9b5d7ba18e6a029a54eb0b612b1491591dcedb020cc8d36f97","d7ba738e316b7baed10ca49cc156b57b8c973b747bec6612e62a925e9f7f33a4","1d5292578fcf0329a43ef19fe2481d7d1cde75e75610019a7897c70dcfff0b31","459b3765e622008ed590474ae6b61ab55107a7b9529a28d05087a6fef51d7248","ce15f7fa66eb0ff73351db6a626a397eb441aa3572707c2a156897c646b2911d","d9c64d02dfe3a9c74da35fdbcc645cf4e8d4ca0f4162ec312de51474103ac3a7","826bb4db9c934b7ae0cb5edb9fde0a73a2d54df89fd8cb8abb0184e6f66727a0","8d6101c60d99ac57af23b947db35bedaa5580f2e7ae126c5b39841aa423cd242","28361b3472a80a6249aa6db3122c2ebe8a24be0310c071e64b79cd1cd3c2f297",{"version":"ea42bbde3bb6846358facaaef862f2dbe631e660e89a04d049fbc6f9a92c3dad","signature":"574c4d5d4db678ee8d03ff57c27df25ccf6a09bfe3d2bd07bd99aef9efe9300e"},{"version":"639313a61a44c4a3fe702c9505e29717fe3275ad7f0796f8ca04aa1b69b50ec6","signature":"e798e4b85a8176af72ebf4de53373de730ad0ef610194cd12613d85ae6ef57cc"},{"version":"0d7ca2aaf26c6c55ef0cf2a25fe5992379d2695593b114eac6dfe77e2eb512d0","signature":"b94ef8d72ca3bdad91fc2622c40fbdf2a59a21e69c8863efec0db39b10d4672e"},{"version":"75ceed524a8eaedf05d2b9ea1caa8ed173393792d9ea4b138b7beb56cac3b060","signature":"5ac73528981a07e0f28476c1b1003874279d06a59e5c56a54946df8b4501c9ac"},{"version":"d44674572f1ac03d45c824270c5edac02b48549f773868d18419d91975af34b7","signature":"4346529327eca7088d5999fd384d33699e7428f869ba00190bc89dfd5372d241"},{"version":"6103c423e2e720d88143a86f582f3bc878fa1698d7a51d0e05dc4eb9aec270a1","signature":"b300e90901e77abe7b78d5c2dcdaf2e8ea8baad2c5ffa551d34b2b5792ba69fa"},{"version":"b6ed1fa5dc94d5ebb3de31d71a7ae0a3f5df976a7e30ba08b9b22e7e91fb569c","signature":"3f7818f5259bb7228e9b36c3bd030fe3b0160c286016615b041aa2a0c4d4d389"},{"version":"65eb6215bc2860d76f81cb7835e070da69ac5d3cfb1ab6c06f3dcdee47100a0b","signature":"719f9c80215eb25deadba3ca43bb086a09b1deae5af4d8716242f76e4d13965c"},{"version":"eab51c655e6005b882a934bcce4baabcf673c260534575363f5eb6ddd5175a94","signature":"fddbd23518a396aa5eff40a8d4d3c895b8beb0865748968977ab43e00f00a286"},"4469fe9532a6399a9002343775f9a78ead5f0840d69797a51292c170a9240f51","b866405af1564f0690ea323f070c87509bfeb2ba8afa7c49c255dbe13c176bf8","ce648e4449eb59292b997226148647ce9ca22bc9ff9062959f5f1fe6bfe06cd8","ce3d7045ddbf0f8c968829a4e32d5064af66cba795f8c8490afec9eb677a4f45","6192bdb56ca09fde8176590331c36f3eec2fd5fb3ad7dd7401727efb2398d7fb","0810b73622b33b91f89f5d0f8b1fc0b92841e6b751a84d2c005508c563748d16","9a1b69540b9533e337c81d470724ebb054a15b994a11b759a969367b28e81368","854cbb22c44beb0fe44a46f5428521a27e8b9fb645e6ce803a5622ff44ec74ce","dd6776bc5480997847e4d3c495951de5f0401667e1880b6176f57584c49aa401","21f4110077118497558bb4ca8462c9cd1dfd391e6c1608bcac4b437a4ed77d7d","2278fcff8ca72dc791b3907ac363bd7370ec04e38653827c14c5dbd3fc99e335","ee7cd212dd2cfef9efd135a36a577fa35cb4af99f7e6fd3023cc9d2f7c6f438b","0bc016e4da8853d924fbfde9820db77121de75539641d02012232396b09e7dd6","6647e4b21b341f971ef92cbdbeaee6a42d77b291a43cdc73b970b2ad505bb912","2f9485d1b731e3d1d373c2a2a20e3ad41b55616b9fa13bf261d2a058cd23149b","d9df407e562a322f63c0cc3f1bcea9c1cbec38d0c92b3f49169291f22374cb6c","ba9d80c5b60b7708524491768da7d44a796042529ed945678f45356beb2504f9","7689fbecdcdb8f32296c94fe5cf5edef16a9db673d696a2aaa40ad54470e5965","2c2b0520a51bf2f420ec605fa5e327ea7d96732cc97a373c167e12ad71dda21f","5f15c8ce469d7e9da71f9ca502370c454eb29629d6c2e548fa722d00700dfb46","ce5251c882968a3ce8fc6c2e3b2c3b739a740f614eebf066b73e8ee7c5dc4f63","33652e868da0fef68b0f8622283a014fe66a21e409f4000e77778d9dc3edc8af","8f373e06438a141f82616c5e0b171e0bf613cc95aa1e6b8b41a8ae520dd2948e","5c9cf44d7fea3b0c9876102abc143967f2e7015dd0a89edcbe28a49906621206","6db8a395b3c5f988123adb6cc84b6410a82a060c4acde2491012b9b44b32b300","28d3e288a396ce5654f673fc8bc2330edb14e52dd33d75a3e999ecf68197de1a",{"version":"fb6f2007d60e8b519a2ef0c5a27026ddfe06418ae6261c4eb0cb670cca5e1bc2","impliedFormat":99},{"version":"a48f1b69ec0b94b16c7ece2cf6d6003cc8d0c329538117c1c364d8525a100850","impliedFormat":99},{"version":"cd5713ac354e4869fdf837e12d24d3ae14fd9d94a5bb2d340df63b899b74e6ca","impliedFormat":99},{"version":"56210599298d6eca6285eab99c7e9333d7e275c3a73a7f401b3055e8d55c67e8","impliedFormat":99},{"version":"2845576622e416da9871e1f3c788ba41dc4f24eb764362b10eceeb0dbaa67208","impliedFormat":99},{"version":"f0421e04e2a5238754cf444bf2a56fe7e7a94a08c14c1f9d063ff51c85825823","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"967b227fad024ba8a7c32127534089bce5adc800840b0288f44d41c4c849278e","impliedFormat":99},{"version":"ffd229492af3cb444c01e8e51a78dfdbed670940bac40dde083675d57d6984fc","impliedFormat":99},{"version":"57cdef8252cb041b4b646cc9e80dcb27d2180bb78fcf95761136d99be4079cb3","impliedFormat":99},{"version":"eb5fd8d19b0330da4dccb6cab3eae0304f056ac8fbd5bd9589ce48f0920bff78","impliedFormat":99},{"version":"db565a086622cbe616a950186dc90e82a74060864b9cd1d0f25285860daea9b4","impliedFormat":99},{"version":"71087395cc862f52662ab2629a0f3838f8f2aaf84eb40c97f4f4004f2fcbbed6","impliedFormat":99},{"version":"1e2e6cfcab26ae01d7f2dd1f78a1d25ddb7f3b2e27f50c9eb3b54ee206a87884","impliedFormat":99},{"version":"489ec23ef8dc0e869cf3d8d77a39ba83ab24e5e71362320f5662491b3dc5bd04","impliedFormat":99},{"version":"c93dd79fae382105510c69cc8eef95a96c8c43e50b47e16efa98a3f9e76f304b","impliedFormat":99},"4a5b020726455dd70acdf34ccc435273e6333cbb1a3ff08b6c451148c61b21fd","eb4d76417ff2ac49726b2efaf83e5b9924f7040151293d092e1ba38905479a02","3bae912eb95706a507e668cdfe378bb612c81b46323aae337689fabc00c3ae29","129aaa58f8b8ed74d8ef3ab03d3219f1b5a7b2902c4e111e080abdaf043686ef","c0a9cb9a3fe662b66cf598c1e2e6bc799b423699b81249bb62586acbc817b1e7","7d3bbcb2ef65e80202188d77d2e06f30c5d5d2603ca49cde35a6b298565247e9","f90ae41777b29281dcd4aa3fafb9d84c6b328860d639114a8c3fcf36beb23817","eadfe727983087acea4f17095671faba65ba5233acaed7213f140269d4528c9a","6bbe3b367d76debfa83ec26a13d0013f8dad891cddd8909a1fbdcdb719b064d9","9fec96292881b3ee00f9b34d757887223221db25d0fb534b521743e9be298d9f","fbd59a37ab9b1a3a21f2e968b539f91453e560507d9e92748f0623f7118306be","92523b7353d096bd2464e1611035b284803894aa952541021922567dfe9f15aa","49ca23a8e2de57d49da1b5b5aa2f0e0d341b4230a899efe1a6078d3779e2ea53",{"version":"be53d0833468d1d4de05770f4af2d3ec465b7ef5d5181b748997a02bf362ebd0","impliedFormat":99},{"version":"4920f950330f6a8a00a084beb7998de838a15cd54f5c774962b75614c15f8bed","impliedFormat":99},{"version":"e892ea4cf5fc5e5ab078f265c617efa3ab44a1cbd477f91fd29a27698c45eb77","impliedFormat":99},{"version":"6a33bd0416049803becacbdccd852c02f342eedce7dea12956d1176966269eeb","impliedFormat":99},{"version":"f74c6749e3944913d8002c1dd30523c520de426e9113d47b6730565318349154","impliedFormat":99},{"version":"ac5d5fd3358d3f7491400869278ea288df297b4fbc1ba035c7fd09c8df822358","impliedFormat":99},{"version":"0ce13f49afeb385ad05698a5420580c7381d758779b730c1992be7386578e1e7","impliedFormat":99},"8fa74a106f75c2eed4b65fa571e4e9b78e9a3a68f65b6c70261e87f7f47b931d","d82719b8e8a552f66dea370df85e00f9473537bb9c35dcb711d7f48cb5e707cd","a3c435d1e1eb110bb7382103c522bf44e9abb8b6883a493360fc5859db0aee10","1487f3b04d5e9ed9c5d823ff91bedbd7a8ce7a4c44b7ef16fa64a2d930a731e9","18dfdac2f4092e68e453e7a9da3d0e800e597e82fa567c49c2c7bb4c4dfb26ff","12c4bf2c3fdef984db6ed8fccd9f1917125370b4f7cdd666cc35f48035ed05ba","84cad7e5dd2e1e97f8e250d5aeaaf056ed9202576e5384442778e69409b2aa42","65bd5e7f352637b3307ba23162ea68867cf6c052391cf999b8e98b2aedc9a595","d142c30934430ee037b0d77e044154bb93ff161ce3e5ef518f7c6cba2de23de7","c860e0e1bc1bf6ebdbb9be67f041e0204d942108162734fd229faaf12d1684df","8a8b93d2de7a84340adafbb5a313177ad6fec43adc1ac42e90114b9d6ee436f0","e88b1ad9a264f7737426ead856c1e8f3b34b4e91eff699dd735111e29e9c5215","74444a88071267103d9cae3e535002739f62b01c5e237bcdac87ab516a9f36b1","c067e0d6be58f9726700144eea9b6af3893d6d42c88c559197820d8aa7986cdf","7ba70edc30a0a85ff1872c73010365db6b462f44f974d633b6b233c0be67724e","ac3bffa54cc21a82b5f8372987277d147d975fc7b004b936c6c08231fb8f45d7","a0811073f5126a6df8cb99375c7d22cd6605c232fa4228fe1d2d8078f6514c49","3e4f88b8722b92c05b67559e0b8071e510ec2ecd46b6c4d9305ea8301c471cb1","8fa661a2284927a5d18670234d884736049368c703d8765b133c7ed5280a3436","df2e00031cdb7691f95a591ab77455980fff4b2db857717e0e19977e64c7b53f","5d985e299b61e6f58576c2450fa071102e829c2d604f4d9316f89e1a9d24e398","7dbb8fc8cdaac240bf67355aa526e99a2625fa17e9c4f22bf984d52cdd8d56f5","7e5b0cd3206ce64f0bbd07849b6121c8c26ef416f973a2e303b08e28cfaba5a4","dfc253742eef060fb472b6f7a9c990575cd5b53cc4546435990c586f9f55df28","b6f42842961948badaf0ad572f50f5389b7573e231946548dc7c2396998088a7","1322514f75656a13ee1ab8c50e3c3cfe9ce4edaa7776858788b3cd7f1818bea4","0189214af93ec7eec2fbe86b9ca5c67d3859314cf0f96e8bae5e51702e28d432","71d91ebb72cf80852e8aa10a40eee80847c66893ede8e45a913e98fd345fb5a4","25f8be508ab9e521b85d9df33672449cdd0f789eee9cdf2fc22cf42daf15af76","766cf6a27d9dfd58d208b2809ab606b14d07ae282f537bbe05564bcf85d0b70a","636826ed92b0c92a4cfbc20c12e59444b7286749cfc06e612cc91628d538143d","cb1731f99dfa76a977adbd524c78cdec243f3eb76267758334d812b6f74310cd","4a5ffd00b7602ffa7693cacc3027a653d12c6687fe24c69a39c7ffcad1c5b21d","83b8234d5bd62ea4a4350f74775782c38c7cf0dc3be9ef14c1cce24b4532b326","d98d4d82583441e2d8871c6e48e23557323fcaed67a25ca9dc01484bc46c7815","e6b1152bf41120441046591fafde29fa4541a90574eb8161f90b3e1fe3ce254d","3f650d57b7d8ba2bb347f5ac60731f08651e7e0782397413161a835ab3a1c27c","01fcf0b95abb994925e7633d5a50f6df307ce3f4c5dd9ca0a2bba0bfbba62dba","be62ef802853a7adc675c9987e5087c1ab52506a0453f23f79151200ff918380","228059b7e6c322aa1893c7a95ed1dc886c2f458bfb26e36a3ece1c2eb4b1948d","c7075883245115c8eb342e420658ba52937ac58fb0a7302a14beea2c5a4a7e68","ab844e872f97c3a0d160ce0e186828e92f2b91211644a98b82fe073466161419","0ae04d4721bc3ca6737cf28b4a89bc7c74ca697cf8c0dcb307babd42e73aa4ec","049dc10bfd6969644f206abd0868fb7a56eba3230cdc7c727861484ad599f5d0","7b3c037277c7bba33558573a65b8b3c11fb45bd2b22b2767550fb9a8df293221","800a84893364dbbaef8be4aadde8c156d35a8b5dc331a6c7a243263d72a3be4f","2c4c891d1d1d65278128b3adb628dad75f54b825084e3dc1d61e74097c1548d4","6fe3f51581d8091cabdd303a728c4843ccd7c24e19a43b3817ce4d669e3db0c4","19b13935ced3257f7030a04a6ecda0695a85370135c79072e4e68f1be6c6cde0","c4d0a0c5eb2c26c69b1107889b93fe607e3c7c1919704084b1fd930173c2b096","0f25321f3b80a5e00bec05f019d61e7f7bd9df052a9a48ed386f368dcbddf4b1","6d7586b4bab86ab1ae07927ef071525536d4e28d0bd7d36f6bda6c26f350cb15","3eaf26aeb548ed10421d9dfff32ff84daaa2c74973cdb91204301078a83cc6c7","2272ddbbed954da483c36bdf70ee4293f1236787c7fa1993b6413080b0bcbc89","b9528c52bc3a819000b8d9217d74eacd61b5dffa8290f1f6c54fb960e353d772","070d8a36bdc28bb15e326fa21c58968e5b772d23b1b990bc42d29fae2ab3ac74","b40efaff0589a0ca6f86a81d96df9f9f9c0212877bcf61633cfdbc96e7a50d3f","5122087c8976957a14a56a52e46ed6143c8e74288335e054abda5da0af273701","5be6368fc2fd81e37d0da0f8ffcb475434fc2860c23a4ca0d866022cdbc8d2c0","62eecbdfe26e375c4a571591ed69fabf824a11100a50092e51593d019b674f73","9071016c5e81f5485c9a3e95eee40be6c0317c20239154d1b0122239e5a6f4e0","08795e20b61506d06fd2011f0b33bc01a6e1f26eab41ed8ec69d31e8152ef238","0e9896cc5931c6e3d32588c8ec6835c327cf38052ac9ca1ba427f5d78391d253","c8e22ce295aaee2bd454f51cea3a492e6e6f9dc3f71d303955a1e69a7506b5b3","fda842ea20198358c920cfac7171faa913bd09c8c44cde46aab81adb334dbbfb","662c763fe53d2f1fd147948bde566423af39743441750d7837506ea58f17b6d5","6f3cdace65030d6a46761c3ded571c4e471771334f46d4890eb6cacf83c67984","27a5e92d3464b0f02082ef4d51eddf24630af069c376ca8720c9f3b66a2f4add","88df74cfe80c9243169aba4e038fff405cd8df3f2993749e44f921241f106f85","6fea73592cec8964b11e9783e11c3b1c1639d376e8c19ebe61f93296f8896de8","0d0155d8b8d79857135f0656994ba844af7a37f9bb3c66e25ae277aeb3ae3f67","3a968d1febd0d96a2b22f74121794a33db334fd0e1cfe9251ce277de4b5714d4","020423b50d1e0aa1ad072886004ee4330b959d9ab20f0ca9f28864808197aad0","c71c46d0cf0440f91e2a1e98a7d06a9fcf1f3a80f7b69e48298819b64118fde7","5756fb5f730efc148304d6069d2a0d0f0694d0ad0e997d0ef53ce2787ffc15d4","db2dfbd2cba08da193f6a40c5e0acb1a1b88100bc6a9d25d7b032a0a4d397743","35480596a68b90153dc90439923b7e6aa980ed0c3c1ddd203fd2067e0a66e6ec","988d90349233a6e755ff7ef07995d0fdc791ecd9932b5aae67b5d6628d5e0785","970dc049529fb07b6657ab7ff17a603d4590b4b6f34ac53587c75ffeaacba114","805f87719ebf1d3f48eaad23c7cea5c3ecbcdd08d34d3825b1eafe3398d43bda","07aa99bc820ee254f53596d1db8f283ff2d4c48be213bc6157bfbb2649e4b1a0","2dce0ec1be6c4852fa7ea58ef0888ce0c0f10f3f536c54b947bd0d32fb10d098","4ae924bd3c7ca5cd73ad1660372b03cb00126ae2fe77c463b204e2797f28d3c6",{"version":"84bcc7c6b06f4d643a55dc63b56be0c81d990f8d549b66ea615c553268774dc3","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"4304f640f7cb4724ea82441accb7c7607fa7207541182470d625adda99b2900b","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},"05fd6dfdbff1e9350d6b28695d216375cbc1fbc9d071b8452793e97145efdbd2","a192a90b774c8792df313f71af4ea361525344aff8328ddc67906cb4c2ee9d22","619ed6e6694901d2eabba66afaaa44f38dfe49e5b642929c049ee874ff80810c","9db3328f0ad3114d0067c66e05ff444af1ec63a0e49ffb2ff07ec0f40fa2cff4","88a8d9d43e2dc99eaa36e27af3cf763e1bae6933727344f51582bab10996ef00","10c15742aeb38e6f8cb72318f4ed360400fbea4fe407ed65f83a367d624730a2","d7d1dca338165359198b4c8d9f15ed94e3a1d37c7debf42c17e3ed573d8c5e09","fcea956c43c2baa73cadaf588de7dae9990821b0d6b27a9a1d66bf1f79b85db3","995229b9945904f423e9bfb5be6eb269d33c488603c3ac48f9a3a7cbfc7d930a","53f39a5bb91f8e4fa20c3f4e8e9ba1d68c23d4715d4d0c10a9bf51f9e0c8f0f9","b338b963506ddd4c29cf3f5a89e59e4d539d715c1e7c8fa654e0f33f69b08f6f","470ce5e540fd4a799060c8262dcd99c8ae2a448068fb8d619190f500daf062ac","d91cda76716d752717ead9d42ba629a30897890b4df097486aec3bb9937c16d6","1e8f3b030608fed88dee8a1f806e785e67af6d894f6158a9ab65786cf7677bc3","eafa6950c8908cc9e8b24b6c6946fea2e9b5bac45337fffa248ebef715077e39","b8229dd387add1518dd3ecdd82e68f12b01cc3c9b14ad721ae6d2194f3dbe467","b071b0169c8661cd35b4fd4df969f0febeeb20155b509a87761f97dfa552e107","9805faf85e99148b4bd6c5a2a2686a105fd5866e1dfe9d14e44cf1c2e6dadec9","b24e73b29f2eb3c4a97ec412bbeaac6ecef4e22064edc5e66297e1a1f56febc9","0278030998029433811e1e2099c899f0bd6f8031c577b0ac14ae57834dd6a904","494733a225da9c4a65a98e83b0917a163ea92c3987360d35b84beebd0b8c6590","df90a78497082ae45365b2dabb7adaf88ecf6b0081ac221cad6695899fc19dd3","86b8ae515a60d85803a86a8cfbe4ae91a28d990635715991eec328bef708500a","4372dbf48082f6bea4883adefacd07184e396cf14a887077754c76b6d170832b","73dcf07a05ea1d7c2f0a60af30d86707faca44c41f2529c4b45612b91ffc7687","804b00d16aa40f4ee5603e3f30add96f6d3d4e06c841006be8832b148f40e066","03d7eafecd31716c9b3072d96bc167c23493beb06810dc9913ef91c41322491f","957dcae78ebc64252ca038f73f90908dd1ce74c18f5e6a1c6141daa10ea7514b","7cedcad44a368bec24e281e8ec7924ddf3eeabca9076f88cd1f7effa2119ba2f","3b0b4bf9fc2e55841f05e4848fb8648c3bec8fb093ef14a03cf45fd21bbe62ba","a5195ccfbf5fa6571979aefc0b074d610834cc243ed009e92667fec6dd7cee14","982b6d38664394a62e02cfca6f852d01797b330ac68a75c93bdd23fd9ebea1a4","d3b48b0f38857e31bc7b8ebad9d55dfb530175890bb84e1ee5625264f15ecc0a","74e0442194fad61b84f8320b7a5aac602bde3cf41d8685a322af0af86f467f12","9665442bd70f0ee75c5e68400bb312e62a210e24a24e5fcedc15095456c51033","b2ab882884fbbac86759aef507cc42bf39d415aa221398cf7100d36b9b69c570","80e0a999a8e79b83a4abb61b0399ea2f162a8ab6cd51bbd87c76124b872f73c3","bf184152f50687ffb24417e4096f2da45e745d43e658cef7ccee63aea897a5ca","a3e23db35170136dd90d37b998b872dbfc918d17113d675de79cbbc9d842854d","86c0368cea2ab70a96b89d992233e208ab3fac3b5cf87143bfccff83128b05dc","1acec4685eb70d18f2853f60ab580e74d983d6cf74e34d875b98bc455c5c0c0d","258cf73278b203c5f83a643cdfe2afb979670bf684973b587b47910c68197fae","219d42b81d0590799b294d49411ba4a08f3cc45aeb1bcb506182f82a00e76b2d","30f0648513781c59947ea092e83025c7776de6704e6895f4258832a63d5215ff","220243ab7e3cb601c5c579a4803cf709e6d5ac8c80c3bbe87fcb187e7dbdb695","a16a45015d875ada8cdbf2c9b90d52f9792add57b85a52e2ec1911f6729a9abe","4c66a002b4db6bf130f66214377f84876c09e2e3d604fe83f25efe41078f69c2","ce8684bd0af6aa1fba069db249665bc9749eacb798f43651957e1a83ea898dc4","c7577dd5239f24783a7f9c6bd70b32671014b71e6ec3a316505efd201cc30748","2b2d439102d965ac76a88c71c07f3be289b4839f3c1417673e5dc63bcfeb402f","20b73fb1219bb73a5765ebae77938416975fdc7248e8ca475ab966b6097038c6","d5a8f3efa173c8e94f60dac0a6ebfc181e2f6c0b4319974b30d12fde7090bcaf","5c9f9f933d50a7f26c860955efc45a8eadb7f7d561677c62f537130cc9ca0de8","b7d666160a33991b0d9a64608ecfbc2507871771ef7ddd761218989fa2b19307","ee1a38314319b5e23b6b338a8139136bb17d0295082816edb3621ba1d0151930","18ed70ebeca0df8ebf243f45351694465f2c924b9303eae17f8ce4bd1c2fbe73","b52931d1a235544839efcda59d38f1e020f1e0e0c21db827d5033d23c512b075","5b67434f8c1aee88ea61733a56ae201b0b1915841d80049c88a428e269598736","7caef7d56815a7c60ee5f2135082bdbbb2a84a05817c5ecc5ab36232f5504f2d","a77a5c5b7f9fd417a272a2f0605235f3287e70814687021ecfd0a3021be9afc1","eb7fa7f10c8fa3046a70afcc62e60463ad5bcbbad51a34038aaf52e203272f57","ea706983d85b650deb29fe6569b165046a5393b169dd69df930dcc8009b0e807","0e1214488a400d3ae4d3a480073a97659096c5824c42041e3d0f147995d2416e","efb766d40ef9f7c96a371f74bb144217f7698764ab830ff9b471dad660bcedb4","eccb7546195f806e03a134cb3ba47f6fc806158954b472228598486ed1b025e6","d9b855a3ffd56c02cc26df126b6d50ff234b8f2f6d868a6ca1dde28af023a235","ef4eb1f580e98c80e8d8b6b732cb5fbb7f0b5bda0c9746c42cde55bb4fd13c74","47bb7935689a9dc50952d3d1e5fd5bde0b16cfb78c2ea5d79548c39bb4d88304","26bd395cd654f5abdcba2f26d1bba5c9e2b7585c304727d002461aff251883f4","77d60f57aa7e9fb624e93991b886d4ffdd2a06b41ed0b957335aae8536243ee4","9552eeeda871759a8a01f7577b7b2cbcbecc9fc5cccca51e7bcaa5b3ef896502","5ff78ec4a89d63982b89fd59471322c5e91eb61f1b70aa71a5f28f5d27a18de8",{"version":"c1de4c96b37f6cc5b1726f1307f282f0056919767f8b04a079c661ed4201d6dd","signature":"b58711712c04c16a0ec81499741cca3a22a9912a1fa44953d8af3b34cf4eb9eb"},{"version":"2eb7ab707fc5e957d649b33a1cba2e51aeef3f5b5859e62726719789104664fe","signature":"500bf26432a59cde7ba72d50ddfbe8473e0b6132cad352f31e298058157bf8ed"},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"3b0a56d056d81a011e484b9c05d5e430711aaecd561a788bad1d0498aad782c7","impliedFormat":99},{"version":"9443967db823b66d1682be7fc66392be7c7924e10c3e54900f456341e94591a6","impliedFormat":99},{"version":"424f71d1fae96ac2e878af92345bb87bea1d29f757228fbc190133b305643f2c","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"82179358c2d9d7347f1602dc9300039a2250e483137b38ebf31d4d2e5519c181","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"605450898939e8abce51e8085a41b60640278337a969c33cd6b169e7c4f9c3f2","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"ed9bb55ddcbebd5cb3eee991f57ff21438546ee40ee1c310281bd12a6c7cf65b","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"65959d0fae226419e710d132c492e9fc5c52af6e1e925b307ba476694896107c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[60,[102,110],373,374,423],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[169,1],[168,2],[170,3],[167,4],[172,5],[166,6],[150,7],[148,8],[147,9],[152,10],[149,11],[146,8],[145,9],[151,11],[144,12],[142,13],[404,14],[405,15],[412,16],[413,17],[384,18],[383,19],[406,18],[391,20],[393,21],[392,22],[400,23],[382,24],[376,25],[378,26],[380,27],[381,25],[300,28],[259,29],[258,30],[263,31],[298,32],[295,33],[297,34],[260,33],[261,35],[265,35],[264,36],[262,37],[296,38],[294,33],[299,39],[266,40],[271,33],[273,33],[268,33],[269,40],[275,33],[276,41],[267,33],[272,33],[274,33],[270,33],[290,42],[289,33],[291,43],[285,33],[287,33],[286,33],[282,33],[288,44],[283,33],[284,45],[277,33],[278,33],[279,33],[280,33],[281,33],[419,46],[421,47],[420,48],[418,49],[387,50],[390,51],[388,50],[389,52],[408,53],[398,54],[394,55],[395,20],[415,56],[409,57],[396,58],[414,59],[397,60],[422,61],[416,62],[242,63],[315,64],[316,63],[246,65],[317,63],[318,65],[319,66],[311,63],[348,67],[320,63],[322,68],[323,69],[321,63],[245,63],[313,70],[337,71],[312,63],[338,63],[339,72],[303,73],[340,74],[341,75],[314,63],[342,76],[304,63],[305,63],[307,77],[306,78],[309,79],[343,80],[308,65],[344,81],[345,82],[346,63],[347,83],[423,84],[110,85],[102,63],[374,86],[373,87],[103,88],[104,88],[105,89],[106,88],[107,88],[108,88],[109,90],[133,91],[203,92],[114,93],[115,94],[116,93],[136,95],[120,93],[135,96],[177,97],[176,98],[204,99],[122,100],[123,101],[134,102],[124,103],[128,104],[127,105],[129,106],[113,93],[126,107],[125,108],[132,109],[324,63],[325,63],[326,63],[327,63],[328,63],[329,63],[330,110],[336,111],[331,63],[332,63],[333,63],[334,63],[335,63],[63,112],[64,113],[62,114],[65,113],[67,113],[69,115],[80,116],[70,113],[71,113],[73,113],[74,115],[75,117],[76,115],[77,113],[78,113],[79,113],[253,63],[243,63],[247,63],[248,63],[244,118],[302,119],[250,63],[255,63],[301,120],[251,63],[252,63],[165,121],[175,122],[174,123],[173,121],[355,124],[358,125],[352,126],[359,127],[357,128],[354,129],[353,130],[356,131],[351,132],[216,133],[214,63],[221,134],[222,135],[217,136],[218,137],[219,138],[220,139],[215,136],[366,75],[111,63],[178,140],[179,140],[180,140],[181,140],[182,140],[183,140],[185,140],[184,140],[186,140],[187,82],[188,140],[189,140],[190,140],[191,140],[192,140],[195,141],[213,142],[237,143],[234,144],[236,145],[235,75],[238,146],[194,75],[367,75],[372,147],[239,63],[369,63],[233,148],[241,149],[371,150],[100,63],[101,151],[196,63],[197,140],[199,152],[198,140],[200,140],[201,140],[202,140],[205,153],[212,154],[207,63],[208,82],[209,149],[210,155],[211,156],[230,157],[223,65],[232,158],[226,63],[224,63],[225,63],[227,159],[228,159],[360,63],[365,160],[362,149],[363,161],[364,140],[155,162],[156,163],[154,163],[164,164],[159,163],[160,163],[161,163],[162,163],[163,165],[84,166],[89,167],[85,168],[95,169],[97,63],[90,63],[98,170],[99,171],[87,172],[86,173],[93,174],[92,175],[96,176]],"latestChangedDtsFile":"./__tests__/errors.test-d.d.ts","version":"6.0.3"}
|
package/dist/debug-draw.d.ts
CHANGED
|
@@ -27,7 +27,6 @@ export declare class DebugDraw implements DebugDrawInterface {
|
|
|
27
27
|
constructor(device: RhiDevice, pipeline: RenderPipeline, vbo: Buffer, uniformBuffer: Buffer, bindGroup: BindGroup, initialCapacity: number, maxCapacity: number);
|
|
28
28
|
/** @internal CPU staging vertex count (exposed for unit tests). */
|
|
29
29
|
get _stagingVertexCount(): number;
|
|
30
|
-
hasPendingWork(): boolean;
|
|
31
30
|
/** @internal Vertex count passed to the most recent non-empty draw call. */
|
|
32
31
|
get _lastFlushVertexCount(): number;
|
|
33
32
|
/** @internal Current GPU vertex buffer capacity in vertex count. */
|
package/dist/debug-draw.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-draw.d.ts","sourceRoot":"","sources":["../src/debug-draw.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAa/C,OAAO,KAAK,EAAE,SAAS,IAAI,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA6DjF,qBAAa,SAAU,YAAW,kBAAkB;IAClD,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,sBAAsB,CAAK;IAEnC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,MAAM,CAAuB;IAErC,OAAO,CAAC,WAAW,CAA+B;IAElD,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,OAAO,CAAC,YAAY,CAA0B;IAE9C,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,OAAO,CAAC,WAAW,CAAS;IAQ5B,OAAO,CAAC,mBAAmB,CAAS;IAGpC,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAA4B;gBAG3C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM;IAiBrB,mEAAmE;IACnE,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,
|
|
1
|
+
{"version":3,"file":"debug-draw.d.ts","sourceRoot":"","sources":["../src/debug-draw.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { INITIAL_VERTEX_CAPACITY, MAX_VERTEX_CAPACITY, VERTEX_STRIDE_BYTES } from './constants';
|
|
2
2
|
export { createDebugDraw, DebugDraw } from './debug-draw';
|
|
3
3
|
export type { DebugDrawError, DebugDrawErrorCode, DebugDrawErrorDetail, } from './errors';
|
|
4
|
+
export { createDebugDrawRenderFeaturePlan, type DebugDrawRenderFeatureInput, } from './render-feature';
|
|
4
5
|
export type { CreateShaderModule, DebugDrawOptions, DepthMode } from './types';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gCAAgC,EAChC,KAAK,2BAA2B,GACjC,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -400,9 +400,6 @@ var DebugDraw = class {
|
|
|
400
400
|
get _stagingVertexCount() {
|
|
401
401
|
return this.stagingLen;
|
|
402
402
|
}
|
|
403
|
-
hasPendingWork() {
|
|
404
|
-
return !this.isDestroyed && this.stagingLen > 0;
|
|
405
|
-
}
|
|
406
403
|
/** @internal Vertex count passed to the most recent non-empty draw call. */
|
|
407
404
|
get _lastFlushVertexCount() {
|
|
408
405
|
return this.lastFlushedVertexCount;
|
|
@@ -830,6 +827,67 @@ async function createDebugDraw(opts) {
|
|
|
830
827
|
return ok(new DebugDraw(device, pipeline, vbo, uniformBuf, bgResult.value, initialCap, maxCap));
|
|
831
828
|
}
|
|
832
829
|
|
|
833
|
-
|
|
830
|
+
// src/render-feature.ts
|
|
831
|
+
function createDebugDrawRenderFeaturePlan(input) {
|
|
832
|
+
const program = "debug-draw.program";
|
|
833
|
+
const bindings = "debug-draw.bindings";
|
|
834
|
+
const vertices = "debug-draw.vertices";
|
|
835
|
+
const vertexData = "debug-draw.vertex-data";
|
|
836
|
+
return {
|
|
837
|
+
resources: [
|
|
838
|
+
{
|
|
839
|
+
kind: "graphics-program",
|
|
840
|
+
name: program,
|
|
841
|
+
program: {
|
|
842
|
+
shader: "forgeax::debug-draw.line",
|
|
843
|
+
vertexLayout: "debug-draw-line",
|
|
844
|
+
colorFormats: [input.colorFormat ?? "bgra8unorm"],
|
|
845
|
+
topology: "line-list"
|
|
846
|
+
}
|
|
847
|
+
},
|
|
848
|
+
{
|
|
849
|
+
kind: "graphics-bindings",
|
|
850
|
+
name: bindings,
|
|
851
|
+
program,
|
|
852
|
+
values: {
|
|
853
|
+
viewProjection: input.viewProjection ?? "debug-draw.view-projection"
|
|
854
|
+
}
|
|
855
|
+
},
|
|
856
|
+
{
|
|
857
|
+
kind: "buffer",
|
|
858
|
+
name: vertices,
|
|
859
|
+
size: Math.max(1, input.vertexCapacity) * 16,
|
|
860
|
+
usage: ["vertex"]
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
kind: "vertex-data",
|
|
864
|
+
name: vertexData,
|
|
865
|
+
layout: "debug-draw-line",
|
|
866
|
+
buffer: vertices
|
|
867
|
+
}
|
|
868
|
+
],
|
|
869
|
+
passes: [
|
|
870
|
+
{
|
|
871
|
+
kind: "raster",
|
|
872
|
+
name: "debug-draw.raster",
|
|
873
|
+
colorAttachments: [{ target: input.target, loadOp: "load", storeOp: "store" }],
|
|
874
|
+
draws: [
|
|
875
|
+
{
|
|
876
|
+
program,
|
|
877
|
+
bindings: [bindings],
|
|
878
|
+
vertexData: [{ slot: 0, resource: vertexData }],
|
|
879
|
+
draw: {
|
|
880
|
+
kind: "draw",
|
|
881
|
+
vertexCount: Math.max(0, input.vertexCount ?? input.vertexCapacity),
|
|
882
|
+
instanceCount: 1
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
]
|
|
886
|
+
}
|
|
887
|
+
]
|
|
888
|
+
};
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
export { DebugDraw, INITIAL_VERTEX_CAPACITY, MAX_VERTEX_CAPACITY, VERTEX_STRIDE_BYTES, createDebugDraw, createDebugDrawRenderFeaturePlan };
|
|
834
892
|
//# sourceMappingURL=index.mjs.map
|
|
835
893
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/errors.ts","../src/shapes/aabb.ts","../src/shapes/arrow.ts","../src/shapes/axes.ts","../src/shapes/frustum.ts","../src/shapes/line.ts","../src/shapes/sphere.ts","../src/debug-draw.ts"],"names":["a","at"],"mappings":"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","file":"index.mjs","sourcesContent":["// @forgeax/engine-debug-draw -- constants SSOT (feat-20260615-debug-draw M1 / w3)\n//\n// Three configurable tunables exported for unit-test consumption.\n// All values are per plan-strategy D-4 / D-7 / D-9.\n\n/** Initial CPU staging vertex capacity before any resize. */\nexport const INITIAL_VERTEX_CAPACITY = 1024;\n\n/** Hard upper bound on vertex count per flush; excess vertices are truncated with a warning. */\nexport const MAX_VERTEX_CAPACITY = 1_000_000;\n\n/** Vertex stride in bytes: 12 B position (float32x3) + 4 B color (unorm8x4). */\nexport const VERTEX_STRIDE_BYTES = 16;\n","// @forgeax/engine-debug-draw -- error model SSOT (feat-20260615-debug-draw M1 / w2)\n//\n// Closed union DebugDrawErrorCode, discriminated detail union,\n// and structured DebugDrawError carrying .code / .expected / .hint / .detail.\n//\n// Decision anchors:\n// - plan-strategy D-11: destroy-then-flush returns Result.err, shape calls no-op + warn once\n// - requirements sec 3.6: error code closed union 4 members\n// - AGENTS.md Error model: structured errors with .expected / .hint, never throw\n// - architecture-principles #5 Fail Fast: validate at entry, non-conforming data never flows downstream\n\nimport { err, type Result } from '@forgeax/engine-types';\n\n/** {@link pipeline-create-failed} payload: carries the RHI-level error detail. */\nexport interface PipelineCreateFailedDetail {\n readonly code: 'pipeline-create-failed';\n readonly rhiError: string;\n}\n\n/** {@link buffer-allocation-failed} payload: carries the RHI-level error detail. */\nexport interface BufferAllocationFailedDetail {\n readonly code: 'buffer-allocation-failed';\n readonly rhiError: string;\n}\n\n/** {@link flushed-after-destroy} payload: carries the instance identifier. */\nexport interface FlushedAfterDestroyDetail {\n readonly code: 'flushed-after-destroy';\n}\n\n/** {@link viewProj-required} payload: carries the missing parameter name. */\nexport interface ViewProjRequiredDetail {\n readonly code: 'viewProj-required';\n}\n\ninterface DebugDrawErrorDetailByCode {\n 'pipeline-create-failed': PipelineCreateFailedDetail;\n 'buffer-allocation-failed': BufferAllocationFailedDetail;\n 'flushed-after-destroy': FlushedAfterDestroyDetail;\n 'viewProj-required': ViewProjRequiredDetail;\n}\n\n/**\n * Closed {@link DebugDrawErrorCode} union.\n * Exhaustive `switch (err.code)` needs no default fallback.\n *\n * | code | trigger |\n * |:--|:--|\n * | `'pipeline-create-failed'` | `device.createRenderPipeline(...)` rejected or threw |\n * | `'buffer-allocation-failed'` | `device.createBuffer(...)` for GPU vbo allocation failed |\n * | `'flushed-after-destroy'` | `flush()` called on an already-destroyed DebugDraw instance |\n * | `'viewProj-required'` | `flush()` called with `undefined` or missing `viewProj` |\n */\nexport type DebugDrawErrorCode = keyof DebugDrawErrorDetailByCode;\n\n/**\n * Discriminated detail union for {@link DebugDrawError}, narrowed per\n * `DebugDrawError.code`. AI users obtain the concrete shape via\n * `switch (err.code)` without a fallback `as` cast.\n */\nexport type DebugDrawErrorDetail = DebugDrawErrorDetailByCode[DebugDrawErrorCode];\n\n/**\n * Structured debug-draw error -- four-field surface\n * (`.code` / `.expected` / `.hint` / `.detail`).\n *\n * AI users consume the structured triple by fields, not by parsing `.message`.\n */\ntype DebugDrawErrorVariant<C extends DebugDrawErrorCode> = {\n readonly code: C;\n readonly expected: string;\n readonly hint: string;\n readonly detail: DebugDrawErrorDetailByCode[C];\n};\n\nexport type DebugDrawError = {\n [C in DebugDrawErrorCode]: DebugDrawErrorVariant<C>;\n}[DebugDrawErrorCode];\n\nfunction makeError<C extends DebugDrawErrorCode>(\n code: C,\n expected: string,\n hint: string,\n detail: DebugDrawErrorDetailByCode[C],\n): DebugDrawErrorVariant<C> {\n const error = {\n code,\n expected,\n hint,\n detail,\n get message(): string {\n return `[${code}] ${hint}`;\n },\n };\n return error;\n}\n\n/** Result-returning helpers consuming engine-types `Result<T, E>` + `err()`. */\n\nexport function pipelineCreateFailed(rhiError: string): Result<never, DebugDrawError> {\n return err(\n makeError(\n 'pipeline-create-failed',\n 'PSO creation should succeed with valid WGSL + layout',\n `Pipeline creation failed: ${rhiError}. Check WGSL syntax, vertex layout, and depth-stencil state.`,\n { code: 'pipeline-create-failed', rhiError },\n ),\n );\n}\n\nexport function bufferAllocationFailed(rhiError: string): Result<never, DebugDrawError> {\n return err(\n makeError(\n 'buffer-allocation-failed',\n 'GPU vertex buffer allocation should succeed for the requested byte size',\n `Buffer allocation failed: ${rhiError}. Check available device memory and buffer usage flags.`,\n { code: 'buffer-allocation-failed', rhiError },\n ),\n );\n}\n\nexport function flushedAfterDestroy(): Result<never, DebugDrawError> {\n return err(\n makeError(\n 'flushed-after-destroy',\n 'DebugDraw instance is alive and not yet destroyed',\n 'DebugDraw was destroyed; create a new instance via createDebugDraw().',\n { code: 'flushed-after-destroy' },\n ),\n );\n}\n\nexport function viewProjRequired(): Result<never, DebugDrawError> {\n return err(\n makeError(\n 'viewProj-required',\n 'viewProj must be provided as a Mat4 for flush to transform vertices',\n 'Pass a viewProj Mat4 to flush(encoder, view, viewProj).',\n { code: 'viewProj-required' },\n ),\n );\n}\n","// @forgeax/engine-debug-draw -- aabb shape geometry (M3 / w20)\n//\n// Pure geometry decomposition: 12 edges (24 vertices) from 8 corners.\n// No staging / GPU concerns; consumed by DebugDraw class.\n\nimport type { Vec3 } from '@forgeax/engine-math';\n\nfunction a(v: { readonly [index: number]: number }, i: number): number {\n return v[i] as number;\n}\n\n/** 24 vertices forming a wireframe axis-aligned bounding box (12 edges). */\nexport function aabbVertices(min: Vec3, max: Vec3): [number, number, number][] {\n const mnx = a(min, 0);\n const mny = a(min, 1);\n const mnz = a(min, 2);\n const mxx = a(max, 0);\n const mxy = a(max, 1);\n const mxz = a(max, 2);\n\n // 8 corners: x in {mnx, mxx}, y in {mny, mxy}, z in {mnz, mxz}\n const c: [number, number, number][] = [\n [mnx, mny, mnz], // 0\n [mxx, mny, mnz], // 1\n [mnx, mxy, mnz], // 2\n [mxx, mxy, mnz], // 3\n [mnx, mny, mxz], // 4\n [mxx, mny, mxz], // 5\n [mnx, mxy, mxz], // 6\n [mxx, mxy, mxz], // 7\n ];\n\n // 12 edges\n const edges: [number, number][] = [\n [0, 1],\n [0, 2],\n [1, 3],\n [2, 3],\n [4, 5],\n [4, 6],\n [5, 7],\n [6, 7],\n [0, 4],\n [1, 5],\n [2, 6],\n [3, 7],\n ];\n\n const result: [number, number, number][] = [];\n for (const [ai, bi] of edges) {\n const ac = c[ai] as [number, number, number];\n const bc = c[bi] as [number, number, number];\n result.push([ac[0], ac[1], ac[2]]);\n result.push([bc[0], bc[1], bc[2]]);\n }\n return result;\n}\n","// @forgeax/engine-debug-draw -- arrow shape geometry (solo round 20260713-222551)\n//\n// Pure geometry decomposition: an arrow = 1 body segment (start->end) + 4 arrowhead\n// segments from `end` back toward 4 canonical tip vectors, rotated so local +X aligns\n// with the arrow's direction. Mirrors Bevy `bevy_gizmos::arrows` ArrowBuilder::drop.\n// No staging / GPU concerns; consumed by the DebugDraw class.\n\nimport type { Vec3Like } from '@forgeax/engine-math';\nimport { quat, vec3 } from '@forgeax/engine-math';\n\n// The 4 arrowhead tip directions in the arrow's local frame (arrow points toward +X),\n// matching Bevy's tips array. Normalized when scaled to tipLength.\nconst TIP_DIRS: ReadonlyArray<readonly [number, number, number]> = [\n [-1, 1, 0],\n [-1, 0, 1],\n [-1, -1, 0],\n [-1, 0, -1],\n];\n\n// Plain Vec3Like (not a branded Vec3) — `quat.fromUnitVectors` accepts Vec3Like, so no\n// cross-boundary brand cast is needed (brand-cast lint: casts live only in math factories).\nconst UNIT_X: Vec3Like = [1, 0, 0];\n\n/**\n * Line-segment vertices for an arrow from `start` to `end`.\n * Returns 10 vertices = 5 segments (1 body + 4 arrowhead), each a [x,y,z] pair\n * consumed pairwise by the line-list renderer.\n *\n * `tipLength` defaults to `|end - start| / 10` (Bevy's default arrowhead length).\n * A degenerate (zero-length) arrow emits only the body segment (no orientable head).\n */\nexport function arrowVertices(\n start: Vec3Like,\n end: Vec3Like,\n tipLength?: number,\n): [number, number, number][] {\n const sx = start[0] as number;\n const sy = start[1] as number;\n const sz = start[2] as number;\n const ex = end[0] as number;\n const ey = end[1] as number;\n const ez = end[2] as number;\n\n const verts: [number, number, number][] = [\n [sx, sy, sz],\n [ex, ey, ez],\n ];\n\n const dir = vec3.create();\n vec3.set(dir, ex - sx, ey - sy, ez - sz);\n const len = vec3.length(dir);\n if (len < 1e-6) return verts; // degenerate: no orientable head\n\n const headLen = tipLength ?? len / 10;\n vec3.normalize(dir, dir);\n\n // Rotate the local-frame tip vectors so +X faces the arrow direction.\n const rot = quat.fromUnitVectors(quat.create(), UNIT_X, dir);\n const tipLocal = vec3.create();\n const tipWorld = vec3.create();\n for (const [tx, ty, tz] of TIP_DIRS) {\n vec3.set(tipLocal, tx, ty, tz);\n vec3.normalize(tipLocal, tipLocal);\n vec3.scale(tipLocal, tipLocal, headLen);\n quat.transformVec3(tipWorld, rot, tipLocal);\n // Head segment: from the arrow tip (end) back out to the rotated tip vector.\n verts.push([ex, ey, ez]);\n verts.push([\n ex + (tipWorld[0] as number),\n ey + (tipWorld[1] as number),\n ez + (tipWorld[2] as number),\n ]);\n }\n return verts;\n}\n","// @forgeax/engine-debug-draw -- axes gizmo geometry (solo round 20260713-222551)\n//\n// Draws a transform's local coordinate frame as three arrows (X / Y / Z), matching\n// Bevy `gizmos.axes(transform, base_length)`. Each axis endpoint is\n// `translation + base_length * column_i` of the world matrix — i.e. Bevy's\n// `transform.transform_point(base_length * Vec3::AXIS)` (the world-space direction the\n// local axis points, scale included). Colors follow the universal convention:\n// X = red, Y = green, Z = blue. No staging / GPU concerns; consumed by the DebugDraw class.\n\nimport type { Mat4, Vec3Like } from '@forgeax/engine-math';\nimport { arrowVertices } from './arrow';\n\n/** X=red, Y=green, Z=blue RGBA (Bevy's axes convention). */\nexport const AXES_COLORS: readonly [\n readonly [number, number, number, number],\n readonly [number, number, number, number],\n readonly [number, number, number, number],\n] = [\n [1, 0, 0, 1],\n [0, 1, 0, 1],\n [0, 0, 1, 1],\n];\n\n/**\n * The three axis arrows for a world transform, as `{ vertices, color }` per axis\n * (X, Y, Z). The caller (DebugDraw.axes) pushes each with its color. `worldMat` is a\n * 16-float column-major mat4; the arrows originate at its translation (col 3) and point\n * `length` along its local X / Y / Z (columns 0 / 1 / 2, scale included, matching Bevy).\n */\nexport function axesArrowSets(\n worldMat: Mat4,\n length: number,\n): { vertices: [number, number, number][]; color: readonly [number, number, number, number] }[] {\n const m = worldMat as unknown as ArrayLike<number>;\n const ox = m[12] as number;\n const oy = m[13] as number;\n const oz = m[14] as number;\n // Plain Vec3Like tuples (not branded Vec3) — arrowVertices accepts Vec3Like, so no\n // cross-boundary brand cast is needed (brand-cast lint: casts live only in math factories).\n const origin: Vec3Like = [ox, oy, oz];\n\n // Columns 0/1/2 are the local X/Y/Z basis in world space (rotation * scale).\n const cols: ReadonlyArray<readonly [number, number, number]> = [\n [m[0] as number, m[1] as number, m[2] as number],\n [m[4] as number, m[5] as number, m[6] as number],\n [m[8] as number, m[9] as number, m[10] as number],\n ];\n\n const sets: {\n vertices: [number, number, number][];\n color: readonly [number, number, number, number];\n }[] = [];\n for (let i = 0; i < 3; i++) {\n const c = cols[i] as readonly [number, number, number];\n const color = AXES_COLORS[i] as readonly [number, number, number, number];\n const end: Vec3Like = [ox + c[0] * length, oy + c[1] * length, oz + c[2] * length];\n sets.push({ vertices: arrowVertices(origin, end), color });\n }\n return sets;\n}\n","// @forgeax/engine-debug-draw -- frustum shape geometry (M3 / w21)\n//\n// Pure geometry decomposition: invert viewProj matrix, transform 8 NDC\n// corners to world space, draw 12 edges (24 vertices).\n// Returns null when the viewProj is near-singular (determinant ~ 0).\n// No staging / GPU concerns; consumed by DebugDraw class.\n\nimport { type Mat4, mat4 } from '@forgeax/engine-math';\n\nfunction at(m: { readonly [index: number]: number }, i: number): number {\n return m[i] as number;\n}\n\n/**\n * Generate 24 vertices (12 edges) for a frustum wireframe from a view-projection matrix.\n * Returns null if the matrix is near-singular (|det| < 1e-10).\n */\nexport function frustumVertices(viewProj: Mat4): [number, number, number][] | null {\n const m = viewProj;\n\n // 4x4 determinant\n const det =\n at(m, 0) *\n (at(m, 5) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 9) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) +\n at(m, 13) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7))) -\n at(m, 4) *\n (at(m, 1) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 9) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 13) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3))) +\n at(m, 8) *\n (at(m, 1) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) -\n at(m, 5) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 13) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))) -\n at(m, 12) *\n (at(m, 1) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7)) -\n at(m, 5) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3)) +\n at(m, 9) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3)));\n\n if (Math.abs(det) < 1e-10) {\n return null;\n }\n\n // 4x4 inverse via cofactor expansion\n const invDet = 1.0 / det;\n const inv = mat4.create();\n inv[0] =\n (at(m, 5) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 9) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) +\n at(m, 13) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7))) *\n invDet;\n inv[1] =\n -(\n at(m, 1) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 9) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 13) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3))\n ) * invDet;\n inv[2] =\n (at(m, 1) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) -\n at(m, 5) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 13) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))) *\n invDet;\n inv[3] =\n -(\n at(m, 1) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7)) -\n at(m, 5) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3)) +\n at(m, 9) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))\n ) * invDet;\n inv[4] =\n -(\n at(m, 4) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 8) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) +\n at(m, 12) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7))\n ) * invDet;\n inv[5] =\n (at(m, 0) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 8) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 12) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3))) *\n invDet;\n inv[6] =\n -(\n at(m, 0) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) -\n at(m, 4) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 12) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))\n ) * invDet;\n inv[7] =\n (at(m, 0) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7)) -\n at(m, 4) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3)) +\n at(m, 8) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))) *\n invDet;\n inv[8] =\n (at(m, 4) * (at(m, 9) * at(m, 15) - at(m, 13) * at(m, 11)) -\n at(m, 8) * (at(m, 5) * at(m, 15) - at(m, 13) * at(m, 7)) +\n at(m, 12) * (at(m, 5) * at(m, 11) - at(m, 9) * at(m, 7))) *\n invDet;\n inv[9] =\n -(\n at(m, 0) * (at(m, 9) * at(m, 15) - at(m, 13) * at(m, 11)) -\n at(m, 8) * (at(m, 1) * at(m, 15) - at(m, 13) * at(m, 3)) +\n at(m, 12) * (at(m, 1) * at(m, 11) - at(m, 9) * at(m, 3))\n ) * invDet;\n inv[10] =\n (at(m, 0) * (at(m, 5) * at(m, 15) - at(m, 13) * at(m, 7)) -\n at(m, 4) * (at(m, 1) * at(m, 15) - at(m, 13) * at(m, 3)) +\n at(m, 12) * (at(m, 1) * at(m, 7) - at(m, 5) * at(m, 3))) *\n invDet;\n inv[11] =\n -(\n at(m, 0) * (at(m, 5) * at(m, 11) - at(m, 9) * at(m, 7)) -\n at(m, 4) * (at(m, 1) * at(m, 11) - at(m, 9) * at(m, 3)) +\n at(m, 8) * (at(m, 1) * at(m, 7) - at(m, 5) * at(m, 3))\n ) * invDet;\n inv[12] =\n -(\n at(m, 4) * (at(m, 9) * at(m, 14) - at(m, 13) * at(m, 10)) -\n at(m, 8) * (at(m, 5) * at(m, 14) - at(m, 13) * at(m, 6)) +\n at(m, 12) * (at(m, 5) * at(m, 10) - at(m, 9) * at(m, 6))\n ) * invDet;\n inv[13] =\n (at(m, 0) * (at(m, 9) * at(m, 14) - at(m, 13) * at(m, 10)) -\n at(m, 8) * (at(m, 1) * at(m, 14) - at(m, 13) * at(m, 2)) +\n at(m, 12) * (at(m, 1) * at(m, 10) - at(m, 9) * at(m, 2))) *\n invDet;\n inv[14] =\n -(\n at(m, 0) * (at(m, 5) * at(m, 14) - at(m, 13) * at(m, 6)) -\n at(m, 4) * (at(m, 1) * at(m, 14) - at(m, 13) * at(m, 2)) +\n at(m, 12) * (at(m, 1) * at(m, 6) - at(m, 5) * at(m, 2))\n ) * invDet;\n inv[15] =\n (at(m, 0) * (at(m, 5) * at(m, 10) - at(m, 9) * at(m, 6)) -\n at(m, 4) * (at(m, 1) * at(m, 10) - at(m, 9) * at(m, 2)) +\n at(m, 8) * (at(m, 1) * at(m, 6) - at(m, 5) * at(m, 2))) *\n invDet;\n\n // 8 NDC corners: x,y in {-1,1}, z in [0,1] (WebGPU NDC, matches mat4.perspective).\n // Near plane = z=0, far plane = z=1.\n const ndc: [number, number, number, number][] = [\n [-1, -1, 0, 1],\n [1, -1, 0, 1],\n [-1, 1, 0, 1],\n [1, 1, 0, 1],\n [-1, -1, 1, 1],\n [1, -1, 1, 1],\n [-1, 1, 1, 1],\n [1, 1, 1, 1],\n ];\n\n const corners: [number, number, number][] = ndc.map(([nx, ny, nz, nw]) => {\n const cx = at(inv, 0) * nx + at(inv, 4) * ny + at(inv, 8) * nz + at(inv, 12) * nw;\n const cy = at(inv, 1) * nx + at(inv, 5) * ny + at(inv, 9) * nz + at(inv, 13) * nw;\n const cz = at(inv, 2) * nx + at(inv, 6) * ny + at(inv, 10) * nz + at(inv, 14) * nw;\n const cw = at(inv, 3) * nx + at(inv, 7) * ny + at(inv, 11) * nz + at(inv, 15) * nw;\n const iw = 1.0 / cw;\n return [cx * iw, cy * iw, cz * iw] as [number, number, number];\n });\n\n // 12 edges\n const edges: [number, number][] = [\n [0, 1],\n [0, 2],\n [1, 3],\n [2, 3],\n [4, 5],\n [4, 6],\n [5, 7],\n [6, 7],\n [0, 4],\n [1, 5],\n [2, 6],\n [3, 7],\n ];\n\n const result: [number, number, number][] = [];\n for (const [ai, bi] of edges) {\n const ac = corners[ai] as [number, number, number];\n const bc = corners[bi] as [number, number, number];\n result.push([ac[0], ac[1], ac[2]]);\n result.push([bc[0], bc[1], bc[2]]);\n }\n return result;\n}\n","// @forgeax/engine-debug-draw -- line shape geometry (M3 / w20)\n//\n// Pure geometry decomposition: 1 segment = 2 vertices.\n// No staging / GPU concerns; consumed by DebugDraw class.\n\nimport type { Vec3 } from '@forgeax/engine-math';\n\n/** 2 vertices forming a line segment from `a` to `b`. */\nexport function lineVertices(a: Vec3, b: Vec3): [number, number, number][] {\n return [\n [a[0] as number, a[1] as number, a[2] as number],\n [b[0] as number, b[1] as number, b[2] as number],\n ];\n}\n","// @forgeax/engine-debug-draw -- sphere shape geometry (M3 / w21)\n//\n// Pure geometry decomposition: 3 orthogonal great-circle rings\n// (XY, XZ, YZ planes). Each ring has `segments` segments producing\n// 2 vertices each. Default segments=16 gives 96 vertices (3 * 2 * 16).\n// No staging / GPU concerns; consumed by DebugDraw class.\n\nimport type { Vec3 } from '@forgeax/engine-math';\n\nfunction a(v: { readonly [index: number]: number }, i: number): number {\n return v[i] as number;\n}\n\n/**\n * Generate vertices for a wireframe sphere.\n * Returns 3 * 2 * segments vertices (pairs forming line segments).\n */\nexport function sphereVertices(\n center: Vec3,\n radius: number,\n segments: number,\n): [number, number, number][] {\n const cx = a(center, 0);\n const cy = a(center, 1);\n const cz = a(center, 2);\n const step = (2 * Math.PI) / segments;\n\n const result: [number, number, number][] = [];\n\n for (let plane = 0; plane < 3; plane++) {\n for (let i = 0; i < segments; i++) {\n const angle0 = i * step;\n const angle1 = (i + 1) % segments;\n\n let p0x: number;\n let p0y: number;\n let p0z: number;\n let p1x: number;\n let p1y: number;\n let p1z: number;\n\n if (plane === 0) {\n // XY plane\n p0x = cx + radius * Math.cos(angle0);\n p0y = cy + radius * Math.sin(angle0);\n p0z = cz;\n p1x = cx + radius * Math.cos(angle1);\n p1y = cy + radius * Math.sin(angle1);\n p1z = cz;\n } else if (plane === 1) {\n // XZ plane\n p0x = cx + radius * Math.cos(angle0);\n p0y = cy;\n p0z = cz + radius * Math.sin(angle0);\n p1x = cx + radius * Math.cos(angle1);\n p1y = cy;\n p1z = cz + radius * Math.sin(angle1);\n } else {\n // YZ plane\n p0x = cx;\n p0y = cy + radius * Math.cos(angle0);\n p0z = cz + radius * Math.sin(angle0);\n p1x = cx;\n p1y = cy + radius * Math.cos(angle1);\n p1z = cz + radius * Math.sin(angle1);\n }\n\n result.push([p0x, p0y, p0z]);\n result.push([p1x, p1y, p1z]);\n }\n }\n\n return result;\n}\n","// @forgeax/engine-debug-draw -- DebugDraw class implementation (feat-20260615-debug-draw M2)\n//\n// This file is the single SSOT for DebugDraw class, GPU resource lifecycle,\n// flush, and destroy semantics.\n//\n// Decision anchors:\n// - plan-strategy D-2: depthMode single-instance single-PSO\n// - plan-strategy D-3: inline WGSL, direct RHI (no ShaderRegistry)\n// - plan-strategy D-4: queue.writeBuffer overwrite + double-resize + hard-cap truncate\n// - plan-strategy D-9: vertex stride 16 B (12 B position + 4 B color)\n// - plan-strategy D-11: destroy-after-shape = no-op + single warn\n\nimport type { ColorLike, Mat4, Vec3 } from '@forgeax/engine-math';\nimport type {\n BindGroup,\n Buffer,\n RenderPipeline,\n RhiCommandEncoder,\n RhiDevice,\n RhiRenderPassEncoder,\n TextureView,\n} from '@forgeax/engine-rhi';\nimport type { Result } from '@forgeax/engine-types';\nimport { ok } from '@forgeax/engine-types';\nimport { INITIAL_VERTEX_CAPACITY, MAX_VERTEX_CAPACITY, VERTEX_STRIDE_BYTES } from './constants';\nimport type { DebugDrawError } from './errors';\nimport {\n bufferAllocationFailed,\n flushedAfterDestroy,\n pipelineCreateFailed,\n viewProjRequired,\n} from './errors';\nimport { aabbVertices } from './shapes/aabb';\nimport { arrowVertices } from './shapes/arrow';\nimport { axesArrowSets } from './shapes/axes';\nimport { frustumVertices } from './shapes/frustum';\nimport { lineVertices } from './shapes/line';\nimport { sphereVertices } from './shapes/sphere';\nimport type { DebugDraw as DebugDrawInterface, DebugDrawOptions } from './types';\n\n// ==========================================================================\n// Inline WGSL (plan-strategy D-3: no ShaderRegistry dependency)\n// ==========================================================================\n\nconst VERTEX_SHADER = /* wgsl */ `\nstruct VertexInput {\n @location(0) position: vec3<f32>,\n @location(1) color: vec4<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) color: vec4<f32>,\n}\n\nstruct Uniforms {\n viewProj: mat4x4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: Uniforms;\n\n@vertex\nfn vs_main(in: VertexInput) -> VertexOutput {\n var out: VertexOutput;\n out.position = uniforms.viewProj * vec4<f32>(in.position, 1.0);\n out.color = in.color;\n return out;\n}\n`;\n\nconst FRAGMENT_SHADER = /* wgsl */ `\nstruct FragmentInput {\n @location(0) color: vec4<f32>,\n}\n\n@fragment\nfn fs_main(in: FragmentInput) -> @location(0) vec4<f32> {\n return in.color;\n}\n`;\n\n// ==========================================================================\n// Internal helpers\n// ==========================================================================\n\n/** Access Vec3/Mat4/ColorLike array element, narrow via `as number`. */\nfunction at(a: { readonly [index: number]: number }, i: number): number {\n return a[i] as number;\n}\n\nfunction normalizeCapacity(value: number, fallback: number): number {\n const finiteValue = Number.isFinite(value) ? Math.floor(value) : fallback;\n return Math.max(1, finiteValue);\n}\n\n// ==========================================================================\n// DebugDraw (w12 / w13 / w14)\n// ==========================================================================\n\nexport class DebugDraw implements DebugDrawInterface {\n private stagingArr: Float32Array;\n private stagingLen = 0;\n\n private lastFlushedVertexCount = 0;\n\n private capVal: number;\n\n private gpuVbo: Buffer | null = null;\n\n private gpuPipeline: RenderPipeline | null = null;\n\n private gpuUniformBuffer: Buffer | null = null;\n\n private gpuBindGroup: BindGroup | null = null;\n\n private maxCapVal: number;\n\n private readonly rhiDevice: RhiDevice;\n\n private isDestroyed = false;\n\n // Whether the destroy-after-shape warning has been emitted (plan-strategy D-11).\n // private (no underscore, no @internal) — purely class-internal state, not part of\n // package-internal API surface. Biome R-internal-A forbids `_x` on private fields;\n // lint:internal R-internal-C requires `_x` for `@internal`. Drop both markers since\n // there is no package-internal use for this field — accessing it from outside the\n // class is meaningless.\n private destroyedWarnedOnce = false;\n\n // Hard-cap diagnostics are per frame: flush() clears this flag with staging.\n private truncationWarned = false;\n\n /**\n * Depth texture view for less-equal depth mode.\n * Set via {@link _setDepthView} before flush() when depthMode is 'less-equal'.\n * The runtime auto-attach path receives depth from the render-graph context;\n * low-path callers (test harnesses, smoke runners) set this explicitly.\n */\n private depthView: TextureView | null = null;\n\n constructor(\n device: RhiDevice,\n pipeline: RenderPipeline,\n vbo: Buffer,\n uniformBuffer: Buffer,\n bindGroup: BindGroup,\n initialCapacity: number,\n maxCapacity: number,\n ) {\n const boundedMaxCapacity = normalizeCapacity(maxCapacity, MAX_VERTEX_CAPACITY);\n const boundedInitialCapacity = Math.min(\n normalizeCapacity(initialCapacity, INITIAL_VERTEX_CAPACITY),\n boundedMaxCapacity,\n );\n this.rhiDevice = device;\n this.gpuPipeline = pipeline;\n this.gpuVbo = vbo;\n this.gpuUniformBuffer = uniformBuffer;\n this.gpuBindGroup = bindGroup;\n this.capVal = boundedInitialCapacity;\n this.maxCapVal = boundedMaxCapacity;\n this.stagingArr = new Float32Array(boundedInitialCapacity * (VERTEX_STRIDE_BYTES / 4));\n }\n\n /** @internal CPU staging vertex count (exposed for unit tests). */\n get _stagingVertexCount(): number {\n return this.stagingLen;\n }\n\n hasPendingWork(): boolean {\n return !this.isDestroyed && this.stagingLen > 0;\n }\n\n /** @internal Vertex count passed to the most recent non-empty draw call. */\n get _lastFlushVertexCount(): number {\n return this.lastFlushedVertexCount;\n }\n\n /** @internal Current GPU vertex buffer capacity in vertex count. */\n get _capacity(): number {\n return this.capVal;\n }\n\n /** @internal Whether destroy() has been called. */\n get _destroyed(): boolean {\n return this.isDestroyed;\n }\n\n /**\n * @internal Set the depth texture view for less-equal depth mode.\n * Required before flush() when depthMode is 'less-equal'.\n * Used by test harnesses and smoke runners that don't have a scene\n * depth buffer; the runtime auto-attach path receives depth from\n * the render-graph context.\n */\n _setDepthView(view: TextureView): void {\n this.depthView = view;\n }\n\n /** @internal Read position of vertex at `index` in CPU staging (for unit tests). */\n _getVertexPosition(index: number): [number, number, number] {\n const idx = index * 4;\n return [\n this.stagingArr[idx + 0] as number,\n this.stagingArr[idx + 1] as number,\n this.stagingArr[idx + 2] as number,\n ];\n }\n\n /** @internal Read color of vertex at `index` as packed u32 (for unit tests). */\n _getVertexPackedColor(index: number): number {\n const byteOff = index * VERTEX_STRIDE_BYTES + 12;\n const bytes = new Uint8Array(this.stagingArr.buffer, byteOff, 4);\n return (\n ((bytes[3] as number) << 24) |\n ((bytes[2] as number) << 16) |\n ((bytes[1] as number) << 8) |\n (bytes[0] as number)\n );\n }\n\n private postDestroyWarnOnce(): void {\n if (!this.destroyedWarnedOnce) {\n this.destroyedWarnedOnce = true;\n console.warn(\n '[DebugDraw] Shape call after destroy() is a no-op. ' +\n 'Create a new instance via createDebugDraw().',\n );\n }\n }\n\n private pushVertex(\n px: number,\n py: number,\n pz: number,\n rc: number,\n gc: number,\n bc: number,\n ac: number,\n ): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n\n // Truncation: silently drop vertices above max cap (warned once in ensureCapacity)\n if (this.stagingLen >= this.maxCapVal) return;\n\n const idx = this.stagingLen * 4; // 4 f32s per vertex (stride=16B)\n this.stagingArr[idx + 0] = px;\n this.stagingArr[idx + 1] = py;\n this.stagingArr[idx + 2] = pz;\n\n // Write RGBA as u8 bytes via Uint8Array view (Float32Array would\n // corrupt u32 bit-patterns via f32 conversion; the GPU reads raw bytes).\n const u8r = Math.round(Math.max(0, Math.min(1, rc)) * 255);\n const u8g = Math.round(Math.max(0, Math.min(1, gc)) * 255);\n const u8bc = Math.round(Math.max(0, Math.min(1, bc)) * 255);\n const u8a = Math.round(Math.max(0, Math.min(1, ac)) * 255);\n const byteOff = this.stagingLen * VERTEX_STRIDE_BYTES + 12;\n const colorView = new Uint8Array(this.stagingArr.buffer, byteOff, 4);\n colorView[0] = u8r;\n colorView[1] = u8g;\n colorView[2] = u8bc;\n colorView[3] = u8a;\n\n this.stagingLen++;\n }\n\n private warnTruncationOnce(): void {\n if (this.truncationWarned) return;\n this.truncationWarned = true;\n console.warn(\n `[DebugDraw] Vertex count would exceed MAX_VERTEX_CAPACITY=${this.maxCapVal}; ` +\n 'vertices beyond the limit are discarded.',\n );\n }\n\n private ensureCapacity(needed: number): void {\n if (this.isDestroyed) return;\n if (needed <= this.capVal) return;\n\n // Warn for hard-cap truncation once for this frame, before any vertex drops.\n if (needed > this.maxCapVal) {\n this.warnTruncationOnce();\n }\n\n // Double up to max cap\n let newCap = this.capVal;\n while (newCap < needed && newCap < this.maxCapVal) {\n newCap = Math.min(newCap * 2, this.maxCapVal);\n }\n\n if (newCap > this.capVal) {\n // Bug B fix (feat-20260626 m6-4): the GPU vertex buffer must grow with the\n // CPU staging, or flush() binds a buffer too small for the staged vertex\n // count and the backend rejects the draw (\"Vertex range requires a larger\n // buffer than the bound buffer size\"). This was latent until the overlay\n // pass actually flushed -- before the glue merge the pass was a no-op stub,\n // so the GPU vbo was never bound past its initial size. Reallocate at the\n // new size + destroy the old; on alloc failure keep the old cap (the draw\n // stays bounded + correct, just truncated) rather than growing the staging\n // past the GPU buffer.\n const newVbo = this.rhiDevice.createBuffer({\n size: newCap * VERTEX_STRIDE_BYTES,\n usage: 8 | 32, // COPY_DST | VERTEX (mirrors createDebugDraw factory)\n label: 'debug-draw-vbo',\n });\n if (!newVbo.ok) {\n console.warn(\n `[DebugDraw] GPU vertex buffer grow to ${newCap} failed (${newVbo.error.code}); ` +\n `keeping ${this.capVal} -- excess vertices are truncated this frame.`,\n );\n return;\n }\n console.warn(`[DebugDraw] Resizing vertex buffer from ${this.capVal} to ${newCap} vertices.`);\n if (this.gpuVbo !== null) this.rhiDevice.destroyBuffer(this.gpuVbo);\n this.gpuVbo = newVbo.value;\n this.capVal = newCap;\n const newStaging = new Float32Array(newCap * (VERTEX_STRIDE_BYTES / 4));\n newStaging.set(this.stagingArr.subarray(0, this.stagingLen * 4));\n this.stagingArr = newStaging;\n }\n }\n\n private colorToRGBA(color: ColorLike): [number, number, number, number] {\n if (Array.isArray(color)) {\n return [at(color, 0), at(color, 1), at(color, 2), (color as number[])[3] ?? 1];\n }\n // Float32Array (branded Color or plain)\n return [at(color, 0), at(color, 1), at(color, 2), color[3] ?? 1];\n }\n\n // -- Public shape API --\n\n line(a: Vec3, b: Vec3, color: ColorLike): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n this.ensureCapacity(this.stagingLen + 2);\n for (const [x, y, z] of lineVertices(a, b)) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n aabb(min: Vec3, max: Vec3, color: ColorLike): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n const verts = aabbVertices(min, max);\n this.ensureCapacity(this.stagingLen + verts.length);\n for (const [x, y, z] of verts) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n sphere(center: Vec3, radius: number, color: ColorLike, segments = 16): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n const verts = sphereVertices(center, radius, segments);\n this.ensureCapacity(this.stagingLen + verts.length);\n for (const [x, y, z] of verts) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n frustum(viewProj: Mat4, color: ColorLike): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const verts = frustumVertices(viewProj);\n if (verts === null) {\n console.warn(\n '[DebugDraw] frustum() received a near-singular viewProj matrix; skipping this frame.',\n );\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n this.ensureCapacity(this.stagingLen + verts.length);\n for (const [x, y, z] of verts) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n arrow(start: Vec3, end: Vec3, color: ColorLike, tipLength?: number): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n const verts = arrowVertices(start, end, tipLength);\n this.ensureCapacity(this.stagingLen + verts.length);\n for (const [x, y, z] of verts) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n axes(worldMat: Mat4, length: number): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n // Three arrows (X=red, Y=green, Z=blue) along the transform's local axes; each\n // carries its own color, so they cannot share the single-color push path.\n for (const { vertices, color } of axesArrowSets(worldMat, length)) {\n const [r, g, bc, alpha] = this.colorToRGBA(color as unknown as ColorLike);\n this.ensureCapacity(this.stagingLen + vertices.length);\n for (const [x, y, z] of vertices) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n }\n\n // -- flush (w13) --\n\n flush(\n encoder: RhiCommandEncoder,\n view: TextureView,\n viewProj: Mat4,\n ): Result<void, DebugDrawError> {\n if (this.isDestroyed) return flushedAfterDestroy();\n if (viewProj === undefined || viewProj === null) return viewProjRequired();\n if (this.stagingLen === 0) {\n this.lastFlushedVertexCount = 0;\n return ok(undefined as void);\n }\n\n // Begin render pass with loadOp='load' to preserve scene content.\n // forgeax TextureView is an opaque RHI handle; the underlying WebGPU\n // GPURenderPassDescriptor expects raw GPUTextureView.\n // When depthMode is 'less-equal', a depthStencilAttachment is required\n // matching the PSO's depth format. The caller must provide depthView\n // for less-equal mode; without it, the render pass will fail validation.\n // biome-ignore lint/suspicious/noExplicitAny: opaque RHI descriptor (color + optional depth)\n const passDesc: Record<string, any> = {\n colorAttachments: [\n {\n // biome-ignore lint/suspicious/noExplicitAny: opaque RHI handle\n view: view as any,\n loadOp: 'load',\n storeOp: 'store',\n },\n ],\n };\n if (this.depthView !== null) {\n passDesc.depthStencilAttachment = {\n // biome-ignore lint/suspicious/noExplicitAny: opaque depth view\n view: this.depthView as any,\n depthLoadOp: 'load',\n depthStoreOp: 'store',\n };\n }\n // biome-ignore lint/suspicious/noExplicitAny: opaque RHI descriptor\n const pass = encoder.beginRenderPass(passDesc as any);\n\n const encoded = this.encode(pass, viewProj);\n pass.end();\n return encoded;\n }\n\n encode(pass: RhiRenderPassEncoder, viewProj: Mat4): Result<void, DebugDrawError> {\n if (this.isDestroyed) return flushedAfterDestroy();\n if (viewProj === undefined || viewProj === null) return viewProjRequired();\n if (this.stagingLen === 0) {\n this.lastFlushedVertexCount = 0;\n return ok(undefined as void);\n }\n\n const vertexCount = Math.min(this.stagingLen, this.maxCapVal);\n const vbo = this.gpuVbo as Buffer;\n const pipeline = this.gpuPipeline as RenderPipeline;\n const uniformBuf = this.gpuUniformBuffer as Buffer;\n const bindGroup = this.gpuBindGroup as BindGroup;\n const byteCount = vertexCount * VERTEX_STRIDE_BYTES;\n this.rhiDevice.queue.writeBuffer(\n vbo,\n 0,\n new Uint8Array(this.stagingArr.buffer, 0, byteCount),\n 0,\n byteCount,\n );\n const uniformData = new Float32Array(16);\n for (let i = 0; i < 16; i++) uniformData[i] = viewProj[i] as number;\n this.rhiDevice.queue.writeBuffer(uniformBuf, 0, new Uint8Array(uniformData.buffer), 0, 64);\n\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, bindGroup);\n pass.setVertexBuffer(0, vbo);\n pass.draw(vertexCount);\n this.lastFlushedVertexCount = vertexCount;\n\n // Reset staging for next frame\n this.stagingLen = 0;\n this.truncationWarned = false;\n\n return ok(undefined as void);\n }\n\n // -- destroy (w14) --\n\n destroy(): void {\n if (this.isDestroyed) return;\n this.isDestroyed = true;\n\n if (this.gpuVbo) {\n this.rhiDevice.destroyBuffer(this.gpuVbo);\n this.gpuVbo = null;\n }\n if (this.gpuUniformBuffer) {\n this.rhiDevice.destroyBuffer(this.gpuUniformBuffer);\n this.gpuUniformBuffer = null;\n }\n // BindGroup / Pipeline: WebGPU spec destroys them when the JS reference is lost;\n // we null them to drop GPU resource references.\n this.gpuBindGroup = null;\n this.gpuPipeline = null;\n this.stagingArr = new Float32Array(0);\n this.stagingLen = 0;\n this.lastFlushedVertexCount = 0;\n }\n}\n\n// ==========================================================================\n// createDebugDraw factory (w12)\n// ==========================================================================\n\nexport async function createDebugDraw(\n opts: DebugDrawOptions,\n): Promise<Result<DebugDraw, DebugDrawError>> {\n const device = opts.device;\n const fmt: string = opts.format ?? 'bgra8unorm';\n const depthFormat = opts.depthFormat;\n const depthMode = opts.depthMode ?? 'always';\n const maxCap = normalizeCapacity(\n opts.maxVertexCapacity ?? MAX_VERTEX_CAPACITY,\n MAX_VERTEX_CAPACITY,\n );\n const initialCap = Math.min(\n normalizeCapacity(\n opts.initialVertexCapacity ?? INITIAL_VERTEX_CAPACITY,\n INITIAL_VERTEX_CAPACITY,\n ),\n maxCap,\n );\n\n // Allocate GPU vertex buffer\n // GPUBufferUsage.COPY_DST=8, VERTEX=32\n const vboByteSize = initialCap * VERTEX_STRIDE_BYTES;\n const vboResult = device.createBuffer({\n size: vboByteSize,\n usage: 8 | 32, // COPY_DST | VERTEX\n label: 'debug-draw-vbo',\n });\n if (!vboResult.ok) {\n return bufferAllocationFailed(\n `createBuffer(COPY_DST|VERTEX, ${vboByteSize}B): ${vboResult.error.code}`,\n );\n }\n const vbo = vboResult.value;\n\n // Allocate uniform buffer for viewProj (mat4x4<f32> = 64 bytes)\n // GPUBufferUsage.UNIFORM=64 (0x0040), COPY_DST=8 (0x0008)\n const uniformBufResult = device.createBuffer({\n size: 64,\n usage: 64 | 8, // UNIFORM | COPY_DST\n label: 'debug-draw-uniform',\n });\n if (!uniformBufResult.ok) {\n device.destroyBuffer(vbo);\n return bufferAllocationFailed(\n `createBuffer(UNIFORM|COPY_DST, 64B): ${uniformBufResult.error.code}`,\n );\n }\n const uniformBuf = uniformBufResult.value;\n\n // Compile WGSL shader modules via injected factory\n const vsResult = await opts.createShaderModule(device, {\n label: 'debug-draw-vs',\n code: VERTEX_SHADER,\n });\n if (!vsResult.ok) {\n device.destroyBuffer(vbo);\n return pipelineCreateFailed(`createShaderModule(vertex): ${vsResult.error.code}`);\n }\n const vsModule = vsResult.value;\n\n const fsResult = await opts.createShaderModule(device, {\n label: 'debug-draw-fs',\n code: FRAGMENT_SHADER,\n });\n if (!fsResult.ok) {\n device.destroyBuffer(vbo);\n return pipelineCreateFailed(`createShaderModule(fragment): ${fsResult.error.code}`);\n }\n const fsModule = fsResult.value;\n\n const bglResult = device.createBindGroupLayout({\n label: 'debug-draw-bind-group-layout',\n entries: [\n {\n binding: 0,\n visibility: 1,\n buffer: { type: 'uniform', minBindingSize: 64 },\n },\n ],\n });\n if (!bglResult.ok) {\n device.destroyBuffer(vbo);\n device.destroyBuffer(uniformBuf);\n return pipelineCreateFailed(`createBindGroupLayout: ${bglResult.error.code}`);\n }\n\n const pipelineLayoutResult = device.createPipelineLayout({\n label: 'debug-draw-pipeline-layout',\n bindGroupLayouts: [bglResult.value],\n });\n if (!pipelineLayoutResult.ok) {\n device.destroyBuffer(vbo);\n device.destroyBuffer(uniformBuf);\n return pipelineCreateFailed(`createPipelineLayout: ${pipelineLayoutResult.error.code}`);\n }\n\n // Build render pipeline descriptor.\n // For 'always' mode: no depthStencil — the overlay draws on top regardless of depth.\n // For 'less-equal' mode: depthStencil included so the overlay respects scene depth.\n const depthStencil: GPUDepthStencilState | undefined =\n depthMode === 'less-equal'\n ? {\n format: (depthFormat ?? 'depth24plus') as GPUTextureFormat,\n depthWriteEnabled: false,\n depthCompare: 'less-equal',\n }\n : undefined;\n\n const vertexBuffers: GPUVertexBufferLayout[] = [\n {\n arrayStride: VERTEX_STRIDE_BYTES,\n stepMode: 'vertex',\n attributes: [\n {\n format: 'float32x3' as GPUVertexFormat,\n offset: 0,\n shaderLocation: 0,\n },\n {\n format: 'unorm8x4' as GPUVertexFormat,\n offset: 12,\n shaderLocation: 1,\n },\n ],\n },\n ];\n\n const pipelineDesc = {\n label: 'debug-draw-pso',\n layout: pipelineLayoutResult.value,\n vertex: {\n module: vsModule,\n entryPoint: 'vs_main',\n buffers: [...vertexBuffers],\n },\n primitive: {\n topology: 'line-list' as GPUPrimitiveTopology,\n },\n depthStencil,\n fragment: {\n module: fsModule,\n entryPoint: 'fs_main',\n targets: [{ format: fmt as GPUTextureFormat }],\n },\n };\n\n /* biome-ignore lint/suspicious/noExplicitAny: forgeax ShaderModule / TextureFormat\n are opaque RHI handles; underlying WebGPU descriptor expects raw GPU types. */\n const psoResult = device.createRenderPipeline(pipelineDesc as any);\n if (!psoResult.ok) {\n device.destroyBuffer(vbo);\n device.destroyBuffer(uniformBuf);\n return pipelineCreateFailed(`createRenderPipeline: ${psoResult.error.code}`);\n }\n const pipeline = psoResult.value;\n\n // Create the bind group from the same explicit RHI layout used by the pipeline.\n const bgResult = device.createBindGroup({\n layout: bglResult.value,\n entries: [\n {\n binding: 0,\n resource: {\n kind: 'buffer' as const,\n value: { buffer: uniformBuf, offset: 0, size: 64 },\n },\n },\n ],\n label: 'debug-draw-bindgroup',\n // biome-ignore lint/suspicious/noExplicitAny: forgeax opaque BGL -> createBindGroup descriptor\n } as any);\n if (!bgResult.ok) {\n device.destroyBuffer(vbo);\n device.destroyBuffer(uniformBuf);\n return pipelineCreateFailed(`createBindGroup: ${bgResult.error.code}`);\n }\n\n return ok(new DebugDraw(device, pipeline, vbo, uniformBuf, bgResult.value, initialCap, maxCap));\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/errors.ts","../src/shapes/aabb.ts","../src/shapes/arrow.ts","../src/shapes/axes.ts","../src/shapes/frustum.ts","../src/shapes/line.ts","../src/shapes/sphere.ts","../src/debug-draw.ts","../src/render-feature.ts"],"names":["a","at"],"mappings":"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","file":"index.mjs","sourcesContent":["// @forgeax/engine-debug-draw -- constants SSOT (feat-20260615-debug-draw M1 / w3)\n//\n// Three configurable tunables exported for unit-test consumption.\n// All values are per plan-strategy D-4 / D-7 / D-9.\n\n/** Initial CPU staging vertex capacity before any resize. */\nexport const INITIAL_VERTEX_CAPACITY = 1024;\n\n/** Hard upper bound on vertex count per flush; excess vertices are truncated with a warning. */\nexport const MAX_VERTEX_CAPACITY = 1_000_000;\n\n/** Vertex stride in bytes: 12 B position (float32x3) + 4 B color (unorm8x4). */\nexport const VERTEX_STRIDE_BYTES = 16;\n","// @forgeax/engine-debug-draw -- error model SSOT (feat-20260615-debug-draw M1 / w2)\n//\n// Closed union DebugDrawErrorCode, discriminated detail union,\n// and structured DebugDrawError carrying .code / .expected / .hint / .detail.\n//\n// Decision anchors:\n// - plan-strategy D-11: destroy-then-flush returns Result.err, shape calls no-op + warn once\n// - requirements sec 3.6: error code closed union 4 members\n// - AGENTS.md Error model: structured errors with .expected / .hint, never throw\n// - architecture-principles #5 Fail Fast: validate at entry, non-conforming data never flows downstream\n\nimport { err, type Result } from '@forgeax/engine-types';\n\n/** {@link pipeline-create-failed} payload: carries the RHI-level error detail. */\nexport interface PipelineCreateFailedDetail {\n readonly code: 'pipeline-create-failed';\n readonly rhiError: string;\n}\n\n/** {@link buffer-allocation-failed} payload: carries the RHI-level error detail. */\nexport interface BufferAllocationFailedDetail {\n readonly code: 'buffer-allocation-failed';\n readonly rhiError: string;\n}\n\n/** {@link flushed-after-destroy} payload: carries the instance identifier. */\nexport interface FlushedAfterDestroyDetail {\n readonly code: 'flushed-after-destroy';\n}\n\n/** {@link viewProj-required} payload: carries the missing parameter name. */\nexport interface ViewProjRequiredDetail {\n readonly code: 'viewProj-required';\n}\n\ninterface DebugDrawErrorDetailByCode {\n 'pipeline-create-failed': PipelineCreateFailedDetail;\n 'buffer-allocation-failed': BufferAllocationFailedDetail;\n 'flushed-after-destroy': FlushedAfterDestroyDetail;\n 'viewProj-required': ViewProjRequiredDetail;\n}\n\n/**\n * Closed {@link DebugDrawErrorCode} union.\n * Exhaustive `switch (err.code)` needs no default fallback.\n *\n * | code | trigger |\n * |:--|:--|\n * | `'pipeline-create-failed'` | `device.createRenderPipeline(...)` rejected or threw |\n * | `'buffer-allocation-failed'` | `device.createBuffer(...)` for GPU vbo allocation failed |\n * | `'flushed-after-destroy'` | `flush()` called on an already-destroyed DebugDraw instance |\n * | `'viewProj-required'` | `flush()` called with `undefined` or missing `viewProj` |\n */\nexport type DebugDrawErrorCode = keyof DebugDrawErrorDetailByCode;\n\n/**\n * Discriminated detail union for {@link DebugDrawError}, narrowed per\n * `DebugDrawError.code`. AI users obtain the concrete shape via\n * `switch (err.code)` without a fallback `as` cast.\n */\nexport type DebugDrawErrorDetail = DebugDrawErrorDetailByCode[DebugDrawErrorCode];\n\n/**\n * Structured debug-draw error -- four-field surface\n * (`.code` / `.expected` / `.hint` / `.detail`).\n *\n * AI users consume the structured triple by fields, not by parsing `.message`.\n */\ntype DebugDrawErrorVariant<C extends DebugDrawErrorCode> = {\n readonly code: C;\n readonly expected: string;\n readonly hint: string;\n readonly detail: DebugDrawErrorDetailByCode[C];\n};\n\nexport type DebugDrawError = {\n [C in DebugDrawErrorCode]: DebugDrawErrorVariant<C>;\n}[DebugDrawErrorCode];\n\nfunction makeError<C extends DebugDrawErrorCode>(\n code: C,\n expected: string,\n hint: string,\n detail: DebugDrawErrorDetailByCode[C],\n): DebugDrawErrorVariant<C> {\n const error = {\n code,\n expected,\n hint,\n detail,\n get message(): string {\n return `[${code}] ${hint}`;\n },\n };\n return error;\n}\n\n/** Result-returning helpers consuming engine-types `Result<T, E>` + `err()`. */\n\nexport function pipelineCreateFailed(rhiError: string): Result<never, DebugDrawError> {\n return err(\n makeError(\n 'pipeline-create-failed',\n 'PSO creation should succeed with valid WGSL + layout',\n `Pipeline creation failed: ${rhiError}. Check WGSL syntax, vertex layout, and depth-stencil state.`,\n { code: 'pipeline-create-failed', rhiError },\n ),\n );\n}\n\nexport function bufferAllocationFailed(rhiError: string): Result<never, DebugDrawError> {\n return err(\n makeError(\n 'buffer-allocation-failed',\n 'GPU vertex buffer allocation should succeed for the requested byte size',\n `Buffer allocation failed: ${rhiError}. Check available device memory and buffer usage flags.`,\n { code: 'buffer-allocation-failed', rhiError },\n ),\n );\n}\n\nexport function flushedAfterDestroy(): Result<never, DebugDrawError> {\n return err(\n makeError(\n 'flushed-after-destroy',\n 'DebugDraw instance is alive and not yet destroyed',\n 'DebugDraw was destroyed; create a new instance via createDebugDraw().',\n { code: 'flushed-after-destroy' },\n ),\n );\n}\n\nexport function viewProjRequired(): Result<never, DebugDrawError> {\n return err(\n makeError(\n 'viewProj-required',\n 'viewProj must be provided as a Mat4 for flush to transform vertices',\n 'Pass a viewProj Mat4 to flush(encoder, view, viewProj).',\n { code: 'viewProj-required' },\n ),\n );\n}\n","// @forgeax/engine-debug-draw -- aabb shape geometry (M3 / w20)\n//\n// Pure geometry decomposition: 12 edges (24 vertices) from 8 corners.\n// No staging / GPU concerns; consumed by DebugDraw class.\n\nimport type { Vec3 } from '@forgeax/engine-math';\n\nfunction a(v: { readonly [index: number]: number }, i: number): number {\n return v[i] as number;\n}\n\n/** 24 vertices forming a wireframe axis-aligned bounding box (12 edges). */\nexport function aabbVertices(min: Vec3, max: Vec3): [number, number, number][] {\n const mnx = a(min, 0);\n const mny = a(min, 1);\n const mnz = a(min, 2);\n const mxx = a(max, 0);\n const mxy = a(max, 1);\n const mxz = a(max, 2);\n\n // 8 corners: x in {mnx, mxx}, y in {mny, mxy}, z in {mnz, mxz}\n const c: [number, number, number][] = [\n [mnx, mny, mnz], // 0\n [mxx, mny, mnz], // 1\n [mnx, mxy, mnz], // 2\n [mxx, mxy, mnz], // 3\n [mnx, mny, mxz], // 4\n [mxx, mny, mxz], // 5\n [mnx, mxy, mxz], // 6\n [mxx, mxy, mxz], // 7\n ];\n\n // 12 edges\n const edges: [number, number][] = [\n [0, 1],\n [0, 2],\n [1, 3],\n [2, 3],\n [4, 5],\n [4, 6],\n [5, 7],\n [6, 7],\n [0, 4],\n [1, 5],\n [2, 6],\n [3, 7],\n ];\n\n const result: [number, number, number][] = [];\n for (const [ai, bi] of edges) {\n const ac = c[ai] as [number, number, number];\n const bc = c[bi] as [number, number, number];\n result.push([ac[0], ac[1], ac[2]]);\n result.push([bc[0], bc[1], bc[2]]);\n }\n return result;\n}\n","// @forgeax/engine-debug-draw -- arrow shape geometry (solo round 20260713-222551)\n//\n// Pure geometry decomposition: an arrow = 1 body segment (start->end) + 4 arrowhead\n// segments from `end` back toward 4 canonical tip vectors, rotated so local +X aligns\n// with the arrow's direction. Mirrors Bevy `bevy_gizmos::arrows` ArrowBuilder::drop.\n// No staging / GPU concerns; consumed by the DebugDraw class.\n\nimport type { Vec3Like } from '@forgeax/engine-math';\nimport { quat, vec3 } from '@forgeax/engine-math';\n\n// The 4 arrowhead tip directions in the arrow's local frame (arrow points toward +X),\n// matching Bevy's tips array. Normalized when scaled to tipLength.\nconst TIP_DIRS: ReadonlyArray<readonly [number, number, number]> = [\n [-1, 1, 0],\n [-1, 0, 1],\n [-1, -1, 0],\n [-1, 0, -1],\n];\n\n// Plain Vec3Like (not a branded Vec3) — `quat.fromUnitVectors` accepts Vec3Like, so no\n// cross-boundary brand cast is needed (brand-cast lint: casts live only in math factories).\nconst UNIT_X: Vec3Like = [1, 0, 0];\n\n/**\n * Line-segment vertices for an arrow from `start` to `end`.\n * Returns 10 vertices = 5 segments (1 body + 4 arrowhead), each a [x,y,z] pair\n * consumed pairwise by the line-list renderer.\n *\n * `tipLength` defaults to `|end - start| / 10` (Bevy's default arrowhead length).\n * A degenerate (zero-length) arrow emits only the body segment (no orientable head).\n */\nexport function arrowVertices(\n start: Vec3Like,\n end: Vec3Like,\n tipLength?: number,\n): [number, number, number][] {\n const sx = start[0] as number;\n const sy = start[1] as number;\n const sz = start[2] as number;\n const ex = end[0] as number;\n const ey = end[1] as number;\n const ez = end[2] as number;\n\n const verts: [number, number, number][] = [\n [sx, sy, sz],\n [ex, ey, ez],\n ];\n\n const dir = vec3.create();\n vec3.set(dir, ex - sx, ey - sy, ez - sz);\n const len = vec3.length(dir);\n if (len < 1e-6) return verts; // degenerate: no orientable head\n\n const headLen = tipLength ?? len / 10;\n vec3.normalize(dir, dir);\n\n // Rotate the local-frame tip vectors so +X faces the arrow direction.\n const rot = quat.fromUnitVectors(quat.create(), UNIT_X, dir);\n const tipLocal = vec3.create();\n const tipWorld = vec3.create();\n for (const [tx, ty, tz] of TIP_DIRS) {\n vec3.set(tipLocal, tx, ty, tz);\n vec3.normalize(tipLocal, tipLocal);\n vec3.scale(tipLocal, tipLocal, headLen);\n quat.transformVec3(tipWorld, rot, tipLocal);\n // Head segment: from the arrow tip (end) back out to the rotated tip vector.\n verts.push([ex, ey, ez]);\n verts.push([\n ex + (tipWorld[0] as number),\n ey + (tipWorld[1] as number),\n ez + (tipWorld[2] as number),\n ]);\n }\n return verts;\n}\n","// @forgeax/engine-debug-draw -- axes gizmo geometry (solo round 20260713-222551)\n//\n// Draws a transform's local coordinate frame as three arrows (X / Y / Z), matching\n// Bevy `gizmos.axes(transform, base_length)`. Each axis endpoint is\n// `translation + base_length * column_i` of the world matrix — i.e. Bevy's\n// `transform.transform_point(base_length * Vec3::AXIS)` (the world-space direction the\n// local axis points, scale included). Colors follow the universal convention:\n// X = red, Y = green, Z = blue. No staging / GPU concerns; consumed by the DebugDraw class.\n\nimport type { Mat4, Vec3Like } from '@forgeax/engine-math';\nimport { arrowVertices } from './arrow';\n\n/** X=red, Y=green, Z=blue RGBA (Bevy's axes convention). */\nexport const AXES_COLORS: readonly [\n readonly [number, number, number, number],\n readonly [number, number, number, number],\n readonly [number, number, number, number],\n] = [\n [1, 0, 0, 1],\n [0, 1, 0, 1],\n [0, 0, 1, 1],\n];\n\n/**\n * The three axis arrows for a world transform, as `{ vertices, color }` per axis\n * (X, Y, Z). The caller (DebugDraw.axes) pushes each with its color. `worldMat` is a\n * 16-float column-major mat4; the arrows originate at its translation (col 3) and point\n * `length` along its local X / Y / Z (columns 0 / 1 / 2, scale included, matching Bevy).\n */\nexport function axesArrowSets(\n worldMat: Mat4,\n length: number,\n): { vertices: [number, number, number][]; color: readonly [number, number, number, number] }[] {\n const m = worldMat as unknown as ArrayLike<number>;\n const ox = m[12] as number;\n const oy = m[13] as number;\n const oz = m[14] as number;\n // Plain Vec3Like tuples (not branded Vec3) — arrowVertices accepts Vec3Like, so no\n // cross-boundary brand cast is needed (brand-cast lint: casts live only in math factories).\n const origin: Vec3Like = [ox, oy, oz];\n\n // Columns 0/1/2 are the local X/Y/Z basis in world space (rotation * scale).\n const cols: ReadonlyArray<readonly [number, number, number]> = [\n [m[0] as number, m[1] as number, m[2] as number],\n [m[4] as number, m[5] as number, m[6] as number],\n [m[8] as number, m[9] as number, m[10] as number],\n ];\n\n const sets: {\n vertices: [number, number, number][];\n color: readonly [number, number, number, number];\n }[] = [];\n for (let i = 0; i < 3; i++) {\n const c = cols[i] as readonly [number, number, number];\n const color = AXES_COLORS[i] as readonly [number, number, number, number];\n const end: Vec3Like = [ox + c[0] * length, oy + c[1] * length, oz + c[2] * length];\n sets.push({ vertices: arrowVertices(origin, end), color });\n }\n return sets;\n}\n","// @forgeax/engine-debug-draw -- frustum shape geometry (M3 / w21)\n//\n// Pure geometry decomposition: invert viewProj matrix, transform 8 NDC\n// corners to world space, draw 12 edges (24 vertices).\n// Returns null when the viewProj is near-singular (determinant ~ 0).\n// No staging / GPU concerns; consumed by DebugDraw class.\n\nimport { type Mat4, mat4 } from '@forgeax/engine-math';\n\nfunction at(m: { readonly [index: number]: number }, i: number): number {\n return m[i] as number;\n}\n\n/**\n * Generate 24 vertices (12 edges) for a frustum wireframe from a view-projection matrix.\n * Returns null if the matrix is near-singular (|det| < 1e-10).\n */\nexport function frustumVertices(viewProj: Mat4): [number, number, number][] | null {\n const m = viewProj;\n\n // 4x4 determinant\n const det =\n at(m, 0) *\n (at(m, 5) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 9) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) +\n at(m, 13) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7))) -\n at(m, 4) *\n (at(m, 1) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 9) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 13) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3))) +\n at(m, 8) *\n (at(m, 1) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) -\n at(m, 5) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 13) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))) -\n at(m, 12) *\n (at(m, 1) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7)) -\n at(m, 5) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3)) +\n at(m, 9) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3)));\n\n if (Math.abs(det) < 1e-10) {\n return null;\n }\n\n // 4x4 inverse via cofactor expansion\n const invDet = 1.0 / det;\n const inv = mat4.create();\n inv[0] =\n (at(m, 5) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 9) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) +\n at(m, 13) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7))) *\n invDet;\n inv[1] =\n -(\n at(m, 1) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 9) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 13) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3))\n ) * invDet;\n inv[2] =\n (at(m, 1) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) -\n at(m, 5) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 13) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))) *\n invDet;\n inv[3] =\n -(\n at(m, 1) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7)) -\n at(m, 5) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3)) +\n at(m, 9) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))\n ) * invDet;\n inv[4] =\n -(\n at(m, 4) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 8) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) +\n at(m, 12) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7))\n ) * invDet;\n inv[5] =\n (at(m, 0) * (at(m, 10) * at(m, 15) - at(m, 14) * at(m, 11)) -\n at(m, 8) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 12) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3))) *\n invDet;\n inv[6] =\n -(\n at(m, 0) * (at(m, 6) * at(m, 15) - at(m, 14) * at(m, 7)) -\n at(m, 4) * (at(m, 2) * at(m, 15) - at(m, 14) * at(m, 3)) +\n at(m, 12) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))\n ) * invDet;\n inv[7] =\n (at(m, 0) * (at(m, 6) * at(m, 11) - at(m, 10) * at(m, 7)) -\n at(m, 4) * (at(m, 2) * at(m, 11) - at(m, 10) * at(m, 3)) +\n at(m, 8) * (at(m, 2) * at(m, 7) - at(m, 6) * at(m, 3))) *\n invDet;\n inv[8] =\n (at(m, 4) * (at(m, 9) * at(m, 15) - at(m, 13) * at(m, 11)) -\n at(m, 8) * (at(m, 5) * at(m, 15) - at(m, 13) * at(m, 7)) +\n at(m, 12) * (at(m, 5) * at(m, 11) - at(m, 9) * at(m, 7))) *\n invDet;\n inv[9] =\n -(\n at(m, 0) * (at(m, 9) * at(m, 15) - at(m, 13) * at(m, 11)) -\n at(m, 8) * (at(m, 1) * at(m, 15) - at(m, 13) * at(m, 3)) +\n at(m, 12) * (at(m, 1) * at(m, 11) - at(m, 9) * at(m, 3))\n ) * invDet;\n inv[10] =\n (at(m, 0) * (at(m, 5) * at(m, 15) - at(m, 13) * at(m, 7)) -\n at(m, 4) * (at(m, 1) * at(m, 15) - at(m, 13) * at(m, 3)) +\n at(m, 12) * (at(m, 1) * at(m, 7) - at(m, 5) * at(m, 3))) *\n invDet;\n inv[11] =\n -(\n at(m, 0) * (at(m, 5) * at(m, 11) - at(m, 9) * at(m, 7)) -\n at(m, 4) * (at(m, 1) * at(m, 11) - at(m, 9) * at(m, 3)) +\n at(m, 8) * (at(m, 1) * at(m, 7) - at(m, 5) * at(m, 3))\n ) * invDet;\n inv[12] =\n -(\n at(m, 4) * (at(m, 9) * at(m, 14) - at(m, 13) * at(m, 10)) -\n at(m, 8) * (at(m, 5) * at(m, 14) - at(m, 13) * at(m, 6)) +\n at(m, 12) * (at(m, 5) * at(m, 10) - at(m, 9) * at(m, 6))\n ) * invDet;\n inv[13] =\n (at(m, 0) * (at(m, 9) * at(m, 14) - at(m, 13) * at(m, 10)) -\n at(m, 8) * (at(m, 1) * at(m, 14) - at(m, 13) * at(m, 2)) +\n at(m, 12) * (at(m, 1) * at(m, 10) - at(m, 9) * at(m, 2))) *\n invDet;\n inv[14] =\n -(\n at(m, 0) * (at(m, 5) * at(m, 14) - at(m, 13) * at(m, 6)) -\n at(m, 4) * (at(m, 1) * at(m, 14) - at(m, 13) * at(m, 2)) +\n at(m, 12) * (at(m, 1) * at(m, 6) - at(m, 5) * at(m, 2))\n ) * invDet;\n inv[15] =\n (at(m, 0) * (at(m, 5) * at(m, 10) - at(m, 9) * at(m, 6)) -\n at(m, 4) * (at(m, 1) * at(m, 10) - at(m, 9) * at(m, 2)) +\n at(m, 8) * (at(m, 1) * at(m, 6) - at(m, 5) * at(m, 2))) *\n invDet;\n\n // 8 NDC corners: x,y in {-1,1}, z in [0,1] (WebGPU NDC, matches mat4.perspective).\n // Near plane = z=0, far plane = z=1.\n const ndc: [number, number, number, number][] = [\n [-1, -1, 0, 1],\n [1, -1, 0, 1],\n [-1, 1, 0, 1],\n [1, 1, 0, 1],\n [-1, -1, 1, 1],\n [1, -1, 1, 1],\n [-1, 1, 1, 1],\n [1, 1, 1, 1],\n ];\n\n const corners: [number, number, number][] = ndc.map(([nx, ny, nz, nw]) => {\n const cx = at(inv, 0) * nx + at(inv, 4) * ny + at(inv, 8) * nz + at(inv, 12) * nw;\n const cy = at(inv, 1) * nx + at(inv, 5) * ny + at(inv, 9) * nz + at(inv, 13) * nw;\n const cz = at(inv, 2) * nx + at(inv, 6) * ny + at(inv, 10) * nz + at(inv, 14) * nw;\n const cw = at(inv, 3) * nx + at(inv, 7) * ny + at(inv, 11) * nz + at(inv, 15) * nw;\n const iw = 1.0 / cw;\n return [cx * iw, cy * iw, cz * iw] as [number, number, number];\n });\n\n // 12 edges\n const edges: [number, number][] = [\n [0, 1],\n [0, 2],\n [1, 3],\n [2, 3],\n [4, 5],\n [4, 6],\n [5, 7],\n [6, 7],\n [0, 4],\n [1, 5],\n [2, 6],\n [3, 7],\n ];\n\n const result: [number, number, number][] = [];\n for (const [ai, bi] of edges) {\n const ac = corners[ai] as [number, number, number];\n const bc = corners[bi] as [number, number, number];\n result.push([ac[0], ac[1], ac[2]]);\n result.push([bc[0], bc[1], bc[2]]);\n }\n return result;\n}\n","// @forgeax/engine-debug-draw -- line shape geometry (M3 / w20)\n//\n// Pure geometry decomposition: 1 segment = 2 vertices.\n// No staging / GPU concerns; consumed by DebugDraw class.\n\nimport type { Vec3 } from '@forgeax/engine-math';\n\n/** 2 vertices forming a line segment from `a` to `b`. */\nexport function lineVertices(a: Vec3, b: Vec3): [number, number, number][] {\n return [\n [a[0] as number, a[1] as number, a[2] as number],\n [b[0] as number, b[1] as number, b[2] as number],\n ];\n}\n","// @forgeax/engine-debug-draw -- sphere shape geometry (M3 / w21)\n//\n// Pure geometry decomposition: 3 orthogonal great-circle rings\n// (XY, XZ, YZ planes). Each ring has `segments` segments producing\n// 2 vertices each. Default segments=16 gives 96 vertices (3 * 2 * 16).\n// No staging / GPU concerns; consumed by DebugDraw class.\n\nimport type { Vec3 } from '@forgeax/engine-math';\n\nfunction a(v: { readonly [index: number]: number }, i: number): number {\n return v[i] as number;\n}\n\n/**\n * Generate vertices for a wireframe sphere.\n * Returns 3 * 2 * segments vertices (pairs forming line segments).\n */\nexport function sphereVertices(\n center: Vec3,\n radius: number,\n segments: number,\n): [number, number, number][] {\n const cx = a(center, 0);\n const cy = a(center, 1);\n const cz = a(center, 2);\n const step = (2 * Math.PI) / segments;\n\n const result: [number, number, number][] = [];\n\n for (let plane = 0; plane < 3; plane++) {\n for (let i = 0; i < segments; i++) {\n const angle0 = i * step;\n const angle1 = (i + 1) % segments;\n\n let p0x: number;\n let p0y: number;\n let p0z: number;\n let p1x: number;\n let p1y: number;\n let p1z: number;\n\n if (plane === 0) {\n // XY plane\n p0x = cx + radius * Math.cos(angle0);\n p0y = cy + radius * Math.sin(angle0);\n p0z = cz;\n p1x = cx + radius * Math.cos(angle1);\n p1y = cy + radius * Math.sin(angle1);\n p1z = cz;\n } else if (plane === 1) {\n // XZ plane\n p0x = cx + radius * Math.cos(angle0);\n p0y = cy;\n p0z = cz + radius * Math.sin(angle0);\n p1x = cx + radius * Math.cos(angle1);\n p1y = cy;\n p1z = cz + radius * Math.sin(angle1);\n } else {\n // YZ plane\n p0x = cx;\n p0y = cy + radius * Math.cos(angle0);\n p0z = cz + radius * Math.sin(angle0);\n p1x = cx;\n p1y = cy + radius * Math.cos(angle1);\n p1z = cz + radius * Math.sin(angle1);\n }\n\n result.push([p0x, p0y, p0z]);\n result.push([p1x, p1y, p1z]);\n }\n }\n\n return result;\n}\n","// @forgeax/engine-debug-draw -- DebugDraw class implementation (feat-20260615-debug-draw M2)\n//\n// This file is the single SSOT for DebugDraw class, GPU resource lifecycle,\n// flush, and destroy semantics.\n//\n// Decision anchors:\n// - plan-strategy D-2: depthMode single-instance single-PSO\n// - plan-strategy D-3: inline WGSL, direct RHI (no ShaderRegistry)\n// - plan-strategy D-4: queue.writeBuffer overwrite + double-resize + hard-cap truncate\n// - plan-strategy D-9: vertex stride 16 B (12 B position + 4 B color)\n// - plan-strategy D-11: destroy-after-shape = no-op + single warn\n\nimport type { ColorLike, Mat4, Vec3 } from '@forgeax/engine-math';\nimport type {\n BindGroup,\n Buffer,\n RenderPipeline,\n RhiCommandEncoder,\n RhiDevice,\n RhiRenderPassEncoder,\n TextureView,\n} from '@forgeax/engine-rhi';\nimport type { Result } from '@forgeax/engine-types';\nimport { ok } from '@forgeax/engine-types';\nimport { INITIAL_VERTEX_CAPACITY, MAX_VERTEX_CAPACITY, VERTEX_STRIDE_BYTES } from './constants';\nimport type { DebugDrawError } from './errors';\nimport {\n bufferAllocationFailed,\n flushedAfterDestroy,\n pipelineCreateFailed,\n viewProjRequired,\n} from './errors';\nimport { aabbVertices } from './shapes/aabb';\nimport { arrowVertices } from './shapes/arrow';\nimport { axesArrowSets } from './shapes/axes';\nimport { frustumVertices } from './shapes/frustum';\nimport { lineVertices } from './shapes/line';\nimport { sphereVertices } from './shapes/sphere';\nimport type { DebugDraw as DebugDrawInterface, DebugDrawOptions } from './types';\n\n// ==========================================================================\n// Inline WGSL (plan-strategy D-3: no ShaderRegistry dependency)\n// ==========================================================================\n\nconst VERTEX_SHADER = /* wgsl */ `\nstruct VertexInput {\n @location(0) position: vec3<f32>,\n @location(1) color: vec4<f32>,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) color: vec4<f32>,\n}\n\nstruct Uniforms {\n viewProj: mat4x4<f32>,\n}\n\n@group(0) @binding(0) var<uniform> uniforms: Uniforms;\n\n@vertex\nfn vs_main(in: VertexInput) -> VertexOutput {\n var out: VertexOutput;\n out.position = uniforms.viewProj * vec4<f32>(in.position, 1.0);\n out.color = in.color;\n return out;\n}\n`;\n\nconst FRAGMENT_SHADER = /* wgsl */ `\nstruct FragmentInput {\n @location(0) color: vec4<f32>,\n}\n\n@fragment\nfn fs_main(in: FragmentInput) -> @location(0) vec4<f32> {\n return in.color;\n}\n`;\n\n// ==========================================================================\n// Internal helpers\n// ==========================================================================\n\n/** Access Vec3/Mat4/ColorLike array element, narrow via `as number`. */\nfunction at(a: { readonly [index: number]: number }, i: number): number {\n return a[i] as number;\n}\n\nfunction normalizeCapacity(value: number, fallback: number): number {\n const finiteValue = Number.isFinite(value) ? Math.floor(value) : fallback;\n return Math.max(1, finiteValue);\n}\n\n// ==========================================================================\n// DebugDraw (w12 / w13 / w14)\n// ==========================================================================\n\nexport class DebugDraw implements DebugDrawInterface {\n private stagingArr: Float32Array;\n private stagingLen = 0;\n\n private lastFlushedVertexCount = 0;\n\n private capVal: number;\n\n private gpuVbo: Buffer | null = null;\n\n private gpuPipeline: RenderPipeline | null = null;\n\n private gpuUniformBuffer: Buffer | null = null;\n\n private gpuBindGroup: BindGroup | null = null;\n\n private maxCapVal: number;\n\n private readonly rhiDevice: RhiDevice;\n\n private isDestroyed = false;\n\n // Whether the destroy-after-shape warning has been emitted (plan-strategy D-11).\n // private (no underscore, no @internal) — purely class-internal state, not part of\n // package-internal API surface. Biome R-internal-A forbids `_x` on private fields;\n // lint:internal R-internal-C requires `_x` for `@internal`. Drop both markers since\n // there is no package-internal use for this field — accessing it from outside the\n // class is meaningless.\n private destroyedWarnedOnce = false;\n\n // Hard-cap diagnostics are per frame: flush() clears this flag with staging.\n private truncationWarned = false;\n\n /**\n * Depth texture view for less-equal depth mode.\n * Set via {@link _setDepthView} before flush() when depthMode is 'less-equal'.\n * The runtime auto-attach path receives depth from the render-graph context;\n * low-path callers (test harnesses, smoke runners) set this explicitly.\n */\n private depthView: TextureView | null = null;\n\n constructor(\n device: RhiDevice,\n pipeline: RenderPipeline,\n vbo: Buffer,\n uniformBuffer: Buffer,\n bindGroup: BindGroup,\n initialCapacity: number,\n maxCapacity: number,\n ) {\n const boundedMaxCapacity = normalizeCapacity(maxCapacity, MAX_VERTEX_CAPACITY);\n const boundedInitialCapacity = Math.min(\n normalizeCapacity(initialCapacity, INITIAL_VERTEX_CAPACITY),\n boundedMaxCapacity,\n );\n this.rhiDevice = device;\n this.gpuPipeline = pipeline;\n this.gpuVbo = vbo;\n this.gpuUniformBuffer = uniformBuffer;\n this.gpuBindGroup = bindGroup;\n this.capVal = boundedInitialCapacity;\n this.maxCapVal = boundedMaxCapacity;\n this.stagingArr = new Float32Array(boundedInitialCapacity * (VERTEX_STRIDE_BYTES / 4));\n }\n\n /** @internal CPU staging vertex count (exposed for unit tests). */\n get _stagingVertexCount(): number {\n return this.stagingLen;\n }\n\n /** @internal Vertex count passed to the most recent non-empty draw call. */\n get _lastFlushVertexCount(): number {\n return this.lastFlushedVertexCount;\n }\n\n /** @internal Current GPU vertex buffer capacity in vertex count. */\n get _capacity(): number {\n return this.capVal;\n }\n\n /** @internal Whether destroy() has been called. */\n get _destroyed(): boolean {\n return this.isDestroyed;\n }\n\n /**\n * @internal Set the depth texture view for less-equal depth mode.\n * Required before flush() when depthMode is 'less-equal'.\n * Used by test harnesses and smoke runners that don't have a scene\n * depth buffer; the runtime auto-attach path receives depth from\n * the render-graph context.\n */\n _setDepthView(view: TextureView): void {\n this.depthView = view;\n }\n\n /** @internal Read position of vertex at `index` in CPU staging (for unit tests). */\n _getVertexPosition(index: number): [number, number, number] {\n const idx = index * 4;\n return [\n this.stagingArr[idx + 0] as number,\n this.stagingArr[idx + 1] as number,\n this.stagingArr[idx + 2] as number,\n ];\n }\n\n /** @internal Read color of vertex at `index` as packed u32 (for unit tests). */\n _getVertexPackedColor(index: number): number {\n const byteOff = index * VERTEX_STRIDE_BYTES + 12;\n const bytes = new Uint8Array(this.stagingArr.buffer, byteOff, 4);\n return (\n ((bytes[3] as number) << 24) |\n ((bytes[2] as number) << 16) |\n ((bytes[1] as number) << 8) |\n (bytes[0] as number)\n );\n }\n\n private postDestroyWarnOnce(): void {\n if (!this.destroyedWarnedOnce) {\n this.destroyedWarnedOnce = true;\n console.warn(\n '[DebugDraw] Shape call after destroy() is a no-op. ' +\n 'Create a new instance via createDebugDraw().',\n );\n }\n }\n\n private pushVertex(\n px: number,\n py: number,\n pz: number,\n rc: number,\n gc: number,\n bc: number,\n ac: number,\n ): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n\n // Truncation: silently drop vertices above max cap (warned once in ensureCapacity)\n if (this.stagingLen >= this.maxCapVal) return;\n\n const idx = this.stagingLen * 4; // 4 f32s per vertex (stride=16B)\n this.stagingArr[idx + 0] = px;\n this.stagingArr[idx + 1] = py;\n this.stagingArr[idx + 2] = pz;\n\n // Write RGBA as u8 bytes via Uint8Array view (Float32Array would\n // corrupt u32 bit-patterns via f32 conversion; the GPU reads raw bytes).\n const u8r = Math.round(Math.max(0, Math.min(1, rc)) * 255);\n const u8g = Math.round(Math.max(0, Math.min(1, gc)) * 255);\n const u8bc = Math.round(Math.max(0, Math.min(1, bc)) * 255);\n const u8a = Math.round(Math.max(0, Math.min(1, ac)) * 255);\n const byteOff = this.stagingLen * VERTEX_STRIDE_BYTES + 12;\n const colorView = new Uint8Array(this.stagingArr.buffer, byteOff, 4);\n colorView[0] = u8r;\n colorView[1] = u8g;\n colorView[2] = u8bc;\n colorView[3] = u8a;\n\n this.stagingLen++;\n }\n\n private warnTruncationOnce(): void {\n if (this.truncationWarned) return;\n this.truncationWarned = true;\n console.warn(\n `[DebugDraw] Vertex count would exceed MAX_VERTEX_CAPACITY=${this.maxCapVal}; ` +\n 'vertices beyond the limit are discarded.',\n );\n }\n\n private ensureCapacity(needed: number): void {\n if (this.isDestroyed) return;\n if (needed <= this.capVal) return;\n\n // Warn for hard-cap truncation once for this frame, before any vertex drops.\n if (needed > this.maxCapVal) {\n this.warnTruncationOnce();\n }\n\n // Double up to max cap\n let newCap = this.capVal;\n while (newCap < needed && newCap < this.maxCapVal) {\n newCap = Math.min(newCap * 2, this.maxCapVal);\n }\n\n if (newCap > this.capVal) {\n // Bug B fix (feat-20260626 m6-4): the GPU vertex buffer must grow with the\n // CPU staging, or flush() binds a buffer too small for the staged vertex\n // count and the backend rejects the draw (\"Vertex range requires a larger\n // buffer than the bound buffer size\"). This was latent until the overlay\n // pass actually flushed -- before the glue merge the pass was a no-op stub,\n // so the GPU vbo was never bound past its initial size. Reallocate at the\n // new size + destroy the old; on alloc failure keep the old cap (the draw\n // stays bounded + correct, just truncated) rather than growing the staging\n // past the GPU buffer.\n const newVbo = this.rhiDevice.createBuffer({\n size: newCap * VERTEX_STRIDE_BYTES,\n usage: 8 | 32, // COPY_DST | VERTEX (mirrors createDebugDraw factory)\n label: 'debug-draw-vbo',\n });\n if (!newVbo.ok) {\n console.warn(\n `[DebugDraw] GPU vertex buffer grow to ${newCap} failed (${newVbo.error.code}); ` +\n `keeping ${this.capVal} -- excess vertices are truncated this frame.`,\n );\n return;\n }\n console.warn(`[DebugDraw] Resizing vertex buffer from ${this.capVal} to ${newCap} vertices.`);\n if (this.gpuVbo !== null) this.rhiDevice.destroyBuffer(this.gpuVbo);\n this.gpuVbo = newVbo.value;\n this.capVal = newCap;\n const newStaging = new Float32Array(newCap * (VERTEX_STRIDE_BYTES / 4));\n newStaging.set(this.stagingArr.subarray(0, this.stagingLen * 4));\n this.stagingArr = newStaging;\n }\n }\n\n private colorToRGBA(color: ColorLike): [number, number, number, number] {\n if (Array.isArray(color)) {\n return [at(color, 0), at(color, 1), at(color, 2), (color as number[])[3] ?? 1];\n }\n // Float32Array (branded Color or plain)\n return [at(color, 0), at(color, 1), at(color, 2), color[3] ?? 1];\n }\n\n // -- Public shape API --\n\n line(a: Vec3, b: Vec3, color: ColorLike): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n this.ensureCapacity(this.stagingLen + 2);\n for (const [x, y, z] of lineVertices(a, b)) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n aabb(min: Vec3, max: Vec3, color: ColorLike): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n const verts = aabbVertices(min, max);\n this.ensureCapacity(this.stagingLen + verts.length);\n for (const [x, y, z] of verts) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n sphere(center: Vec3, radius: number, color: ColorLike, segments = 16): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n const verts = sphereVertices(center, radius, segments);\n this.ensureCapacity(this.stagingLen + verts.length);\n for (const [x, y, z] of verts) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n frustum(viewProj: Mat4, color: ColorLike): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const verts = frustumVertices(viewProj);\n if (verts === null) {\n console.warn(\n '[DebugDraw] frustum() received a near-singular viewProj matrix; skipping this frame.',\n );\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n this.ensureCapacity(this.stagingLen + verts.length);\n for (const [x, y, z] of verts) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n arrow(start: Vec3, end: Vec3, color: ColorLike, tipLength?: number): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n const [r, g, bc, alpha] = this.colorToRGBA(color);\n const verts = arrowVertices(start, end, tipLength);\n this.ensureCapacity(this.stagingLen + verts.length);\n for (const [x, y, z] of verts) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n\n axes(worldMat: Mat4, length: number): void {\n if (this.isDestroyed) {\n this.postDestroyWarnOnce();\n return;\n }\n // Three arrows (X=red, Y=green, Z=blue) along the transform's local axes; each\n // carries its own color, so they cannot share the single-color push path.\n for (const { vertices, color } of axesArrowSets(worldMat, length)) {\n const [r, g, bc, alpha] = this.colorToRGBA(color as unknown as ColorLike);\n this.ensureCapacity(this.stagingLen + vertices.length);\n for (const [x, y, z] of vertices) {\n this.pushVertex(x, y, z, r, g, bc, alpha);\n }\n }\n }\n\n // -- flush (w13) --\n\n flush(\n encoder: RhiCommandEncoder,\n view: TextureView,\n viewProj: Mat4,\n ): Result<void, DebugDrawError> {\n if (this.isDestroyed) return flushedAfterDestroy();\n if (viewProj === undefined || viewProj === null) return viewProjRequired();\n if (this.stagingLen === 0) {\n this.lastFlushedVertexCount = 0;\n return ok(undefined as void);\n }\n\n // Begin render pass with loadOp='load' to preserve scene content.\n // forgeax TextureView is an opaque RHI handle; the underlying WebGPU\n // GPURenderPassDescriptor expects raw GPUTextureView.\n // When depthMode is 'less-equal', a depthStencilAttachment is required\n // matching the PSO's depth format. The caller must provide depthView\n // for less-equal mode; without it, the render pass will fail validation.\n // biome-ignore lint/suspicious/noExplicitAny: opaque RHI descriptor (color + optional depth)\n const passDesc: Record<string, any> = {\n colorAttachments: [\n {\n // biome-ignore lint/suspicious/noExplicitAny: opaque RHI handle\n view: view as any,\n loadOp: 'load',\n storeOp: 'store',\n },\n ],\n };\n if (this.depthView !== null) {\n passDesc.depthStencilAttachment = {\n // biome-ignore lint/suspicious/noExplicitAny: opaque depth view\n view: this.depthView as any,\n depthLoadOp: 'load',\n depthStoreOp: 'store',\n };\n }\n // biome-ignore lint/suspicious/noExplicitAny: opaque RHI descriptor\n const pass = encoder.beginRenderPass(passDesc as any);\n\n const encoded = this.encode(pass, viewProj);\n pass.end();\n return encoded;\n }\n\n encode(pass: RhiRenderPassEncoder, viewProj: Mat4): Result<void, DebugDrawError> {\n if (this.isDestroyed) return flushedAfterDestroy();\n if (viewProj === undefined || viewProj === null) return viewProjRequired();\n if (this.stagingLen === 0) {\n this.lastFlushedVertexCount = 0;\n return ok(undefined as void);\n }\n\n const vertexCount = Math.min(this.stagingLen, this.maxCapVal);\n const vbo = this.gpuVbo as Buffer;\n const pipeline = this.gpuPipeline as RenderPipeline;\n const uniformBuf = this.gpuUniformBuffer as Buffer;\n const bindGroup = this.gpuBindGroup as BindGroup;\n const byteCount = vertexCount * VERTEX_STRIDE_BYTES;\n this.rhiDevice.queue.writeBuffer(\n vbo,\n 0,\n new Uint8Array(this.stagingArr.buffer, 0, byteCount),\n 0,\n byteCount,\n );\n const uniformData = new Float32Array(16);\n for (let i = 0; i < 16; i++) uniformData[i] = viewProj[i] as number;\n this.rhiDevice.queue.writeBuffer(uniformBuf, 0, new Uint8Array(uniformData.buffer), 0, 64);\n\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, bindGroup);\n pass.setVertexBuffer(0, vbo);\n pass.draw(vertexCount);\n this.lastFlushedVertexCount = vertexCount;\n\n // Reset staging for next frame\n this.stagingLen = 0;\n this.truncationWarned = false;\n\n return ok(undefined as void);\n }\n\n // -- destroy (w14) --\n\n destroy(): void {\n if (this.isDestroyed) return;\n this.isDestroyed = true;\n\n if (this.gpuVbo) {\n this.rhiDevice.destroyBuffer(this.gpuVbo);\n this.gpuVbo = null;\n }\n if (this.gpuUniformBuffer) {\n this.rhiDevice.destroyBuffer(this.gpuUniformBuffer);\n this.gpuUniformBuffer = null;\n }\n // BindGroup / Pipeline: WebGPU spec destroys them when the JS reference is lost;\n // we null them to drop GPU resource references.\n this.gpuBindGroup = null;\n this.gpuPipeline = null;\n this.stagingArr = new Float32Array(0);\n this.stagingLen = 0;\n this.lastFlushedVertexCount = 0;\n }\n}\n\n// ==========================================================================\n// createDebugDraw factory (w12)\n// ==========================================================================\n\nexport async function createDebugDraw(\n opts: DebugDrawOptions,\n): Promise<Result<DebugDraw, DebugDrawError>> {\n const device = opts.device;\n const fmt: string = opts.format ?? 'bgra8unorm';\n const depthFormat = opts.depthFormat;\n const depthMode = opts.depthMode ?? 'always';\n const maxCap = normalizeCapacity(\n opts.maxVertexCapacity ?? MAX_VERTEX_CAPACITY,\n MAX_VERTEX_CAPACITY,\n );\n const initialCap = Math.min(\n normalizeCapacity(\n opts.initialVertexCapacity ?? INITIAL_VERTEX_CAPACITY,\n INITIAL_VERTEX_CAPACITY,\n ),\n maxCap,\n );\n\n // Allocate GPU vertex buffer\n // GPUBufferUsage.COPY_DST=8, VERTEX=32\n const vboByteSize = initialCap * VERTEX_STRIDE_BYTES;\n const vboResult = device.createBuffer({\n size: vboByteSize,\n usage: 8 | 32, // COPY_DST | VERTEX\n label: 'debug-draw-vbo',\n });\n if (!vboResult.ok) {\n return bufferAllocationFailed(\n `createBuffer(COPY_DST|VERTEX, ${vboByteSize}B): ${vboResult.error.code}`,\n );\n }\n const vbo = vboResult.value;\n\n // Allocate uniform buffer for viewProj (mat4x4<f32> = 64 bytes)\n // GPUBufferUsage.UNIFORM=64 (0x0040), COPY_DST=8 (0x0008)\n const uniformBufResult = device.createBuffer({\n size: 64,\n usage: 64 | 8, // UNIFORM | COPY_DST\n label: 'debug-draw-uniform',\n });\n if (!uniformBufResult.ok) {\n device.destroyBuffer(vbo);\n return bufferAllocationFailed(\n `createBuffer(UNIFORM|COPY_DST, 64B): ${uniformBufResult.error.code}`,\n );\n }\n const uniformBuf = uniformBufResult.value;\n\n // Compile WGSL shader modules via injected factory\n const vsResult = await opts.createShaderModule(device, {\n label: 'debug-draw-vs',\n code: VERTEX_SHADER,\n });\n if (!vsResult.ok) {\n device.destroyBuffer(vbo);\n return pipelineCreateFailed(`createShaderModule(vertex): ${vsResult.error.code}`);\n }\n const vsModule = vsResult.value;\n\n const fsResult = await opts.createShaderModule(device, {\n label: 'debug-draw-fs',\n code: FRAGMENT_SHADER,\n });\n if (!fsResult.ok) {\n device.destroyBuffer(vbo);\n return pipelineCreateFailed(`createShaderModule(fragment): ${fsResult.error.code}`);\n }\n const fsModule = fsResult.value;\n\n const bglResult = device.createBindGroupLayout({\n label: 'debug-draw-bind-group-layout',\n entries: [\n {\n binding: 0,\n visibility: 1,\n buffer: { type: 'uniform', minBindingSize: 64 },\n },\n ],\n });\n if (!bglResult.ok) {\n device.destroyBuffer(vbo);\n device.destroyBuffer(uniformBuf);\n return pipelineCreateFailed(`createBindGroupLayout: ${bglResult.error.code}`);\n }\n\n const pipelineLayoutResult = device.createPipelineLayout({\n label: 'debug-draw-pipeline-layout',\n bindGroupLayouts: [bglResult.value],\n });\n if (!pipelineLayoutResult.ok) {\n device.destroyBuffer(vbo);\n device.destroyBuffer(uniformBuf);\n return pipelineCreateFailed(`createPipelineLayout: ${pipelineLayoutResult.error.code}`);\n }\n\n // Build render pipeline descriptor.\n // For 'always' mode: no depthStencil — the overlay draws on top regardless of depth.\n // For 'less-equal' mode: depthStencil included so the overlay respects scene depth.\n const depthStencil: GPUDepthStencilState | undefined =\n depthMode === 'less-equal'\n ? {\n format: (depthFormat ?? 'depth24plus') as GPUTextureFormat,\n depthWriteEnabled: false,\n depthCompare: 'less-equal',\n }\n : undefined;\n\n const vertexBuffers: GPUVertexBufferLayout[] = [\n {\n arrayStride: VERTEX_STRIDE_BYTES,\n stepMode: 'vertex',\n attributes: [\n {\n format: 'float32x3' as GPUVertexFormat,\n offset: 0,\n shaderLocation: 0,\n },\n {\n format: 'unorm8x4' as GPUVertexFormat,\n offset: 12,\n shaderLocation: 1,\n },\n ],\n },\n ];\n\n const pipelineDesc = {\n label: 'debug-draw-pso',\n layout: pipelineLayoutResult.value,\n vertex: {\n module: vsModule,\n entryPoint: 'vs_main',\n buffers: [...vertexBuffers],\n },\n primitive: {\n topology: 'line-list' as GPUPrimitiveTopology,\n },\n depthStencil,\n fragment: {\n module: fsModule,\n entryPoint: 'fs_main',\n targets: [{ format: fmt as GPUTextureFormat }],\n },\n };\n\n /* biome-ignore lint/suspicious/noExplicitAny: forgeax ShaderModule / TextureFormat\n are opaque RHI handles; underlying WebGPU descriptor expects raw GPU types. */\n const psoResult = device.createRenderPipeline(pipelineDesc as any);\n if (!psoResult.ok) {\n device.destroyBuffer(vbo);\n device.destroyBuffer(uniformBuf);\n return pipelineCreateFailed(`createRenderPipeline: ${psoResult.error.code}`);\n }\n const pipeline = psoResult.value;\n\n // Create the bind group from the same explicit RHI layout used by the pipeline.\n const bgResult = device.createBindGroup({\n layout: bglResult.value,\n entries: [\n {\n binding: 0,\n resource: {\n kind: 'buffer' as const,\n value: { buffer: uniformBuf, offset: 0, size: 64 },\n },\n },\n ],\n label: 'debug-draw-bindgroup',\n // biome-ignore lint/suspicious/noExplicitAny: forgeax opaque BGL -> createBindGroup descriptor\n } as any);\n if (!bgResult.ok) {\n device.destroyBuffer(vbo);\n device.destroyBuffer(uniformBuf);\n return pipelineCreateFailed(`createBindGroup: ${bgResult.error.code}`);\n }\n\n return ok(new DebugDraw(device, pipeline, vbo, uniformBuf, bgResult.value, initialCap, maxCap));\n}\n","import type { RenderFeaturePlan } from '@forgeax/engine-render';\nimport type { TextureFormat } from '@forgeax/engine-rhi';\n\nexport interface DebugDrawRenderFeatureInput {\n readonly vertexCapacity: number;\n readonly vertexCount?: number;\n readonly target: string;\n readonly colorFormat?: TextureFormat;\n readonly viewProjection?: ArrayBufferView;\n}\n\n/** Describe bounded debug primitives without exposing submission ownership. */\nexport function createDebugDrawRenderFeaturePlan(\n input: DebugDrawRenderFeatureInput,\n): RenderFeaturePlan {\n const program = 'debug-draw.program';\n const bindings = 'debug-draw.bindings';\n const vertices = 'debug-draw.vertices';\n const vertexData = 'debug-draw.vertex-data';\n return {\n resources: [\n {\n kind: 'graphics-program',\n name: program,\n program: {\n shader: 'forgeax::debug-draw.line',\n vertexLayout: 'debug-draw-line',\n colorFormats: [input.colorFormat ?? 'bgra8unorm'],\n topology: 'line-list',\n },\n },\n {\n kind: 'graphics-bindings',\n name: bindings,\n program,\n values: {\n viewProjection: input.viewProjection ?? 'debug-draw.view-projection',\n },\n },\n {\n kind: 'buffer',\n name: vertices,\n size: Math.max(1, input.vertexCapacity) * 16,\n usage: ['vertex'],\n },\n {\n kind: 'vertex-data',\n name: vertexData,\n layout: 'debug-draw-line',\n buffer: vertices,\n },\n ],\n passes: [\n {\n kind: 'raster',\n name: 'debug-draw.raster',\n colorAttachments: [{ target: input.target, loadOp: 'load', storeOp: 'store' }],\n draws: [\n {\n program,\n bindings: [bindings],\n vertexData: [{ slot: 0, resource: vertexData }],\n draw: {\n kind: 'draw',\n vertexCount: Math.max(0, input.vertexCount ?? input.vertexCapacity),\n instanceCount: 1,\n },\n },\n ],\n },\n ],\n };\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RenderFeaturePlan } from '@forgeax/engine-render';
|
|
2
|
+
import type { TextureFormat } from '@forgeax/engine-rhi';
|
|
3
|
+
export interface DebugDrawRenderFeatureInput {
|
|
4
|
+
readonly vertexCapacity: number;
|
|
5
|
+
readonly vertexCount?: number;
|
|
6
|
+
readonly target: string;
|
|
7
|
+
readonly colorFormat?: TextureFormat;
|
|
8
|
+
readonly viewProjection?: ArrayBufferView;
|
|
9
|
+
}
|
|
10
|
+
/** Describe bounded debug primitives without exposing submission ownership. */
|
|
11
|
+
export declare function createDebugDrawRenderFeaturePlan(input: DebugDrawRenderFeatureInput): RenderFeaturePlan;
|
|
12
|
+
//# sourceMappingURL=render-feature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-feature.d.ts","sourceRoot":"","sources":["../src/render-feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,eAAe,CAAC;CAC3C;AAED,+EAA+E;AAC/E,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,2BAA2B,GACjC,iBAAiB,CA0DnB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -65,8 +65,6 @@ export interface DebugDrawOptions {
|
|
|
65
65
|
* `flush()` returns `Result.err({ code: 'flushed-after-destroy' })`.
|
|
66
66
|
*/
|
|
67
67
|
export interface DebugDraw {
|
|
68
|
-
/** Whether the current frame has staged vertices that need an overlay pass. */
|
|
69
|
-
hasPendingWork(): boolean;
|
|
70
68
|
/** Push a line segment from `a` to `b` with the given color. */
|
|
71
69
|
line(a: Vec3, b: Vec3, color: ColorLike): void;
|
|
72
70
|
/** Push a wireframe axis-aligned bounding box (12 edges = 24 vertices). */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgeax/engine-debug-draw",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,9 +22,10 @@
|
|
|
22
22
|
"LICENSE"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@forgeax/engine-math": "0.1.
|
|
26
|
-
"@forgeax/engine-
|
|
27
|
-
"@forgeax/engine-
|
|
25
|
+
"@forgeax/engine-math": "0.1.6",
|
|
26
|
+
"@forgeax/engine-render": "0.1.6",
|
|
27
|
+
"@forgeax/engine-rhi": "0.1.6",
|
|
28
|
+
"@forgeax/engine-types": "0.1.6"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
|
30
31
|
"@webgpu/types": "^0.1.71"
|
package/src/debug-draw.ts
CHANGED
|
@@ -167,10 +167,6 @@ export class DebugDraw implements DebugDrawInterface {
|
|
|
167
167
|
return this.stagingLen;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
hasPendingWork(): boolean {
|
|
171
|
-
return !this.isDestroyed && this.stagingLen > 0;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
170
|
/** @internal Vertex count passed to the most recent non-empty draw call. */
|
|
175
171
|
get _lastFlushVertexCount(): number {
|
|
176
172
|
return this.lastFlushedVertexCount;
|
package/src/index.ts
CHANGED
|
@@ -11,4 +11,8 @@ export type {
|
|
|
11
11
|
DebugDrawErrorCode,
|
|
12
12
|
DebugDrawErrorDetail,
|
|
13
13
|
} from './errors';
|
|
14
|
+
export {
|
|
15
|
+
createDebugDrawRenderFeaturePlan,
|
|
16
|
+
type DebugDrawRenderFeatureInput,
|
|
17
|
+
} from './render-feature';
|
|
14
18
|
export type { CreateShaderModule, DebugDrawOptions, DepthMode } from './types';
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { RenderFeaturePlan } from '@forgeax/engine-render';
|
|
2
|
+
import type { TextureFormat } from '@forgeax/engine-rhi';
|
|
3
|
+
|
|
4
|
+
export interface DebugDrawRenderFeatureInput {
|
|
5
|
+
readonly vertexCapacity: number;
|
|
6
|
+
readonly vertexCount?: number;
|
|
7
|
+
readonly target: string;
|
|
8
|
+
readonly colorFormat?: TextureFormat;
|
|
9
|
+
readonly viewProjection?: ArrayBufferView;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Describe bounded debug primitives without exposing submission ownership. */
|
|
13
|
+
export function createDebugDrawRenderFeaturePlan(
|
|
14
|
+
input: DebugDrawRenderFeatureInput,
|
|
15
|
+
): RenderFeaturePlan {
|
|
16
|
+
const program = 'debug-draw.program';
|
|
17
|
+
const bindings = 'debug-draw.bindings';
|
|
18
|
+
const vertices = 'debug-draw.vertices';
|
|
19
|
+
const vertexData = 'debug-draw.vertex-data';
|
|
20
|
+
return {
|
|
21
|
+
resources: [
|
|
22
|
+
{
|
|
23
|
+
kind: 'graphics-program',
|
|
24
|
+
name: program,
|
|
25
|
+
program: {
|
|
26
|
+
shader: 'forgeax::debug-draw.line',
|
|
27
|
+
vertexLayout: 'debug-draw-line',
|
|
28
|
+
colorFormats: [input.colorFormat ?? 'bgra8unorm'],
|
|
29
|
+
topology: 'line-list',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
kind: 'graphics-bindings',
|
|
34
|
+
name: bindings,
|
|
35
|
+
program,
|
|
36
|
+
values: {
|
|
37
|
+
viewProjection: input.viewProjection ?? 'debug-draw.view-projection',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
kind: 'buffer',
|
|
42
|
+
name: vertices,
|
|
43
|
+
size: Math.max(1, input.vertexCapacity) * 16,
|
|
44
|
+
usage: ['vertex'],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
kind: 'vertex-data',
|
|
48
|
+
name: vertexData,
|
|
49
|
+
layout: 'debug-draw-line',
|
|
50
|
+
buffer: vertices,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
passes: [
|
|
54
|
+
{
|
|
55
|
+
kind: 'raster',
|
|
56
|
+
name: 'debug-draw.raster',
|
|
57
|
+
colorAttachments: [{ target: input.target, loadOp: 'load', storeOp: 'store' }],
|
|
58
|
+
draws: [
|
|
59
|
+
{
|
|
60
|
+
program,
|
|
61
|
+
bindings: [bindings],
|
|
62
|
+
vertexData: [{ slot: 0, resource: vertexData }],
|
|
63
|
+
draw: {
|
|
64
|
+
kind: 'draw',
|
|
65
|
+
vertexCount: Math.max(0, input.vertexCount ?? input.vertexCapacity),
|
|
66
|
+
instanceCount: 1,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// @forgeax/engine-debug-draw -- public types + factory signature (M1 / w4)
|
|
2
2
|
//
|
|
3
3
|
// Decision anchors:
|
|
4
|
-
// - plan-strategy D-1:
|
|
4
|
+
// - plan-strategy D-1: shape generation stays on rhi/math/types; the optional
|
|
5
|
+
// RenderFeature adapter depends only on the declarative render contract.
|
|
5
6
|
// - plan-strategy D-2: depthMode single-instance single-PSO, no runtime switching
|
|
6
7
|
// - plan-strategy D-4 / D-9: vertex stride 16 B, capacities configurable
|
|
7
8
|
// - plan-strategy D-6: shape color = ColorLike (consumes engine-math existing type)
|
|
@@ -90,9 +91,6 @@ export interface DebugDrawOptions {
|
|
|
90
91
|
* `flush()` returns `Result.err({ code: 'flushed-after-destroy' })`.
|
|
91
92
|
*/
|
|
92
93
|
export interface DebugDraw {
|
|
93
|
-
/** Whether the current frame has staged vertices that need an overlay pass. */
|
|
94
|
-
hasPendingWork(): boolean;
|
|
95
|
-
|
|
96
94
|
/** Push a line segment from `a` to `b` with the given color. */
|
|
97
95
|
line(a: Vec3, b: Vec3, color: ColorLike): void;
|
|
98
96
|
|