@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.
Files changed (584) hide show
  1. package/CLAUDE.md +98 -0
  2. package/LICENSE +21 -0
  3. package/dist/core/core-plugin.d.ts +44 -0
  4. package/dist/core/core-plugin.js +90 -0
  5. package/dist/core/core-plugin.js.map +1 -0
  6. package/dist/core/frame-time/frame-time-plugin.d.ts +25 -0
  7. package/dist/core/frame-time/frame-time-plugin.js +41 -0
  8. package/dist/core/frame-time/frame-time-plugin.js.map +1 -0
  9. package/dist/core/frame-time/frame-time.d.ts +18 -0
  10. package/dist/core/frame-time/frame-time.js +3 -0
  11. package/dist/core/frame-time/frame-time.js.map +1 -0
  12. package/dist/core/frame-time/public.d.ts +1 -0
  13. package/dist/core/frame-time/public.js +3 -0
  14. package/dist/core/frame-time/public.js.map +1 -0
  15. package/dist/graphics/animation/animation-data-plugin.d.ts +216 -0
  16. package/dist/graphics/animation/animation-data-plugin.js +110 -0
  17. package/dist/graphics/animation/animation-data-plugin.js.map +1 -0
  18. package/dist/graphics/animation/animation-plugin.d.ts +214 -0
  19. package/dist/graphics/animation/animation-plugin.js +26 -0
  20. package/dist/graphics/animation/animation-plugin.js.map +1 -0
  21. package/dist/graphics/animation/animation-plugin.test.d.ts +1 -0
  22. package/dist/graphics/animation/animation-plugin.test.js +142 -0
  23. package/dist/graphics/animation/animation-plugin.test.js.map +1 -0
  24. package/dist/graphics/animation/animation-track/animation-track.d.ts +13 -0
  25. package/dist/graphics/animation/animation-track/animation-track.js +3 -0
  26. package/dist/graphics/animation/animation-track/animation-track.js.map +1 -0
  27. package/dist/graphics/animation/animation-track/componentwise-lerp.d.ts +7 -0
  28. package/dist/graphics/animation/animation-track/componentwise-lerp.js +22 -0
  29. package/dist/graphics/animation/animation-track/componentwise-lerp.js.map +1 -0
  30. package/dist/graphics/animation/animation-track/interpolate.d.ts +8 -0
  31. package/dist/graphics/animation/animation-track/interpolate.js +18 -0
  32. package/dist/graphics/animation/animation-track/interpolate.js.map +1 -0
  33. package/dist/graphics/animation/animation-track/public.d.ts +1 -0
  34. package/dist/graphics/animation/animation-track/public.js +3 -0
  35. package/dist/graphics/animation/animation-track/public.js.map +1 -0
  36. package/dist/graphics/animation/animation-track/sample.d.ts +7 -0
  37. package/dist/graphics/animation/animation-track/sample.js +44 -0
  38. package/dist/graphics/animation/animation-track/sample.js.map +1 -0
  39. package/dist/graphics/animation/interpolation-mode/interpolation-mode.d.ts +4 -0
  40. package/dist/graphics/animation/interpolation-mode/interpolation-mode.js +3 -0
  41. package/dist/graphics/animation/interpolation-mode/interpolation-mode.js.map +1 -0
  42. package/dist/graphics/animation/interpolation-mode/public.d.ts +1 -0
  43. package/dist/graphics/animation/interpolation-mode/public.js +3 -0
  44. package/dist/graphics/animation/interpolation-mode/public.js.map +1 -0
  45. package/dist/graphics/animation/interpolation-mode/schema.d.ts +4 -0
  46. package/dist/graphics/animation/interpolation-mode/schema.js +3 -0
  47. package/dist/graphics/animation/interpolation-mode/schema.js.map +1 -0
  48. package/dist/graphics/camera/camera-plugin.d.ts +112 -0
  49. package/dist/graphics/camera/camera-plugin.js +36 -0
  50. package/dist/graphics/camera/camera-plugin.js.map +1 -0
  51. package/dist/graphics/camera/camera.d.ts +4 -0
  52. package/dist/graphics/camera/camera.js +3 -0
  53. package/dist/graphics/camera/camera.js.map +1 -0
  54. package/dist/graphics/camera/orbit/attach-orbit-drag.d.ts +31 -0
  55. package/dist/graphics/camera/orbit/attach-orbit-drag.js +44 -0
  56. package/dist/graphics/camera/orbit/attach-orbit-drag.js.map +1 -0
  57. package/dist/graphics/camera/orbit/orbit-data-plugin.d.ts +290 -0
  58. package/dist/graphics/camera/orbit/orbit-data-plugin.js +42 -0
  59. package/dist/graphics/camera/orbit/orbit-data-plugin.js.map +1 -0
  60. package/dist/graphics/camera/orbit/orbit-plugin.d.ts +281 -0
  61. package/dist/graphics/camera/orbit/orbit-plugin.js +12 -0
  62. package/dist/graphics/camera/orbit/orbit-plugin.js.map +1 -0
  63. package/dist/graphics/camera/orbit/orbit-system-plugin.d.ts +292 -0
  64. package/dist/graphics/camera/orbit/orbit-system-plugin.js +71 -0
  65. package/dist/graphics/camera/orbit/orbit-system-plugin.js.map +1 -0
  66. package/dist/graphics/camera/orbit/orbit.d.ts +32 -0
  67. package/dist/graphics/camera/orbit/orbit.js +3 -0
  68. package/dist/graphics/camera/orbit/orbit.js.map +1 -0
  69. package/dist/graphics/camera/orbit/public.d.ts +5 -0
  70. package/dist/graphics/camera/orbit/public.js +6 -0
  71. package/dist/graphics/camera/orbit/public.js.map +1 -0
  72. package/dist/graphics/camera/public.d.ts +4 -0
  73. package/dist/graphics/camera/public.js +6 -0
  74. package/dist/graphics/camera/public.js.map +1 -0
  75. package/dist/graphics/camera/schema.d.ts +65 -0
  76. package/dist/graphics/camera/schema.js +19 -0
  77. package/dist/graphics/camera/schema.js.map +1 -0
  78. package/dist/graphics/camera/screen-to-world-ray.d.ts +10 -0
  79. package/dist/graphics/camera/screen-to-world-ray.js +31 -0
  80. package/dist/graphics/camera/screen-to-world-ray.js.map +1 -0
  81. package/dist/graphics/camera/to-view-projection.d.ts +3 -0
  82. package/dist/graphics/camera/to-view-projection.js +23 -0
  83. package/dist/graphics/camera/to-view-projection.js.map +1 -0
  84. package/dist/graphics/graphics-plugin.d.ts +121 -0
  85. package/dist/graphics/graphics-plugin.js +106 -0
  86. package/dist/graphics/graphics-plugin.js.map +1 -0
  87. package/dist/graphics/picking/pick-hit.d.ts +10 -0
  88. package/dist/graphics/picking/pick-hit.js +3 -0
  89. package/dist/graphics/picking/pick-hit.js.map +1 -0
  90. package/dist/graphics/picking/picking-plugin.d.ts +3819 -0
  91. package/dist/graphics/picking/picking-plugin.js +88 -0
  92. package/dist/graphics/picking/picking-plugin.js.map +1 -0
  93. package/dist/graphics/rendering/bone-collider-plugin.d.ts +1619 -0
  94. package/dist/graphics/rendering/bone-collider-plugin.js +207 -0
  95. package/dist/graphics/rendering/bone-collider-plugin.js.map +1 -0
  96. package/dist/graphics/rendering/display-transform-plugin.d.ts +52 -0
  97. package/dist/graphics/rendering/display-transform-plugin.js +25 -0
  98. package/dist/graphics/rendering/display-transform-plugin.js.map +1 -0
  99. package/dist/graphics/rendering/ibl-render/brdf.wgsl.d.ts +2 -0
  100. package/dist/graphics/rendering/ibl-render/brdf.wgsl.js +42 -0
  101. package/dist/graphics/rendering/ibl-render/brdf.wgsl.js.map +1 -0
  102. package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.d.ts +1 -0
  103. package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.js +91 -0
  104. package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.js.map +1 -0
  105. package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.d.ts +24 -0
  106. package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.js +34 -0
  107. package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.js.map +1 -0
  108. package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.d.ts +1 -0
  109. package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.js +12 -0
  110. package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.js.map +1 -0
  111. package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.d.ts +1 -0
  112. package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.js +11 -0
  113. package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.js.map +1 -0
  114. package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.d.ts +1 -0
  115. package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.js +9 -0
  116. package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.js.map +1 -0
  117. package/dist/graphics/rendering/ibl-render/ibl/environment.d.ts +8 -0
  118. package/dist/graphics/rendering/ibl-render/ibl/environment.js +170 -0
  119. package/dist/graphics/rendering/ibl-render/ibl/environment.js.map +1 -0
  120. package/dist/graphics/rendering/ibl-render/ibl/float-to-half.d.ts +2 -0
  121. package/dist/graphics/rendering/ibl-render/ibl/float-to-half.js +32 -0
  122. package/dist/graphics/rendering/ibl-render/ibl/float-to-half.js.map +1 -0
  123. package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.d.ts +2 -0
  124. package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.js +59 -0
  125. package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.js.map +1 -0
  126. package/dist/graphics/rendering/ibl-render/ibl/irradiance.d.ts +1 -0
  127. package/dist/graphics/rendering/ibl-render/ibl/irradiance.js +94 -0
  128. package/dist/graphics/rendering/ibl-render/ibl/irradiance.js.map +1 -0
  129. package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.d.ts +6 -0
  130. package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.js +106 -0
  131. package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.js.map +1 -0
  132. package/dist/graphics/rendering/ibl-render/ibl/prefilter.d.ts +5 -0
  133. package/dist/graphics/rendering/ibl-render/ibl/prefilter.js +103 -0
  134. package/dist/graphics/rendering/ibl-render/ibl/prefilter.js.map +1 -0
  135. package/dist/graphics/rendering/ibl-render/ibl/render-helpers.d.ts +4 -0
  136. package/dist/graphics/rendering/ibl-render/ibl/render-helpers.js +16 -0
  137. package/dist/graphics/rendering/ibl-render/ibl/render-helpers.js.map +1 -0
  138. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.d.ts +1028 -0
  139. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js +409 -0
  140. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js.map +1 -0
  141. package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.d.ts +8 -0
  142. package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.js +173 -0
  143. package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.js.map +1 -0
  144. package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.d.ts +2 -0
  145. package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.js +50 -0
  146. package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.js.map +1 -0
  147. package/dist/graphics/rendering/interpolation-plugin.d.ts +485 -0
  148. package/dist/graphics/rendering/interpolation-plugin.js +98 -0
  149. package/dist/graphics/rendering/interpolation-plugin.js.map +1 -0
  150. package/dist/graphics/rendering/interpolation.test.d.ts +1 -0
  151. package/dist/graphics/rendering/interpolation.test.js +38 -0
  152. package/dist/graphics/rendering/interpolation.test.js.map +1 -0
  153. package/dist/graphics/rendering/jolt-ragdoll-plugin.d.ts +1628 -0
  154. package/dist/graphics/rendering/jolt-ragdoll-plugin.js +218 -0
  155. package/dist/graphics/rendering/jolt-ragdoll-plugin.js.map +1 -0
  156. package/dist/graphics/rendering/material-gpu/material-arrays.d.ts +47 -0
  157. package/dist/graphics/rendering/material-gpu/material-arrays.js +83 -0
  158. package/dist/graphics/rendering/material-gpu/material-arrays.js.map +1 -0
  159. package/dist/graphics/rendering/material-gpu/material-bind-group.d.ts +9 -0
  160. package/dist/graphics/rendering/material-gpu/material-bind-group.js +52 -0
  161. package/dist/graphics/rendering/material-gpu/material-bind-group.js.map +1 -0
  162. package/dist/graphics/rendering/material-gpu/material-gpu-plugin.d.ts +259 -0
  163. package/dist/graphics/rendering/material-gpu/material-gpu-plugin.js +90 -0
  164. package/dist/graphics/rendering/material-gpu/material-gpu-plugin.js.map +1 -0
  165. package/dist/graphics/rendering/model-collider-plugin.d.ts +1232 -0
  166. package/dist/graphics/rendering/model-collider-plugin.js +81 -0
  167. package/dist/graphics/rendering/model-collider-plugin.js.map +1 -0
  168. package/dist/graphics/rendering/pbr-core-plugin.d.ts +75 -0
  169. package/dist/graphics/rendering/pbr-core-plugin.js +39 -0
  170. package/dist/graphics/rendering/pbr-core-plugin.js.map +1 -0
  171. package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.d.ts +10 -0
  172. package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.js +145 -0
  173. package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.js.map +1 -0
  174. package/dist/graphics/rendering/pbr-render/pbr-render-plugin.d.ts +1266 -0
  175. package/dist/graphics/rendering/pbr-render/pbr-render-plugin.js +254 -0
  176. package/dist/graphics/rendering/pbr-render/pbr-render-plugin.js.map +1 -0
  177. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.d.ts +1004 -0
  178. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js +116 -0
  179. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js.map +1 -0
  180. package/dist/graphics/rendering/ragdoll-trigger-plugin.d.ts +31 -0
  181. package/dist/graphics/rendering/ragdoll-trigger-plugin.js +20 -0
  182. package/dist/graphics/rendering/ragdoll-trigger-plugin.js.map +1 -0
  183. package/dist/graphics/rendering/rendering-plugin.d.ts +1 -0
  184. package/dist/graphics/rendering/rendering-plugin.js +3 -0
  185. package/dist/graphics/rendering/rendering-plugin.js.map +1 -0
  186. package/dist/graphics/rendering/skinning/skinning-attributes/layout.d.ts +2 -0
  187. package/dist/graphics/rendering/skinning/skinning-attributes/layout.js +18 -0
  188. package/dist/graphics/rendering/skinning/skinning-attributes/layout.js.map +1 -0
  189. package/dist/graphics/rendering/skinning/skinning-attributes/public.d.ts +1 -0
  190. package/dist/graphics/rendering/skinning/skinning-attributes/public.js +3 -0
  191. package/dist/graphics/rendering/skinning/skinning-attributes/public.js.map +1 -0
  192. package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.d.ts +1 -0
  193. package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.js +3 -0
  194. package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.js.map +1 -0
  195. package/dist/graphics/rendering/skinning/skinning-plugin.d.ts +1212 -0
  196. package/dist/graphics/rendering/skinning/skinning-plugin.js +207 -0
  197. package/dist/graphics/rendering/skinning/skinning-plugin.js.map +1 -0
  198. package/dist/graphics/rendering/standard-vertex/layout.d.ts +2 -0
  199. package/dist/graphics/rendering/standard-vertex/layout.js +16 -0
  200. package/dist/graphics/rendering/standard-vertex/layout.js.map +1 -0
  201. package/dist/graphics/rendering/standard-vertex/public.d.ts +2 -0
  202. package/dist/graphics/rendering/standard-vertex/public.js +4 -0
  203. package/dist/graphics/rendering/standard-vertex/public.js.map +1 -0
  204. package/dist/graphics/rendering/standard-vertex/schema.d.ts +52 -0
  205. package/dist/graphics/rendering/standard-vertex/schema.js +15 -0
  206. package/dist/graphics/rendering/standard-vertex/schema.js.map +1 -0
  207. package/dist/graphics/rendering/standard-vertex/standard-vertex.d.ts +4 -0
  208. package/dist/graphics/rendering/standard-vertex/standard-vertex.js +3 -0
  209. package/dist/graphics/rendering/standard-vertex/standard-vertex.js.map +1 -0
  210. package/dist/graphics/rendering/visible-material/color-material-options.d.ts +7 -0
  211. package/dist/graphics/rendering/visible-material/color-material-options.js +3 -0
  212. package/dist/graphics/rendering/visible-material/color-material-options.js.map +1 -0
  213. package/dist/graphics/rendering/visible-material/create-bind-group-layout.d.ts +8 -0
  214. package/dist/graphics/rendering/visible-material/create-bind-group-layout.js +35 -0
  215. package/dist/graphics/rendering/visible-material/create-bind-group-layout.js.map +1 -0
  216. package/dist/graphics/rendering/visible-material/create-color-bind-group.d.ts +10 -0
  217. package/dist/graphics/rendering/visible-material/create-color-bind-group.js +26 -0
  218. package/dist/graphics/rendering/visible-material/create-color-bind-group.js.map +1 -0
  219. package/dist/graphics/rendering/visible-material/public.d.ts +4 -0
  220. package/dist/graphics/rendering/visible-material/public.js +5 -0
  221. package/dist/graphics/rendering/visible-material/public.js.map +1 -0
  222. package/dist/graphics/rendering/visible-material/schema.d.ts +49 -0
  223. package/dist/graphics/rendering/visible-material/schema.js +23 -0
  224. package/dist/graphics/rendering/visible-material/schema.js.map +1 -0
  225. package/dist/graphics/rendering/visible-material/visible-material.d.ts +4 -0
  226. package/dist/graphics/rendering/visible-material/visible-material.js +3 -0
  227. package/dist/graphics/rendering/visible-material/visible-material.js.map +1 -0
  228. package/dist/graphics/scene/light/light-plugin.d.ts +30 -0
  229. package/dist/graphics/scene/light/light-plugin.js +35 -0
  230. package/dist/graphics/scene/light/light-plugin.js.map +1 -0
  231. package/dist/graphics/scene/light/light.d.ts +14 -0
  232. package/dist/graphics/scene/light/light.js +3 -0
  233. package/dist/graphics/scene/light/light.js.map +1 -0
  234. package/dist/graphics/scene/light/public.d.ts +1 -0
  235. package/dist/graphics/scene/light/public.js +2 -0
  236. package/dist/graphics/scene/light/public.js.map +1 -0
  237. package/dist/graphics/scene/model/geometry/geometry.d.ts +9 -0
  238. package/dist/graphics/scene/model/geometry/geometry.js +3 -0
  239. package/dist/graphics/scene/model/geometry/geometry.js.map +1 -0
  240. package/dist/graphics/scene/model/geometry/public.d.ts +1 -0
  241. package/dist/graphics/scene/model/geometry/public.js +3 -0
  242. package/dist/graphics/scene/model/geometry/public.js.map +1 -0
  243. package/dist/graphics/scene/model/gltf/accessor-view.d.ts +9 -0
  244. package/dist/graphics/scene/model/gltf/accessor-view.js +44 -0
  245. package/dist/graphics/scene/model/gltf/accessor-view.js.map +1 -0
  246. package/dist/graphics/scene/model/gltf/build-material-bind-group.d.ts +22 -0
  247. package/dist/graphics/scene/model/gltf/build-material-bind-group.js +75 -0
  248. package/dist/graphics/scene/model/gltf/build-material-bind-group.js.map +1 -0
  249. package/dist/graphics/scene/model/gltf/compute-world-matrices.d.ts +7 -0
  250. package/dist/graphics/scene/model/gltf/compute-world-matrices.js +38 -0
  251. package/dist/graphics/scene/model/gltf/compute-world-matrices.js.map +1 -0
  252. package/dist/graphics/scene/model/gltf/create-color-material.d.ts +3 -0
  253. package/dist/graphics/scene/model/gltf/create-color-material.js +34 -0
  254. package/dist/graphics/scene/model/gltf/create-color-material.js.map +1 -0
  255. package/dist/graphics/scene/model/gltf/decode-images.d.ts +12 -0
  256. package/dist/graphics/scene/model/gltf/decode-images.js +68 -0
  257. package/dist/graphics/scene/model/gltf/decode-images.js.map +1 -0
  258. package/dist/graphics/scene/model/gltf/gltf-schema.d.ts +152 -0
  259. package/dist/graphics/scene/model/gltf/gltf-schema.js +20 -0
  260. package/dist/graphics/scene/model/gltf/gltf-schema.js.map +1 -0
  261. package/dist/graphics/scene/model/gltf/load-gltf-model.d.ts +42 -0
  262. package/dist/graphics/scene/model/gltf/load-gltf-model.js +175 -0
  263. package/dist/graphics/scene/model/gltf/load-gltf-model.js.map +1 -0
  264. package/dist/graphics/scene/model/gltf/pack-vertex-buffer.d.ts +21 -0
  265. package/dist/graphics/scene/model/gltf/pack-vertex-buffer.js +106 -0
  266. package/dist/graphics/scene/model/gltf/pack-vertex-buffer.js.map +1 -0
  267. package/dist/graphics/scene/model/gltf/parse-animations.d.ts +18 -0
  268. package/dist/graphics/scene/model/gltf/parse-animations.js +51 -0
  269. package/dist/graphics/scene/model/gltf/parse-animations.js.map +1 -0
  270. package/dist/graphics/scene/model/gltf/parse-glb.d.ts +6 -0
  271. package/dist/graphics/scene/model/gltf/parse-glb.js +40 -0
  272. package/dist/graphics/scene/model/gltf/parse-glb.js.map +1 -0
  273. package/dist/graphics/scene/model/gltf/parse-skin.d.ts +19 -0
  274. package/dist/graphics/scene/model/gltf/parse-skin.js +43 -0
  275. package/dist/graphics/scene/model/gltf/parse-skin.js.map +1 -0
  276. package/dist/graphics/scene/model/model-loader-plugin.d.ts +922 -0
  277. package/dist/graphics/scene/model/model-loader-plugin.js +120 -0
  278. package/dist/graphics/scene/model/model-loader-plugin.js.map +1 -0
  279. package/dist/graphics/scene/model/model-plugin.d.ts +352 -0
  280. package/dist/graphics/scene/model/model-plugin.js +39 -0
  281. package/dist/graphics/scene/model/model-plugin.js.map +1 -0
  282. package/dist/graphics/scene/model/model.d.ts +11 -0
  283. package/dist/graphics/scene/model/model.js +3 -0
  284. package/dist/graphics/scene/model/model.js.map +1 -0
  285. package/dist/graphics/scene/model/public.d.ts +1 -0
  286. package/dist/graphics/scene/model/public.js +2 -0
  287. package/dist/graphics/scene/model/public.js.map +1 -0
  288. package/dist/graphics/scene/model/shape/convex-hull.d.ts +36 -0
  289. package/dist/graphics/scene/model/shape/convex-hull.js +152 -0
  290. package/dist/graphics/scene/model/shape/convex-hull.js.map +1 -0
  291. package/dist/graphics/scene/model/shape/convex-hull.test.d.ts +1 -0
  292. package/dist/graphics/scene/model/shape/convex-hull.test.js +78 -0
  293. package/dist/graphics/scene/model/shape/convex-hull.test.js.map +1 -0
  294. package/dist/graphics/scene/model/shape/shape-geometry-plugin.d.ts +631 -0
  295. package/dist/graphics/scene/model/shape/shape-geometry-plugin.js +61 -0
  296. package/dist/graphics/scene/model/shape/shape-geometry-plugin.js.map +1 -0
  297. package/dist/graphics/scene/model/shape/shape-mesh.d.ts +34 -0
  298. package/dist/graphics/scene/model/shape/shape-mesh.js +142 -0
  299. package/dist/graphics/scene/model/shape/shape-mesh.js.map +1 -0
  300. package/dist/graphics/scene/model/shape/upload-shape-mesh.d.ts +9 -0
  301. package/dist/graphics/scene/model/shape/upload-shape-mesh.js +12 -0
  302. package/dist/graphics/scene/model/shape/upload-shape-mesh.js.map +1 -0
  303. package/dist/graphics/scene/model/world-bounds-plugin.d.ts +909 -0
  304. package/dist/graphics/scene/model/world-bounds-plugin.js +93 -0
  305. package/dist/graphics/scene/model/world-bounds-plugin.js.map +1 -0
  306. package/dist/graphics/scene/node/node-data-plugin.d.ts +113 -0
  307. package/dist/graphics/scene/node/node-data-plugin.js +27 -0
  308. package/dist/graphics/scene/node/node-data-plugin.js.map +1 -0
  309. package/dist/graphics/scene/node/node-plugin.d.ts +102 -0
  310. package/dist/graphics/scene/node/node-plugin.js +12 -0
  311. package/dist/graphics/scene/node/node-plugin.js.map +1 -0
  312. package/dist/graphics/scene/node/node.d.ts +19 -0
  313. package/dist/graphics/scene/node/node.js +3 -0
  314. package/dist/graphics/scene/node/node.js.map +1 -0
  315. package/dist/graphics/scene/node/public.d.ts +1 -0
  316. package/dist/graphics/scene/node/public.js +2 -0
  317. package/dist/graphics/scene/node/public.js.map +1 -0
  318. package/dist/graphics/scene/node/transform-plugin.d.ts +123 -0
  319. package/dist/graphics/scene/node/transform-plugin.js +65 -0
  320. package/dist/graphics/scene/node/transform-plugin.js.map +1 -0
  321. package/dist/graphics/scene/scene-plugin.d.ts +461 -0
  322. package/dist/graphics/scene/scene-plugin.js +19 -0
  323. package/dist/graphics/scene/scene-plugin.js.map +1 -0
  324. package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.d.ts +7 -0
  325. package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.js +19 -0
  326. package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.js.map +1 -0
  327. package/dist/graphics/scene/scene-uniforms/public.d.ts +3 -0
  328. package/dist/graphics/scene/scene-uniforms/public.js +5 -0
  329. package/dist/graphics/scene/scene-uniforms/public.js.map +1 -0
  330. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.d.ts +137 -0
  331. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.js +59 -0
  332. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.js.map +1 -0
  333. package/dist/graphics/scene/scene-uniforms/scene-uniforms.d.ts +11 -0
  334. package/dist/graphics/scene/scene-uniforms/scene-uniforms.js +3 -0
  335. package/dist/graphics/scene/scene-uniforms/scene-uniforms.js.map +1 -0
  336. package/dist/graphics/scene/scene-uniforms/schema.d.ts +56 -0
  337. package/dist/graphics/scene/scene-uniforms/schema.js +15 -0
  338. package/dist/graphics/scene/scene-uniforms/schema.js.map +1 -0
  339. package/dist/index.d.ts +53 -0
  340. package/dist/index.js +56 -0
  341. package/dist/index.js.map +1 -0
  342. package/dist/material/material-plugin.d.ts +221 -0
  343. package/dist/material/material-plugin.js +60 -0
  344. package/dist/material/material-plugin.js.map +1 -0
  345. package/dist/material/material.d.ts +31 -0
  346. package/dist/material/material.js +3 -0
  347. package/dist/material/material.js.map +1 -0
  348. package/dist/material/public.d.ts +2 -0
  349. package/dist/material/public.js +4 -0
  350. package/dist/material/public.js.map +1 -0
  351. package/dist/material/standard-materials.d.ts +3 -0
  352. package/dist/material/standard-materials.js +35 -0
  353. package/dist/material/standard-materials.js.map +1 -0
  354. package/dist/physics/body/body-type/body-type.d.ts +10 -0
  355. package/dist/physics/body/body-type/body-type.js +3 -0
  356. package/dist/physics/body/body-type/body-type.js.map +1 -0
  357. package/dist/physics/body/body-type/is-dynamic.d.ts +3 -0
  358. package/dist/physics/body/body-type/is-dynamic.js +6 -0
  359. package/dist/physics/body/body-type/is-dynamic.js.map +1 -0
  360. package/dist/physics/body/body-type/public.d.ts +2 -0
  361. package/dist/physics/body/body-type/public.js +4 -0
  362. package/dist/physics/body/body-type/public.js.map +1 -0
  363. package/dist/physics/body/body-type/schema.d.ts +4 -0
  364. package/dist/physics/body/body-type/schema.js +3 -0
  365. package/dist/physics/body/body-type/schema.js.map +1 -0
  366. package/dist/physics/body/collider-mesh.d.ts +11 -0
  367. package/dist/physics/body/collider-mesh.js +3 -0
  368. package/dist/physics/body/collider-mesh.js.map +1 -0
  369. package/dist/physics/body/collider-shape/collider-shape.d.ts +15 -0
  370. package/dist/physics/body/collider-shape/collider-shape.js +3 -0
  371. package/dist/physics/body/collider-shape/collider-shape.js.map +1 -0
  372. package/dist/physics/body/collider-shape/list.d.ts +3 -0
  373. package/dist/physics/body/collider-shape/list.js +5 -0
  374. package/dist/physics/body/collider-shape/list.js.map +1 -0
  375. package/dist/physics/body/collider-shape/mass-properties.d.ts +10 -0
  376. package/dist/physics/body/collider-shape/mass-properties.js +48 -0
  377. package/dist/physics/body/collider-shape/mass-properties.js.map +1 -0
  378. package/dist/physics/body/collider-shape/public.d.ts +4 -0
  379. package/dist/physics/body/collider-shape/public.js +6 -0
  380. package/dist/physics/body/collider-shape/public.js.map +1 -0
  381. package/dist/physics/body/collider-shape/schema.d.ts +4 -0
  382. package/dist/physics/body/collider-shape/schema.js +3 -0
  383. package/dist/physics/body/collider-shape/schema.js.map +1 -0
  384. package/dist/physics/body/collider-shape/to-index.d.ts +3 -0
  385. package/dist/physics/body/collider-shape/to-index.js +6 -0
  386. package/dist/physics/body/collider-shape/to-index.js.map +1 -0
  387. package/dist/physics/body/rigid-body.d.ts +23 -0
  388. package/dist/physics/body/rigid-body.js +3 -0
  389. package/dist/physics/body/rigid-body.js.map +1 -0
  390. package/dist/physics/body/static-collider.d.ts +25 -0
  391. package/dist/physics/body/static-collider.js +3 -0
  392. package/dist/physics/body/static-collider.js.map +1 -0
  393. package/dist/physics/joint/joint-plugin.d.ts +88 -0
  394. package/dist/physics/joint/joint-plugin.js +32 -0
  395. package/dist/physics/joint/joint-plugin.js.map +1 -0
  396. package/dist/physics/joint/joint-type/joint-type.d.ts +15 -0
  397. package/dist/physics/joint/joint-type/joint-type.js +3 -0
  398. package/dist/physics/joint/joint-type/joint-type.js.map +1 -0
  399. package/dist/physics/joint/joint-type/public.d.ts +1 -0
  400. package/dist/physics/joint/joint-type/public.js +3 -0
  401. package/dist/physics/joint/joint-type/public.js.map +1 -0
  402. package/dist/physics/joint/joint-type/schema.d.ts +4 -0
  403. package/dist/physics/joint/joint-type/schema.js +3 -0
  404. package/dist/physics/joint/joint-type/schema.js.map +1 -0
  405. package/dist/physics/joint/joint.d.ts +24 -0
  406. package/dist/physics/joint/joint.js +3 -0
  407. package/dist/physics/joint/joint.js.map +1 -0
  408. package/dist/physics/physics-clock-plugin.d.ts +86 -0
  409. package/dist/physics/physics-clock-plugin.js +37 -0
  410. package/dist/physics/physics-clock-plugin.js.map +1 -0
  411. package/dist/physics/physics-clock.test.d.ts +1 -0
  412. package/dist/physics/physics-clock.test.js +45 -0
  413. package/dist/physics/physics-clock.test.js.map +1 -0
  414. package/dist/physics/physics-data-plugin.d.ts +348 -0
  415. package/dist/physics/physics-data-plugin.js +71 -0
  416. package/dist/physics/physics-data-plugin.js.map +1 -0
  417. package/dist/physics/ragdoll/fit-bone-capsules.d.ts +39 -0
  418. package/dist/physics/ragdoll/fit-bone-capsules.js +87 -0
  419. package/dist/physics/ragdoll/fit-bone-capsules.js.map +1 -0
  420. package/dist/physics/ragdoll/fit-bone-capsules.test.d.ts +1 -0
  421. package/dist/physics/ragdoll/fit-bone-capsules.test.js +67 -0
  422. package/dist/physics/ragdoll/fit-bone-capsules.test.js.map +1 -0
  423. package/dist/physics/solvers/jolt-solver-plugin.d.ts +465 -0
  424. package/dist/physics/solvers/jolt-solver-plugin.js +440 -0
  425. package/dist/physics/solvers/jolt-solver-plugin.js.map +1 -0
  426. package/dist/physics/solvers/rapier-jolt.benchmark.test.d.ts +1 -0
  427. package/dist/physics/solvers/rapier-jolt.benchmark.test.js +35 -0
  428. package/dist/physics/solvers/rapier-jolt.benchmark.test.js.map +1 -0
  429. package/dist/physics/solvers/rapier-solver-plugin.d.ts +444 -0
  430. package/dist/physics/solvers/rapier-solver-plugin.js +284 -0
  431. package/dist/physics/solvers/rapier-solver-plugin.js.map +1 -0
  432. package/dist/physics/solvers/solver-benchmark.d.ts +45 -0
  433. package/dist/physics/solvers/solver-benchmark.js +115 -0
  434. package/dist/physics/solvers/solver-benchmark.js.map +1 -0
  435. package/package.json +34 -0
  436. package/src/core/core-plugin.ts +92 -0
  437. package/src/core/frame-time/frame-time-plugin.ts +44 -0
  438. package/src/core/frame-time/frame-time.ts +21 -0
  439. package/src/core/frame-time/public.ts +3 -0
  440. package/src/graphics/animation/animation-data-plugin.ts +119 -0
  441. package/src/graphics/animation/animation-plugin.test.ts +161 -0
  442. package/src/graphics/animation/animation-plugin.ts +26 -0
  443. package/src/graphics/animation/animation-track/animation-track.ts +17 -0
  444. package/src/graphics/animation/animation-track/componentwise-lerp.ts +24 -0
  445. package/src/graphics/animation/animation-track/interpolate.ts +24 -0
  446. package/src/graphics/animation/animation-track/public.ts +3 -0
  447. package/src/graphics/animation/animation-track/sample.ts +48 -0
  448. package/src/graphics/animation/interpolation-mode/interpolation-mode.ts +8 -0
  449. package/src/graphics/animation/interpolation-mode/public.ts +3 -0
  450. package/src/graphics/animation/interpolation-mode/schema.ts +5 -0
  451. package/src/graphics/camera/camera-plugin.ts +37 -0
  452. package/src/graphics/camera/camera.ts +8 -0
  453. package/src/graphics/camera/orbit/attach-orbit-drag.ts +62 -0
  454. package/src/graphics/camera/orbit/orbit-data-plugin.ts +44 -0
  455. package/src/graphics/camera/orbit/orbit-plugin.ts +13 -0
  456. package/src/graphics/camera/orbit/orbit-system-plugin.ts +74 -0
  457. package/src/graphics/camera/orbit/orbit.ts +36 -0
  458. package/src/graphics/camera/orbit/public.ts +7 -0
  459. package/src/graphics/camera/public.ts +6 -0
  460. package/src/graphics/camera/schema.ts +21 -0
  461. package/src/graphics/camera/screen-to-world-ray.ts +47 -0
  462. package/src/graphics/camera/to-view-projection.ts +29 -0
  463. package/src/graphics/graphics-plugin.ts +108 -0
  464. package/src/graphics/picking/pick-hit.ts +13 -0
  465. package/src/graphics/picking/picking-plugin.ts +101 -0
  466. package/src/graphics/plugins.md +120 -0
  467. package/src/graphics/rendering/bone-collider-plugin.ts +182 -0
  468. package/src/graphics/rendering/display-transform-plugin.ts +26 -0
  469. package/src/graphics/rendering/ibl-render/brdf.wgsl.ts +43 -0
  470. package/src/graphics/rendering/ibl-render/ibl/brdf-lut.ts +101 -0
  471. package/src/graphics/rendering/ibl-render/ibl/build-ibl-resources.ts +57 -0
  472. package/src/graphics/rendering/ibl-render/ibl/create-cubemap.ts +17 -0
  473. package/src/graphics/rendering/ibl-render/ibl/cube-face-view.ts +11 -0
  474. package/src/graphics/rendering/ibl-render/ibl/cubemap-sample-view.ts +9 -0
  475. package/src/graphics/rendering/ibl-render/ibl/environment.ts +190 -0
  476. package/src/graphics/rendering/ibl-render/ibl/float-to-half.ts +35 -0
  477. package/src/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.ts +60 -0
  478. package/src/graphics/rendering/ibl-render/ibl/irradiance.ts +105 -0
  479. package/src/graphics/rendering/ibl-render/ibl/parse-hdr.ts +108 -0
  480. package/src/graphics/rendering/ibl-render/ibl/prefilter.ts +121 -0
  481. package/src/graphics/rendering/ibl-render/ibl/render-helpers.ts +17 -0
  482. package/src/graphics/rendering/ibl-render/ibl-render-plugin.ts +415 -0
  483. package/src/graphics/rendering/ibl-render/ibl-shader.wgsl.ts +185 -0
  484. package/src/graphics/rendering/ibl-render/skybox-shader.wgsl.ts +51 -0
  485. package/src/graphics/rendering/interpolation-plugin.ts +97 -0
  486. package/src/graphics/rendering/interpolation.test.ts +52 -0
  487. package/src/graphics/rendering/jolt-ragdoll-plugin.ts +174 -0
  488. package/src/graphics/rendering/material-gpu/material-arrays.ts +113 -0
  489. package/src/graphics/rendering/material-gpu/material-bind-group.ts +61 -0
  490. package/src/graphics/rendering/material-gpu/material-gpu-plugin.ts +95 -0
  491. package/src/graphics/rendering/model-collider-plugin.ts +77 -0
  492. package/src/graphics/rendering/pbr-core-plugin.ts +40 -0
  493. package/src/graphics/rendering/pbr-render/pbr-array-shader.wgsl.ts +146 -0
  494. package/src/graphics/rendering/pbr-render/pbr-render-plugin.ts +247 -0
  495. package/src/graphics/rendering/pbr-render/physics-bridge-plugin.ts +106 -0
  496. package/src/graphics/rendering/ragdoll-trigger-plugin.ts +21 -0
  497. package/src/graphics/rendering/rendering-plugin.ts +3 -0
  498. package/src/graphics/rendering/skinning/skinning-attributes/layout.ts +20 -0
  499. package/src/graphics/rendering/skinning/skinning-attributes/public.ts +3 -0
  500. package/src/graphics/rendering/skinning/skinning-attributes/skinning-attributes.ts +3 -0
  501. package/src/graphics/rendering/skinning/skinning-plugin.ts +213 -0
  502. package/src/graphics/rendering/standard-vertex/layout.ts +19 -0
  503. package/src/graphics/rendering/standard-vertex/public.ts +4 -0
  504. package/src/graphics/rendering/standard-vertex/schema.ts +17 -0
  505. package/src/graphics/rendering/standard-vertex/standard-vertex.ts +8 -0
  506. package/src/graphics/rendering/visible-material/color-material-options.ts +10 -0
  507. package/src/graphics/rendering/visible-material/create-bind-group-layout.ts +35 -0
  508. package/src/graphics/rendering/visible-material/create-color-bind-group.ts +40 -0
  509. package/src/graphics/rendering/visible-material/public.ts +6 -0
  510. package/src/graphics/rendering/visible-material/schema.ts +25 -0
  511. package/src/graphics/rendering/visible-material/visible-material.ts +8 -0
  512. package/src/graphics/scene/light/light-plugin.ts +37 -0
  513. package/src/graphics/scene/light/light.ts +18 -0
  514. package/src/graphics/scene/light/public.ts +1 -0
  515. package/src/graphics/scene/model/geometry/geometry.ts +12 -0
  516. package/src/graphics/scene/model/geometry/public.ts +4 -0
  517. package/src/graphics/scene/model/gltf/accessor-view.ts +53 -0
  518. package/src/graphics/scene/model/gltf/build-material-bind-group.ts +110 -0
  519. package/src/graphics/scene/model/gltf/compute-world-matrices.ts +43 -0
  520. package/src/graphics/scene/model/gltf/create-color-material.ts +47 -0
  521. package/src/graphics/scene/model/gltf/decode-images.ts +93 -0
  522. package/src/graphics/scene/model/gltf/gltf-schema.ts +161 -0
  523. package/src/graphics/scene/model/gltf/load-gltf-model.ts +220 -0
  524. package/src/graphics/scene/model/gltf/pack-vertex-buffer.ts +116 -0
  525. package/src/graphics/scene/model/gltf/parse-animations.ts +66 -0
  526. package/src/graphics/scene/model/gltf/parse-glb.ts +51 -0
  527. package/src/graphics/scene/model/gltf/parse-skin.ts +67 -0
  528. package/src/graphics/scene/model/model-loader-plugin.ts +131 -0
  529. package/src/graphics/scene/model/model-plugin.ts +46 -0
  530. package/src/graphics/scene/model/model.ts +15 -0
  531. package/src/graphics/scene/model/public.ts +1 -0
  532. package/src/graphics/scene/model/shape/convex-hull.test.ts +72 -0
  533. package/src/graphics/scene/model/shape/convex-hull.ts +141 -0
  534. package/src/graphics/scene/model/shape/shape-geometry-plugin.ts +61 -0
  535. package/src/graphics/scene/model/shape/shape-mesh.ts +150 -0
  536. package/src/graphics/scene/model/shape/upload-shape-mesh.ts +14 -0
  537. package/src/graphics/scene/model/world-bounds-plugin.ts +88 -0
  538. package/src/graphics/scene/node/node-data-plugin.ts +28 -0
  539. package/src/graphics/scene/node/node-plugin.ts +13 -0
  540. package/src/graphics/scene/node/node.ts +23 -0
  541. package/src/graphics/scene/node/public.ts +1 -0
  542. package/src/graphics/scene/node/transform-plugin.ts +72 -0
  543. package/src/graphics/scene/scene-plugin.ts +20 -0
  544. package/src/graphics/scene/scene-uniforms/create-bind-group-layout.ts +19 -0
  545. package/src/graphics/scene/scene-uniforms/public.ts +5 -0
  546. package/src/graphics/scene/scene-uniforms/scene-uniforms-plugin.ts +64 -0
  547. package/src/graphics/scene/scene-uniforms/scene-uniforms.ts +15 -0
  548. package/src/graphics/scene/scene-uniforms/schema.ts +17 -0
  549. package/src/index.ts +72 -0
  550. package/src/material/material-plugin.ts +61 -0
  551. package/src/material/material.ts +38 -0
  552. package/src/material/public.ts +4 -0
  553. package/src/material/standard-materials.ts +43 -0
  554. package/src/physics/README.md +71 -0
  555. package/src/physics/body/body-type/body-type.ts +14 -0
  556. package/src/physics/body/body-type/is-dynamic.ts +8 -0
  557. package/src/physics/body/body-type/public.ts +4 -0
  558. package/src/physics/body/body-type/schema.ts +5 -0
  559. package/src/physics/body/collider-mesh.ts +13 -0
  560. package/src/physics/body/collider-shape/collider-shape.ts +19 -0
  561. package/src/physics/body/collider-shape/list.ts +7 -0
  562. package/src/physics/body/collider-shape/mass-properties.ts +47 -0
  563. package/src/physics/body/collider-shape/public.ts +6 -0
  564. package/src/physics/body/collider-shape/schema.ts +5 -0
  565. package/src/physics/body/collider-shape/to-index.ts +8 -0
  566. package/src/physics/body/rigid-body.ts +26 -0
  567. package/src/physics/body/static-collider.ts +28 -0
  568. package/src/physics/joint/joint-plugin.ts +33 -0
  569. package/src/physics/joint/joint-type/joint-type.ts +19 -0
  570. package/src/physics/joint/joint-type/public.ts +3 -0
  571. package/src/physics/joint/joint-type/schema.ts +5 -0
  572. package/src/physics/joint/joint.ts +27 -0
  573. package/src/physics/physics-clock-plugin.ts +61 -0
  574. package/src/physics/physics-clock.test.ts +55 -0
  575. package/src/physics/physics-data-plugin.ts +73 -0
  576. package/src/physics/ragdoll/fit-bone-capsules.test.ts +66 -0
  577. package/src/physics/ragdoll/fit-bone-capsules.ts +106 -0
  578. package/src/physics/solvers/README.md +63 -0
  579. package/src/physics/solvers/jolt-solver-plugin.ts +382 -0
  580. package/src/physics/solvers/rapier-jolt.benchmark.test.ts +39 -0
  581. package/src/physics/solvers/rapier-solver-plugin.ts +251 -0
  582. package/src/physics/solvers/solver-benchmark.ts +172 -0
  583. package/tsconfig.json +25 -0
  584. package/tsconfig.tsbuildinfo +1 -0
package/CLAUDE.md ADDED
@@ -0,0 +1,98 @@
1
+ # CLAUDE.md — data-gpu
2
+
3
+ ## Hot-loop performance: direct typed-array column access in systems
4
+
5
+ Per-frame systems (the physics solver, the renderers, anything in `update`/
6
+ `physics`/`render`) run over every body/instance every frame. In those loops,
7
+ **never use `column.get(i)` / `column.set(i, v)` for `Vec3`/`Quat`/struct
8
+ columns** — `get` allocates a fresh array per call, so a few-hundred-element
9
+ loop churns thousands of short-lived arrays/frame and the GC stalls show up as
10
+ frame hitches.
11
+
12
+ Instead:
13
+
14
+ - **Read/write the backing memory directly.** Struct columns (`Vec3`, `Quat`,
15
+ any fixed-array/object schema) are flat `Float32Array` buffers. Hoist the
16
+ array once per archetype and index it: `Vec3` stride 3, `Quat` stride 4.
17
+
18
+ ```ts
19
+ const posArr = arch.columns.position.getTypedArray(); // not column.get(i)
20
+ for (let i = 0; i < arch.rowCount; i++) {
21
+ const o = i * 3;
22
+ state.pos[o] = posArr[o]; state.pos[o + 1] = posArr[o + 1]; state.pos[o + 2] = posArr[o + 2];
23
+ }
24
+ ```
25
+
26
+ - **Systems may write component columns directly — no transaction.**
27
+ Transactions are for authored edits / undo / sync; a per-frame solver writing
28
+ its own derived state writes the typed array directly (zero transaction
29
+ overhead, and `column.set` does no change-notification anyway).
30
+
31
+ - **Keep per-element math allocation-free.** Helpers called per row take an
32
+ out-array + offset and write into it (return scalars), rather than returning
33
+ a fresh `{...}` / `[...]`. See `ColliderShape.massProperties` (writes inverse
34
+ inertia into the solver array) and `composeTrs` in `pbr-render-plugin` (writes
35
+ a TRS matrix into a pooled arena). Reuse scratch buffers across frames; grow,
36
+ never reallocate per frame.
37
+
38
+ Worked examples: the CPU solver gather/scatter (`cpu-xpbd-plugin.ts`) and the
39
+ primitive instance packing (`pbr-render-plugin.ts`) — both are zero-allocation
40
+ in steady state.
41
+
42
+ (For the orthogonal "closure → class for V8 hidden classes" optimization on the
43
+ `@adobe/data` buffer interfaces, see the `performance` skill.)
44
+
45
+ ## ECS traversal: select in the query, never iterate rows you'll skip
46
+
47
+ When writing **any** system, before the loop ask: *which rows do I actually need
48
+ this frame, and does the query already exclude the rest?* Iterating a wide set
49
+ and `if`-skipping inside the loop is the recurring perf bug. The cost is
50
+ invisible at tens of rows and dominant at thousands (see the worked numbers
51
+ below), so make the query do the filtering. (`.claude/rules/archetypes.md` is
52
+ the canonical rule; this is the data-gpu-specific checklist.)
53
+
54
+ - **Push selection into `queryArchetypes(include, { exclude })`.** Require the
55
+ components you read; exclude the ones that disqualify a row. Don't query a
56
+ superset and filter. Distinguish by *archetype shape*, not by a per-row value
57
+ test, wherever you can: e.g. `StaticCollider` has no velocity columns, so the
58
+ dynamic gather/writeback simply never matches statics — no `if (isStatic)`.
59
+
60
+ - **Process-once work → tag + exclude.** If a system does one-time setup per
61
+ entity (mirroring a body into an external engine, deriving `_worldBounds`,
62
+ uploading a buffer), add a private `_`-prefixed **`True` tag** when done and
63
+ `exclude` it from the query. Steady state then matches **zero archetypes** and
64
+ iterates nothing, instead of re-scanning every entity every frame to re-skip
65
+ it. Worked example: the Rapier/Jolt solver sync (`_rapierBody` / `_joltBody`).
66
+ Measured at 20k static + 64 dynamic: Jolt **0.53 → 0.07 ms/frame** (the scan
67
+ *was* the whole per-frame cost), Rapier **1.51 → 1.13**.
68
+
69
+ - **Iterate tail→head when every visited row migrates out.** Adding/removing a
70
+ component (`db.store.update(id, { _tag: … })`, delete) migrates the row to
71
+ another archetype; doing it mid-iteration triggers a hole-fill (tail row moved
72
+ into the gap). Forward iteration pays that on every row and invalidates
73
+ indices ahead; `for (let r = rowCount - 1; r >= 0; r--)` removes only the tail,
74
+ so unvisited rows stay put. (See `world-bounds-plugin`, `transform-plugin`.)
75
+
76
+ - **`getTypedArray()` for the hot path; `column.get()` for cold migrating loops.**
77
+ The every-frame path (e.g. solver writeback over all dynamics) reads/writes the
78
+ backing `Float32Array` directly — no allocation (see the hot-loop section
79
+ above). But a loop that **migrates rows as it goes** (the tag-on-completion
80
+ pattern) must NOT hold a hoisted `getTypedArray()` across the migration — the
81
+ buffer can move. Such loops run only over *new* rows (cold), so use
82
+ `column.get()` there: robust to the migration, and the small per-row
83
+ allocation is amortized to once-per-entity-lifetime.
84
+
85
+ ## Mirroring ECS state to an external engine (WASM physics, GPU, …)
86
+
87
+ Each frame: (1) **sync** new entities into the engine — tag+exclude as above so
88
+ this is O(new), not O(all); (2) step the engine; (3) **write back** only the
89
+ subset that changed (e.g. dynamics — never statics) straight into the columns
90
+ via `getTypedArray()`. Copy *into* the engine and *back* through typed-array
91
+ indexing, not per-row object literals.
92
+
93
+ Residual to watch: the **read-back from the engine** is bounded by the engine's
94
+ JS binding. Some (e.g. `rapier3d-compat`) allocate a fresh `{x,y,z}` per getter
95
+ call — a few allocations per moving body per frame. It scales with the *moving*
96
+ count only; if that grows large, drop to the engine's raw/flat-buffer bindings
97
+ to read straight into the typed arrays. Flagged at the call site in
98
+ `rapier-solver-plugin.ts`.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 Adobe, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,44 @@
1
+ import { FrameTime } from "./frame-time/frame-time.js";
2
+ /**
3
+ * GPU runtime + frame scheduler — the shared base for both `graphics`
4
+ * (presentation) and `physics` (compute). Owns the WebGPU device, the
5
+ * per-frame command encoder, and the ordered frame phases. Contains nothing
6
+ * about canvases or render passes — those live in `graphics`.
7
+ *
8
+ * Phase order: input → preUpdate → update → postUpdate → physics → preRender
9
+ * → render → postRender. The command encoder is created at `preUpdate` and
10
+ * submitted at `postRender`; consumers record render passes (graphics) or
11
+ * compute passes (physics) into it during the phases between.
12
+ *
13
+ * Composes `FrameTime` over the scheduler so every downstream system has the
14
+ * `frameTime` resource — per-frame `dt` / `elapsed` — without re-deriving it.
15
+ */
16
+ export declare const core: {
17
+ readonly components: {};
18
+ readonly resources: {
19
+ readonly frameTime: {
20
+ readonly default: FrameTime;
21
+ readonly transient: true;
22
+ };
23
+ } & {
24
+ readonly schedulerState: {
25
+ readonly default: import("@adobe/data/ecs").SchedulerState;
26
+ };
27
+ } & {
28
+ readonly device: {
29
+ readonly default: GPUDevice | null;
30
+ readonly transient: true;
31
+ };
32
+ readonly commandEncoder: {
33
+ readonly default: GPUCommandEncoder | null;
34
+ readonly transient: true;
35
+ };
36
+ };
37
+ readonly archetypes: {};
38
+ readonly transactions: {} & {};
39
+ readonly systems: import("@adobe/data/ecs").SystemDeclarations<"update" | "_frameTime" | "schedulerSystem" | "input" | "preUpdate" | "postUpdate" | "physics" | "preRender" | "render" | "postRender">;
40
+ readonly actions: {};
41
+ readonly services: {};
42
+ readonly computed: {};
43
+ readonly indexes: {};
44
+ };
@@ -0,0 +1,90 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { Database, scheduler } from "@adobe/data/ecs";
3
+ import { FrameTime } from "./frame-time/frame-time.js";
4
+ async function getWebGPUDevice() {
5
+ // Guard for headless hosts (Node) where `navigator` doesn't exist: the
6
+ // simulation runs without a GPU device; only rendering needs one.
7
+ if (typeof navigator === "undefined" || !navigator.gpu) {
8
+ return null;
9
+ }
10
+ const adapter = await navigator.gpu.requestAdapter();
11
+ if (!adapter) {
12
+ return null;
13
+ }
14
+ return adapter.requestDevice();
15
+ }
16
+ /**
17
+ * GPU runtime + frame scheduler — the shared base for both `graphics`
18
+ * (presentation) and `physics` (compute). Owns the WebGPU device, the
19
+ * per-frame command encoder, and the ordered frame phases. Contains nothing
20
+ * about canvases or render passes — those live in `graphics`.
21
+ *
22
+ * Phase order: input → preUpdate → update → postUpdate → physics → preRender
23
+ * → render → postRender. The command encoder is created at `preUpdate` and
24
+ * submitted at `postRender`; consumers record render passes (graphics) or
25
+ * compute passes (physics) into it during the phases between.
26
+ *
27
+ * Composes `FrameTime` over the scheduler so every downstream system has the
28
+ * `frameTime` resource — per-frame `dt` / `elapsed` — without re-deriving it.
29
+ */
30
+ export const core = Database.Plugin.create({
31
+ extends: Database.Plugin.combine(scheduler, FrameTime.plugin),
32
+ resources: {
33
+ device: { default: null, transient: true },
34
+ commandEncoder: { default: null, transient: true },
35
+ },
36
+ systems: {
37
+ input: {
38
+ create: _db => () => { },
39
+ },
40
+ preUpdate: {
41
+ create: db => () => {
42
+ const { device } = db.store.resources;
43
+ if (device) {
44
+ db.store.resources.commandEncoder = device.createCommandEncoder();
45
+ }
46
+ },
47
+ schedule: { after: ["input"] },
48
+ },
49
+ update: {
50
+ create: _db => () => { },
51
+ schedule: { after: ["preUpdate"] },
52
+ },
53
+ postUpdate: {
54
+ create: _db => () => { },
55
+ schedule: { after: ["update"] },
56
+ },
57
+ physics: {
58
+ create: _db => () => { },
59
+ schedule: { after: ["postUpdate"] },
60
+ },
61
+ preRender: {
62
+ create: _db => () => { },
63
+ schedule: { after: ["physics"] },
64
+ },
65
+ render: {
66
+ create: db => {
67
+ getWebGPUDevice().then(device => {
68
+ db.store.resources.device = device;
69
+ });
70
+ return () => { };
71
+ },
72
+ schedule: { after: ["preRender"] },
73
+ },
74
+ // Submits the frame's command encoder. Graphics ends its render pass
75
+ // `before: ["postRender"]` (so the pass is closed first); physics
76
+ // finishes its compute passes during the `physics` phase — both record
77
+ // into this encoder beforehand.
78
+ postRender: {
79
+ create: db => () => {
80
+ const { commandEncoder, device } = db.store.resources;
81
+ if (commandEncoder && device) {
82
+ device.queue.submit([commandEncoder.finish()]);
83
+ db.store.resources.commandEncoder = null;
84
+ }
85
+ },
86
+ schedule: { after: ["render"] },
87
+ },
88
+ },
89
+ });
90
+ //# sourceMappingURL=core-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-plugin.js","sourceRoot":"","sources":["../../src/core/core-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,KAAK,UAAU,eAAe;IAC1B,uEAAuE;IACvE,kEAAkE;IAClE,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC;IAC7D,SAAS,EAAE;QACP,MAAM,EAAE,EAAE,OAAO,EAAE,IAAwB,EAAE,SAAS,EAAE,IAAI,EAAE;QAC9D,cAAc,EAAE,EAAE,OAAO,EAAE,IAAgC,EAAE,SAAS,EAAE,IAAI,EAAE;KACjF;IACD,OAAO,EAAE;QACL,KAAK,EAAE;YACH,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;SAC1B;QACD,SAAS,EAAE;YACP,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE;gBACf,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;gBACtC,IAAI,MAAM,EAAE,CAAC;oBACT,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;gBACtE,CAAC;YACL,CAAC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;SACjC;QACD,MAAM,EAAE;YACJ,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;YACvB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;SACrC;QACD,UAAU,EAAE;YACR,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;YACvB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;SAClC;QACD,OAAO,EAAE;YACL,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;YACvB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE;SACtC;QACD,SAAS,EAAE;YACP,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;YACvB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;SACnC;QACD,MAAM,EAAE;YACJ,MAAM,EAAE,EAAE,CAAC,EAAE;gBACT,eAAe,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC5B,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvC,CAAC,CAAC,CAAC;gBACH,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YACpB,CAAC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;SACrC;QACD,qEAAqE;QACrE,kEAAkE;QAClE,uEAAuE;QACvE,gCAAgC;QAChC,UAAU,EAAE;YACR,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE;gBACf,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;gBACtD,IAAI,cAAc,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAC/C,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC7C,CAAC;YACL,CAAC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;SAClC;KACJ;CACJ,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { FrameTime } from "./frame-time.js";
2
+ /**
3
+ * Publishes per-frame wall-clock timing as the `frameTime` resource. Declares
4
+ * its system but does not extend the scheduler — so pure-data consumers (and
5
+ * their tests) can pull in the `frameTime` resource without dragging in
6
+ * `requestAnimationFrame`. Composed with a scheduler (via `core`), the system
7
+ * runs in the first tier (no dependencies), so every later phase — update,
8
+ * physics, render — reads a `dt`/`elapsed` already advanced for this frame.
9
+ */
10
+ export declare const plugin: {
11
+ readonly components: {};
12
+ readonly resources: {
13
+ readonly frameTime: {
14
+ readonly default: FrameTime;
15
+ readonly transient: true;
16
+ };
17
+ };
18
+ readonly archetypes: {};
19
+ readonly transactions: {};
20
+ readonly systems: import("@adobe/data/ecs").SystemDeclarations<"_frameTime">;
21
+ readonly actions: {};
22
+ readonly services: {};
23
+ readonly computed: {};
24
+ readonly indexes: {};
25
+ };
@@ -0,0 +1,41 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { Database } from "@adobe/data/ecs";
3
+ /**
4
+ * Largest per-frame delta (seconds) the clock reports. A backgrounded tab or
5
+ * the very first frame would otherwise produce a multi-second `dt` that throws
6
+ * every time-stepped system off; clamping here means no consumer has to.
7
+ */
8
+ const MAX_DELTA = 0.1;
9
+ /**
10
+ * Publishes per-frame wall-clock timing as the `frameTime` resource. Declares
11
+ * its system but does not extend the scheduler — so pure-data consumers (and
12
+ * their tests) can pull in the `frameTime` resource without dragging in
13
+ * `requestAnimationFrame`. Composed with a scheduler (via `core`), the system
14
+ * runs in the first tier (no dependencies), so every later phase — update,
15
+ * physics, render — reads a `dt`/`elapsed` already advanced for this frame.
16
+ */
17
+ export const plugin = Database.Plugin.create({
18
+ resources: {
19
+ frameTime: {
20
+ default: { now: 0, dt: 0, elapsed: 0 },
21
+ transient: true,
22
+ },
23
+ },
24
+ systems: {
25
+ _frameTime: {
26
+ create: db => {
27
+ let last = 0;
28
+ return () => {
29
+ const now = performance.now();
30
+ // first frame (last === 0) reports dt 0 — no work has elapsed yet
31
+ const raw = last === 0 ? 0 : (now - last) / 1000;
32
+ last = now;
33
+ const dt = raw < MAX_DELTA ? raw : MAX_DELTA;
34
+ const elapsed = db.store.resources.frameTime.elapsed + dt;
35
+ db.store.resources.frameTime = { now, dt, elapsed };
36
+ };
37
+ },
38
+ },
39
+ },
40
+ });
41
+ //# sourceMappingURL=frame-time-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-time-plugin.js","sourceRoot":"","sources":["../../../src/core/frame-time/frame-time-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C;;;;GAIG;AACH,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE;QACP,SAAS,EAAE;YACP,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAmC;YACvE,SAAS,EAAE,IAAI;SAClB;KACJ;IACD,OAAO,EAAE;QACL,UAAU,EAAE;YACR,MAAM,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,OAAO,GAAG,EAAE;oBACR,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;oBAC9B,kEAAkE;oBAClE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;oBACjD,IAAI,GAAG,GAAG,CAAC;oBACX,MAAM,EAAE,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC7C,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;oBAC1D,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;gBACxD,CAAC,CAAC;YACN,CAAC;SACJ;KACJ;CACJ,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ export * as FrameTime from "./public.js";
2
+ /**
3
+ * Wall-clock timing for the current frame, published once per frame by
4
+ * `FrameTime.plugin`. Any system that advances state over time reads this
5
+ * instead of calling `performance.now()` and tracking its own `lastTime`.
6
+ */
7
+ export interface FrameTime {
8
+ /** `performance.now()` (ms) sampled at the start of this frame. */
9
+ readonly now: number;
10
+ /**
11
+ * Seconds since the previous frame, clamped to a sane maximum so a
12
+ * stalled tab or the first frame can't inject a huge time jump. A solver
13
+ * that needs a tighter stability bound clamps `dt` further at its own seam.
14
+ */
15
+ readonly dt: number;
16
+ /** Seconds since the plugin started — the running sum of clamped `dt`. */
17
+ readonly elapsed: number;
18
+ }
@@ -0,0 +1,3 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ export * as FrameTime from "./public.js";
3
+ //# sourceMappingURL=frame-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-time.js","sourceRoot":"","sources":["../../../src/core/frame-time/frame-time.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export { plugin } from "./frame-time-plugin.js";
@@ -0,0 +1,3 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ export { plugin } from "./frame-time-plugin.js";
3
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/core/frame-time/public.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,216 @@
1
+ import { Database, Entity } from "@adobe/data/ecs";
2
+ import { AnimationTrack } from "../animation/animation-track/animation-track.js";
3
+ declare const animationBase: {
4
+ readonly components: {
5
+ readonly animationClipTracks: {
6
+ readonly default: AnimationTrack[];
7
+ };
8
+ readonly animationClipDuration: {
9
+ readonly type: "number";
10
+ readonly precision: 2;
11
+ readonly default: number;
12
+ };
13
+ readonly animationClipRef: {
14
+ readonly type: "integer";
15
+ readonly minimum: -2147483648;
16
+ readonly maximum: 2147483647;
17
+ readonly default: number;
18
+ };
19
+ readonly animationTargets: {
20
+ readonly default: Entity[];
21
+ };
22
+ readonly animationTime: {
23
+ readonly type: "number";
24
+ readonly precision: 2;
25
+ readonly default: number;
26
+ };
27
+ readonly animationSpeed: {
28
+ readonly default: 1;
29
+ readonly type: "number";
30
+ readonly precision: 1;
31
+ };
32
+ readonly animationLoop: {
33
+ readonly type: "boolean";
34
+ };
35
+ readonly animationPlaying: {
36
+ readonly type: "boolean";
37
+ };
38
+ readonly animationObservable: {
39
+ readonly type: "boolean";
40
+ readonly const: true;
41
+ readonly default: true;
42
+ };
43
+ };
44
+ readonly resources: {};
45
+ readonly archetypes: {
46
+ readonly AnimationClip: readonly ["animationClipTracks", "animationClipDuration"];
47
+ readonly Animation: readonly ["animationClipRef", "animationTargets", "animationTime", "animationSpeed", "animationLoop", "animationPlaying"];
48
+ readonly AnimationObservable: readonly ["animationClipRef", "animationTargets", "animationTime", "animationSpeed", "animationLoop", "animationPlaying", "animationObservable"];
49
+ };
50
+ readonly transactions: {};
51
+ readonly systems: import("@adobe/data/ecs").SystemDeclarations<never>;
52
+ readonly actions: {};
53
+ readonly services: {};
54
+ readonly computed: {};
55
+ readonly indexes: {};
56
+ };
57
+ type AnimationStore = Database.Plugin.ToStore<typeof animationBase>;
58
+ export declare const animationData: {
59
+ readonly components: {
60
+ readonly animationClipTracks: {
61
+ readonly default: AnimationTrack[];
62
+ };
63
+ readonly animationClipDuration: {
64
+ readonly type: "number";
65
+ readonly precision: 2;
66
+ readonly default: number;
67
+ };
68
+ readonly animationClipRef: {
69
+ readonly type: "integer";
70
+ readonly minimum: -2147483648;
71
+ readonly maximum: 2147483647;
72
+ readonly default: number;
73
+ };
74
+ readonly animationTargets: {
75
+ readonly default: Entity[];
76
+ };
77
+ readonly animationTime: {
78
+ readonly type: "number";
79
+ readonly precision: 2;
80
+ readonly default: number;
81
+ };
82
+ readonly animationSpeed: {
83
+ readonly default: 1;
84
+ readonly type: "number";
85
+ readonly precision: 1;
86
+ };
87
+ readonly animationLoop: {
88
+ readonly type: "boolean";
89
+ };
90
+ readonly animationPlaying: {
91
+ readonly type: "boolean";
92
+ };
93
+ readonly animationObservable: {
94
+ readonly type: "boolean";
95
+ readonly const: true;
96
+ readonly default: true;
97
+ };
98
+ } & {};
99
+ readonly resources: {};
100
+ readonly archetypes: {
101
+ readonly AnimationClip: readonly ["animationClipTracks", "animationClipDuration"];
102
+ readonly Animation: readonly ["animationClipRef", "animationTargets", "animationTime", "animationSpeed", "animationLoop", "animationPlaying"];
103
+ readonly AnimationObservable: readonly ["animationClipRef", "animationTargets", "animationTime", "animationSpeed", "animationLoop", "animationPlaying", "animationObservable"];
104
+ } & {};
105
+ readonly transactions: {} & {
106
+ readonly insertAnimationClip: (t: import("@adobe/data/ecs").TransactionContext<import("@adobe/data/schema").FromSchemas<{} & {
107
+ readonly animationClipTracks: {
108
+ readonly default: AnimationTrack[];
109
+ };
110
+ readonly animationClipDuration: {
111
+ readonly type: "number";
112
+ readonly precision: 2;
113
+ readonly default: number;
114
+ };
115
+ readonly animationClipRef: {
116
+ readonly type: "integer";
117
+ readonly minimum: -2147483648;
118
+ readonly maximum: 2147483647;
119
+ readonly default: number;
120
+ };
121
+ readonly animationTargets: {
122
+ readonly default: Entity[];
123
+ };
124
+ readonly animationTime: {
125
+ readonly type: "number";
126
+ readonly precision: 2;
127
+ readonly default: number;
128
+ };
129
+ readonly animationSpeed: {
130
+ readonly default: 1;
131
+ readonly type: "number";
132
+ readonly precision: 1;
133
+ };
134
+ readonly animationLoop: {
135
+ readonly type: "boolean";
136
+ };
137
+ readonly animationPlaying: {
138
+ readonly type: "boolean";
139
+ };
140
+ readonly animationObservable: {
141
+ readonly type: "boolean";
142
+ readonly const: true;
143
+ readonly default: true;
144
+ };
145
+ }>, import("@adobe/data/schema").FromSchemas<{}>, {} & {
146
+ readonly AnimationClip: readonly ["animationClipTracks", "animationClipDuration"];
147
+ readonly Animation: readonly ["animationClipRef", "animationTargets", "animationTime", "animationSpeed", "animationLoop", "animationPlaying"];
148
+ readonly AnimationObservable: readonly ["animationClipRef", "animationTargets", "animationTime", "animationSpeed", "animationLoop", "animationPlaying", "animationObservable"];
149
+ }, {} & {}>, args: {
150
+ tracks: AnimationTrack[];
151
+ duration: number;
152
+ }) => number;
153
+ readonly insertAnimation: (t: import("@adobe/data/ecs").TransactionContext<import("@adobe/data/schema").FromSchemas<{} & {
154
+ readonly animationClipTracks: {
155
+ readonly default: AnimationTrack[];
156
+ };
157
+ readonly animationClipDuration: {
158
+ readonly type: "number";
159
+ readonly precision: 2;
160
+ readonly default: number;
161
+ };
162
+ readonly animationClipRef: {
163
+ readonly type: "integer";
164
+ readonly minimum: -2147483648;
165
+ readonly maximum: 2147483647;
166
+ readonly default: number;
167
+ };
168
+ readonly animationTargets: {
169
+ readonly default: Entity[];
170
+ };
171
+ readonly animationTime: {
172
+ readonly type: "number";
173
+ readonly precision: 2;
174
+ readonly default: number;
175
+ };
176
+ readonly animationSpeed: {
177
+ readonly default: 1;
178
+ readonly type: "number";
179
+ readonly precision: 1;
180
+ };
181
+ readonly animationLoop: {
182
+ readonly type: "boolean";
183
+ };
184
+ readonly animationPlaying: {
185
+ readonly type: "boolean";
186
+ };
187
+ readonly animationObservable: {
188
+ readonly type: "boolean";
189
+ readonly const: true;
190
+ readonly default: true;
191
+ };
192
+ }>, import("@adobe/data/schema").FromSchemas<{}>, {} & {
193
+ readonly AnimationClip: readonly ["animationClipTracks", "animationClipDuration"];
194
+ readonly Animation: readonly ["animationClipRef", "animationTargets", "animationTime", "animationSpeed", "animationLoop", "animationPlaying"];
195
+ readonly AnimationObservable: readonly ["animationClipRef", "animationTargets", "animationTime", "animationSpeed", "animationLoop", "animationPlaying", "animationObservable"];
196
+ }, {} & {}>, args: {
197
+ animationClipRef: number;
198
+ animationTargets: number[];
199
+ animationTime?: number;
200
+ animationSpeed?: number;
201
+ animationLoop?: boolean;
202
+ animationPlaying?: boolean;
203
+ observable?: boolean;
204
+ }) => number;
205
+ readonly advanceAnimations: (t: AnimationStore, args: {
206
+ dt: number;
207
+ observable: boolean;
208
+ }) => void;
209
+ };
210
+ readonly systems: import("@adobe/data/ecs").SystemDeclarations<never>;
211
+ readonly actions: {};
212
+ readonly services: {};
213
+ readonly computed: {};
214
+ readonly indexes: {} & {};
215
+ };
216
+ export {};