@adobe/data-gpu 0.9.69
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/CLAUDE.md +98 -0
- package/LICENSE +21 -0
- package/dist/core/core-plugin.d.ts +44 -0
- package/dist/core/core-plugin.js +90 -0
- package/dist/core/core-plugin.js.map +1 -0
- package/dist/core/frame-time/frame-time-plugin.d.ts +25 -0
- package/dist/core/frame-time/frame-time-plugin.js +41 -0
- package/dist/core/frame-time/frame-time-plugin.js.map +1 -0
- package/dist/core/frame-time/frame-time.d.ts +18 -0
- package/dist/core/frame-time/frame-time.js +3 -0
- package/dist/core/frame-time/frame-time.js.map +1 -0
- package/dist/core/frame-time/public.d.ts +1 -0
- package/dist/core/frame-time/public.js +3 -0
- package/dist/core/frame-time/public.js.map +1 -0
- package/dist/graphics/animation/animation-data-plugin.d.ts +216 -0
- package/dist/graphics/animation/animation-data-plugin.js +110 -0
- package/dist/graphics/animation/animation-data-plugin.js.map +1 -0
- package/dist/graphics/animation/animation-plugin.d.ts +214 -0
- package/dist/graphics/animation/animation-plugin.js +26 -0
- package/dist/graphics/animation/animation-plugin.js.map +1 -0
- package/dist/graphics/animation/animation-plugin.test.d.ts +1 -0
- package/dist/graphics/animation/animation-plugin.test.js +142 -0
- package/dist/graphics/animation/animation-plugin.test.js.map +1 -0
- package/dist/graphics/animation/animation-track/animation-track.d.ts +13 -0
- package/dist/graphics/animation/animation-track/animation-track.js +3 -0
- package/dist/graphics/animation/animation-track/animation-track.js.map +1 -0
- package/dist/graphics/animation/animation-track/componentwise-lerp.d.ts +7 -0
- package/dist/graphics/animation/animation-track/componentwise-lerp.js +22 -0
- package/dist/graphics/animation/animation-track/componentwise-lerp.js.map +1 -0
- package/dist/graphics/animation/animation-track/interpolate.d.ts +8 -0
- package/dist/graphics/animation/animation-track/interpolate.js +18 -0
- package/dist/graphics/animation/animation-track/interpolate.js.map +1 -0
- package/dist/graphics/animation/animation-track/public.d.ts +1 -0
- package/dist/graphics/animation/animation-track/public.js +3 -0
- package/dist/graphics/animation/animation-track/public.js.map +1 -0
- package/dist/graphics/animation/animation-track/sample.d.ts +7 -0
- package/dist/graphics/animation/animation-track/sample.js +44 -0
- package/dist/graphics/animation/animation-track/sample.js.map +1 -0
- package/dist/graphics/animation/interpolation-mode/interpolation-mode.d.ts +4 -0
- package/dist/graphics/animation/interpolation-mode/interpolation-mode.js +3 -0
- package/dist/graphics/animation/interpolation-mode/interpolation-mode.js.map +1 -0
- package/dist/graphics/animation/interpolation-mode/public.d.ts +1 -0
- package/dist/graphics/animation/interpolation-mode/public.js +3 -0
- package/dist/graphics/animation/interpolation-mode/public.js.map +1 -0
- package/dist/graphics/animation/interpolation-mode/schema.d.ts +4 -0
- package/dist/graphics/animation/interpolation-mode/schema.js +3 -0
- package/dist/graphics/animation/interpolation-mode/schema.js.map +1 -0
- package/dist/graphics/camera/camera-plugin.d.ts +112 -0
- package/dist/graphics/camera/camera-plugin.js +36 -0
- package/dist/graphics/camera/camera-plugin.js.map +1 -0
- package/dist/graphics/camera/camera.d.ts +4 -0
- package/dist/graphics/camera/camera.js +3 -0
- package/dist/graphics/camera/camera.js.map +1 -0
- package/dist/graphics/camera/orbit/attach-orbit-drag.d.ts +31 -0
- package/dist/graphics/camera/orbit/attach-orbit-drag.js +44 -0
- package/dist/graphics/camera/orbit/attach-orbit-drag.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit-data-plugin.d.ts +290 -0
- package/dist/graphics/camera/orbit/orbit-data-plugin.js +42 -0
- package/dist/graphics/camera/orbit/orbit-data-plugin.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit-plugin.d.ts +281 -0
- package/dist/graphics/camera/orbit/orbit-plugin.js +12 -0
- package/dist/graphics/camera/orbit/orbit-plugin.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit-system-plugin.d.ts +292 -0
- package/dist/graphics/camera/orbit/orbit-system-plugin.js +71 -0
- package/dist/graphics/camera/orbit/orbit-system-plugin.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit.d.ts +32 -0
- package/dist/graphics/camera/orbit/orbit.js +3 -0
- package/dist/graphics/camera/orbit/orbit.js.map +1 -0
- package/dist/graphics/camera/orbit/public.d.ts +5 -0
- package/dist/graphics/camera/orbit/public.js +6 -0
- package/dist/graphics/camera/orbit/public.js.map +1 -0
- package/dist/graphics/camera/public.d.ts +4 -0
- package/dist/graphics/camera/public.js +6 -0
- package/dist/graphics/camera/public.js.map +1 -0
- package/dist/graphics/camera/schema.d.ts +65 -0
- package/dist/graphics/camera/schema.js +19 -0
- package/dist/graphics/camera/schema.js.map +1 -0
- package/dist/graphics/camera/screen-to-world-ray.d.ts +10 -0
- package/dist/graphics/camera/screen-to-world-ray.js +31 -0
- package/dist/graphics/camera/screen-to-world-ray.js.map +1 -0
- package/dist/graphics/camera/to-view-projection.d.ts +3 -0
- package/dist/graphics/camera/to-view-projection.js +23 -0
- package/dist/graphics/camera/to-view-projection.js.map +1 -0
- package/dist/graphics/graphics-plugin.d.ts +121 -0
- package/dist/graphics/graphics-plugin.js +106 -0
- package/dist/graphics/graphics-plugin.js.map +1 -0
- package/dist/graphics/picking/pick-hit.d.ts +10 -0
- package/dist/graphics/picking/pick-hit.js +3 -0
- package/dist/graphics/picking/pick-hit.js.map +1 -0
- package/dist/graphics/picking/picking-plugin.d.ts +3819 -0
- package/dist/graphics/picking/picking-plugin.js +88 -0
- package/dist/graphics/picking/picking-plugin.js.map +1 -0
- package/dist/graphics/rendering/bone-collider-plugin.d.ts +1619 -0
- package/dist/graphics/rendering/bone-collider-plugin.js +207 -0
- package/dist/graphics/rendering/bone-collider-plugin.js.map +1 -0
- package/dist/graphics/rendering/display-transform-plugin.d.ts +52 -0
- package/dist/graphics/rendering/display-transform-plugin.js +25 -0
- package/dist/graphics/rendering/display-transform-plugin.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/brdf.wgsl.d.ts +2 -0
- package/dist/graphics/rendering/ibl-render/brdf.wgsl.js +42 -0
- package/dist/graphics/rendering/ibl-render/brdf.wgsl.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.js +91 -0
- package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.d.ts +24 -0
- package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.js +34 -0
- package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.js +12 -0
- package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.js +11 -0
- package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.js +9 -0
- package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/environment.d.ts +8 -0
- package/dist/graphics/rendering/ibl-render/ibl/environment.js +170 -0
- package/dist/graphics/rendering/ibl-render/ibl/environment.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/float-to-half.d.ts +2 -0
- package/dist/graphics/rendering/ibl-render/ibl/float-to-half.js +32 -0
- package/dist/graphics/rendering/ibl-render/ibl/float-to-half.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.d.ts +2 -0
- package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.js +59 -0
- package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/irradiance.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/irradiance.js +94 -0
- package/dist/graphics/rendering/ibl-render/ibl/irradiance.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.d.ts +6 -0
- package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.js +106 -0
- package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/prefilter.d.ts +5 -0
- package/dist/graphics/rendering/ibl-render/ibl/prefilter.js +103 -0
- package/dist/graphics/rendering/ibl-render/ibl/prefilter.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/render-helpers.d.ts +4 -0
- package/dist/graphics/rendering/ibl-render/ibl/render-helpers.js +16 -0
- package/dist/graphics/rendering/ibl-render/ibl/render-helpers.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.d.ts +1028 -0
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js +409 -0
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.d.ts +8 -0
- package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.js +173 -0
- package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.d.ts +2 -0
- package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.js +50 -0
- package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.js.map +1 -0
- package/dist/graphics/rendering/interpolation-plugin.d.ts +485 -0
- package/dist/graphics/rendering/interpolation-plugin.js +98 -0
- package/dist/graphics/rendering/interpolation-plugin.js.map +1 -0
- package/dist/graphics/rendering/interpolation.test.d.ts +1 -0
- package/dist/graphics/rendering/interpolation.test.js +38 -0
- package/dist/graphics/rendering/interpolation.test.js.map +1 -0
- package/dist/graphics/rendering/jolt-ragdoll-plugin.d.ts +1628 -0
- package/dist/graphics/rendering/jolt-ragdoll-plugin.js +218 -0
- package/dist/graphics/rendering/jolt-ragdoll-plugin.js.map +1 -0
- package/dist/graphics/rendering/material-gpu/material-arrays.d.ts +47 -0
- package/dist/graphics/rendering/material-gpu/material-arrays.js +83 -0
- package/dist/graphics/rendering/material-gpu/material-arrays.js.map +1 -0
- package/dist/graphics/rendering/material-gpu/material-bind-group.d.ts +9 -0
- package/dist/graphics/rendering/material-gpu/material-bind-group.js +52 -0
- package/dist/graphics/rendering/material-gpu/material-bind-group.js.map +1 -0
- package/dist/graphics/rendering/material-gpu/material-gpu-plugin.d.ts +259 -0
- package/dist/graphics/rendering/material-gpu/material-gpu-plugin.js +90 -0
- package/dist/graphics/rendering/material-gpu/material-gpu-plugin.js.map +1 -0
- package/dist/graphics/rendering/model-collider-plugin.d.ts +1232 -0
- package/dist/graphics/rendering/model-collider-plugin.js +81 -0
- package/dist/graphics/rendering/model-collider-plugin.js.map +1 -0
- package/dist/graphics/rendering/pbr-core-plugin.d.ts +75 -0
- package/dist/graphics/rendering/pbr-core-plugin.js +39 -0
- package/dist/graphics/rendering/pbr-core-plugin.js.map +1 -0
- package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.d.ts +10 -0
- package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.js +145 -0
- package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.js.map +1 -0
- package/dist/graphics/rendering/pbr-render/pbr-render-plugin.d.ts +1266 -0
- package/dist/graphics/rendering/pbr-render/pbr-render-plugin.js +254 -0
- package/dist/graphics/rendering/pbr-render/pbr-render-plugin.js.map +1 -0
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.d.ts +1004 -0
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js +116 -0
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js.map +1 -0
- package/dist/graphics/rendering/ragdoll-trigger-plugin.d.ts +31 -0
- package/dist/graphics/rendering/ragdoll-trigger-plugin.js +20 -0
- package/dist/graphics/rendering/ragdoll-trigger-plugin.js.map +1 -0
- package/dist/graphics/rendering/rendering-plugin.d.ts +1 -0
- package/dist/graphics/rendering/rendering-plugin.js +3 -0
- package/dist/graphics/rendering/rendering-plugin.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/layout.d.ts +2 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/layout.js +18 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/layout.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/public.d.ts +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/public.js +3 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/public.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.d.ts +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.js +3 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-plugin.d.ts +1212 -0
- package/dist/graphics/rendering/skinning/skinning-plugin.js +207 -0
- package/dist/graphics/rendering/skinning/skinning-plugin.js.map +1 -0
- package/dist/graphics/rendering/standard-vertex/layout.d.ts +2 -0
- package/dist/graphics/rendering/standard-vertex/layout.js +16 -0
- package/dist/graphics/rendering/standard-vertex/layout.js.map +1 -0
- package/dist/graphics/rendering/standard-vertex/public.d.ts +2 -0
- package/dist/graphics/rendering/standard-vertex/public.js +4 -0
- package/dist/graphics/rendering/standard-vertex/public.js.map +1 -0
- package/dist/graphics/rendering/standard-vertex/schema.d.ts +52 -0
- package/dist/graphics/rendering/standard-vertex/schema.js +15 -0
- package/dist/graphics/rendering/standard-vertex/schema.js.map +1 -0
- package/dist/graphics/rendering/standard-vertex/standard-vertex.d.ts +4 -0
- package/dist/graphics/rendering/standard-vertex/standard-vertex.js +3 -0
- package/dist/graphics/rendering/standard-vertex/standard-vertex.js.map +1 -0
- package/dist/graphics/rendering/visible-material/color-material-options.d.ts +7 -0
- package/dist/graphics/rendering/visible-material/color-material-options.js +3 -0
- package/dist/graphics/rendering/visible-material/color-material-options.js.map +1 -0
- package/dist/graphics/rendering/visible-material/create-bind-group-layout.d.ts +8 -0
- package/dist/graphics/rendering/visible-material/create-bind-group-layout.js +35 -0
- package/dist/graphics/rendering/visible-material/create-bind-group-layout.js.map +1 -0
- package/dist/graphics/rendering/visible-material/create-color-bind-group.d.ts +10 -0
- package/dist/graphics/rendering/visible-material/create-color-bind-group.js +26 -0
- package/dist/graphics/rendering/visible-material/create-color-bind-group.js.map +1 -0
- package/dist/graphics/rendering/visible-material/public.d.ts +4 -0
- package/dist/graphics/rendering/visible-material/public.js +5 -0
- package/dist/graphics/rendering/visible-material/public.js.map +1 -0
- package/dist/graphics/rendering/visible-material/schema.d.ts +49 -0
- package/dist/graphics/rendering/visible-material/schema.js +23 -0
- package/dist/graphics/rendering/visible-material/schema.js.map +1 -0
- package/dist/graphics/rendering/visible-material/visible-material.d.ts +4 -0
- package/dist/graphics/rendering/visible-material/visible-material.js +3 -0
- package/dist/graphics/rendering/visible-material/visible-material.js.map +1 -0
- package/dist/graphics/scene/light/light-plugin.d.ts +30 -0
- package/dist/graphics/scene/light/light-plugin.js +35 -0
- package/dist/graphics/scene/light/light-plugin.js.map +1 -0
- package/dist/graphics/scene/light/light.d.ts +14 -0
- package/dist/graphics/scene/light/light.js +3 -0
- package/dist/graphics/scene/light/light.js.map +1 -0
- package/dist/graphics/scene/light/public.d.ts +1 -0
- package/dist/graphics/scene/light/public.js +2 -0
- package/dist/graphics/scene/light/public.js.map +1 -0
- package/dist/graphics/scene/model/geometry/geometry.d.ts +9 -0
- package/dist/graphics/scene/model/geometry/geometry.js +3 -0
- package/dist/graphics/scene/model/geometry/geometry.js.map +1 -0
- package/dist/graphics/scene/model/geometry/public.d.ts +1 -0
- package/dist/graphics/scene/model/geometry/public.js +3 -0
- package/dist/graphics/scene/model/geometry/public.js.map +1 -0
- package/dist/graphics/scene/model/gltf/accessor-view.d.ts +9 -0
- package/dist/graphics/scene/model/gltf/accessor-view.js +44 -0
- package/dist/graphics/scene/model/gltf/accessor-view.js.map +1 -0
- package/dist/graphics/scene/model/gltf/build-material-bind-group.d.ts +22 -0
- package/dist/graphics/scene/model/gltf/build-material-bind-group.js +75 -0
- package/dist/graphics/scene/model/gltf/build-material-bind-group.js.map +1 -0
- package/dist/graphics/scene/model/gltf/compute-world-matrices.d.ts +7 -0
- package/dist/graphics/scene/model/gltf/compute-world-matrices.js +38 -0
- package/dist/graphics/scene/model/gltf/compute-world-matrices.js.map +1 -0
- package/dist/graphics/scene/model/gltf/create-color-material.d.ts +3 -0
- package/dist/graphics/scene/model/gltf/create-color-material.js +34 -0
- package/dist/graphics/scene/model/gltf/create-color-material.js.map +1 -0
- package/dist/graphics/scene/model/gltf/decode-images.d.ts +12 -0
- package/dist/graphics/scene/model/gltf/decode-images.js +68 -0
- package/dist/graphics/scene/model/gltf/decode-images.js.map +1 -0
- package/dist/graphics/scene/model/gltf/gltf-schema.d.ts +152 -0
- package/dist/graphics/scene/model/gltf/gltf-schema.js +20 -0
- package/dist/graphics/scene/model/gltf/gltf-schema.js.map +1 -0
- package/dist/graphics/scene/model/gltf/load-gltf-model.d.ts +42 -0
- package/dist/graphics/scene/model/gltf/load-gltf-model.js +175 -0
- package/dist/graphics/scene/model/gltf/load-gltf-model.js.map +1 -0
- package/dist/graphics/scene/model/gltf/pack-vertex-buffer.d.ts +21 -0
- package/dist/graphics/scene/model/gltf/pack-vertex-buffer.js +106 -0
- package/dist/graphics/scene/model/gltf/pack-vertex-buffer.js.map +1 -0
- package/dist/graphics/scene/model/gltf/parse-animations.d.ts +18 -0
- package/dist/graphics/scene/model/gltf/parse-animations.js +51 -0
- package/dist/graphics/scene/model/gltf/parse-animations.js.map +1 -0
- package/dist/graphics/scene/model/gltf/parse-glb.d.ts +6 -0
- package/dist/graphics/scene/model/gltf/parse-glb.js +40 -0
- package/dist/graphics/scene/model/gltf/parse-glb.js.map +1 -0
- package/dist/graphics/scene/model/gltf/parse-skin.d.ts +19 -0
- package/dist/graphics/scene/model/gltf/parse-skin.js +43 -0
- package/dist/graphics/scene/model/gltf/parse-skin.js.map +1 -0
- package/dist/graphics/scene/model/model-loader-plugin.d.ts +922 -0
- package/dist/graphics/scene/model/model-loader-plugin.js +120 -0
- package/dist/graphics/scene/model/model-loader-plugin.js.map +1 -0
- package/dist/graphics/scene/model/model-plugin.d.ts +352 -0
- package/dist/graphics/scene/model/model-plugin.js +39 -0
- package/dist/graphics/scene/model/model-plugin.js.map +1 -0
- package/dist/graphics/scene/model/model.d.ts +11 -0
- package/dist/graphics/scene/model/model.js +3 -0
- package/dist/graphics/scene/model/model.js.map +1 -0
- package/dist/graphics/scene/model/public.d.ts +1 -0
- package/dist/graphics/scene/model/public.js +2 -0
- package/dist/graphics/scene/model/public.js.map +1 -0
- package/dist/graphics/scene/model/shape/convex-hull.d.ts +36 -0
- package/dist/graphics/scene/model/shape/convex-hull.js +152 -0
- package/dist/graphics/scene/model/shape/convex-hull.js.map +1 -0
- package/dist/graphics/scene/model/shape/convex-hull.test.d.ts +1 -0
- package/dist/graphics/scene/model/shape/convex-hull.test.js +78 -0
- package/dist/graphics/scene/model/shape/convex-hull.test.js.map +1 -0
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.d.ts +631 -0
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.js +61 -0
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.js.map +1 -0
- package/dist/graphics/scene/model/shape/shape-mesh.d.ts +34 -0
- package/dist/graphics/scene/model/shape/shape-mesh.js +142 -0
- package/dist/graphics/scene/model/shape/shape-mesh.js.map +1 -0
- package/dist/graphics/scene/model/shape/upload-shape-mesh.d.ts +9 -0
- package/dist/graphics/scene/model/shape/upload-shape-mesh.js +12 -0
- package/dist/graphics/scene/model/shape/upload-shape-mesh.js.map +1 -0
- package/dist/graphics/scene/model/world-bounds-plugin.d.ts +909 -0
- package/dist/graphics/scene/model/world-bounds-plugin.js +93 -0
- package/dist/graphics/scene/model/world-bounds-plugin.js.map +1 -0
- package/dist/graphics/scene/node/node-data-plugin.d.ts +113 -0
- package/dist/graphics/scene/node/node-data-plugin.js +27 -0
- package/dist/graphics/scene/node/node-data-plugin.js.map +1 -0
- package/dist/graphics/scene/node/node-plugin.d.ts +102 -0
- package/dist/graphics/scene/node/node-plugin.js +12 -0
- package/dist/graphics/scene/node/node-plugin.js.map +1 -0
- package/dist/graphics/scene/node/node.d.ts +19 -0
- package/dist/graphics/scene/node/node.js +3 -0
- package/dist/graphics/scene/node/node.js.map +1 -0
- package/dist/graphics/scene/node/public.d.ts +1 -0
- package/dist/graphics/scene/node/public.js +2 -0
- package/dist/graphics/scene/node/public.js.map +1 -0
- package/dist/graphics/scene/node/transform-plugin.d.ts +123 -0
- package/dist/graphics/scene/node/transform-plugin.js +65 -0
- package/dist/graphics/scene/node/transform-plugin.js.map +1 -0
- package/dist/graphics/scene/scene-plugin.d.ts +461 -0
- package/dist/graphics/scene/scene-plugin.js +19 -0
- package/dist/graphics/scene/scene-plugin.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.d.ts +7 -0
- package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.js +19 -0
- package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/public.d.ts +3 -0
- package/dist/graphics/scene/scene-uniforms/public.js +5 -0
- package/dist/graphics/scene/scene-uniforms/public.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.d.ts +137 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.js +59 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms.d.ts +11 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms.js +3 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/schema.d.ts +56 -0
- package/dist/graphics/scene/scene-uniforms/schema.js +15 -0
- package/dist/graphics/scene/scene-uniforms/schema.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/material/material-plugin.d.ts +221 -0
- package/dist/material/material-plugin.js +60 -0
- package/dist/material/material-plugin.js.map +1 -0
- package/dist/material/material.d.ts +31 -0
- package/dist/material/material.js +3 -0
- package/dist/material/material.js.map +1 -0
- package/dist/material/public.d.ts +2 -0
- package/dist/material/public.js +4 -0
- package/dist/material/public.js.map +1 -0
- package/dist/material/standard-materials.d.ts +3 -0
- package/dist/material/standard-materials.js +35 -0
- package/dist/material/standard-materials.js.map +1 -0
- package/dist/physics/body/body-type/body-type.d.ts +10 -0
- package/dist/physics/body/body-type/body-type.js +3 -0
- package/dist/physics/body/body-type/body-type.js.map +1 -0
- package/dist/physics/body/body-type/is-dynamic.d.ts +3 -0
- package/dist/physics/body/body-type/is-dynamic.js +6 -0
- package/dist/physics/body/body-type/is-dynamic.js.map +1 -0
- package/dist/physics/body/body-type/public.d.ts +2 -0
- package/dist/physics/body/body-type/public.js +4 -0
- package/dist/physics/body/body-type/public.js.map +1 -0
- package/dist/physics/body/body-type/schema.d.ts +4 -0
- package/dist/physics/body/body-type/schema.js +3 -0
- package/dist/physics/body/body-type/schema.js.map +1 -0
- package/dist/physics/body/collider-mesh.d.ts +11 -0
- package/dist/physics/body/collider-mesh.js +3 -0
- package/dist/physics/body/collider-mesh.js.map +1 -0
- package/dist/physics/body/collider-shape/collider-shape.d.ts +15 -0
- package/dist/physics/body/collider-shape/collider-shape.js +3 -0
- package/dist/physics/body/collider-shape/collider-shape.js.map +1 -0
- package/dist/physics/body/collider-shape/list.d.ts +3 -0
- package/dist/physics/body/collider-shape/list.js +5 -0
- package/dist/physics/body/collider-shape/list.js.map +1 -0
- package/dist/physics/body/collider-shape/mass-properties.d.ts +10 -0
- package/dist/physics/body/collider-shape/mass-properties.js +48 -0
- package/dist/physics/body/collider-shape/mass-properties.js.map +1 -0
- package/dist/physics/body/collider-shape/public.d.ts +4 -0
- package/dist/physics/body/collider-shape/public.js +6 -0
- package/dist/physics/body/collider-shape/public.js.map +1 -0
- package/dist/physics/body/collider-shape/schema.d.ts +4 -0
- package/dist/physics/body/collider-shape/schema.js +3 -0
- package/dist/physics/body/collider-shape/schema.js.map +1 -0
- package/dist/physics/body/collider-shape/to-index.d.ts +3 -0
- package/dist/physics/body/collider-shape/to-index.js +6 -0
- package/dist/physics/body/collider-shape/to-index.js.map +1 -0
- package/dist/physics/body/rigid-body.d.ts +23 -0
- package/dist/physics/body/rigid-body.js +3 -0
- package/dist/physics/body/rigid-body.js.map +1 -0
- package/dist/physics/body/static-collider.d.ts +25 -0
- package/dist/physics/body/static-collider.js +3 -0
- package/dist/physics/body/static-collider.js.map +1 -0
- package/dist/physics/joint/joint-plugin.d.ts +88 -0
- package/dist/physics/joint/joint-plugin.js +32 -0
- package/dist/physics/joint/joint-plugin.js.map +1 -0
- package/dist/physics/joint/joint-type/joint-type.d.ts +15 -0
- package/dist/physics/joint/joint-type/joint-type.js +3 -0
- package/dist/physics/joint/joint-type/joint-type.js.map +1 -0
- package/dist/physics/joint/joint-type/public.d.ts +1 -0
- package/dist/physics/joint/joint-type/public.js +3 -0
- package/dist/physics/joint/joint-type/public.js.map +1 -0
- package/dist/physics/joint/joint-type/schema.d.ts +4 -0
- package/dist/physics/joint/joint-type/schema.js +3 -0
- package/dist/physics/joint/joint-type/schema.js.map +1 -0
- package/dist/physics/joint/joint.d.ts +24 -0
- package/dist/physics/joint/joint.js +3 -0
- package/dist/physics/joint/joint.js.map +1 -0
- package/dist/physics/physics-clock-plugin.d.ts +86 -0
- package/dist/physics/physics-clock-plugin.js +37 -0
- package/dist/physics/physics-clock-plugin.js.map +1 -0
- package/dist/physics/physics-clock.test.d.ts +1 -0
- package/dist/physics/physics-clock.test.js +45 -0
- package/dist/physics/physics-clock.test.js.map +1 -0
- package/dist/physics/physics-data-plugin.d.ts +348 -0
- package/dist/physics/physics-data-plugin.js +71 -0
- package/dist/physics/physics-data-plugin.js.map +1 -0
- package/dist/physics/ragdoll/fit-bone-capsules.d.ts +39 -0
- package/dist/physics/ragdoll/fit-bone-capsules.js +87 -0
- package/dist/physics/ragdoll/fit-bone-capsules.js.map +1 -0
- package/dist/physics/ragdoll/fit-bone-capsules.test.d.ts +1 -0
- package/dist/physics/ragdoll/fit-bone-capsules.test.js +67 -0
- package/dist/physics/ragdoll/fit-bone-capsules.test.js.map +1 -0
- package/dist/physics/solvers/jolt-solver-plugin.d.ts +465 -0
- package/dist/physics/solvers/jolt-solver-plugin.js +440 -0
- package/dist/physics/solvers/jolt-solver-plugin.js.map +1 -0
- package/dist/physics/solvers/rapier-jolt.benchmark.test.d.ts +1 -0
- package/dist/physics/solvers/rapier-jolt.benchmark.test.js +35 -0
- package/dist/physics/solvers/rapier-jolt.benchmark.test.js.map +1 -0
- package/dist/physics/solvers/rapier-solver-plugin.d.ts +444 -0
- package/dist/physics/solvers/rapier-solver-plugin.js +284 -0
- package/dist/physics/solvers/rapier-solver-plugin.js.map +1 -0
- package/dist/physics/solvers/solver-benchmark.d.ts +45 -0
- package/dist/physics/solvers/solver-benchmark.js +115 -0
- package/dist/physics/solvers/solver-benchmark.js.map +1 -0
- package/package.json +34 -0
- package/src/core/core-plugin.ts +92 -0
- package/src/core/frame-time/frame-time-plugin.ts +44 -0
- package/src/core/frame-time/frame-time.ts +21 -0
- package/src/core/frame-time/public.ts +3 -0
- package/src/graphics/animation/animation-data-plugin.ts +119 -0
- package/src/graphics/animation/animation-plugin.test.ts +161 -0
- package/src/graphics/animation/animation-plugin.ts +26 -0
- package/src/graphics/animation/animation-track/animation-track.ts +17 -0
- package/src/graphics/animation/animation-track/componentwise-lerp.ts +24 -0
- package/src/graphics/animation/animation-track/interpolate.ts +24 -0
- package/src/graphics/animation/animation-track/public.ts +3 -0
- package/src/graphics/animation/animation-track/sample.ts +48 -0
- package/src/graphics/animation/interpolation-mode/interpolation-mode.ts +8 -0
- package/src/graphics/animation/interpolation-mode/public.ts +3 -0
- package/src/graphics/animation/interpolation-mode/schema.ts +5 -0
- package/src/graphics/camera/camera-plugin.ts +37 -0
- package/src/graphics/camera/camera.ts +8 -0
- package/src/graphics/camera/orbit/attach-orbit-drag.ts +62 -0
- package/src/graphics/camera/orbit/orbit-data-plugin.ts +44 -0
- package/src/graphics/camera/orbit/orbit-plugin.ts +13 -0
- package/src/graphics/camera/orbit/orbit-system-plugin.ts +74 -0
- package/src/graphics/camera/orbit/orbit.ts +36 -0
- package/src/graphics/camera/orbit/public.ts +7 -0
- package/src/graphics/camera/public.ts +6 -0
- package/src/graphics/camera/schema.ts +21 -0
- package/src/graphics/camera/screen-to-world-ray.ts +47 -0
- package/src/graphics/camera/to-view-projection.ts +29 -0
- package/src/graphics/graphics-plugin.ts +108 -0
- package/src/graphics/picking/pick-hit.ts +13 -0
- package/src/graphics/picking/picking-plugin.ts +101 -0
- package/src/graphics/plugins.md +120 -0
- package/src/graphics/rendering/bone-collider-plugin.ts +182 -0
- package/src/graphics/rendering/display-transform-plugin.ts +26 -0
- package/src/graphics/rendering/ibl-render/brdf.wgsl.ts +43 -0
- package/src/graphics/rendering/ibl-render/ibl/brdf-lut.ts +101 -0
- package/src/graphics/rendering/ibl-render/ibl/build-ibl-resources.ts +57 -0
- package/src/graphics/rendering/ibl-render/ibl/create-cubemap.ts +17 -0
- package/src/graphics/rendering/ibl-render/ibl/cube-face-view.ts +11 -0
- package/src/graphics/rendering/ibl-render/ibl/cubemap-sample-view.ts +9 -0
- package/src/graphics/rendering/ibl-render/ibl/environment.ts +190 -0
- package/src/graphics/rendering/ibl-render/ibl/float-to-half.ts +35 -0
- package/src/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.ts +60 -0
- package/src/graphics/rendering/ibl-render/ibl/irradiance.ts +105 -0
- package/src/graphics/rendering/ibl-render/ibl/parse-hdr.ts +108 -0
- package/src/graphics/rendering/ibl-render/ibl/prefilter.ts +121 -0
- package/src/graphics/rendering/ibl-render/ibl/render-helpers.ts +17 -0
- package/src/graphics/rendering/ibl-render/ibl-render-plugin.ts +415 -0
- package/src/graphics/rendering/ibl-render/ibl-shader.wgsl.ts +185 -0
- package/src/graphics/rendering/ibl-render/skybox-shader.wgsl.ts +51 -0
- package/src/graphics/rendering/interpolation-plugin.ts +97 -0
- package/src/graphics/rendering/interpolation.test.ts +52 -0
- package/src/graphics/rendering/jolt-ragdoll-plugin.ts +174 -0
- package/src/graphics/rendering/material-gpu/material-arrays.ts +113 -0
- package/src/graphics/rendering/material-gpu/material-bind-group.ts +61 -0
- package/src/graphics/rendering/material-gpu/material-gpu-plugin.ts +95 -0
- package/src/graphics/rendering/model-collider-plugin.ts +77 -0
- package/src/graphics/rendering/pbr-core-plugin.ts +40 -0
- package/src/graphics/rendering/pbr-render/pbr-array-shader.wgsl.ts +146 -0
- package/src/graphics/rendering/pbr-render/pbr-render-plugin.ts +247 -0
- package/src/graphics/rendering/pbr-render/physics-bridge-plugin.ts +106 -0
- package/src/graphics/rendering/ragdoll-trigger-plugin.ts +21 -0
- package/src/graphics/rendering/rendering-plugin.ts +3 -0
- package/src/graphics/rendering/skinning/skinning-attributes/layout.ts +20 -0
- package/src/graphics/rendering/skinning/skinning-attributes/public.ts +3 -0
- package/src/graphics/rendering/skinning/skinning-attributes/skinning-attributes.ts +3 -0
- package/src/graphics/rendering/skinning/skinning-plugin.ts +213 -0
- package/src/graphics/rendering/standard-vertex/layout.ts +19 -0
- package/src/graphics/rendering/standard-vertex/public.ts +4 -0
- package/src/graphics/rendering/standard-vertex/schema.ts +17 -0
- package/src/graphics/rendering/standard-vertex/standard-vertex.ts +8 -0
- package/src/graphics/rendering/visible-material/color-material-options.ts +10 -0
- package/src/graphics/rendering/visible-material/create-bind-group-layout.ts +35 -0
- package/src/graphics/rendering/visible-material/create-color-bind-group.ts +40 -0
- package/src/graphics/rendering/visible-material/public.ts +6 -0
- package/src/graphics/rendering/visible-material/schema.ts +25 -0
- package/src/graphics/rendering/visible-material/visible-material.ts +8 -0
- package/src/graphics/scene/light/light-plugin.ts +37 -0
- package/src/graphics/scene/light/light.ts +18 -0
- package/src/graphics/scene/light/public.ts +1 -0
- package/src/graphics/scene/model/geometry/geometry.ts +12 -0
- package/src/graphics/scene/model/geometry/public.ts +4 -0
- package/src/graphics/scene/model/gltf/accessor-view.ts +53 -0
- package/src/graphics/scene/model/gltf/build-material-bind-group.ts +110 -0
- package/src/graphics/scene/model/gltf/compute-world-matrices.ts +43 -0
- package/src/graphics/scene/model/gltf/create-color-material.ts +47 -0
- package/src/graphics/scene/model/gltf/decode-images.ts +93 -0
- package/src/graphics/scene/model/gltf/gltf-schema.ts +161 -0
- package/src/graphics/scene/model/gltf/load-gltf-model.ts +220 -0
- package/src/graphics/scene/model/gltf/pack-vertex-buffer.ts +116 -0
- package/src/graphics/scene/model/gltf/parse-animations.ts +66 -0
- package/src/graphics/scene/model/gltf/parse-glb.ts +51 -0
- package/src/graphics/scene/model/gltf/parse-skin.ts +67 -0
- package/src/graphics/scene/model/model-loader-plugin.ts +131 -0
- package/src/graphics/scene/model/model-plugin.ts +46 -0
- package/src/graphics/scene/model/model.ts +15 -0
- package/src/graphics/scene/model/public.ts +1 -0
- package/src/graphics/scene/model/shape/convex-hull.test.ts +72 -0
- package/src/graphics/scene/model/shape/convex-hull.ts +141 -0
- package/src/graphics/scene/model/shape/shape-geometry-plugin.ts +61 -0
- package/src/graphics/scene/model/shape/shape-mesh.ts +150 -0
- package/src/graphics/scene/model/shape/upload-shape-mesh.ts +14 -0
- package/src/graphics/scene/model/world-bounds-plugin.ts +88 -0
- package/src/graphics/scene/node/node-data-plugin.ts +28 -0
- package/src/graphics/scene/node/node-plugin.ts +13 -0
- package/src/graphics/scene/node/node.ts +23 -0
- package/src/graphics/scene/node/public.ts +1 -0
- package/src/graphics/scene/node/transform-plugin.ts +72 -0
- package/src/graphics/scene/scene-plugin.ts +20 -0
- package/src/graphics/scene/scene-uniforms/create-bind-group-layout.ts +19 -0
- package/src/graphics/scene/scene-uniforms/public.ts +5 -0
- package/src/graphics/scene/scene-uniforms/scene-uniforms-plugin.ts +64 -0
- package/src/graphics/scene/scene-uniforms/scene-uniforms.ts +15 -0
- package/src/graphics/scene/scene-uniforms/schema.ts +17 -0
- package/src/index.ts +72 -0
- package/src/material/material-plugin.ts +61 -0
- package/src/material/material.ts +38 -0
- package/src/material/public.ts +4 -0
- package/src/material/standard-materials.ts +43 -0
- package/src/physics/README.md +71 -0
- package/src/physics/body/body-type/body-type.ts +14 -0
- package/src/physics/body/body-type/is-dynamic.ts +8 -0
- package/src/physics/body/body-type/public.ts +4 -0
- package/src/physics/body/body-type/schema.ts +5 -0
- package/src/physics/body/collider-mesh.ts +13 -0
- package/src/physics/body/collider-shape/collider-shape.ts +19 -0
- package/src/physics/body/collider-shape/list.ts +7 -0
- package/src/physics/body/collider-shape/mass-properties.ts +47 -0
- package/src/physics/body/collider-shape/public.ts +6 -0
- package/src/physics/body/collider-shape/schema.ts +5 -0
- package/src/physics/body/collider-shape/to-index.ts +8 -0
- package/src/physics/body/rigid-body.ts +26 -0
- package/src/physics/body/static-collider.ts +28 -0
- package/src/physics/joint/joint-plugin.ts +33 -0
- package/src/physics/joint/joint-type/joint-type.ts +19 -0
- package/src/physics/joint/joint-type/public.ts +3 -0
- package/src/physics/joint/joint-type/schema.ts +5 -0
- package/src/physics/joint/joint.ts +27 -0
- package/src/physics/physics-clock-plugin.ts +61 -0
- package/src/physics/physics-clock.test.ts +55 -0
- package/src/physics/physics-data-plugin.ts +73 -0
- package/src/physics/ragdoll/fit-bone-capsules.test.ts +66 -0
- package/src/physics/ragdoll/fit-bone-capsules.ts +106 -0
- package/src/physics/solvers/README.md +63 -0
- package/src/physics/solvers/jolt-solver-plugin.ts +382 -0
- package/src/physics/solvers/rapier-jolt.benchmark.test.ts +39 -0
- package/src/physics/solvers/rapier-solver-plugin.ts +251 -0
- package/src/physics/solvers/solver-benchmark.ts +172 -0
- package/tsconfig.json +25 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { Database } from "@adobe/data/ecs";
|
|
3
|
+
import { Aabb, Mat4x4 } from "@adobe/data/math";
|
|
4
|
+
import { transform } from "../node/transform-plugin.js";
|
|
5
|
+
import { modelLoader } from "./model-loader-plugin.js";
|
|
6
|
+
/**
|
|
7
|
+
* worldBoundsCreate
|
|
8
|
+
* query: Model-_worldBounds
|
|
9
|
+
* write: _worldBounds (archetype migration; unit placeholder)
|
|
10
|
+
*
|
|
11
|
+
* Adds the `_worldBounds` column to any Model that doesn't have it yet, so
|
|
12
|
+
* `worldBoundsSystem` can write directly without further migration.
|
|
13
|
+
*
|
|
14
|
+
* worldBoundsSystem
|
|
15
|
+
* query: Model+_worldMatrix+_worldBounds
|
|
16
|
+
* read: geometry → _bounds, _worldMatrix
|
|
17
|
+
* write: _worldBounds
|
|
18
|
+
*
|
|
19
|
+
* Transforms the asset-space AABB on each Model's `geometry` by the Model's
|
|
20
|
+
* `_worldMatrix` (all 8 corners, reduce to min/max) and writes the result.
|
|
21
|
+
* Geometries still loading have no `_bounds` yet — those Models are skipped
|
|
22
|
+
* until the asset finishes; their `_worldBounds` stays at its placeholder.
|
|
23
|
+
*
|
|
24
|
+
* Cost: one matrix-vec multiply × 8 corners × N visible Models, per frame.
|
|
25
|
+
* At N=1000 that's ~8K vec3 ops; well under 0.1ms on modern CPUs.
|
|
26
|
+
*/
|
|
27
|
+
export const worldBounds = Database.Plugin.create({
|
|
28
|
+
extends: Database.Plugin.combine(modelLoader, transform),
|
|
29
|
+
systems: {
|
|
30
|
+
worldBoundsCreate: {
|
|
31
|
+
schedule: { after: ["transformCreateWorldMatrix"] },
|
|
32
|
+
create: db => () => {
|
|
33
|
+
for (const arch of db.store.queryArchetypes(["geometry", "_worldMatrix"], { exclude: ["_worldBounds"] })) {
|
|
34
|
+
const ids = arch.columns.id;
|
|
35
|
+
// Iterate tail→head: every row migrates out of this archetype.
|
|
36
|
+
for (let i = arch.rowCount - 1; i >= 0; i--) {
|
|
37
|
+
db.store.update(ids.get(i), { _worldBounds: Aabb.unit });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
worldBoundsSystem: {
|
|
43
|
+
schedule: { after: ["transformSystem", "worldBoundsCreate"] },
|
|
44
|
+
create: db => () => {
|
|
45
|
+
for (const arch of db.store.queryArchetypes([
|
|
46
|
+
"geometry", "_worldMatrix", "_worldBounds",
|
|
47
|
+
])) {
|
|
48
|
+
const geos = arch.columns.geometry;
|
|
49
|
+
const worldMats = arch.columns._worldMatrix;
|
|
50
|
+
const worldBoundsCol = arch.columns._worldBounds;
|
|
51
|
+
for (let i = 0; i < arch.rowCount; i++) {
|
|
52
|
+
const localBounds = db.store.get(geos.get(i), "_bounds");
|
|
53
|
+
if (!localBounds)
|
|
54
|
+
continue;
|
|
55
|
+
worldBoundsCol.set(i, transformAabb(localBounds, worldMats.get(i)));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
const transformAabb = (local, m) => {
|
|
63
|
+
const { min, max } = local;
|
|
64
|
+
let minX = Infinity, minY = Infinity, minZ = Infinity;
|
|
65
|
+
let maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
|
|
66
|
+
// The 8 box corners.
|
|
67
|
+
for (let cx = 0; cx < 2; cx++) {
|
|
68
|
+
for (let cy = 0; cy < 2; cy++) {
|
|
69
|
+
for (let cz = 0; cz < 2; cz++) {
|
|
70
|
+
const corner = [
|
|
71
|
+
cx === 0 ? min[0] : max[0],
|
|
72
|
+
cy === 0 ? min[1] : max[1],
|
|
73
|
+
cz === 0 ? min[2] : max[2],
|
|
74
|
+
];
|
|
75
|
+
const w = Mat4x4.multiplyVec3(m, corner);
|
|
76
|
+
if (w[0] < minX)
|
|
77
|
+
minX = w[0];
|
|
78
|
+
if (w[0] > maxX)
|
|
79
|
+
maxX = w[0];
|
|
80
|
+
if (w[1] < minY)
|
|
81
|
+
minY = w[1];
|
|
82
|
+
if (w[1] > maxY)
|
|
83
|
+
maxY = w[1];
|
|
84
|
+
if (w[2] < minZ)
|
|
85
|
+
minZ = w[2];
|
|
86
|
+
if (w[2] > maxZ)
|
|
87
|
+
maxZ = w[2];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return { min: [minX, minY, minZ], max: [maxX, maxY, maxZ] };
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=world-bounds-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"world-bounds-plugin.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/world-bounds-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The transform-hierarchy core model. Every entity with a position in the
|
|
3
|
+
* world is a `Node` — see `node.ts` for the field bundle.
|
|
4
|
+
*
|
|
5
|
+
* `_worldMatrix` and `_worldBounds` are declared as components but NOT listed
|
|
6
|
+
* on the authored Node archetype — systems write them via `db.store.update`,
|
|
7
|
+
* migrating each entity once into a wider archetype.
|
|
8
|
+
*/
|
|
9
|
+
export declare const nodeData: {
|
|
10
|
+
readonly components: {
|
|
11
|
+
readonly visible: {
|
|
12
|
+
readonly type: "boolean";
|
|
13
|
+
readonly const: true;
|
|
14
|
+
readonly default: true;
|
|
15
|
+
};
|
|
16
|
+
readonly position: {
|
|
17
|
+
readonly type: "array";
|
|
18
|
+
readonly items: {
|
|
19
|
+
readonly type: "number";
|
|
20
|
+
readonly precision: 1;
|
|
21
|
+
readonly default: number;
|
|
22
|
+
};
|
|
23
|
+
readonly minItems: 3;
|
|
24
|
+
readonly maxItems: 3;
|
|
25
|
+
readonly default: readonly [0, 0, 0];
|
|
26
|
+
};
|
|
27
|
+
readonly rotation: {
|
|
28
|
+
readonly type: "array";
|
|
29
|
+
readonly items: {
|
|
30
|
+
readonly type: "number";
|
|
31
|
+
readonly precision: 1;
|
|
32
|
+
readonly default: number;
|
|
33
|
+
};
|
|
34
|
+
readonly minItems: 4;
|
|
35
|
+
readonly maxItems: 4;
|
|
36
|
+
readonly default: readonly [0, 0, 0, 1];
|
|
37
|
+
readonly interpolators: {
|
|
38
|
+
readonly linear: (q1: any, q2: any, t: number) => any;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
readonly scale: {
|
|
42
|
+
readonly type: "array";
|
|
43
|
+
readonly items: {
|
|
44
|
+
readonly type: "number";
|
|
45
|
+
readonly precision: 1;
|
|
46
|
+
readonly default: number;
|
|
47
|
+
};
|
|
48
|
+
readonly minItems: 3;
|
|
49
|
+
readonly maxItems: 3;
|
|
50
|
+
readonly default: readonly [0, 0, 0];
|
|
51
|
+
};
|
|
52
|
+
readonly parent: {
|
|
53
|
+
readonly type: "integer";
|
|
54
|
+
readonly minimum: -2147483648;
|
|
55
|
+
readonly maximum: 2147483647;
|
|
56
|
+
readonly default: number;
|
|
57
|
+
};
|
|
58
|
+
readonly _worldMatrix: {
|
|
59
|
+
readonly type: "array";
|
|
60
|
+
readonly items: {
|
|
61
|
+
readonly type: "number";
|
|
62
|
+
readonly precision: 1;
|
|
63
|
+
readonly default: number;
|
|
64
|
+
};
|
|
65
|
+
readonly minItems: 16;
|
|
66
|
+
readonly maxItems: 16;
|
|
67
|
+
readonly default: readonly [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
68
|
+
};
|
|
69
|
+
readonly _worldBounds: {
|
|
70
|
+
readonly type: "object";
|
|
71
|
+
readonly properties: {
|
|
72
|
+
readonly min: {
|
|
73
|
+
readonly type: "array";
|
|
74
|
+
readonly items: {
|
|
75
|
+
readonly type: "number";
|
|
76
|
+
readonly precision: 1;
|
|
77
|
+
readonly default: number;
|
|
78
|
+
};
|
|
79
|
+
readonly minItems: 3;
|
|
80
|
+
readonly maxItems: 3;
|
|
81
|
+
readonly default: readonly [0, 0, 0];
|
|
82
|
+
};
|
|
83
|
+
readonly max: {
|
|
84
|
+
readonly type: "array";
|
|
85
|
+
readonly items: {
|
|
86
|
+
readonly type: "number";
|
|
87
|
+
readonly precision: 1;
|
|
88
|
+
readonly default: number;
|
|
89
|
+
};
|
|
90
|
+
readonly minItems: 3;
|
|
91
|
+
readonly maxItems: 3;
|
|
92
|
+
readonly default: readonly [0, 0, 0];
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
readonly required: readonly ["min", "max"];
|
|
96
|
+
readonly additionalProperties: false;
|
|
97
|
+
readonly default: {
|
|
98
|
+
readonly min: readonly [0, 0, 0];
|
|
99
|
+
readonly max: readonly [0, 0, 0];
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
readonly resources: {};
|
|
104
|
+
readonly archetypes: {
|
|
105
|
+
readonly Node: readonly ["position", "rotation", "scale", "parent", "visible"];
|
|
106
|
+
};
|
|
107
|
+
readonly transactions: {};
|
|
108
|
+
readonly systems: import("@adobe/data/ecs").SystemDeclarations<never>;
|
|
109
|
+
readonly actions: {};
|
|
110
|
+
readonly services: {};
|
|
111
|
+
readonly computed: {};
|
|
112
|
+
readonly indexes: {};
|
|
113
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { Database, Entity } from "@adobe/data/ecs";
|
|
3
|
+
import { Aabb, Mat4x4, Quat, Vec3 } from "@adobe/data/math";
|
|
4
|
+
import { True } from "@adobe/data/schema";
|
|
5
|
+
/**
|
|
6
|
+
* The transform-hierarchy core model. Every entity with a position in the
|
|
7
|
+
* world is a `Node` — see `node.ts` for the field bundle.
|
|
8
|
+
*
|
|
9
|
+
* `_worldMatrix` and `_worldBounds` are declared as components but NOT listed
|
|
10
|
+
* on the authored Node archetype — systems write them via `db.store.update`,
|
|
11
|
+
* migrating each entity once into a wider archetype.
|
|
12
|
+
*/
|
|
13
|
+
export const nodeData = Database.Plugin.create({
|
|
14
|
+
components: {
|
|
15
|
+
visible: True.schema,
|
|
16
|
+
position: Vec3.schema,
|
|
17
|
+
rotation: Quat.schema,
|
|
18
|
+
scale: Vec3.schema,
|
|
19
|
+
parent: Entity.schema,
|
|
20
|
+
_worldMatrix: Mat4x4.schema,
|
|
21
|
+
_worldBounds: Aabb.schema,
|
|
22
|
+
},
|
|
23
|
+
archetypes: {
|
|
24
|
+
Node: ["position", "rotation", "scale", "parent", "visible"],
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=node-data-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-data-plugin.js","sourceRoot":"","sources":["../../../../src/graphics/scene/node/node-data-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE;QACR,OAAO,EAAO,IAAI,CAAC,MAAM;QACzB,QAAQ,EAAM,IAAI,CAAC,MAAM;QACzB,QAAQ,EAAM,IAAI,CAAC,MAAM;QACzB,KAAK,EAAS,IAAI,CAAC,MAAM;QACzB,MAAM,EAAQ,MAAM,CAAC,MAAM;QAC3B,YAAY,EAAE,MAAM,CAAC,MAAM;QAC3B,YAAY,EAAE,IAAI,CAAC,MAAM;KAC5B;IACD,UAAU,EAAE;QACR,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC/D;CACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Database } from "@adobe/data/ecs";
|
|
2
|
+
/**
|
|
3
|
+
* Full node plugin — spatial hierarchy data plus the `transform` system that
|
|
4
|
+
* derives `_worldMatrix` each frame. Use `Node.plugin` (= this) to get both.
|
|
5
|
+
* Use `nodeData` directly if you only need the declared components and archetype
|
|
6
|
+
* without the per-frame TRS computation.
|
|
7
|
+
*/
|
|
8
|
+
export declare const plugin: Database.Plugin<{
|
|
9
|
+
readonly visible: {
|
|
10
|
+
readonly type: "boolean";
|
|
11
|
+
readonly const: true;
|
|
12
|
+
readonly default: true;
|
|
13
|
+
};
|
|
14
|
+
readonly position: {
|
|
15
|
+
readonly type: "array";
|
|
16
|
+
readonly items: {
|
|
17
|
+
readonly type: "number";
|
|
18
|
+
readonly precision: 1;
|
|
19
|
+
readonly default: number;
|
|
20
|
+
};
|
|
21
|
+
readonly minItems: 3;
|
|
22
|
+
readonly maxItems: 3;
|
|
23
|
+
readonly default: readonly [0, 0, 0];
|
|
24
|
+
};
|
|
25
|
+
readonly rotation: {
|
|
26
|
+
readonly type: "array";
|
|
27
|
+
readonly items: {
|
|
28
|
+
readonly type: "number";
|
|
29
|
+
readonly precision: 1;
|
|
30
|
+
readonly default: number;
|
|
31
|
+
};
|
|
32
|
+
readonly minItems: 4;
|
|
33
|
+
readonly maxItems: 4;
|
|
34
|
+
readonly default: readonly [0, 0, 0, 1];
|
|
35
|
+
readonly interpolators: {
|
|
36
|
+
readonly linear: (q1: any, q2: any, t: number) => any;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
readonly scale: {
|
|
40
|
+
readonly type: "array";
|
|
41
|
+
readonly items: {
|
|
42
|
+
readonly type: "number";
|
|
43
|
+
readonly precision: 1;
|
|
44
|
+
readonly default: number;
|
|
45
|
+
};
|
|
46
|
+
readonly minItems: 3;
|
|
47
|
+
readonly maxItems: 3;
|
|
48
|
+
readonly default: readonly [0, 0, 0];
|
|
49
|
+
};
|
|
50
|
+
readonly parent: {
|
|
51
|
+
readonly type: "integer";
|
|
52
|
+
readonly minimum: -2147483648;
|
|
53
|
+
readonly maximum: 2147483647;
|
|
54
|
+
readonly default: number;
|
|
55
|
+
};
|
|
56
|
+
readonly _worldMatrix: {
|
|
57
|
+
readonly type: "array";
|
|
58
|
+
readonly items: {
|
|
59
|
+
readonly type: "number";
|
|
60
|
+
readonly precision: 1;
|
|
61
|
+
readonly default: number;
|
|
62
|
+
};
|
|
63
|
+
readonly minItems: 16;
|
|
64
|
+
readonly maxItems: 16;
|
|
65
|
+
readonly default: readonly [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
66
|
+
};
|
|
67
|
+
readonly _worldBounds: {
|
|
68
|
+
readonly type: "object";
|
|
69
|
+
readonly properties: {
|
|
70
|
+
readonly min: {
|
|
71
|
+
readonly type: "array";
|
|
72
|
+
readonly items: {
|
|
73
|
+
readonly type: "number";
|
|
74
|
+
readonly precision: 1;
|
|
75
|
+
readonly default: number;
|
|
76
|
+
};
|
|
77
|
+
readonly minItems: 3;
|
|
78
|
+
readonly maxItems: 3;
|
|
79
|
+
readonly default: readonly [0, 0, 0];
|
|
80
|
+
};
|
|
81
|
+
readonly max: {
|
|
82
|
+
readonly type: "array";
|
|
83
|
+
readonly items: {
|
|
84
|
+
readonly type: "number";
|
|
85
|
+
readonly precision: 1;
|
|
86
|
+
readonly default: number;
|
|
87
|
+
};
|
|
88
|
+
readonly minItems: 3;
|
|
89
|
+
readonly maxItems: 3;
|
|
90
|
+
readonly default: readonly [0, 0, 0];
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
readonly required: readonly ["min", "max"];
|
|
94
|
+
readonly additionalProperties: false;
|
|
95
|
+
readonly default: {
|
|
96
|
+
readonly min: readonly [0, 0, 0];
|
|
97
|
+
readonly max: readonly [0, 0, 0];
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
} & {}, {}, {
|
|
101
|
+
readonly Node: readonly ["position", "rotation", "scale", "parent", "visible"];
|
|
102
|
+
} & {}, {} & {}, "transformCreateWorldMatrix" | "transformSystem", {}, {}, {}, {} & {}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { Database } from "@adobe/data/ecs";
|
|
3
|
+
import { nodeData } from "./node-data-plugin.js";
|
|
4
|
+
import { transform } from "./transform-plugin.js";
|
|
5
|
+
/**
|
|
6
|
+
* Full node plugin — spatial hierarchy data plus the `transform` system that
|
|
7
|
+
* derives `_worldMatrix` each frame. Use `Node.plugin` (= this) to get both.
|
|
8
|
+
* Use `nodeData` directly if you only need the declared components and archetype
|
|
9
|
+
* without the per-frame TRS computation.
|
|
10
|
+
*/
|
|
11
|
+
export const plugin = Database.Plugin.combine(nodeData, transform);
|
|
12
|
+
//# sourceMappingURL=node-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-plugin.js","sourceRoot":"","sources":["../../../../src/graphics/scene/node/node-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Entity } from "@adobe/data/ecs";
|
|
2
|
+
import type { Quat, Vec3 } from "@adobe/data/math";
|
|
3
|
+
/**
|
|
4
|
+
* One entity in the Node archetype — a transform-hierarchy slot. Each field
|
|
5
|
+
* is its own ECS component (typed-buffer column), but the Node shape names
|
|
6
|
+
* the bundle so consumers can declare typed locals like
|
|
7
|
+
* `const node: Node = arch.read(i)`.
|
|
8
|
+
*
|
|
9
|
+
* `_worldMatrix` is *not* on the authored Node — the `transform` system
|
|
10
|
+
* adds it later, migrating each entity into a wider archetype.
|
|
11
|
+
*/
|
|
12
|
+
export interface Node {
|
|
13
|
+
position: Vec3;
|
|
14
|
+
rotation: Quat;
|
|
15
|
+
scale: Vec3;
|
|
16
|
+
parent: Entity;
|
|
17
|
+
visible: boolean;
|
|
18
|
+
}
|
|
19
|
+
export * as Node from "./public.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../src/graphics/scene/node/node.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAsBvD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { plugin } from "./node-plugin.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../src/graphics/scene/node/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* transformCreateWorldMatrix
|
|
3
|
+
* query: Node-_worldMatrix
|
|
4
|
+
* write: _worldMatrix (archetype migration; identity)
|
|
5
|
+
*
|
|
6
|
+
* Adds the `_worldMatrix` column to any Node that doesn't have it yet, so
|
|
7
|
+
* `transformSystem` can assume the column exists and write to it directly.
|
|
8
|
+
*
|
|
9
|
+
* transformSystem
|
|
10
|
+
* query: Node+_worldMatrix
|
|
11
|
+
* read: position, rotation, scale, parent
|
|
12
|
+
* write: _worldMatrix
|
|
13
|
+
*
|
|
14
|
+
* Computes TRS for every Node and writes the result into the existing
|
|
15
|
+
* `_worldMatrix` column. Parents are typically inserted before children
|
|
16
|
+
* (glTF order, sample setup), so by the time we reach a child the parent's
|
|
17
|
+
* matrix is already populated this frame.
|
|
18
|
+
*/
|
|
19
|
+
export declare const transform: {
|
|
20
|
+
readonly components: {
|
|
21
|
+
readonly visible: {
|
|
22
|
+
readonly type: "boolean";
|
|
23
|
+
readonly const: true;
|
|
24
|
+
readonly default: true;
|
|
25
|
+
};
|
|
26
|
+
readonly position: {
|
|
27
|
+
readonly type: "array";
|
|
28
|
+
readonly items: {
|
|
29
|
+
readonly type: "number";
|
|
30
|
+
readonly precision: 1;
|
|
31
|
+
readonly default: number;
|
|
32
|
+
};
|
|
33
|
+
readonly minItems: 3;
|
|
34
|
+
readonly maxItems: 3;
|
|
35
|
+
readonly default: readonly [0, 0, 0];
|
|
36
|
+
};
|
|
37
|
+
readonly rotation: {
|
|
38
|
+
readonly type: "array";
|
|
39
|
+
readonly items: {
|
|
40
|
+
readonly type: "number";
|
|
41
|
+
readonly precision: 1;
|
|
42
|
+
readonly default: number;
|
|
43
|
+
};
|
|
44
|
+
readonly minItems: 4;
|
|
45
|
+
readonly maxItems: 4;
|
|
46
|
+
readonly default: readonly [0, 0, 0, 1];
|
|
47
|
+
readonly interpolators: {
|
|
48
|
+
readonly linear: (q1: any, q2: any, t: number) => any;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
readonly scale: {
|
|
52
|
+
readonly type: "array";
|
|
53
|
+
readonly items: {
|
|
54
|
+
readonly type: "number";
|
|
55
|
+
readonly precision: 1;
|
|
56
|
+
readonly default: number;
|
|
57
|
+
};
|
|
58
|
+
readonly minItems: 3;
|
|
59
|
+
readonly maxItems: 3;
|
|
60
|
+
readonly default: readonly [0, 0, 0];
|
|
61
|
+
};
|
|
62
|
+
readonly parent: {
|
|
63
|
+
readonly type: "integer";
|
|
64
|
+
readonly minimum: -2147483648;
|
|
65
|
+
readonly maximum: 2147483647;
|
|
66
|
+
readonly default: number;
|
|
67
|
+
};
|
|
68
|
+
readonly _worldMatrix: {
|
|
69
|
+
readonly type: "array";
|
|
70
|
+
readonly items: {
|
|
71
|
+
readonly type: "number";
|
|
72
|
+
readonly precision: 1;
|
|
73
|
+
readonly default: number;
|
|
74
|
+
};
|
|
75
|
+
readonly minItems: 16;
|
|
76
|
+
readonly maxItems: 16;
|
|
77
|
+
readonly default: readonly [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
78
|
+
};
|
|
79
|
+
readonly _worldBounds: {
|
|
80
|
+
readonly type: "object";
|
|
81
|
+
readonly properties: {
|
|
82
|
+
readonly min: {
|
|
83
|
+
readonly type: "array";
|
|
84
|
+
readonly items: {
|
|
85
|
+
readonly type: "number";
|
|
86
|
+
readonly precision: 1;
|
|
87
|
+
readonly default: number;
|
|
88
|
+
};
|
|
89
|
+
readonly minItems: 3;
|
|
90
|
+
readonly maxItems: 3;
|
|
91
|
+
readonly default: readonly [0, 0, 0];
|
|
92
|
+
};
|
|
93
|
+
readonly max: {
|
|
94
|
+
readonly type: "array";
|
|
95
|
+
readonly items: {
|
|
96
|
+
readonly type: "number";
|
|
97
|
+
readonly precision: 1;
|
|
98
|
+
readonly default: number;
|
|
99
|
+
};
|
|
100
|
+
readonly minItems: 3;
|
|
101
|
+
readonly maxItems: 3;
|
|
102
|
+
readonly default: readonly [0, 0, 0];
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
readonly required: readonly ["min", "max"];
|
|
106
|
+
readonly additionalProperties: false;
|
|
107
|
+
readonly default: {
|
|
108
|
+
readonly min: readonly [0, 0, 0];
|
|
109
|
+
readonly max: readonly [0, 0, 0];
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
} & {};
|
|
113
|
+
readonly resources: {};
|
|
114
|
+
readonly archetypes: {
|
|
115
|
+
readonly Node: readonly ["position", "rotation", "scale", "parent", "visible"];
|
|
116
|
+
} & {};
|
|
117
|
+
readonly transactions: {} & {};
|
|
118
|
+
readonly systems: import("@adobe/data/ecs").SystemDeclarations<"transformCreateWorldMatrix" | "transformSystem">;
|
|
119
|
+
readonly actions: {};
|
|
120
|
+
readonly services: {};
|
|
121
|
+
readonly computed: {};
|
|
122
|
+
readonly indexes: {} & {};
|
|
123
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { Database } from "@adobe/data/ecs";
|
|
3
|
+
import { Mat4x4, Quat } from "@adobe/data/math";
|
|
4
|
+
import { nodeData } from "./node-data-plugin.js";
|
|
5
|
+
/**
|
|
6
|
+
* transformCreateWorldMatrix
|
|
7
|
+
* query: Node-_worldMatrix
|
|
8
|
+
* write: _worldMatrix (archetype migration; identity)
|
|
9
|
+
*
|
|
10
|
+
* Adds the `_worldMatrix` column to any Node that doesn't have it yet, so
|
|
11
|
+
* `transformSystem` can assume the column exists and write to it directly.
|
|
12
|
+
*
|
|
13
|
+
* transformSystem
|
|
14
|
+
* query: Node+_worldMatrix
|
|
15
|
+
* read: position, rotation, scale, parent
|
|
16
|
+
* write: _worldMatrix
|
|
17
|
+
*
|
|
18
|
+
* Computes TRS for every Node and writes the result into the existing
|
|
19
|
+
* `_worldMatrix` column. Parents are typically inserted before children
|
|
20
|
+
* (glTF order, sample setup), so by the time we reach a child the parent's
|
|
21
|
+
* matrix is already populated this frame.
|
|
22
|
+
*/
|
|
23
|
+
export const transform = Database.Plugin.create({
|
|
24
|
+
extends: nodeData,
|
|
25
|
+
systems: {
|
|
26
|
+
transformCreateWorldMatrix: {
|
|
27
|
+
create: db => () => {
|
|
28
|
+
for (const arch of db.store.queryArchetypes(["position", "rotation", "scale", "parent"], { exclude: ["_worldMatrix"] })) {
|
|
29
|
+
const ids = arch.columns.id;
|
|
30
|
+
// Iterate tail→head: every row migrates out of this archetype,
|
|
31
|
+
// and removing the last row first means no hole-fill shift.
|
|
32
|
+
for (let i = arch.rowCount - 1; i >= 0; i--) {
|
|
33
|
+
db.store.update(ids.get(i), { _worldMatrix: Mat4x4.identity });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
transformSystem: {
|
|
39
|
+
schedule: { after: ["transformCreateWorldMatrix"] },
|
|
40
|
+
create: db => () => {
|
|
41
|
+
for (const arch of db.store.queryArchetypes([
|
|
42
|
+
"position", "rotation", "scale", "parent", "_worldMatrix",
|
|
43
|
+
])) {
|
|
44
|
+
const positions = arch.columns.position;
|
|
45
|
+
const rotations = arch.columns.rotation;
|
|
46
|
+
const scales = arch.columns.scale;
|
|
47
|
+
const parents = arch.columns.parent;
|
|
48
|
+
const worldMats = arch.columns._worldMatrix;
|
|
49
|
+
for (let i = 0; i < arch.rowCount; i++) {
|
|
50
|
+
const pos = positions.get(i);
|
|
51
|
+
const rot = rotations.get(i);
|
|
52
|
+
const scl = scales.get(i);
|
|
53
|
+
const parentId = parents.get(i);
|
|
54
|
+
const local = Mat4x4.multiply(Mat4x4.translation(pos[0], pos[1], pos[2]), Mat4x4.multiply(Quat.toMat4(rot), Mat4x4.scaling(scl[0], scl[1], scl[2])));
|
|
55
|
+
const parentWorld = parentId === 0
|
|
56
|
+
? Mat4x4.identity
|
|
57
|
+
: db.store.get(parentId, "_worldMatrix") ?? Mat4x4.identity;
|
|
58
|
+
worldMats.set(i, parentId === 0 ? local : Mat4x4.multiply(parentWorld, local));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=transform-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-plugin.js","sourceRoot":"","sources":["../../../../src/graphics/scene/node/transform-plugin.ts"],"names":[],"mappings":"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"}
|