@codexo/exojs 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (759) hide show
  1. package/CHANGELOG.md +258 -6
  2. package/README.md +80 -63
  3. package/dist/esm/animation/Tween.js +1 -1
  4. package/dist/esm/animation/Tween.js.map +1 -1
  5. package/dist/esm/animation/TweenManager.d.ts +9 -5
  6. package/dist/esm/animation/TweenManager.d.ts.map +1 -1
  7. package/dist/esm/animation/TweenManager.js +14 -8
  8. package/dist/esm/animation/TweenManager.js.map +1 -1
  9. package/dist/esm/animation/index.d.ts +6 -4
  10. package/dist/esm/animation/index.d.ts.map +1 -1
  11. package/dist/esm/audio/AudioBus.d.ts +12 -12
  12. package/dist/esm/audio/AudioBus.js +29 -29
  13. package/dist/esm/audio/AudioEffect.d.ts +18 -0
  14. package/dist/esm/audio/AudioEffect.d.ts.map +1 -0
  15. package/dist/esm/audio/AudioEffect.js +16 -0
  16. package/dist/esm/audio/AudioEffect.js.map +1 -0
  17. package/dist/esm/audio/AudioGenerator.d.ts +91 -0
  18. package/dist/esm/audio/AudioGenerator.d.ts.map +1 -0
  19. package/dist/esm/audio/AudioGenerator.js +165 -0
  20. package/dist/esm/audio/AudioGenerator.js.map +1 -0
  21. package/dist/esm/audio/AudioGeneratorVoice.d.ts +52 -0
  22. package/dist/esm/audio/AudioGeneratorVoice.d.ts.map +1 -0
  23. package/dist/esm/audio/AudioGeneratorVoice.js +141 -0
  24. package/dist/esm/audio/AudioGeneratorVoice.js.map +1 -0
  25. package/dist/esm/audio/AudioInput.d.ts +39 -0
  26. package/dist/esm/audio/AudioInput.d.ts.map +1 -0
  27. package/dist/esm/audio/AudioInput.js +53 -0
  28. package/dist/esm/audio/AudioInput.js.map +1 -0
  29. package/dist/esm/audio/AudioManager.d.ts +72 -34
  30. package/dist/esm/audio/AudioManager.d.ts.map +1 -1
  31. package/dist/esm/audio/AudioManager.js +97 -51
  32. package/dist/esm/audio/AudioManager.js.map +1 -1
  33. package/dist/esm/audio/AudioStream.d.ts +49 -0
  34. package/dist/esm/audio/AudioStream.d.ts.map +1 -0
  35. package/dist/esm/audio/AudioStream.js +109 -0
  36. package/dist/esm/audio/AudioStream.js.map +1 -0
  37. package/dist/esm/audio/AudioStreamVoice.d.ts +61 -0
  38. package/dist/esm/audio/AudioStreamVoice.d.ts.map +1 -0
  39. package/dist/esm/audio/AudioStreamVoice.js +137 -0
  40. package/dist/esm/audio/AudioStreamVoice.js.map +1 -0
  41. package/dist/esm/audio/BaseVoice.d.ts +111 -0
  42. package/dist/esm/audio/BaseVoice.d.ts.map +1 -0
  43. package/dist/esm/audio/BaseVoice.js +298 -0
  44. package/dist/esm/audio/BaseVoice.js.map +1 -0
  45. package/dist/esm/audio/BiquadEffect.d.ts +53 -0
  46. package/dist/esm/audio/BiquadEffect.d.ts.map +1 -0
  47. package/dist/esm/audio/BiquadEffect.js +110 -0
  48. package/dist/esm/audio/BiquadEffect.js.map +1 -0
  49. package/dist/esm/audio/InputVoice.d.ts +41 -0
  50. package/dist/esm/audio/InputVoice.d.ts.map +1 -0
  51. package/dist/esm/audio/InputVoice.js +85 -0
  52. package/dist/esm/audio/InputVoice.js.map +1 -0
  53. package/dist/esm/audio/NoopVoice.d.ts +29 -0
  54. package/dist/esm/audio/NoopVoice.d.ts.map +1 -0
  55. package/dist/esm/audio/NoopVoice.js +52 -0
  56. package/dist/esm/audio/NoopVoice.js.map +1 -0
  57. package/dist/esm/audio/Playable.d.ts +135 -0
  58. package/dist/esm/audio/Playable.d.ts.map +1 -0
  59. package/dist/esm/audio/Sound.d.ts +64 -69
  60. package/dist/esm/audio/Sound.d.ts.map +1 -1
  61. package/dist/esm/audio/Sound.js +176 -377
  62. package/dist/esm/audio/Sound.js.map +1 -1
  63. package/dist/esm/audio/SoundVoice.d.ts +63 -0
  64. package/dist/esm/audio/SoundVoice.d.ts.map +1 -0
  65. package/dist/esm/audio/SoundVoice.js +168 -0
  66. package/dist/esm/audio/SoundVoice.js.map +1 -0
  67. package/dist/esm/audio/{filters/WorkletFilter.d.ts → WorkletEffect.d.ts} +3 -3
  68. package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
  69. package/dist/esm/audio/{filters/WorkletFilter.js → WorkletEffect.js} +6 -6
  70. package/dist/esm/audio/WorkletEffect.js.map +1 -0
  71. package/dist/esm/audio/audio-context.js +1 -1
  72. package/dist/esm/audio/audio-context.js.map +1 -1
  73. package/dist/esm/audio/crossFade.d.ts +22 -13
  74. package/dist/esm/audio/crossFade.d.ts.map +1 -1
  75. package/dist/esm/audio/crossFade.js +21 -13
  76. package/dist/esm/audio/crossFade.js.map +1 -1
  77. package/dist/esm/audio/filters/HighpassFilter.d.ts +2 -2
  78. package/dist/esm/audio/filters/HighpassFilter.js +2 -2
  79. package/dist/esm/audio/filters/LowpassFilter.d.ts +2 -2
  80. package/dist/esm/audio/filters/LowpassFilter.js +2 -2
  81. package/dist/esm/audio/filters/index.d.ts +0 -10
  82. package/dist/esm/audio/filters/index.d.ts.map +1 -1
  83. package/dist/esm/audio/index.d.ts +13 -15
  84. package/dist/esm/audio/index.d.ts.map +1 -1
  85. package/dist/esm/core/Application.d.ts +127 -10
  86. package/dist/esm/core/Application.d.ts.map +1 -1
  87. package/dist/esm/core/Application.js +226 -25
  88. package/dist/esm/core/Application.js.map +1 -1
  89. package/dist/esm/core/BuildInfo.js +2 -2
  90. package/dist/esm/core/Color.d.ts +6 -4
  91. package/dist/esm/core/Color.d.ts.map +1 -1
  92. package/dist/esm/core/Color.js +19 -15
  93. package/dist/esm/core/Color.js.map +1 -1
  94. package/dist/esm/core/DisposalScope.d.ts +50 -0
  95. package/dist/esm/core/DisposalScope.d.ts.map +1 -0
  96. package/dist/esm/core/DisposalScope.js +86 -0
  97. package/dist/esm/core/DisposalScope.js.map +1 -0
  98. package/dist/esm/core/Perf.d.ts +10 -22
  99. package/dist/esm/core/Perf.d.ts.map +1 -1
  100. package/dist/esm/core/Perf.js +15 -8
  101. package/dist/esm/core/Perf.js.map +1 -1
  102. package/dist/esm/core/Registry.d.ts +64 -0
  103. package/dist/esm/core/Registry.d.ts.map +1 -0
  104. package/dist/esm/core/Registry.js +79 -0
  105. package/dist/esm/core/Registry.js.map +1 -0
  106. package/dist/esm/core/Scene.d.ts +69 -21
  107. package/dist/esm/core/Scene.d.ts.map +1 -1
  108. package/dist/esm/core/Scene.js +109 -16
  109. package/dist/esm/core/Scene.js.map +1 -1
  110. package/dist/esm/core/SceneManager.d.ts +22 -60
  111. package/dist/esm/core/SceneManager.d.ts.map +1 -1
  112. package/dist/esm/core/SceneManager.js +68 -153
  113. package/dist/esm/core/SceneManager.js.map +1 -1
  114. package/dist/esm/core/SceneNode.d.ts +43 -2
  115. package/dist/esm/core/SceneNode.d.ts.map +1 -1
  116. package/dist/esm/core/SceneNode.js +101 -12
  117. package/dist/esm/core/SceneNode.js.map +1 -1
  118. package/dist/esm/core/Signal.js.map +1 -1
  119. package/dist/esm/core/Stage.d.ts +42 -0
  120. package/dist/esm/core/Stage.d.ts.map +1 -0
  121. package/dist/esm/core/System.d.ts +22 -0
  122. package/dist/esm/core/System.d.ts.map +1 -0
  123. package/dist/esm/core/SystemRegistry.d.ts +35 -0
  124. package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
  125. package/dist/esm/core/SystemRegistry.js +104 -0
  126. package/dist/esm/core/SystemRegistry.js.map +1 -0
  127. package/dist/esm/core/Time.d.ts +15 -0
  128. package/dist/esm/core/Time.d.ts.map +1 -1
  129. package/dist/esm/core/Time.js +25 -0
  130. package/dist/esm/core/Time.js.map +1 -1
  131. package/dist/esm/core/dev.d.ts +9 -4
  132. package/dist/esm/core/dev.d.ts.map +1 -1
  133. package/dist/esm/core/dev.js +5 -0
  134. package/dist/esm/core/dev.js.map +1 -1
  135. package/dist/esm/core/index.d.ts +26 -15
  136. package/dist/esm/core/index.d.ts.map +1 -1
  137. package/dist/esm/core/letterbox.d.ts +25 -0
  138. package/dist/esm/core/letterbox.d.ts.map +1 -0
  139. package/dist/esm/core/letterbox.js +26 -0
  140. package/dist/esm/core/letterbox.js.map +1 -0
  141. package/dist/esm/core/serialization/NodeSerializer.d.ts +71 -0
  142. package/dist/esm/core/serialization/NodeSerializer.d.ts.map +1 -0
  143. package/dist/esm/core/serialization/Prefab.d.ts +49 -0
  144. package/dist/esm/core/serialization/Prefab.d.ts.map +1 -0
  145. package/dist/esm/core/serialization/Prefab.js +61 -0
  146. package/dist/esm/core/serialization/Prefab.js.map +1 -0
  147. package/dist/esm/core/serialization/SerializationRegistry.d.ts +95 -0
  148. package/dist/esm/core/serialization/SerializationRegistry.d.ts.map +1 -0
  149. package/dist/esm/core/serialization/SerializationRegistry.js +108 -0
  150. package/dist/esm/core/serialization/SerializationRegistry.js.map +1 -0
  151. package/dist/esm/core/serialization/commonFields.d.ts +20 -0
  152. package/dist/esm/core/serialization/commonFields.d.ts.map +1 -0
  153. package/dist/esm/core/serialization/commonFields.js +149 -0
  154. package/dist/esm/core/serialization/commonFields.js.map +1 -0
  155. package/dist/esm/core/serialization/coreSerializers.d.ts +9 -0
  156. package/dist/esm/core/serialization/coreSerializers.d.ts.map +1 -0
  157. package/dist/esm/core/serialization/coreSerializers.js +101 -0
  158. package/dist/esm/core/serialization/coreSerializers.js.map +1 -0
  159. package/dist/esm/core/serialization/index.d.ts +6 -0
  160. package/dist/esm/core/serialization/index.d.ts.map +1 -0
  161. package/dist/esm/core/serialization/read.d.ts +65 -0
  162. package/dist/esm/core/serialization/read.d.ts.map +1 -0
  163. package/dist/esm/core/serialization/read.js +48 -0
  164. package/dist/esm/core/serialization/read.js.map +1 -0
  165. package/dist/esm/core/serialization/renderingSerializers.d.ts +7 -0
  166. package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -0
  167. package/dist/esm/core/serialization/renderingSerializers.js +311 -0
  168. package/dist/esm/core/serialization/renderingSerializers.js.map +1 -0
  169. package/dist/esm/core/serialization/serialize.d.ts +56 -0
  170. package/dist/esm/core/serialization/serialize.d.ts.map +1 -0
  171. package/dist/esm/core/serialization/serialize.js +144 -0
  172. package/dist/esm/core/serialization/serialize.js.map +1 -0
  173. package/dist/esm/core/serialization/serializerHelpers.d.ts +46 -0
  174. package/dist/esm/core/serialization/serializerHelpers.d.ts.map +1 -0
  175. package/dist/esm/core/serialization/serializerHelpers.js +161 -0
  176. package/dist/esm/core/serialization/serializerHelpers.js.map +1 -0
  177. package/dist/esm/core/serialization/types.d.ts +49 -0
  178. package/dist/esm/core/serialization/types.d.ts.map +1 -0
  179. package/dist/esm/core/serialization/types.js +9 -0
  180. package/dist/esm/core/serialization/types.js.map +1 -0
  181. package/dist/esm/core/serialization/uiSerializers.d.ts +7 -0
  182. package/dist/esm/core/serialization/uiSerializers.d.ts.map +1 -0
  183. package/dist/esm/core/serialization/uiSerializers.js +206 -0
  184. package/dist/esm/core/serialization/uiSerializers.js.map +1 -0
  185. package/dist/esm/core/types.d.ts +1 -1
  186. package/dist/esm/core/types.d.ts.map +1 -1
  187. package/dist/esm/core/utils.d.ts +1 -16
  188. package/dist/esm/core/utils.d.ts.map +1 -1
  189. package/dist/esm/core/utils.js +2 -100
  190. package/dist/esm/core/utils.js.map +1 -1
  191. package/dist/esm/debug/PerformanceLayer.js +8 -9
  192. package/dist/esm/debug/PerformanceLayer.js.map +1 -1
  193. package/dist/esm/debug/PointerStackLayer.d.ts.map +1 -1
  194. package/dist/esm/debug/PointerStackLayer.js +9 -6
  195. package/dist/esm/debug/PointerStackLayer.js.map +1 -1
  196. package/dist/esm/debug/RenderPassInspectorLayer.d.ts.map +1 -1
  197. package/dist/esm/debug/RenderPassInspectorLayer.js +19 -12
  198. package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
  199. package/dist/esm/extensions/Extension.d.ts +78 -11
  200. package/dist/esm/extensions/Extension.d.ts.map +1 -1
  201. package/dist/esm/extensions/ExtensionRegistry.d.ts.map +1 -1
  202. package/dist/esm/extensions/ExtensionRegistry.js.map +1 -1
  203. package/dist/esm/extensions/materialize.d.ts +9 -1
  204. package/dist/esm/extensions/materialize.d.ts.map +1 -1
  205. package/dist/esm/extensions/materialize.js +17 -2
  206. package/dist/esm/extensions/materialize.js.map +1 -1
  207. package/dist/esm/extensions/snapshot.d.ts +14 -3
  208. package/dist/esm/extensions/snapshot.d.ts.map +1 -1
  209. package/dist/esm/extensions/snapshot.js +51 -14
  210. package/dist/esm/extensions/snapshot.js.map +1 -1
  211. package/dist/esm/index.d.ts +2 -1
  212. package/dist/esm/index.d.ts.map +1 -1
  213. package/dist/esm/index.js +37 -54
  214. package/dist/esm/index.js.map +1 -1
  215. package/dist/esm/input/FocusManager.d.ts +59 -0
  216. package/dist/esm/input/FocusManager.d.ts.map +1 -0
  217. package/dist/esm/input/FocusManager.js +175 -0
  218. package/dist/esm/input/FocusManager.js.map +1 -0
  219. package/dist/esm/input/Gamepad.d.ts.map +1 -1
  220. package/dist/esm/input/Gamepad.js +8 -4
  221. package/dist/esm/input/Gamepad.js.map +1 -1
  222. package/dist/esm/input/GamepadAxis.js +2 -2
  223. package/dist/esm/input/GamepadDefinitions.d.ts.map +1 -1
  224. package/dist/esm/input/GamepadDefinitions.js +6 -2
  225. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  226. package/dist/esm/input/GestureRecognizer.d.ts +1 -2
  227. package/dist/esm/input/GestureRecognizer.d.ts.map +1 -1
  228. package/dist/esm/input/GestureRecognizer.js +1 -3
  229. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  230. package/dist/esm/input/InputBinding.js +3 -3
  231. package/dist/esm/input/InputBinding.js.map +1 -1
  232. package/dist/esm/input/InputManager.d.ts +7 -2
  233. package/dist/esm/input/InputManager.d.ts.map +1 -1
  234. package/dist/esm/input/InputManager.js +35 -21
  235. package/dist/esm/input/InputManager.js.map +1 -1
  236. package/dist/esm/input/InteractionManager.d.ts +67 -2
  237. package/dist/esm/input/InteractionManager.d.ts.map +1 -1
  238. package/dist/esm/input/InteractionManager.js +165 -41
  239. package/dist/esm/input/InteractionManager.js.map +1 -1
  240. package/dist/esm/input/KeyEvent.d.ts +25 -0
  241. package/dist/esm/input/KeyEvent.d.ts.map +1 -0
  242. package/dist/esm/input/KeyEvent.js +32 -0
  243. package/dist/esm/input/KeyEvent.js.map +1 -0
  244. package/dist/esm/input/Pointer.d.ts +21 -4
  245. package/dist/esm/input/Pointer.d.ts.map +1 -1
  246. package/dist/esm/input/Pointer.js +54 -15
  247. package/dist/esm/input/Pointer.js.map +1 -1
  248. package/dist/esm/input/index.d.ts +3 -1
  249. package/dist/esm/input/index.d.ts.map +1 -1
  250. package/dist/esm/math/AbstractVector.d.ts.map +1 -1
  251. package/dist/esm/math/AbstractVector.js +7 -2
  252. package/dist/esm/math/AbstractVector.js.map +1 -1
  253. package/dist/esm/math/Circle.d.ts.map +1 -1
  254. package/dist/esm/math/Circle.js +5 -1
  255. package/dist/esm/math/Circle.js.map +1 -1
  256. package/dist/esm/math/Line.d.ts +1 -1
  257. package/dist/esm/math/Line.d.ts.map +1 -1
  258. package/dist/esm/math/Line.js +1 -1
  259. package/dist/esm/math/Line.js.map +1 -1
  260. package/dist/esm/math/Matrix.d.ts.map +1 -1
  261. package/dist/esm/math/Matrix.js +6 -1
  262. package/dist/esm/math/Matrix.js.map +1 -1
  263. package/dist/esm/math/ObservableVector.d.ts +26 -8
  264. package/dist/esm/math/ObservableVector.d.ts.map +1 -1
  265. package/dist/esm/math/ObservableVector.js +24 -16
  266. package/dist/esm/math/ObservableVector.js.map +1 -1
  267. package/dist/esm/math/Polygon.d.ts +5 -0
  268. package/dist/esm/math/Polygon.d.ts.map +1 -1
  269. package/dist/esm/math/Polygon.js +27 -3
  270. package/dist/esm/math/Polygon.js.map +1 -1
  271. package/dist/esm/math/Random.d.ts +9 -9
  272. package/dist/esm/math/Random.d.ts.map +1 -1
  273. package/dist/esm/math/Random.js +46 -46
  274. package/dist/esm/math/Random.js.map +1 -1
  275. package/dist/esm/math/Rectangle.d.ts +11 -4
  276. package/dist/esm/math/Rectangle.d.ts.map +1 -1
  277. package/dist/esm/math/Rectangle.js +12 -6
  278. package/dist/esm/math/Rectangle.js.map +1 -1
  279. package/dist/esm/math/Vector.d.ts +1 -1
  280. package/dist/esm/math/Vector.d.ts.map +1 -1
  281. package/dist/esm/math/Vector.js +1 -1
  282. package/dist/esm/math/Vector.js.map +1 -1
  283. package/dist/esm/math/collision-detection.d.ts +42 -0
  284. package/dist/esm/math/collision-detection.d.ts.map +1 -1
  285. package/dist/esm/math/collision-detection.js +54 -4
  286. package/dist/esm/math/collision-detection.js.map +1 -1
  287. package/dist/esm/math/collision-primitives.d.ts.map +1 -1
  288. package/dist/esm/math/collision-primitives.js +4 -0
  289. package/dist/esm/math/collision-primitives.js.map +1 -1
  290. package/dist/esm/math/geometry.d.ts +26 -0
  291. package/dist/esm/math/geometry.d.ts.map +1 -1
  292. package/dist/esm/math/geometry.js +89 -2
  293. package/dist/esm/math/geometry.js.map +1 -1
  294. package/dist/esm/math/index.d.ts +7 -5
  295. package/dist/esm/math/index.d.ts.map +1 -1
  296. package/dist/esm/math/swept-collision.d.ts +13 -0
  297. package/dist/esm/math/swept-collision.d.ts.map +1 -1
  298. package/dist/esm/math/swept-collision.js +15 -1
  299. package/dist/esm/math/swept-collision.js.map +1 -1
  300. package/dist/esm/math/triangulate.d.ts.map +1 -1
  301. package/dist/esm/math/triangulate.js +9 -1
  302. package/dist/esm/math/triangulate.js.map +1 -1
  303. package/dist/esm/math/utils.d.ts +20 -0
  304. package/dist/esm/math/utils.d.ts.map +1 -1
  305. package/dist/esm/math/utils.js +18 -15
  306. package/dist/esm/math/utils.js.map +1 -1
  307. package/dist/esm/renderer-sdk.d.ts +2 -0
  308. package/dist/esm/renderer-sdk.d.ts.map +1 -1
  309. package/dist/esm/{rendering.js → renderer-sdk.js} +1 -1
  310. package/dist/esm/renderer-sdk.js.map +1 -0
  311. package/dist/esm/rendering/CallbackRenderPass.js +1 -1
  312. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  313. package/dist/esm/rendering/Container.d.ts +3 -0
  314. package/dist/esm/rendering/Container.d.ts.map +1 -1
  315. package/dist/esm/rendering/Container.js +28 -5
  316. package/dist/esm/rendering/Container.js.map +1 -1
  317. package/dist/esm/rendering/Drawable.d.ts +47 -0
  318. package/dist/esm/rendering/Drawable.d.ts.map +1 -1
  319. package/dist/esm/rendering/Drawable.js +88 -0
  320. package/dist/esm/rendering/Drawable.js.map +1 -1
  321. package/dist/esm/rendering/GpuResourceAccountant.d.ts +65 -0
  322. package/dist/esm/rendering/GpuResourceAccountant.d.ts.map +1 -0
  323. package/dist/esm/rendering/GpuResourceAccountant.js +130 -0
  324. package/dist/esm/rendering/GpuResourceAccountant.js.map +1 -0
  325. package/dist/esm/rendering/RenderBackend.d.ts +15 -1
  326. package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
  327. package/dist/esm/rendering/RenderBatch.d.ts +55 -0
  328. package/dist/esm/rendering/RenderBatch.d.ts.map +1 -0
  329. package/dist/esm/rendering/RenderBatch.js +107 -0
  330. package/dist/esm/rendering/RenderBatch.js.map +1 -0
  331. package/dist/esm/rendering/RenderNode.d.ts +50 -10
  332. package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
  333. package/dist/esm/rendering/RenderNode.js +113 -20
  334. package/dist/esm/rendering/RenderNode.js.map +1 -1
  335. package/dist/esm/rendering/RenderNodePass.js +2 -2
  336. package/dist/esm/rendering/RenderNodePass.js.map +1 -1
  337. package/dist/esm/rendering/RenderStats.d.ts +39 -0
  338. package/dist/esm/rendering/RenderStats.d.ts.map +1 -1
  339. package/dist/esm/rendering/RenderStats.js +14 -0
  340. package/dist/esm/rendering/RenderStats.js.map +1 -1
  341. package/dist/esm/rendering/RendererRegistry.d.ts.map +1 -1
  342. package/dist/esm/rendering/RendererRegistry.js +20 -23
  343. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  344. package/dist/esm/rendering/RenderingContext.d.ts +88 -4
  345. package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
  346. package/dist/esm/rendering/RenderingContext.js +107 -5
  347. package/dist/esm/rendering/RenderingContext.js.map +1 -1
  348. package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
  349. package/dist/esm/rendering/TransformBuffer.js +2 -0
  350. package/dist/esm/rendering/TransformBuffer.js.map +1 -1
  351. package/dist/esm/rendering/View.d.ts +47 -15
  352. package/dist/esm/rendering/View.d.ts.map +1 -1
  353. package/dist/esm/rendering/View.js +44 -27
  354. package/dist/esm/rendering/View.js.map +1 -1
  355. package/dist/esm/rendering/coreRendererBindings.d.ts.map +1 -1
  356. package/dist/esm/rendering/coreRendererBindings.js +22 -0
  357. package/dist/esm/rendering/coreRendererBindings.js.map +1 -1
  358. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
  359. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +3 -1
  360. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  361. package/dist/esm/rendering/geometry/Geometry.d.ts.map +1 -1
  362. package/dist/esm/rendering/geometry/Geometry.js +4 -2
  363. package/dist/esm/rendering/geometry/Geometry.js.map +1 -1
  364. package/dist/esm/rendering/gradient/Gradient.d.ts.map +1 -1
  365. package/dist/esm/rendering/gradient/Gradient.js +7 -2
  366. package/dist/esm/rendering/gradient/Gradient.js.map +1 -1
  367. package/dist/esm/rendering/material/MaterialKey.d.ts.map +1 -1
  368. package/dist/esm/rendering/material/MaterialKey.js +2 -0
  369. package/dist/esm/rendering/material/MaterialKey.js.map +1 -1
  370. package/dist/esm/rendering/material/ShaderSource.js +6 -0
  371. package/dist/esm/rendering/material/ShaderSource.js.map +1 -1
  372. package/dist/esm/rendering/mesh/ImmediateMesh.d.ts +48 -0
  373. package/dist/esm/rendering/mesh/ImmediateMesh.d.ts.map +1 -0
  374. package/dist/esm/rendering/mesh/ImmediateMesh.js +85 -0
  375. package/dist/esm/rendering/mesh/ImmediateMesh.js.map +1 -0
  376. package/dist/esm/rendering/mesh/Mesh.d.ts +29 -6
  377. package/dist/esm/rendering/mesh/Mesh.d.ts.map +1 -1
  378. package/dist/esm/rendering/mesh/Mesh.js +40 -13
  379. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  380. package/dist/esm/rendering/pixelSnap.d.ts +219 -0
  381. package/dist/esm/rendering/pixelSnap.d.ts.map +1 -0
  382. package/dist/esm/rendering/pixelSnap.js +187 -0
  383. package/dist/esm/rendering/pixelSnap.js.map +1 -0
  384. package/dist/esm/rendering/plan/RenderCommand.d.ts +31 -9
  385. package/dist/esm/rendering/plan/RenderCommand.d.ts.map +1 -1
  386. package/dist/esm/rendering/plan/RenderCommand.js +23 -21
  387. package/dist/esm/rendering/plan/RenderCommand.js.map +1 -1
  388. package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
  389. package/dist/esm/rendering/plan/RenderEffectExecutor.js +1 -0
  390. package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
  391. package/dist/esm/rendering/plan/RenderInstruction.d.ts +7 -37
  392. package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
  393. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +17 -2
  394. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
  395. package/dist/esm/rendering/plan/RenderPlanBuilder.js +132 -46
  396. package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
  397. package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts.map +1 -1
  398. package/dist/esm/rendering/plan/RenderPlanOptimizer.js +31 -4
  399. package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -1
  400. package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts.map +1 -1
  401. package/dist/esm/rendering/plan/RenderPlanPlayer.js +70 -13
  402. package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -1
  403. package/dist/esm/rendering/plan/RenderScope.d.ts +16 -10
  404. package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
  405. package/dist/esm/rendering/primitives/Graphics.d.ts +6 -0
  406. package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
  407. package/dist/esm/rendering/primitives/Graphics.js +17 -1
  408. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  409. package/dist/esm/rendering/{index.d.ts → public.d.ts} +13 -30
  410. package/dist/esm/rendering/public.d.ts.map +1 -0
  411. package/dist/esm/rendering/shader/ShaderAttribute.d.ts.map +1 -1
  412. package/dist/esm/rendering/shader/ShaderAttribute.js +2 -0
  413. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  414. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +11 -0
  415. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
  416. package/dist/esm/rendering/sprite/AnimatedSprite.js +24 -2
  417. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  418. package/dist/esm/rendering/sprite/NineSliceSprite.d.ts +69 -0
  419. package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -0
  420. package/dist/esm/rendering/sprite/NineSliceSprite.js +206 -0
  421. package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -0
  422. package/dist/esm/rendering/sprite/RepeatingSprite.d.ts +120 -0
  423. package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -0
  424. package/dist/esm/rendering/sprite/RepeatingSprite.js +277 -0
  425. package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -0
  426. package/dist/esm/rendering/sprite/Sprite.d.ts +13 -0
  427. package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
  428. package/dist/esm/rendering/sprite/Sprite.js +53 -3
  429. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  430. package/dist/esm/rendering/sprite/nineSlice.d.ts +53 -0
  431. package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -0
  432. package/dist/esm/rendering/sprite/nineSlice.js +334 -0
  433. package/dist/esm/rendering/sprite/nineSlice.js.map +1 -0
  434. package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts +57 -0
  435. package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -0
  436. package/dist/esm/rendering/sprite/repeatingSpritePlan.js +156 -0
  437. package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -0
  438. package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
  439. package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
  440. package/dist/esm/rendering/text/BitmapText.js +4 -0
  441. package/dist/esm/rendering/text/BitmapText.js.map +1 -1
  442. package/dist/esm/rendering/text/GlyphAtlas.d.ts.map +1 -1
  443. package/dist/esm/rendering/text/GlyphAtlas.js +2 -1
  444. package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -1
  445. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +8 -1
  446. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts.map +1 -1
  447. package/dist/esm/rendering/text/GlyphAtlasPool.js +9 -12
  448. package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -1
  449. package/dist/esm/rendering/text/GlyphSdf.d.ts.map +1 -1
  450. package/dist/esm/rendering/text/GlyphSdf.js +5 -1
  451. package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
  452. package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
  453. package/dist/esm/rendering/text/HTMLText.js +1 -0
  454. package/dist/esm/rendering/text/HTMLText.js.map +1 -1
  455. package/dist/esm/rendering/text/Text.d.ts +17 -6
  456. package/dist/esm/rendering/text/Text.d.ts.map +1 -1
  457. package/dist/esm/rendering/text/Text.js +7 -12
  458. package/dist/esm/rendering/text/Text.js.map +1 -1
  459. package/dist/esm/rendering/text/TextLayout.d.ts.map +1 -1
  460. package/dist/esm/rendering/text/TextLayout.js +4 -18
  461. package/dist/esm/rendering/text/TextLayout.js.map +1 -1
  462. package/dist/esm/rendering/texture/DataTexture.js +2 -2
  463. package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
  464. package/dist/esm/rendering/texture/Texture.d.ts +6 -0
  465. package/dist/esm/rendering/texture/Texture.d.ts.map +1 -1
  466. package/dist/esm/rendering/texture/Texture.js +8 -0
  467. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  468. package/dist/esm/rendering/texture/TextureRegion.d.ts +100 -0
  469. package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -0
  470. package/dist/esm/rendering/texture/TextureRegion.js +144 -0
  471. package/dist/esm/rendering/texture/TextureRegion.js.map +1 -0
  472. package/dist/esm/rendering/texture/repeat.d.ts +96 -0
  473. package/dist/esm/rendering/texture/repeat.d.ts.map +1 -0
  474. package/dist/esm/rendering/texture/repeat.js +158 -0
  475. package/dist/esm/rendering/texture/repeat.js.map +1 -0
  476. package/dist/esm/rendering/types.d.ts +11 -0
  477. package/dist/esm/rendering/types.d.ts.map +1 -1
  478. package/dist/esm/rendering/types.js +11 -0
  479. package/dist/esm/rendering/types.js.map +1 -1
  480. package/dist/esm/rendering/video/Video.d.ts +7 -3
  481. package/dist/esm/rendering/video/Video.d.ts.map +1 -1
  482. package/dist/esm/rendering/video/Video.js +7 -3
  483. package/dist/esm/rendering/video/Video.js.map +1 -1
  484. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts.map +1 -1
  485. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +2 -2
  486. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  487. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +41 -2
  488. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
  489. package/dist/esm/rendering/webgl2/WebGl2Backend.js +137 -8
  490. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  491. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts.map +1 -1
  492. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +2 -2
  493. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
  494. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +17 -0
  495. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts.map +1 -1
  496. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +122 -38
  497. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
  498. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts +32 -0
  499. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -0
  500. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +309 -0
  501. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -0
  502. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +16 -1
  503. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts.map +1 -1
  504. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +32 -1
  505. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  506. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts +49 -0
  507. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -0
  508. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +539 -0
  509. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -0
  510. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts.map +1 -1
  511. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +14 -3
  512. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
  513. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +3 -3
  514. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
  515. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts.map +1 -1
  516. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +11 -2
  517. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
  518. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +9 -0
  519. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
  520. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +29 -4
  521. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  522. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts.map +1 -1
  523. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +3 -2
  524. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -1
  525. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
  526. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +10 -4
  527. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
  528. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +39 -3
  529. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
  530. package/dist/esm/rendering/webgpu/WebGpuBackend.js +120 -12
  531. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  532. package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
  533. package/dist/esm/rendering/webgpu/WebGpuBlendState.js +3 -0
  534. package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
  535. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +13 -0
  536. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
  537. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +102 -24
  538. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  539. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +36 -0
  540. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -0
  541. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +363 -0
  542. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -0
  543. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +52 -0
  544. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -0
  545. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +566 -0
  546. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -0
  547. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +9 -0
  548. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
  549. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +30 -6
  550. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  551. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
  552. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +1 -0
  553. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
  554. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
  555. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +19 -7
  556. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
  557. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -4
  558. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
  559. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +26 -6
  560. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
  561. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +1 -1
  562. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -1
  563. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +7 -0
  564. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts.map +1 -1
  565. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +8 -0
  566. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -1
  567. package/dist/esm/resources/Asset.d.ts +1 -1
  568. package/dist/esm/resources/Asset.d.ts.map +1 -1
  569. package/dist/esm/resources/Asset.js +0 -2
  570. package/dist/esm/resources/Asset.js.map +1 -1
  571. package/dist/esm/resources/AssetContainer.d.ts +75 -0
  572. package/dist/esm/resources/AssetContainer.d.ts.map +1 -0
  573. package/dist/esm/resources/AssetContainer.js +100 -0
  574. package/dist/esm/resources/AssetContainer.js.map +1 -0
  575. package/dist/esm/resources/AssetDefinitions.d.ts +3 -3
  576. package/dist/esm/resources/AssetDefinitions.d.ts.map +1 -1
  577. package/dist/esm/resources/Assets.d.ts.map +1 -1
  578. package/dist/esm/resources/Assets.js +0 -1
  579. package/dist/esm/resources/Assets.js.map +1 -1
  580. package/dist/esm/resources/FactoryRegistry.d.ts.map +1 -1
  581. package/dist/esm/resources/FactoryRegistry.js +14 -23
  582. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  583. package/dist/esm/resources/IndexedDbDatabase.d.ts.map +1 -1
  584. package/dist/esm/resources/IndexedDbDatabase.js +8 -1
  585. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  586. package/dist/esm/resources/IndexedDbKeyValueStore.d.ts +37 -0
  587. package/dist/esm/resources/IndexedDbKeyValueStore.d.ts.map +1 -0
  588. package/dist/esm/resources/IndexedDbKeyValueStore.js +58 -0
  589. package/dist/esm/resources/IndexedDbKeyValueStore.js.map +1 -0
  590. package/dist/esm/resources/KeyValueStore.d.ts +31 -0
  591. package/dist/esm/resources/KeyValueStore.d.ts.map +1 -0
  592. package/dist/esm/resources/Loader.d.ts +78 -10
  593. package/dist/esm/resources/Loader.d.ts.map +1 -1
  594. package/dist/esm/resources/Loader.js +119 -15
  595. package/dist/esm/resources/Loader.js.map +1 -1
  596. package/dist/esm/resources/MemoryStore.d.ts +17 -0
  597. package/dist/esm/resources/MemoryStore.d.ts.map +1 -0
  598. package/dist/esm/resources/MemoryStore.js +30 -0
  599. package/dist/esm/resources/MemoryStore.js.map +1 -0
  600. package/dist/esm/resources/WebStorageStore.d.ts +40 -0
  601. package/dist/esm/resources/WebStorageStore.d.ts.map +1 -0
  602. package/dist/esm/resources/WebStorageStore.js +84 -0
  603. package/dist/esm/resources/WebStorageStore.js.map +1 -0
  604. package/dist/esm/resources/coreAssetBindings.d.ts.map +1 -1
  605. package/dist/esm/resources/coreAssetBindings.js +16 -5
  606. package/dist/esm/resources/coreAssetBindings.js.map +1 -1
  607. package/dist/esm/resources/factories/BmFontFactory.js +4 -4
  608. package/dist/esm/resources/factories/BmFontFactory.js.map +1 -1
  609. package/dist/esm/resources/factories/MusicFactory.d.ts +9 -9
  610. package/dist/esm/resources/factories/MusicFactory.d.ts.map +1 -1
  611. package/dist/esm/resources/factories/MusicFactory.js +7 -7
  612. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  613. package/dist/esm/resources/factories/SoundFactory.js +2 -2
  614. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  615. package/dist/esm/resources/factories/SubtitleFactory.d.ts +11 -1
  616. package/dist/esm/resources/factories/SubtitleFactory.d.ts.map +1 -1
  617. package/dist/esm/resources/factories/SubtitleFactory.js +13 -9
  618. package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -1
  619. package/dist/esm/resources/index.d.ts +51 -34
  620. package/dist/esm/resources/index.d.ts.map +1 -1
  621. package/dist/esm/resources/utils.js +4 -4
  622. package/dist/esm/resources/utils.js.map +1 -1
  623. package/dist/esm/ui/Button.d.ts +54 -0
  624. package/dist/esm/ui/Button.d.ts.map +1 -0
  625. package/dist/esm/ui/Button.js +139 -0
  626. package/dist/esm/ui/Button.js.map +1 -0
  627. package/dist/esm/ui/Label.d.ts +17 -0
  628. package/dist/esm/ui/Label.d.ts.map +1 -0
  629. package/dist/esm/ui/Label.js +37 -0
  630. package/dist/esm/ui/Label.js.map +1 -0
  631. package/dist/esm/ui/Panel.d.ts +38 -0
  632. package/dist/esm/ui/Panel.d.ts.map +1 -0
  633. package/dist/esm/ui/Panel.js +61 -0
  634. package/dist/esm/ui/Panel.js.map +1 -0
  635. package/dist/esm/ui/ProgressBar.d.ts +37 -0
  636. package/dist/esm/ui/ProgressBar.d.ts.map +1 -0
  637. package/dist/esm/ui/ProgressBar.js +76 -0
  638. package/dist/esm/ui/ProgressBar.js.map +1 -0
  639. package/dist/esm/ui/Stack.d.ts +34 -0
  640. package/dist/esm/ui/Stack.d.ts.map +1 -0
  641. package/dist/esm/ui/Stack.js +69 -0
  642. package/dist/esm/ui/Stack.js.map +1 -0
  643. package/dist/esm/ui/UIRoot.d.ts +31 -0
  644. package/dist/esm/ui/UIRoot.d.ts.map +1 -0
  645. package/dist/esm/ui/UIRoot.js +49 -0
  646. package/dist/esm/ui/UIRoot.js.map +1 -0
  647. package/dist/esm/ui/Widget.d.ts +45 -0
  648. package/dist/esm/ui/Widget.d.ts.map +1 -0
  649. package/dist/esm/ui/Widget.js +113 -0
  650. package/dist/esm/ui/Widget.js.map +1 -0
  651. package/dist/esm/ui/index.d.ts +13 -0
  652. package/dist/esm/ui/index.d.ts.map +1 -0
  653. package/dist/exo.debug.esm.js +1 -948
  654. package/dist/exo.debug.esm.js.map +1 -1
  655. package/dist/exo.esm.js +1 -37555
  656. package/dist/exo.esm.js.map +1 -1
  657. package/package.json +31 -13
  658. package/dist/esm/audio/AbstractMedia.d.ts +0 -75
  659. package/dist/esm/audio/AbstractMedia.d.ts.map +0 -1
  660. package/dist/esm/audio/AbstractMedia.js +0 -179
  661. package/dist/esm/audio/AbstractMedia.js.map +0 -1
  662. package/dist/esm/audio/AudioAnalyser.d.ts +0 -128
  663. package/dist/esm/audio/AudioAnalyser.d.ts.map +0 -1
  664. package/dist/esm/audio/AudioAnalyser.js +0 -473
  665. package/dist/esm/audio/AudioAnalyser.js.map +0 -1
  666. package/dist/esm/audio/AudioFilter.d.ts +0 -17
  667. package/dist/esm/audio/AudioFilter.d.ts.map +0 -1
  668. package/dist/esm/audio/AudioFilter.js +0 -15
  669. package/dist/esm/audio/AudioFilter.js.map +0 -1
  670. package/dist/esm/audio/BeatDetector.d.ts +0 -207
  671. package/dist/esm/audio/BeatDetector.d.ts.map +0 -1
  672. package/dist/esm/audio/BeatDetector.js +0 -424
  673. package/dist/esm/audio/BeatDetector.js.map +0 -1
  674. package/dist/esm/audio/Media.d.ts +0 -37
  675. package/dist/esm/audio/Media.d.ts.map +0 -1
  676. package/dist/esm/audio/Music.d.ts +0 -42
  677. package/dist/esm/audio/Music.d.ts.map +0 -1
  678. package/dist/esm/audio/Music.js +0 -164
  679. package/dist/esm/audio/Music.js.map +0 -1
  680. package/dist/esm/audio/OscillatorSound.d.ts +0 -100
  681. package/dist/esm/audio/OscillatorSound.d.ts.map +0 -1
  682. package/dist/esm/audio/OscillatorSound.js +0 -346
  683. package/dist/esm/audio/OscillatorSound.js.map +0 -1
  684. package/dist/esm/audio/dsp/fft.d.ts +0 -23
  685. package/dist/esm/audio/dsp/fft.d.ts.map +0 -1
  686. package/dist/esm/audio/dsp/mel.d.ts +0 -44
  687. package/dist/esm/audio/dsp/mel.d.ts.map +0 -1
  688. package/dist/esm/audio/dsp/mel.js +0 -70
  689. package/dist/esm/audio/dsp/mel.js.map +0 -1
  690. package/dist/esm/audio/dsp/tempogram.d.ts +0 -52
  691. package/dist/esm/audio/dsp/tempogram.d.ts.map +0 -1
  692. package/dist/esm/audio/filters/ChorusFilter.d.ts +0 -54
  693. package/dist/esm/audio/filters/ChorusFilter.d.ts.map +0 -1
  694. package/dist/esm/audio/filters/ChorusFilter.js +0 -155
  695. package/dist/esm/audio/filters/ChorusFilter.js.map +0 -1
  696. package/dist/esm/audio/filters/CompressorFilter.d.ts +0 -54
  697. package/dist/esm/audio/filters/CompressorFilter.d.ts.map +0 -1
  698. package/dist/esm/audio/filters/CompressorFilter.js +0 -123
  699. package/dist/esm/audio/filters/CompressorFilter.js.map +0 -1
  700. package/dist/esm/audio/filters/DelayFilter.d.ts +0 -36
  701. package/dist/esm/audio/filters/DelayFilter.d.ts.map +0 -1
  702. package/dist/esm/audio/filters/DelayFilter.js +0 -114
  703. package/dist/esm/audio/filters/DelayFilter.js.map +0 -1
  704. package/dist/esm/audio/filters/DuckingFilter.d.ts +0 -45
  705. package/dist/esm/audio/filters/DuckingFilter.d.ts.map +0 -1
  706. package/dist/esm/audio/filters/DuckingFilter.js +0 -172
  707. package/dist/esm/audio/filters/DuckingFilter.js.map +0 -1
  708. package/dist/esm/audio/filters/EqualizerFilter.d.ts +0 -51
  709. package/dist/esm/audio/filters/EqualizerFilter.d.ts.map +0 -1
  710. package/dist/esm/audio/filters/EqualizerFilter.js +0 -138
  711. package/dist/esm/audio/filters/EqualizerFilter.js.map +0 -1
  712. package/dist/esm/audio/filters/GranularFilter.d.ts +0 -63
  713. package/dist/esm/audio/filters/GranularFilter.d.ts.map +0 -1
  714. package/dist/esm/audio/filters/GranularFilter.js +0 -107
  715. package/dist/esm/audio/filters/GranularFilter.js.map +0 -1
  716. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +0 -45
  717. package/dist/esm/audio/filters/PitchShiftFilter.d.ts.map +0 -1
  718. package/dist/esm/audio/filters/PitchShiftFilter.js +0 -66
  719. package/dist/esm/audio/filters/PitchShiftFilter.js.map +0 -1
  720. package/dist/esm/audio/filters/ReverbFilter.d.ts +0 -38
  721. package/dist/esm/audio/filters/ReverbFilter.d.ts.map +0 -1
  722. package/dist/esm/audio/filters/ReverbFilter.js +0 -122
  723. package/dist/esm/audio/filters/ReverbFilter.js.map +0 -1
  724. package/dist/esm/audio/filters/VocoderFilter.d.ts +0 -50
  725. package/dist/esm/audio/filters/VocoderFilter.d.ts.map +0 -1
  726. package/dist/esm/audio/filters/VocoderFilter.js +0 -94
  727. package/dist/esm/audio/filters/VocoderFilter.js.map +0 -1
  728. package/dist/esm/audio/filters/WorkletFilter.d.ts.map +0 -1
  729. package/dist/esm/audio/filters/WorkletFilter.js.map +0 -1
  730. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +0 -2
  731. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts.map +0 -1
  732. package/dist/esm/audio/worklets/beat-detector.worklet.js +0 -647
  733. package/dist/esm/audio/worklets/beat-detector.worklet.js.map +0 -1
  734. package/dist/esm/audio/worklets/granular.worklet.d.ts +0 -2
  735. package/dist/esm/audio/worklets/granular.worklet.d.ts.map +0 -1
  736. package/dist/esm/audio/worklets/granular.worklet.js +0 -89
  737. package/dist/esm/audio/worklets/granular.worklet.js.map +0 -1
  738. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +0 -2
  739. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts.map +0 -1
  740. package/dist/esm/audio/worklets/pitch-shift.worklet.js +0 -74
  741. package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +0 -1
  742. package/dist/esm/audio/worklets/vocoder.worklet.d.ts +0 -2
  743. package/dist/esm/audio/worklets/vocoder.worklet.d.ts.map +0 -1
  744. package/dist/esm/audio/worklets/vocoder.worklet.js +0 -92
  745. package/dist/esm/audio/worklets/vocoder.worklet.js.map +0 -1
  746. package/dist/esm/input/internal/interactionManagerRegistry.d.ts +0 -10
  747. package/dist/esm/input/internal/interactionManagerRegistry.d.ts.map +0 -1
  748. package/dist/esm/input/internal/interactionManagerRegistry.js +0 -10
  749. package/dist/esm/input/internal/interactionManagerRegistry.js.map +0 -1
  750. package/dist/esm/rendering/index.d.ts.map +0 -1
  751. package/dist/esm/rendering/plan/RenderInstruction.js +0 -45
  752. package/dist/esm/rendering/plan/RenderInstruction.js.map +0 -1
  753. package/dist/esm/rendering.d.ts +0 -28
  754. package/dist/esm/rendering.d.ts.map +0 -1
  755. package/dist/esm/rendering.js.map +0 -1
  756. package/dist/esm/resources/JsonStore.d.ts +0 -19
  757. package/dist/esm/resources/JsonStore.d.ts.map +0 -1
  758. package/dist/esm/resources/JsonStore.js +0 -62
  759. package/dist/esm/resources/JsonStore.js.map +0 -1
@@ -68,14 +68,20 @@ export interface MeshOptions {
68
68
  * `recomputeLocalBounds()`).
69
69
  */
70
70
  export declare class Mesh extends Drawable {
71
- readonly vertices: Float32Array;
72
- readonly indices: Uint16Array | null;
73
- readonly uvs: Float32Array | null;
74
- readonly colors: Uint32Array | null;
71
+ protected _vertices: Float32Array;
72
+ protected _indices: Uint16Array | null;
73
+ protected _uvs: Float32Array | null;
74
+ protected _colors: Uint32Array | null;
75
+ protected _material: MeshMaterial | null;
76
+ protected _geometry: Geometry | null;
77
+ get vertices(): Float32Array;
78
+ get indices(): Uint16Array | null;
79
+ get uvs(): Float32Array | null;
80
+ get colors(): Uint32Array | null;
75
81
  /** Custom material attached to this mesh, or `null` for the default mesh path. */
76
- readonly material: MeshMaterial | null;
82
+ get material(): MeshMaterial | null;
77
83
  /** Source geometry when constructed from the geometry form, otherwise `null`. */
78
- readonly geometry: Geometry | null;
84
+ get geometry(): Geometry | null;
79
85
  private _texture;
80
86
  constructor(options: MeshOptions);
81
87
  /** Number of (x, y) vertex pairs in the mesh (i.e. `vertices.length / 2`). */
@@ -91,4 +97,21 @@ export declare class Mesh extends Drawable {
91
97
  */
92
98
  recomputeLocalBounds(): this;
93
99
  }
100
+ /**
101
+ * Read a {@link Geometry}'s standard mesh attributes into the flat
102
+ * `vertices`/`uvs`/`colors` arrays the mesh renderers consume. Only the
103
+ * `triangle-list` topology and the canonical attribute layout (`f32` position
104
+ * and texcoord, `u8`/`u32`/`f32` color) are supported — this is the immediate
105
+ * (non-batched) bridge; shared GPU buffers and instancing arrive later.
106
+ *
107
+ * Exported (not barrelled) so the pooled immediate-draw mesh can reuse the exact
108
+ * same flattening the `Mesh` constructor applies.
109
+ * @internal
110
+ */
111
+ export declare function readGeometry(geometry: Geometry): {
112
+ vertices: Float32Array;
113
+ uvs: Float32Array | null;
114
+ colors: Uint32Array | null;
115
+ indices: Uint16Array | null;
116
+ };
94
117
  //# sourceMappingURL=Mesh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../../../src/rendering/mesh/Mesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAAC;IAClD,+FAA+F;IAC/F,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,IAAK,SAAQ,QAAQ;IAChC,SAAgB,QAAQ,EAAE,YAAY,CAAC;IACvC,SAAgB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5C,SAAgB,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;IACzC,SAAgB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAE3C,kFAAkF;IAClF,SAAgB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAE9C,iFAAiF;IACjF,SAAgB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE1C,OAAO,CAAC,QAAQ,CAAiC;gBAE9B,OAAO,EAAE,WAAW;IA6EvC,8EAA8E;IAC9E,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,+FAA+F;IAC/F,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,OAAO,IAAI,OAAO,GAAG,aAAa,GAAG,IAAI,CAEnD;IAED,IAAW,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,EAGzD;IAED;;;;OAIG;IACI,oBAAoB,IAAI,IAAI;CAoBpC"}
1
+ {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../../../src/rendering/mesh/Mesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAAC;IAClD,+FAA+F;IAC/F,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,IAAK,SAAQ,QAAQ;IAIhC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC;IAClC,SAAS,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC;IAErC,IAAW,QAAQ,IAAI,YAAY,CAElC;IAED,IAAW,OAAO,IAAI,WAAW,GAAG,IAAI,CAEvC;IAED,IAAW,GAAG,IAAI,YAAY,GAAG,IAAI,CAEpC;IAED,IAAW,MAAM,IAAI,WAAW,GAAG,IAAI,CAEtC;IAED,kFAAkF;IAClF,IAAW,QAAQ,IAAI,YAAY,GAAG,IAAI,CAEzC;IAED,iFAAiF;IACjF,IAAW,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAErC;IAED,OAAO,CAAC,QAAQ,CAAiC;gBAE9B,OAAO,EAAE,WAAW;IA8EvC,8EAA8E;IAC9E,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,+FAA+F;IAC/F,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,OAAO,IAAI,OAAO,GAAG,aAAa,GAAG,IAAI,CAEnD;IAED,IAAW,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,EAGzD;IAED;;;;OAIG;IACI,oBAAoB,IAAI,IAAI;CAqBpC;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAChD,QAAQ,EAAE,YAAY,CAAC;IACvB,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,CAkDA"}
@@ -29,14 +29,35 @@ import { Drawable } from '../Drawable.js';
29
29
  * `recomputeLocalBounds()`).
30
30
  */
31
31
  class Mesh extends Drawable {
32
- vertices;
33
- indices;
34
- uvs;
35
- colors;
32
+ // Backing fields are `protected` so the pooled `ImmediateMesh` subclass can
33
+ // reconfigure them in place; the public getters keep the data read-only for
34
+ // every external consumer (the v1 immutable-after-construction contract).
35
+ _vertices;
36
+ _indices;
37
+ _uvs;
38
+ _colors;
39
+ _material;
40
+ _geometry;
41
+ get vertices() {
42
+ return this._vertices;
43
+ }
44
+ get indices() {
45
+ return this._indices;
46
+ }
47
+ get uvs() {
48
+ return this._uvs;
49
+ }
50
+ get colors() {
51
+ return this._colors;
52
+ }
36
53
  /** Custom material attached to this mesh, or `null` for the default mesh path. */
37
- material;
54
+ get material() {
55
+ return this._material;
56
+ }
38
57
  /** Source geometry when constructed from the geometry form, otherwise `null`. */
39
- geometry;
58
+ get geometry() {
59
+ return this._geometry;
60
+ }
40
61
  _texture;
41
62
  constructor(options) {
42
63
  super();
@@ -85,6 +106,7 @@ class Mesh extends Drawable {
85
106
  throw new Error(`Mesh indices must be a non-empty multiple of 3 (got length ${indices.length}).`);
86
107
  }
87
108
  for (let i = 0; i < indices.length; i++) {
109
+ // In-bounds: `i` < `indices.length`.
88
110
  if (indices[i] >= vertexCount) {
89
111
  throw new Error(`Mesh index ${indices[i]} at position ${i} is out of range for vertex count ${vertexCount}.`);
90
112
  }
@@ -93,12 +115,12 @@ class Mesh extends Drawable {
93
115
  else if (vertexCount % 3 !== 0) {
94
116
  throw new Error(`Non-indexed Mesh requires a vertex count that is a multiple of 3 (got ${vertexCount}).`);
95
117
  }
96
- this.vertices = vertices;
97
- this.indices = indices;
98
- this.uvs = uvs;
99
- this.colors = colors;
100
- this.material = material;
101
- this.geometry = geometry;
118
+ this._vertices = vertices;
119
+ this._indices = indices;
120
+ this._uvs = uvs;
121
+ this._colors = colors;
122
+ this._material = material;
123
+ this._geometry = geometry;
102
124
  this._texture = texture;
103
125
  this.recomputeLocalBounds();
104
126
  }
@@ -128,6 +150,7 @@ class Mesh extends Drawable {
128
150
  let maxX = -Infinity;
129
151
  let maxY = -Infinity;
130
152
  for (let i = 0; i < this.vertices.length; i += 2) {
153
+ // In-bounds: `vertices.length` is an even (x, y) count (validated on construction).
131
154
  const x = this.vertices[i];
132
155
  const y = this.vertices[i + 1];
133
156
  if (x < minX)
@@ -154,6 +177,10 @@ const findAttribute = (attributes, names) => attributes.find(attribute => names.
154
177
  * `triangle-list` topology and the canonical attribute layout (`f32` position
155
178
  * and texcoord, `u8`/`u32`/`f32` color) are supported — this is the immediate
156
179
  * (non-batched) bridge; shared GPU buffers and instancing arrive later.
180
+ *
181
+ * Exported (not barrelled) so the pooled immediate-draw mesh can reuse the exact
182
+ * same flattening the `Mesh` constructor applies.
183
+ * @internal
157
184
  */
158
185
  function readGeometry(geometry) {
159
186
  if (geometry.topology !== 'triangle-list') {
@@ -234,5 +261,5 @@ function clamp01(value) {
234
261
  return value;
235
262
  }
236
263
 
237
- export { Mesh };
264
+ export { Mesh, readGeometry };
238
265
  //# sourceMappingURL=Mesh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Mesh.js","sources":["../../../../../src/rendering/mesh/Mesh.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Mesh.js","sources":["../../../../../src/rendering/mesh/Mesh.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ import type { Matrix } from '#math/Matrix';
2
+ import type { Rectangle } from '#math/Rectangle';
3
+ import type { Drawable } from './Drawable';
4
+ import type { View } from './View';
5
+ /**
6
+ * Render-only pixel snapping.
7
+ *
8
+ * ## Coordinate spaces
9
+ *
10
+ * A drawable travels through these spaces before it lands on the screen:
11
+ *
12
+ * ```
13
+ * local space quad / boundary coordinates relative to the node origin
14
+ * │ × node world matrix (a, b, c, d, x, y) — logical, NEVER mutated here
15
+ * ▼
16
+ * world space the scene's logical coordinate system
17
+ * │ × View.getTransform() — the camera (center, zoom, rotation)
18
+ * ▼
19
+ * clip space OpenGL/WebGPU normalised device coordinates, [-1, 1]
20
+ * │ × viewport (fraction) × target device pixels
21
+ * ▼
22
+ * device space actual pixels of the active render target
23
+ * (root canvas = css × pixelRatio; RenderTexture = its own size)
24
+ * ```
25
+ *
26
+ * Pixel snapping aligns rendered geometry to **device pixels** — not to integer
27
+ * world units. One world unit only equals one device pixel when the view scale
28
+ * and pixel ratio are both `1`; under zoom or a high-DPR backbuffer the device
29
+ * grid is finer or coarser, so we always project into device space, round there,
30
+ * and project back. The full world↔device mapping is provided by the existing,
31
+ * tested {@link View.worldToScreen} / {@link View.screenToWorld} helpers — we
32
+ * pass the **active render target's device-pixel dimensions** so the result is
33
+ * device-correct for both the main canvas and offscreen render targets, and
34
+ * correct under viewport rectangles (split-screen).
35
+ *
36
+ * ## Render-only contract
37
+ *
38
+ * Snapping happens on the CPU during render-data preparation and affects only
39
+ * the values handed to the GPU for that frame. It never mutates logical
40
+ * position, world/local matrices used for queries, collision data, tween or
41
+ * physics state, or {@link SceneNode.getBounds} results. {@link snapWorldTranslationInto}
42
+ * writes into a caller-owned scratch matrix; the node's cached global transform
43
+ * is left untouched.
44
+ *
45
+ * ## Modes
46
+ *
47
+ * - `position` — snap the node's rendered origin (the world translation) only.
48
+ * Touches the matrix translation `(x, y)` exclusively, leaving the linear part
49
+ * `(a, b, c, d)` intact, so it is safe under any transform (rotation, skew,
50
+ * non-uniform scale) — the origin is a single point with a well-defined device
51
+ * position.
52
+ * - `geometry` — additionally snap shared geometry boundaries (NineSlice edges,
53
+ * repeat-segment boundaries, the sprite quad). Each unique boundary is snapped
54
+ * by the **same** pure function {@link snapLocalBoundary}, so adjacent quads
55
+ * that share a boundary value snap to the same result — seams cannot open.
56
+ * Guaranteed only for **axis-aligned** transforms; rotation / skew (in the
57
+ * node or the view) downgrade it to `position` (see
58
+ * {@link resolveEffectivePixelSnapMode}).
59
+ *
60
+ * ## Rounding policy
61
+ *
62
+ * Nearest device pixel via `Math.round` (ties toward +∞). One deterministic
63
+ * policy used everywhere, so CPU debug values, WebGL2 and WebGPU all agree.
64
+ *
65
+ * @module
66
+ */
67
+ /**
68
+ * Render-only pixel-snapping policy for a {@link Drawable}.
69
+ *
70
+ * - `'none'` — no snapping; rendered transform and geometry use existing behaviour.
71
+ * - `'position'` — snap the rendered origin to the nearest device pixel. Logical
72
+ * `x`/`y`, matrices, bounds and collision are unchanged.
73
+ * - `'geometry'` — snap a single coherent shared-boundary plan (origin + boundaries)
74
+ * so neighbouring quads stay seam-free. Falls back to `'position'` automatically
75
+ * when the transform is not axis-aligned (rotation / skew).
76
+ *
77
+ * Snapping targets device pixels (× view scale × pixel ratio), not integer world
78
+ * units, and never alters logical state.
79
+ *
80
+ * @default 'none'
81
+ * @stable
82
+ */
83
+ export type PixelSnapMode = 'none' | 'position' | 'geometry';
84
+ /**
85
+ * Runtime guard for the {@link PixelSnapMode} union. Used by the public setter to
86
+ * reject JavaScript-invalid values atomically.
87
+ * @internal
88
+ */
89
+ export declare function isPixelSnapMode(value: unknown): value is PixelSnapMode;
90
+ /**
91
+ * Axis-aligned device-pixel mapping for one drawable in the active pass. Built
92
+ * from the node world matrix, the pass {@link View}, and the active render
93
+ * target's device-pixel dimensions. Distances/positions are in device pixels;
94
+ * `worldX`/`worldY` are back in world space.
95
+ * @internal
96
+ */
97
+ export interface PixelSnapContext {
98
+ /** Device-pixel position of the node's local origin, before snapping. */
99
+ readonly originX: number;
100
+ readonly originY: number;
101
+ /** Device-pixel position of the local origin after snapping to the nearest pixel. */
102
+ readonly snappedOriginX: number;
103
+ readonly snappedOriginY: number;
104
+ /** World translation that places the local origin exactly on the snapped device pixel. */
105
+ readonly worldX: number;
106
+ readonly worldY: number;
107
+ /** Signed device pixels per local unit along X / Y (node scale × view scale × DPR). */
108
+ readonly scaleX: number;
109
+ readonly scaleY: number;
110
+ /** `true` when local axes map cleanly to device axes (no rotation/skew in node or view). */
111
+ readonly axisAligned: boolean;
112
+ }
113
+ /**
114
+ * Build the device-pixel snap context for `world` (a node's global transform)
115
+ * under `view`, targeting a surface of `targetPxWidth` × `targetPxHeight` device
116
+ * pixels. Pure — does not mutate `world` or `view`. Falls back to a no-op context
117
+ * (snapped origin = original origin) when the target size or projection is
118
+ * degenerate, so callers can always use the result safely.
119
+ * @internal
120
+ */
121
+ export declare function buildPixelSnapContext(world: Matrix, view: View, targetPxWidth: number, targetPxHeight: number): PixelSnapContext;
122
+ /**
123
+ * Copy `world` into `out`, replacing only the translation with the snapped world
124
+ * origin from `ctx`. The linear part `(a, b, c, d)` and homogeneous row are
125
+ * preserved, so rotation / scale / skew are untouched — position snapping is safe
126
+ * under any transform. The source `world` matrix is never mutated.
127
+ * @internal
128
+ */
129
+ export declare function snapWorldTranslationInto(out: Matrix, world: Matrix, ctx: PixelSnapContext): Matrix;
130
+ /**
131
+ * Snap a single local boundary coordinate to the device-pixel grid along an axis
132
+ * whose local→device scale is `scale`. Returns the local value whose device
133
+ * position (relative to the already-snapped origin) lands on an integer device
134
+ * pixel: `round(L · scale) / scale`.
135
+ *
136
+ * The function is pure, so two boundaries with the same input value snap to the
137
+ * same output — shared boundaries stay shared and seams cannot open. It is also
138
+ * monotonic non-decreasing in `L` for any non-zero `scale` (including negative
139
+ * scale from a flip), so boundary order is preserved and snapped spans never go
140
+ * negative. Degenerate scales (`|scale| < epsilon`) and non-finite inputs return
141
+ * the value unchanged.
142
+ * @internal
143
+ */
144
+ export declare function snapLocalBoundary(localValue: number, scale: number): number;
145
+ /** A local-space quad with UVs — the content-cache shape shared by NineSlice / RepeatingSprite. @internal */
146
+ export interface BoundaryQuad {
147
+ readonly x0: number;
148
+ readonly y0: number;
149
+ readonly x1: number;
150
+ readonly y1: number;
151
+ readonly u0: number;
152
+ readonly v0: number;
153
+ readonly u1: number;
154
+ readonly v1: number;
155
+ }
156
+ /** Mutable quad produced by {@link snapQuadsInto}; consumed by the batched sprite renderers. @internal */
157
+ export interface RenderQuad {
158
+ x0: number;
159
+ y0: number;
160
+ x1: number;
161
+ y1: number;
162
+ u0: number;
163
+ v0: number;
164
+ u1: number;
165
+ v1: number;
166
+ }
167
+ /**
168
+ * Snap every quad's local X/Y boundaries to the device grid using the per-axis
169
+ * scale in `ctx`, writing the result into the reusable `out` buffer (grown /
170
+ * truncated to match `source`, never reallocated per frame once warm). UVs are
171
+ * copied verbatim — sampling is unchanged. Because {@link snapLocalBoundary} is
172
+ * pure, quads sharing a boundary value stay seam-free without any explicit
173
+ * de-duplication.
174
+ * @internal
175
+ */
176
+ export declare function snapQuadsInto(source: readonly BoundaryQuad[], ctx: PixelSnapContext, out: RenderQuad[]): RenderQuad[];
177
+ /**
178
+ * Resolve the world transform to upload for `drawable` at the transform-buffer
179
+ * write seam. Returns the drawable's live global transform unchanged when its
180
+ * mode is `'none'` (zero overhead), otherwise a snapped copy written into the
181
+ * caller-owned `scratch` matrix — the logical global transform is never mutated.
182
+ *
183
+ * Both backends call this at their single transform-write boundary, so position
184
+ * snapping (and tilemap chunk/layer origin snapping) is applied once, backend-
185
+ * neutrally, to every drawable. `view` and the target device-pixel dimensions
186
+ * come from the active pass.
187
+ * @internal
188
+ */
189
+ export declare function resolveUploadTransform(drawable: Drawable, view: View, targetPxWidth: number, targetPxHeight: number, scratch: Matrix): Matrix;
190
+ /**
191
+ * Snap a single local-space bounds rectangle (e.g. a sprite quad) to the device
192
+ * grid using the per-axis scale in `ctx`, writing the result into `out`. Each of
193
+ * the four edges is snapped by {@link snapLocalBoundary}, so combined with the
194
+ * device-snapped origin every corner lands on a whole device pixel. `out` may be
195
+ * the same instance across frames (no allocation). UV/texture mapping is the
196
+ * caller's concern and is unaffected.
197
+ * @internal
198
+ */
199
+ export declare function snapBoundsInto(base: Rectangle, ctx: PixelSnapContext, out: Rectangle): Rectangle;
200
+ /** Reason a requested `geometry` snap was downgraded. @internal */
201
+ export type PixelSnapDowngradeReason = 'non-axis-aligned' | null;
202
+ /**
203
+ * Resolve the effective snap mode from the requested mode and whether the
204
+ * combined node+view transform is axis-aligned. `geometry` downgrades to
205
+ * `position` when the transform is not axis-aligned (rotation or skew, in the
206
+ * node itself or any ancestor or the view); `none` and `position` pass through
207
+ * unchanged. Pure and stateless — never stores an effective mode, so it always
208
+ * reflects the current world transform.
209
+ * @internal
210
+ */
211
+ export declare function resolveEffectivePixelSnapMode(requested: PixelSnapMode, axisAligned: boolean): PixelSnapMode;
212
+ /**
213
+ * Diagnostic companion to {@link resolveEffectivePixelSnapMode}: returns why a
214
+ * `geometry` request was downgraded, or `null` when no downgrade occurred. Not a
215
+ * stable public API — exposed for tests and dev warnings only.
216
+ * @internal
217
+ */
218
+ export declare function getPixelSnapDowngradeReason(requested: PixelSnapMode, axisAligned: boolean): PixelSnapDowngradeReason;
219
+ //# sourceMappingURL=pixelSnap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixelSnap.d.ts","sourceRoot":"","sources":["../../../src/rendering/pixelSnap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ const pixelSnapModes = new Set(['none', 'position', 'geometry']);
2
+ /**
3
+ * Runtime guard for the {@link PixelSnapMode} union. Used by the public setter to
4
+ * reject JavaScript-invalid values atomically.
5
+ * @internal
6
+ */
7
+ function isPixelSnapMode(value) {
8
+ return typeof value === 'string' && pixelSnapModes.has(value);
9
+ }
10
+ /** Below this magnitude an axis is treated as collapsed / cross-coupled. @internal */
11
+ const epsilon = 1e-6;
12
+ /**
13
+ * Build the device-pixel snap context for `world` (a node's global transform)
14
+ * under `view`, targeting a surface of `targetPxWidth` × `targetPxHeight` device
15
+ * pixels. Pure — does not mutate `world` or `view`. Falls back to a no-op context
16
+ * (snapped origin = original origin) when the target size or projection is
17
+ * degenerate, so callers can always use the result safely.
18
+ * @internal
19
+ */
20
+ function buildPixelSnapContext(world, view, targetPxWidth, targetPxHeight) {
21
+ const ox = world.x;
22
+ const oy = world.y;
23
+ if (!(targetPxWidth > 0) || !(targetPxHeight > 0)) {
24
+ return noopContext(ox, oy);
25
+ }
26
+ // Forward projection only (world → device). The view's inverse is deliberately
27
+ // avoided; instead the origin plus two world-unit axis tips give the exact
28
+ // world→device Jacobian, which we invert ourselves (a 2×2) to map the snapped
29
+ // device origin back to world space. This stays exact for any affine view.
30
+ const origin = view.worldToScreen(ox, oy, targetPxWidth, targetPxHeight);
31
+ if (!Number.isFinite(origin.x) || !Number.isFinite(origin.y)) {
32
+ return noopContext(ox, oy);
33
+ }
34
+ const tipWorldX = view.worldToScreen(ox + 1, oy, targetPxWidth, targetPxHeight);
35
+ const tipWorldY = view.worldToScreen(ox, oy + 1, targetPxWidth, targetPxHeight);
36
+ // Columns of the world→device Jacobian J = [[jxx, jyx], [jxy, jyy]].
37
+ const jxx = tipWorldX.x - origin.x;
38
+ const jxy = tipWorldX.y - origin.y;
39
+ const jyx = tipWorldY.x - origin.x;
40
+ const jyy = tipWorldY.y - origin.y;
41
+ // Local axes in device pixels: apply the node's linear part to the Jacobian —
42
+ // local (1,0)→world (a,c), local (0,1)→world (b,d).
43
+ const scaleX = world.a * jxx + world.c * jyx; // device-x per local-x unit
44
+ const crossXy = world.a * jxy + world.c * jyy; // device-y per local-x unit
45
+ const crossYx = world.b * jxx + world.d * jyx; // device-x per local-y unit
46
+ const scaleY = world.b * jxy + world.d * jyy; // device-y per local-y unit
47
+ const axisAligned = Math.abs(crossXy) < epsilon && Math.abs(crossYx) < epsilon;
48
+ const snappedOriginX = Math.round(origin.x);
49
+ const snappedOriginY = Math.round(origin.y);
50
+ // Map the snapped device origin back to world via J⁻¹ so that, re-projected
51
+ // through the (unchanged) view, the rendered origin lands on the device pixel.
52
+ let worldX = ox;
53
+ let worldY = oy;
54
+ const det = jxx * jyy - jyx * jxy;
55
+ if (Math.abs(det) > epsilon) {
56
+ const ddx = snappedOriginX - origin.x;
57
+ const ddy = snappedOriginY - origin.y;
58
+ worldX = ox + (jyy * ddx - jyx * ddy) / det;
59
+ worldY = oy + (jxx * ddy - jxy * ddx) / det;
60
+ }
61
+ return {
62
+ originX: origin.x,
63
+ originY: origin.y,
64
+ snappedOriginX,
65
+ snappedOriginY,
66
+ worldX,
67
+ worldY,
68
+ scaleX,
69
+ scaleY,
70
+ axisAligned,
71
+ };
72
+ }
73
+ function noopContext(ox, oy) {
74
+ return {
75
+ originX: ox,
76
+ originY: oy,
77
+ snappedOriginX: ox,
78
+ snappedOriginY: oy,
79
+ worldX: ox,
80
+ worldY: oy,
81
+ scaleX: 0,
82
+ scaleY: 0,
83
+ axisAligned: false,
84
+ };
85
+ }
86
+ /**
87
+ * Copy `world` into `out`, replacing only the translation with the snapped world
88
+ * origin from `ctx`. The linear part `(a, b, c, d)` and homogeneous row are
89
+ * preserved, so rotation / scale / skew are untouched — position snapping is safe
90
+ * under any transform. The source `world` matrix is never mutated.
91
+ * @internal
92
+ */
93
+ function snapWorldTranslationInto(out, world, ctx) {
94
+ out.copy(world);
95
+ out.x = ctx.worldX;
96
+ out.y = ctx.worldY;
97
+ return out;
98
+ }
99
+ /**
100
+ * Snap a single local boundary coordinate to the device-pixel grid along an axis
101
+ * whose local→device scale is `scale`. Returns the local value whose device
102
+ * position (relative to the already-snapped origin) lands on an integer device
103
+ * pixel: `round(L · scale) / scale`.
104
+ *
105
+ * The function is pure, so two boundaries with the same input value snap to the
106
+ * same output — shared boundaries stay shared and seams cannot open. It is also
107
+ * monotonic non-decreasing in `L` for any non-zero `scale` (including negative
108
+ * scale from a flip), so boundary order is preserved and snapped spans never go
109
+ * negative. Degenerate scales (`|scale| < epsilon`) and non-finite inputs return
110
+ * the value unchanged.
111
+ * @internal
112
+ */
113
+ function snapLocalBoundary(localValue, scale) {
114
+ if (!Number.isFinite(localValue) || Math.abs(scale) < epsilon) {
115
+ return localValue;
116
+ }
117
+ return Math.round(localValue * scale) / scale;
118
+ }
119
+ /**
120
+ * Snap every quad's local X/Y boundaries to the device grid using the per-axis
121
+ * scale in `ctx`, writing the result into the reusable `out` buffer (grown /
122
+ * truncated to match `source`, never reallocated per frame once warm). UVs are
123
+ * copied verbatim — sampling is unchanged. Because {@link snapLocalBoundary} is
124
+ * pure, quads sharing a boundary value stay seam-free without any explicit
125
+ * de-duplication.
126
+ * @internal
127
+ */
128
+ function snapQuadsInto(source, ctx, out) {
129
+ const { scaleX, scaleY } = ctx;
130
+ out.length = source.length;
131
+ for (let i = 0; i < source.length; i++) {
132
+ // In-bounds: i < source.length.
133
+ const q = source[i];
134
+ let t = out[i];
135
+ if (t === undefined) {
136
+ t = out[i] = { x0: 0, y0: 0, x1: 0, y1: 0, u0: 0, v0: 0, u1: 0, v1: 0 };
137
+ }
138
+ t.x0 = snapLocalBoundary(q.x0, scaleX);
139
+ t.x1 = snapLocalBoundary(q.x1, scaleX);
140
+ t.y0 = snapLocalBoundary(q.y0, scaleY);
141
+ t.y1 = snapLocalBoundary(q.y1, scaleY);
142
+ t.u0 = q.u0;
143
+ t.v0 = q.v0;
144
+ t.u1 = q.u1;
145
+ t.v1 = q.v1;
146
+ }
147
+ return out;
148
+ }
149
+ /**
150
+ * Resolve the world transform to upload for `drawable` at the transform-buffer
151
+ * write seam. Returns the drawable's live global transform unchanged when its
152
+ * mode is `'none'` (zero overhead), otherwise a snapped copy written into the
153
+ * caller-owned `scratch` matrix — the logical global transform is never mutated.
154
+ *
155
+ * Both backends call this at their single transform-write boundary, so position
156
+ * snapping (and tilemap chunk/layer origin snapping) is applied once, backend-
157
+ * neutrally, to every drawable. `view` and the target device-pixel dimensions
158
+ * come from the active pass.
159
+ * @internal
160
+ */
161
+ function resolveUploadTransform(drawable, view, targetPxWidth, targetPxHeight, scratch) {
162
+ const world = drawable.getGlobalTransform();
163
+ if (drawable.pixelSnapMode === 'none') {
164
+ return world;
165
+ }
166
+ const ctx = buildPixelSnapContext(world, view, targetPxWidth, targetPxHeight);
167
+ return snapWorldTranslationInto(scratch, world, ctx);
168
+ }
169
+ /**
170
+ * Snap a single local-space bounds rectangle (e.g. a sprite quad) to the device
171
+ * grid using the per-axis scale in `ctx`, writing the result into `out`. Each of
172
+ * the four edges is snapped by {@link snapLocalBoundary}, so combined with the
173
+ * device-snapped origin every corner lands on a whole device pixel. `out` may be
174
+ * the same instance across frames (no allocation). UV/texture mapping is the
175
+ * caller's concern and is unaffected.
176
+ * @internal
177
+ */
178
+ function snapBoundsInto(base, ctx, out) {
179
+ const left = snapLocalBoundary(base.left, ctx.scaleX);
180
+ const top = snapLocalBoundary(base.top, ctx.scaleY);
181
+ const right = snapLocalBoundary(base.right, ctx.scaleX);
182
+ const bottom = snapLocalBoundary(base.bottom, ctx.scaleY);
183
+ return out.set(left, top, right - left, bottom - top);
184
+ }
185
+
186
+ export { buildPixelSnapContext, isPixelSnapMode, resolveUploadTransform, snapBoundsInto, snapLocalBoundary, snapQuadsInto, snapWorldTranslationInto };
187
+ //# sourceMappingURL=pixelSnap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixelSnap.js","sources":["../../../../src/rendering/pixelSnap.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}