@lightningjs/renderer 3.0.0-beta6 → 3.0.0-beta8

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 (497) hide show
  1. package/COPYING +1 -0
  2. package/LICENSE +202 -202
  3. package/NOTICE +3 -3
  4. package/README.md +147 -147
  5. package/dist/exports/utils.d.ts +2 -1
  6. package/dist/exports/utils.js +2 -1
  7. package/dist/exports/utils.js.map +1 -1
  8. package/dist/src/core/CoreNode.d.ts +33 -49
  9. package/dist/src/core/CoreNode.js +268 -255
  10. package/dist/src/core/CoreNode.js.map +1 -1
  11. package/dist/src/core/CoreTextNode.d.ts +1 -1
  12. package/dist/src/core/CoreTextNode.js +14 -15
  13. package/dist/src/core/CoreTextNode.js.map +1 -1
  14. package/dist/src/core/CoreTextureManager.js +11 -4
  15. package/dist/src/core/CoreTextureManager.js.map +1 -1
  16. package/dist/src/core/Stage.d.ts +27 -26
  17. package/dist/src/core/Stage.js +88 -36
  18. package/dist/src/core/Stage.js.map +1 -1
  19. package/dist/src/core/TextureMemoryManager.d.ts +9 -0
  20. package/dist/src/core/TextureMemoryManager.js +78 -48
  21. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  22. package/dist/src/core/animations/CoreAnimation.js +5 -0
  23. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  24. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  25. package/dist/src/core/animations/CoreAnimationController.js +7 -1
  26. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  27. package/dist/src/core/lib/ImageWorker.js +1 -1
  28. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  29. package/dist/src/core/lib/utils.d.ts +1 -0
  30. package/dist/src/core/lib/utils.js +3 -0
  31. package/dist/src/core/lib/utils.js.map +1 -1
  32. package/dist/src/core/renderers/CoreRenderer.d.ts +1 -0
  33. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  34. package/dist/src/core/renderers/CoreShaderNode.d.ts +1 -0
  35. package/dist/src/core/renderers/CoreShaderNode.js +9 -0
  36. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  37. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -0
  38. package/dist/src/core/renderers/canvas/CanvasRenderer.js +3 -0
  39. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  40. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +1 -4
  41. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  42. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -3
  43. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  44. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +2 -2
  45. package/dist/src/core/renderers/webgl/WebGlRenderer.js +57 -57
  46. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  47. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  48. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  49. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
  50. package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
  51. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  52. package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
  53. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  54. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +7 -5
  55. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  56. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
  57. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  58. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
  59. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  60. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
  61. package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
  62. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  63. package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
  64. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  65. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  66. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  67. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  68. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  69. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  70. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  71. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  72. package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
  73. package/dist/src/core/shaders/utils.js.map +1 -0
  74. package/dist/src/core/shaders/webgl/Border.js +82 -82
  75. package/dist/src/core/shaders/webgl/Default.js +47 -47
  76. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  77. package/dist/src/core/shaders/webgl/HolePunch.js +36 -35
  78. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  79. package/dist/src/core/shaders/webgl/LinearGradient.js +41 -40
  80. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  81. package/dist/src/core/shaders/webgl/RadialGradient.js +39 -38
  82. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  83. package/dist/src/core/shaders/webgl/Rounded.js +71 -71
  84. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +111 -100
  85. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  86. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +136 -123
  87. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  88. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
  89. package/dist/src/core/shaders/webgl/SdfShader.js +62 -62
  90. package/dist/src/core/shaders/webgl/Shadow.js +83 -83
  91. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -50
  92. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  93. package/dist/src/core/textures/ImageTexture.d.ts +1 -1
  94. package/dist/src/core/textures/ImageTexture.js +6 -1
  95. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  96. package/dist/src/core/textures/Texture.d.ts +8 -0
  97. package/dist/src/core/textures/Texture.js +13 -0
  98. package/dist/src/core/textures/Texture.js.map +1 -1
  99. package/dist/src/core/utils.d.ts +1 -1
  100. package/dist/src/main-api/Inspector.d.ts +6 -1
  101. package/dist/src/main-api/Inspector.js +42 -4
  102. package/dist/src/main-api/Inspector.js.map +1 -1
  103. package/dist/src/main-api/Renderer.d.ts +62 -43
  104. package/dist/src/main-api/Renderer.js +119 -31
  105. package/dist/src/main-api/Renderer.js.map +1 -1
  106. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  107. package/exports/canvas-shaders.ts +28 -28
  108. package/exports/canvas.ts +45 -45
  109. package/exports/index.ts +90 -90
  110. package/exports/inspector.ts +24 -24
  111. package/exports/utils.ts +50 -44
  112. package/exports/webgl-shaders.ts +28 -28
  113. package/exports/webgl.ts +50 -50
  114. package/package.json +1 -2
  115. package/src/common/CommonTypes.ts +146 -146
  116. package/src/common/EventEmitter.ts +77 -77
  117. package/src/common/IAnimationController.ts +92 -92
  118. package/src/common/IEventEmitter.ts +28 -28
  119. package/src/core/CoreNode.test.ts +202 -202
  120. package/src/core/CoreNode.ts +2483 -2469
  121. package/src/core/CoreShaderManager.ts +188 -188
  122. package/src/core/CoreTextNode.ts +451 -448
  123. package/src/core/CoreTextureManager.ts +608 -600
  124. package/src/core/Stage.ts +800 -751
  125. package/src/core/TextureMemoryManager.ts +435 -394
  126. package/src/core/animations/AnimationManager.ts +38 -38
  127. package/src/core/animations/CoreAnimation.ts +291 -284
  128. package/src/core/animations/CoreAnimationController.ts +164 -157
  129. package/src/core/lib/ContextSpy.ts +41 -41
  130. package/src/core/lib/ImageWorker.ts +286 -280
  131. package/src/core/lib/Matrix3d.ts +244 -244
  132. package/src/core/lib/RenderCoords.ts +71 -71
  133. package/src/core/lib/WebGlContextWrapper.ts +1374 -1374
  134. package/src/core/lib/textureCompression.ts +152 -152
  135. package/src/core/lib/textureSvg.ts +78 -78
  136. package/src/core/lib/utils.ts +390 -386
  137. package/src/core/lib/validateImageBitmap.ts +87 -87
  138. package/src/core/platforms/Platform.ts +77 -77
  139. package/src/core/platforms/web/WebPlatform.ts +84 -84
  140. package/src/core/renderers/CoreContextTexture.ts +43 -43
  141. package/src/core/renderers/CoreRenderOp.ts +22 -22
  142. package/src/core/renderers/CoreRenderer.ts +110 -109
  143. package/src/core/renderers/CoreShaderNode.ts +175 -165
  144. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  145. package/src/core/renderers/canvas/CanvasRenderer.ts +302 -298
  146. package/src/core/renderers/canvas/CanvasShaderNode.ts +96 -99
  147. package/src/core/renderers/canvas/CanvasTexture.ts +156 -156
  148. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -220
  149. package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -85
  150. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +86 -86
  151. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -50
  152. package/src/core/renderers/webgl/WebGlCtxTexture.ts +298 -301
  153. package/src/core/renderers/webgl/WebGlRenderOp.ts +161 -161
  154. package/src/core/renderers/webgl/WebGlRenderer.ts +747 -750
  155. package/src/core/renderers/webgl/WebGlShaderNode.ts +435 -437
  156. package/src/core/renderers/webgl/WebGlShaderProgram.ts +318 -318
  157. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  158. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  159. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
  160. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  161. package/src/core/shaders/canvas/Border.ts +78 -78
  162. package/src/core/shaders/canvas/HolePunch.ts +62 -62
  163. package/src/core/shaders/canvas/LinearGradient.ts +71 -69
  164. package/src/core/shaders/canvas/RadialGradient.ts +99 -113
  165. package/src/core/shaders/canvas/Rounded.ts +55 -55
  166. package/src/core/shaders/canvas/RoundedWithBorder.ts +74 -72
  167. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +90 -88
  168. package/src/core/shaders/canvas/RoundedWithShadow.ts +70 -69
  169. package/src/core/shaders/canvas/Shadow.ts +52 -52
  170. package/src/core/shaders/canvas/utils/render.ts +151 -151
  171. package/src/core/shaders/templates/BorderTemplate.ts +115 -115
  172. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  173. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  174. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
  175. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  176. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  177. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  178. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  179. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  180. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +46 -47
  181. package/src/core/shaders/webgl/Border.ts +116 -116
  182. package/src/core/shaders/webgl/Default.ts +89 -89
  183. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  184. package/src/core/shaders/webgl/HolePunch.ts +75 -78
  185. package/src/core/shaders/webgl/LinearGradient.ts +82 -81
  186. package/src/core/shaders/webgl/RadialGradient.ts +85 -84
  187. package/src/core/shaders/webgl/Rounded.ts +117 -117
  188. package/src/core/shaders/webgl/RoundedWithBorder.ts +155 -144
  189. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +175 -166
  190. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -98
  191. package/src/core/shaders/webgl/SdfShader.ts +134 -134
  192. package/src/core/shaders/webgl/Shadow.ts +115 -115
  193. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  194. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  195. package/src/core/text-rendering/TrFontManager.ts +183 -183
  196. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  197. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  198. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  199. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  200. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  201. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  202. package/src/core/text-rendering/font-face-types/utils.ts +39 -39
  203. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +514 -514
  204. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +863 -863
  205. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +793 -849
  206. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  207. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  208. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  209. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  210. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  211. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  212. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  213. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +497 -497
  214. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  215. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  216. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  217. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  218. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  219. package/src/core/text-rendering/renderers/TextRenderer.ts +567 -567
  220. package/src/core/textures/ColorTexture.ts +102 -102
  221. package/src/core/textures/ImageTexture.ts +418 -410
  222. package/src/core/textures/NoiseTexture.ts +104 -104
  223. package/src/core/textures/RenderTexture.ts +85 -85
  224. package/src/core/textures/SubTexture.ts +205 -205
  225. package/src/core/textures/Texture.ts +372 -358
  226. package/src/core/utils.ts +227 -227
  227. package/src/env.d.ts +7 -7
  228. package/src/main-api/INode.ts +100 -100
  229. package/src/main-api/Inspector.ts +569 -522
  230. package/src/main-api/Renderer.ts +818 -673
  231. package/src/main-api/utils.ts +45 -45
  232. package/src/utils.ts +267 -267
  233. package/dist/exports/core-api.d.ts +0 -74
  234. package/dist/exports/core-api.js +0 -96
  235. package/dist/exports/core-api.js.map +0 -1
  236. package/dist/exports/main-api.d.ts +0 -30
  237. package/dist/exports/main-api.js +0 -45
  238. package/dist/exports/main-api.js.map +0 -1
  239. package/dist/src/core/CoreExtension.d.ts +0 -12
  240. package/dist/src/core/CoreExtension.js +0 -29
  241. package/dist/src/core/CoreExtension.js.map +0 -1
  242. package/dist/src/core/CoreStuff.d.ts +0 -1
  243. package/dist/src/core/CoreStuff.js +0 -138
  244. package/dist/src/core/CoreStuff.js.map +0 -1
  245. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  246. package/dist/src/core/CoreTexturizer.js +0 -47
  247. package/dist/src/core/CoreTexturizer.js.map +0 -1
  248. package/dist/src/core/LngNode.d.ts +0 -736
  249. package/dist/src/core/LngNode.js +0 -1174
  250. package/dist/src/core/LngNode.js.map +0 -1
  251. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  252. package/dist/src/core/Matrix2DContext.js +0 -45
  253. package/dist/src/core/Matrix2DContext.js.map +0 -1
  254. package/dist/src/core/ShaderNode.d.ts +0 -10
  255. package/dist/src/core/ShaderNode.js +0 -30
  256. package/dist/src/core/ShaderNode.js.map +0 -1
  257. package/dist/src/core/TextNode.d.ts +0 -103
  258. package/dist/src/core/TextNode.js +0 -331
  259. package/dist/src/core/TextNode.js.map +0 -1
  260. package/dist/src/core/lib/Coords.d.ts +0 -14
  261. package/dist/src/core/lib/Coords.js +0 -55
  262. package/dist/src/core/lib/Coords.js.map +0 -1
  263. package/dist/src/core/lib/glm/common.d.ts +0 -162
  264. package/dist/src/core/lib/glm/common.js +0 -81
  265. package/dist/src/core/lib/glm/common.js.map +0 -1
  266. package/dist/src/core/lib/glm/index.d.ts +0 -11
  267. package/dist/src/core/lib/glm/index.js +0 -30
  268. package/dist/src/core/lib/glm/index.js.map +0 -1
  269. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  270. package/dist/src/core/lib/glm/mat2.js +0 -396
  271. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  272. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  273. package/dist/src/core/lib/glm/mat2d.js +0 -442
  274. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  275. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  276. package/dist/src/core/lib/glm/mat3.js +0 -680
  277. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  278. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  279. package/dist/src/core/lib/glm/mat4.js +0 -1802
  280. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  281. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  282. package/dist/src/core/lib/glm/quat.js +0 -693
  283. package/dist/src/core/lib/glm/quat.js.map +0 -1
  284. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  285. package/dist/src/core/lib/glm/quat2.js +0 -754
  286. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  287. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  288. package/dist/src/core/lib/glm/vec2.js +0 -569
  289. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  290. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  291. package/dist/src/core/lib/glm/vec3.js +0 -720
  292. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  293. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  294. package/dist/src/core/lib/glm/vec4.js +0 -608
  295. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  296. package/dist/src/core/platform.d.ts +0 -10
  297. package/dist/src/core/platform.js +0 -56
  298. package/dist/src/core/platform.js.map +0 -1
  299. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  300. package/dist/src/core/renderers/CoreShader.js +0 -28
  301. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  302. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  303. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  304. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  305. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  306. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  307. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  308. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  309. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -123
  310. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  311. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  312. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  313. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  314. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  315. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -55
  316. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  317. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  318. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  319. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  320. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -57
  321. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -227
  322. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  323. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  324. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  325. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  326. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  327. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -613
  328. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  329. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  330. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -231
  331. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  332. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  333. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  334. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  335. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  336. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  337. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  338. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  339. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  340. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  341. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  342. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  343. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  344. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  345. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  346. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  347. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  348. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  349. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  350. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  351. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  352. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  353. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  354. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  355. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  356. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  357. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  358. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  359. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  360. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  361. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  362. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  363. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  364. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  365. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  366. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  367. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  368. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  369. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  370. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  371. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  372. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  373. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  374. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  375. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  376. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  377. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  378. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  379. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  380. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  381. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  382. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  383. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  384. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  385. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  386. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  387. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  388. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  389. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  390. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  391. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  392. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  393. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  394. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  395. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  396. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  397. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  398. package/dist/src/core/scene/Scene.d.ts +0 -59
  399. package/dist/src/core/scene/Scene.js +0 -106
  400. package/dist/src/core/scene/Scene.js.map +0 -1
  401. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  402. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  403. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  404. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  405. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  406. package/dist/src/main-api/DynamicShaderController.js +0 -58
  407. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  408. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  409. package/dist/src/main-api/ICoreDriver.js +0 -20
  410. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  411. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  412. package/dist/src/main-api/IRenderDriver.js +0 -20
  413. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  414. package/dist/src/main-api/IShaderController.d.ts +0 -14
  415. package/dist/src/main-api/IShaderController.js +0 -30
  416. package/dist/src/main-api/IShaderController.js.map +0 -1
  417. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  418. package/dist/src/main-api/IShaderNode.js +0 -19
  419. package/dist/src/main-api/IShaderNode.js.map +0 -1
  420. package/dist/src/main-api/RendererMain.d.ts +0 -375
  421. package/dist/src/main-api/RendererMain.js +0 -365
  422. package/dist/src/main-api/RendererMain.js.map +0 -1
  423. package/dist/src/main-api/ShaderController.d.ts +0 -31
  424. package/dist/src/main-api/ShaderController.js +0 -37
  425. package/dist/src/main-api/ShaderController.js.map +0 -1
  426. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  427. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  428. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  429. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  430. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  431. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  432. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  433. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
  434. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  435. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  436. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  437. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  438. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  439. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  440. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  441. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  442. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  443. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  444. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  445. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  446. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  447. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  448. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  449. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  450. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  451. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  452. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  453. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  454. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  455. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  456. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  457. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  458. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  459. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  460. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  461. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  462. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  463. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  464. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  465. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  466. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  467. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  468. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  469. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  470. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  471. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  472. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  473. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  474. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  475. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  476. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  477. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  478. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  479. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  480. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  481. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  482. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  483. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  484. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  485. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  486. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  487. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  488. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  489. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  490. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  491. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  492. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  493. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  494. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  495. package/dist/src/render-drivers/utils.d.ts +0 -12
  496. package/dist/src/render-drivers/utils.js +0 -69
  497. package/dist/src/render-drivers/utils.js.map +0 -1
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import { assertTruthy, getNewId, mergeColorAlphaPremultiplied, isProductionEnvironment, } from '../utils.js';
19
+ import { assertTruthy, getNewId, mergeColorAlphaPremultiplied, } from '../utils.js';
20
20
  import {} from './textures/Texture.js';
21
21
  import { EventEmitter } from '../common/EventEmitter.js';
22
22
  import { copyRect, intersectRect, createBound, boundInsideBound, boundLargeThanBound, createPreloadBounds, } from './lib/utils.js';
@@ -43,31 +43,23 @@ export var UpdateType;
43
43
  */
44
44
  UpdateType[UpdateType["Children"] = 1] = "Children";
45
45
  /**
46
- * Scale/Rotate transform update
47
- *
48
- * @remarks
49
- * CoreNode Properties Updated:
50
- * - `scaleRotateTransform`
51
- */
52
- UpdateType[UpdateType["ScaleRotate"] = 2] = "ScaleRotate";
53
- /**
54
- * Translate transform update (x/y/width/height/pivot/mount)
46
+ * localTransform
55
47
  *
56
48
  * @remarks
57
49
  * CoreNode Properties Updated:
58
50
  * - `localTransform`
59
51
  */
60
- UpdateType[UpdateType["Local"] = 4] = "Local";
52
+ UpdateType[UpdateType["Local"] = 2] = "Local";
61
53
  /**
62
- * Global Transform update
54
+ * globalTransform
63
55
  *
64
- * @remarks
56
+ * * @remarks
65
57
  * CoreNode Properties Updated:
66
58
  * - `globalTransform`
59
+ * - `renderBounds`
67
60
  * - `renderCoords`
68
- * - `renderBound`
69
61
  */
70
- UpdateType[UpdateType["Global"] = 8] = "Global";
62
+ UpdateType[UpdateType["Global"] = 4] = "Global";
71
63
  /**
72
64
  * Clipping rect update
73
65
  *
@@ -75,7 +67,7 @@ export var UpdateType;
75
67
  * CoreNode Properties Updated:
76
68
  * - `clippingRect`
77
69
  */
78
- UpdateType[UpdateType["Clipping"] = 16] = "Clipping";
70
+ UpdateType[UpdateType["Clipping"] = 8] = "Clipping";
79
71
  /**
80
72
  * Calculated ZIndex update
81
73
  *
@@ -83,7 +75,7 @@ export var UpdateType;
83
75
  * CoreNode Properties Updated:
84
76
  * - `calcZIndex`
85
77
  */
86
- UpdateType[UpdateType["CalculatedZIndex"] = 32] = "CalculatedZIndex";
78
+ UpdateType[UpdateType["CalculatedZIndex"] = 16] = "CalculatedZIndex";
87
79
  /**
88
80
  * Z-Index Sorted Children update
89
81
  *
@@ -91,7 +83,7 @@ export var UpdateType;
91
83
  * CoreNode Properties Updated:
92
84
  * - `children` (sorts children by their `calcZIndex`)
93
85
  */
94
- UpdateType[UpdateType["ZIndexSortedChildren"] = 64] = "ZIndexSortedChildren";
86
+ UpdateType[UpdateType["ZIndexSortedChildren"] = 32] = "ZIndexSortedChildren";
95
87
  /**
96
88
  * Premultiplied Colors update
97
89
  *
@@ -102,7 +94,7 @@ export var UpdateType;
102
94
  * - `premultipliedColorBl`
103
95
  * - `premultipliedColorBr`
104
96
  */
105
- UpdateType[UpdateType["PremultipliedColors"] = 128] = "PremultipliedColors";
97
+ UpdateType[UpdateType["PremultipliedColors"] = 64] = "PremultipliedColors";
106
98
  /**
107
99
  * World Alpha update
108
100
  *
@@ -110,7 +102,7 @@ export var UpdateType;
110
102
  * CoreNode Properties Updated:
111
103
  * - `worldAlpha` = `parent.worldAlpha` * `alpha`
112
104
  */
113
- UpdateType[UpdateType["WorldAlpha"] = 256] = "WorldAlpha";
105
+ UpdateType[UpdateType["WorldAlpha"] = 128] = "WorldAlpha";
114
106
  /**
115
107
  * Render State update
116
108
  *
@@ -118,7 +110,7 @@ export var UpdateType;
118
110
  * CoreNode Properties Updated:
119
111
  * - `renderState`
120
112
  */
121
- UpdateType[UpdateType["RenderState"] = 512] = "RenderState";
113
+ UpdateType[UpdateType["RenderState"] = 256] = "RenderState";
122
114
  /**
123
115
  * Is Renderable update
124
116
  *
@@ -126,19 +118,23 @@ export var UpdateType;
126
118
  * CoreNode Properties Updated:
127
119
  * - `isRenderable`
128
120
  */
129
- UpdateType[UpdateType["IsRenderable"] = 1024] = "IsRenderable";
121
+ UpdateType[UpdateType["IsRenderable"] = 512] = "IsRenderable";
130
122
  /**
131
123
  * Render Texture update
132
124
  */
133
- UpdateType[UpdateType["RenderTexture"] = 2048] = "RenderTexture";
125
+ UpdateType[UpdateType["RenderTexture"] = 1024] = "RenderTexture";
134
126
  /**
135
127
  * Track if parent has render texture
136
128
  */
137
- UpdateType[UpdateType["ParentRenderTexture"] = 4096] = "ParentRenderTexture";
129
+ UpdateType[UpdateType["ParentRenderTexture"] = 2048] = "ParentRenderTexture";
138
130
  /**
139
131
  * Render Bounds update
140
132
  */
141
- UpdateType[UpdateType["RenderBounds"] = 8192] = "RenderBounds";
133
+ UpdateType[UpdateType["RenderBounds"] = 4096] = "RenderBounds";
134
+ /**
135
+ * RecalcUniforms
136
+ */
137
+ UpdateType[UpdateType["RecalcUniforms"] = 8192] = "RecalcUniforms";
142
138
  /**
143
139
  * None
144
140
  */
@@ -146,11 +142,7 @@ export var UpdateType;
146
142
  /**
147
143
  * All
148
144
  */
149
- UpdateType[UpdateType["All"] = 14335] = "All";
150
- /**
151
- * RecalcUniforms
152
- */
153
- UpdateType[UpdateType["RecalcUniforms"] = 16384] = "RecalcUniforms";
145
+ UpdateType[UpdateType["All"] = 16383] = "All";
154
146
  })(UpdateType || (UpdateType = {}));
155
147
  /**
156
148
  * A visual Node in the Renderer scene graph.
@@ -166,10 +158,10 @@ export class CoreNode extends EventEmitter {
166
158
  _id = getNewId();
167
159
  props;
168
160
  hasShaderUpdater = false;
161
+ hasColorProps = false;
169
162
  updateType = UpdateType.All;
170
163
  childUpdateType = UpdateType.None;
171
164
  globalTransform;
172
- scaleRotateTransform;
173
165
  localTransform;
174
166
  sceneGlobalTransform;
175
167
  renderCoords;
@@ -201,50 +193,75 @@ export class CoreNode extends EventEmitter {
201
193
  * only used when rtt = true
202
194
  */
203
195
  framebufferDimensions = null;
196
+ destroyed = false;
204
197
  constructor(stage, props) {
205
198
  super();
206
199
  this.stage = stage;
207
- this.props = {
208
- ...props,
209
- parent: null,
210
- texture: null,
211
- shader: null,
212
- src: null,
213
- rtt: false,
214
- };
200
+ const p = (this.props = {});
201
+ // Fast-path assign only known keys
202
+ p.x = props.x;
203
+ p.y = props.y;
204
+ p.width = props.width;
205
+ p.height = props.height;
206
+ p.alpha = props.alpha;
207
+ p.autosize = props.autosize;
208
+ p.clipping = props.clipping;
209
+ p.color = props.color;
210
+ p.colorTop = props.colorTop;
211
+ p.colorBottom = props.colorBottom;
212
+ p.colorLeft = props.colorLeft;
213
+ p.colorRight = props.colorRight;
214
+ p.colorTl = props.colorTl;
215
+ p.colorTr = props.colorTr;
216
+ p.colorBl = props.colorBl;
217
+ p.colorBr = props.colorBr;
218
+ p.scaleX = props.scaleX;
219
+ p.scaleY = props.scaleY;
220
+ p.rotation = props.rotation;
221
+ p.pivotX = props.pivotX;
222
+ p.pivotY = props.pivotY;
223
+ p.mountX = props.mountX;
224
+ p.mountY = props.mountY;
225
+ p.mount = props.mount;
226
+ p.pivot = props.pivot;
227
+ p.strictBounds = props.strictBounds;
228
+ p.zIndex = props.zIndex;
229
+ p.zIndexLocked = props.zIndexLocked;
230
+ p.textureOptions = props.textureOptions;
231
+ p.data = props.data;
232
+ p.imageType = props.imageType;
233
+ p.srcX = props.srcX;
234
+ p.srcY = props.srcY;
235
+ p.srcWidth = props.srcWidth;
236
+ p.srcHeight = props.srcHeight;
237
+ p.parent = null;
238
+ p.texture = null;
239
+ p.shader = null;
240
+ p.src = null;
241
+ p.rtt = false;
242
+ p.boundsMargin = null;
215
243
  // Assign props to instances
216
244
  this.parent = props.parent;
217
245
  this.texture = props.texture;
218
246
  this.shader = props.shader;
219
247
  this.src = props.src;
220
248
  this.rtt = props.rtt;
221
- if (props.boundsMargin) {
222
- this.boundsMargin = Array.isArray(props.boundsMargin)
223
- ? props.boundsMargin
224
- : [
225
- props.boundsMargin,
226
- props.boundsMargin,
227
- props.boundsMargin,
228
- props.boundsMargin,
229
- ];
230
- }
231
- this.setUpdateType(UpdateType.ScaleRotate |
232
- UpdateType.Local |
233
- UpdateType.RenderBounds |
234
- UpdateType.RenderState);
249
+ this.boundsMargin = props.boundsMargin;
250
+ this.interactive = props.interactive;
251
+ this.setUpdateType(UpdateType.Local | UpdateType.RenderBounds | UpdateType.RenderState);
235
252
  // if the default texture isn't loaded yet, wait for it to load
236
253
  // this only happens when the node is created before the stage is ready
237
- if (this.stage.defaultTexture &&
238
- this.stage.defaultTexture.state !== 'loaded') {
239
- this.stage.defaultTexture.once('loaded', () => {
240
- this.setUpdateType(UpdateType.IsRenderable);
241
- });
254
+ const dt = this.stage.defaultTexture;
255
+ if (dt !== null && dt.state !== 'loaded') {
256
+ dt.once('loaded', () => this.setUpdateType(UpdateType.IsRenderable));
242
257
  }
243
258
  }
244
259
  //#region Textures
245
260
  loadTexture() {
246
261
  const { texture } = this.props;
247
- assertTruthy(texture);
262
+ if (!texture) {
263
+ return;
264
+ }
248
265
  // If texture is already loaded / failed, trigger loaded event manually
249
266
  // so that users get a consistent event experience.
250
267
  // We do this in a microtask to allow listeners to be attached in the same
@@ -268,11 +285,9 @@ export class CoreNode extends EventEmitter {
268
285
  return;
269
286
  }
270
287
  if (texture.state === 'loaded') {
271
- assertTruthy(texture.dimensions);
272
288
  this.onTextureLoaded(texture, texture.dimensions);
273
289
  }
274
290
  else if (texture.state === 'failed') {
275
- assertTruthy(texture.error);
276
291
  this.onTextureFailed(texture, texture.error);
277
292
  }
278
293
  else if (texture.state === 'freed') {
@@ -281,12 +296,14 @@ export class CoreNode extends EventEmitter {
281
296
  });
282
297
  }
283
298
  unloadTexture() {
284
- if (this.texture !== null) {
285
- this.texture.off('loaded', this.onTextureLoaded);
286
- this.texture.off('failed', this.onTextureFailed);
287
- this.texture.off('freed', this.onTextureFreed);
288
- this.texture.setRenderableOwner(this, false);
299
+ if (this.texture === null) {
300
+ return;
289
301
  }
302
+ const texture = this.texture;
303
+ texture.off('loaded', this.onTextureLoaded);
304
+ texture.off('failed', this.onTextureFailed);
305
+ texture.off('freed', this.onTextureFreed);
306
+ texture.setRenderableOwner(this, false);
290
307
  }
291
308
  autosizeNode(dimensions) {
292
309
  if (this.autosize) {
@@ -351,42 +368,32 @@ export class CoreNode extends EventEmitter {
351
368
  const parent = this.props.parent;
352
369
  if (!parent)
353
370
  return;
354
- if ((parent.updateType & UpdateType.Children) === 0) {
355
- // Inform the parent if it doesn’t already have a child update
356
- parent.setUpdateType(UpdateType.Children);
357
- }
371
+ parent.setUpdateType(UpdateType.Children);
358
372
  }
359
373
  sortChildren() {
360
374
  this.children.sort((a, b) => a.calcZIndex - b.calcZIndex);
361
375
  }
362
- updateScaleRotateTransform() {
363
- const { rotation, scaleX, scaleY } = this.props;
364
- // optimize simple translation cases
365
- if (rotation === 0 && scaleX === 1 && scaleY === 1) {
366
- this.scaleRotateTransform = undefined;
367
- return;
368
- }
369
- this.scaleRotateTransform = Matrix3d.rotate(rotation, this.scaleRotateTransform).scale(scaleX, scaleY);
370
- }
371
376
  updateLocalTransform() {
372
- const { x, y, width, height } = this.props;
373
- const mountTranslateX = this.props.mountX * width;
374
- const mountTranslateY = this.props.mountY * height;
375
- if (this.scaleRotateTransform) {
376
- const pivotTranslateX = this.props.pivotX * width;
377
- const pivotTranslateY = this.props.pivotY * height;
377
+ const p = this.props;
378
+ const { x, y, width, height } = p;
379
+ const mountTranslateX = p.mountX * width;
380
+ const mountTranslateY = p.mountY * height;
381
+ if (p.rotation !== 0 || p.scaleX !== 1 || p.scaleY !== 1) {
382
+ const pivotTranslateX = p.pivotX * width;
383
+ const pivotTranslateY = p.pivotY * height;
378
384
  this.localTransform = Matrix3d.translate(x - mountTranslateX + pivotTranslateX, y - mountTranslateY + pivotTranslateY, this.localTransform)
379
- .multiply(this.scaleRotateTransform)
385
+ .rotate(p.rotation)
386
+ .scale(p.scaleX, p.scaleY)
380
387
  .translate(-pivotTranslateX, -pivotTranslateY);
381
388
  }
382
389
  else {
383
390
  this.localTransform = Matrix3d.translate(x - mountTranslateX, y - mountTranslateY, this.localTransform);
384
391
  }
385
392
  // Handle 'contain' resize mode
386
- const texture = this.props.texture;
393
+ const texture = p.texture;
387
394
  if (texture &&
388
395
  texture.dimensions &&
389
- this.props.textureOptions?.resizeMode?.type === 'contain') {
396
+ p.textureOptions.resizeMode?.type === 'contain') {
390
397
  let resizeModeScaleX = 1;
391
398
  let resizeModeScaleY = 1;
392
399
  let extraX = 0;
@@ -417,29 +424,33 @@ export class CoreNode extends EventEmitter {
417
424
  .translate(extraX, extraY)
418
425
  .scale(resizeModeScaleX, resizeModeScaleY);
419
426
  }
420
- this.setUpdateType(UpdateType.Global);
421
427
  }
422
428
  /**
423
429
  * @todo: test for correct calculation flag
424
430
  * @param delta
425
431
  */
426
432
  update(delta, parentClippingRect) {
427
- if (this.updateType & UpdateType.ScaleRotate) {
428
- this.updateScaleRotateTransform();
429
- this.setUpdateType(UpdateType.Local);
433
+ if (this.updateType === UpdateType.None) {
434
+ return;
430
435
  }
431
- if (this.updateType & UpdateType.Local) {
436
+ const props = this.props;
437
+ const parent = props.parent;
438
+ const parentHasRenderTexture = this.parentHasRenderTexture;
439
+ const hasParent = props.parent !== null;
440
+ let renderState = null;
441
+ let updateType = this.updateType;
442
+ let childUpdateType = this.childUpdateType;
443
+ let updateParent = false;
444
+ if (updateType & UpdateType.Local) {
432
445
  this.updateLocalTransform();
433
- this.setUpdateType(UpdateType.Global);
446
+ updateType |= UpdateType.Global;
447
+ updateParent = hasParent;
434
448
  }
435
- const parent = this.props.parent;
436
- let renderState = null;
437
449
  // Handle specific RTT updates at this node level
438
- if (this.updateType & UpdateType.RenderTexture && this.rtt) {
450
+ if (updateType & UpdateType.RenderTexture && this.rtt === true) {
439
451
  this.hasRTTupdates = true;
440
452
  }
441
- if (this.updateType & UpdateType.Global) {
442
- assertTruthy(this.localTransform);
453
+ if (updateType & UpdateType.Global) {
443
454
  if (this.parentHasRenderTexture === true && parent?.rtt === true) {
444
455
  // we are at the start of the RTT chain, so we need to reset the globalTransform
445
456
  // for correct RTT rendering
@@ -463,24 +474,28 @@ export class CoreNode extends EventEmitter {
463
474
  }
464
475
  this.calculateRenderCoords();
465
476
  this.updateBoundingRect();
466
- this.setUpdateType(UpdateType.RenderState |
467
- UpdateType.Children |
468
- UpdateType.RecalcUniforms);
469
- this.childUpdateType |= UpdateType.Global;
477
+ updateType |=
478
+ UpdateType.RenderState |
479
+ UpdateType.Children |
480
+ UpdateType.RecalcUniforms;
481
+ updateParent = hasParent;
482
+ childUpdateType |= UpdateType.Global;
470
483
  if (this.clipping === true) {
471
- this.setUpdateType(UpdateType.Clipping | UpdateType.RenderBounds);
472
- this.childUpdateType |= UpdateType.RenderBounds;
484
+ updateType |= UpdateType.Clipping | UpdateType.RenderBounds;
485
+ updateParent = hasParent;
486
+ childUpdateType |= UpdateType.RenderBounds;
473
487
  }
474
488
  }
475
- if (this.updateType & UpdateType.RenderBounds) {
489
+ if (updateType & UpdateType.RenderBounds) {
476
490
  this.createRenderBounds();
477
- this.setUpdateType(UpdateType.RenderState);
478
- this.setUpdateType(UpdateType.Children);
479
- this.childUpdateType |= UpdateType.RenderBounds;
491
+ updateType |= UpdateType.RenderState | UpdateType.Children;
492
+ updateParent = hasParent;
493
+ childUpdateType |= UpdateType.RenderBounds;
480
494
  }
481
- if (this.updateType & UpdateType.RenderState) {
495
+ if (updateType & UpdateType.RenderState) {
482
496
  renderState = this.checkRenderBounds();
483
- this.setUpdateType(UpdateType.IsRenderable);
497
+ updateType |= UpdateType.IsRenderable;
498
+ updateParent = hasParent;
484
499
  // if we're not going out of bounds, update the render state
485
500
  // this is done so the update loop can finish before we mark a node
486
501
  // as out of bounds
@@ -488,64 +503,69 @@ export class CoreNode extends EventEmitter {
488
503
  this.updateRenderState(renderState);
489
504
  }
490
505
  }
491
- if (this.updateType & UpdateType.WorldAlpha) {
492
- if (parent) {
493
- this.worldAlpha = parent.worldAlpha * this.props.alpha;
494
- }
495
- else {
496
- this.worldAlpha = this.props.alpha;
497
- }
498
- this.setUpdateType(UpdateType.Children |
506
+ if (updateType & UpdateType.WorldAlpha) {
507
+ this.worldAlpha = ((parent && parent.worldAlpha) || 1) * props.alpha;
508
+ updateType |=
499
509
  UpdateType.PremultipliedColors |
500
- UpdateType.IsRenderable);
501
- this.childUpdateType |= UpdateType.WorldAlpha;
510
+ UpdateType.Children |
511
+ UpdateType.IsRenderable;
512
+ updateParent = hasParent;
513
+ childUpdateType |= UpdateType.WorldAlpha;
502
514
  }
503
- if (this.updateType & UpdateType.IsRenderable) {
515
+ if (updateType & UpdateType.IsRenderable) {
504
516
  this.updateIsRenderable();
505
517
  }
506
- if (this.updateType & UpdateType.Clipping) {
518
+ if (updateType & UpdateType.Clipping) {
507
519
  this.calculateClippingRect(parentClippingRect);
508
- this.setUpdateType(UpdateType.Children);
509
- this.childUpdateType |= UpdateType.Clipping;
510
- this.childUpdateType |= UpdateType.RenderBounds;
511
- }
512
- if (this.updateType & UpdateType.PremultipliedColors) {
513
- this.premultipliedColorTl = mergeColorAlphaPremultiplied(this.props.colorTl, this.worldAlpha, true);
514
- // If all the colors are the same just sent them all to the same value
515
- if (this.props.colorTl === this.props.colorTr &&
516
- this.props.colorBl === this.props.colorBr &&
517
- this.props.colorTl === this.props.colorBl) {
520
+ updateType |= UpdateType.Children;
521
+ updateParent = hasParent;
522
+ childUpdateType |= UpdateType.Clipping | UpdateType.RenderBounds;
523
+ }
524
+ if (updateType & UpdateType.PremultipliedColors) {
525
+ const alpha = this.worldAlpha;
526
+ const tl = props.colorTl;
527
+ const tr = props.colorTr;
528
+ const bl = props.colorBl;
529
+ const br = props.colorBr;
530
+ // Fast equality check (covers all 4 corners)
531
+ const same = tl === tr && tl === bl && tl === br;
532
+ const merged = mergeColorAlphaPremultiplied(tl, alpha, true);
533
+ this.premultipliedColorTl = merged;
534
+ if (same) {
518
535
  this.premultipliedColorTr =
519
536
  this.premultipliedColorBl =
520
537
  this.premultipliedColorBr =
521
- this.premultipliedColorTl;
538
+ merged;
522
539
  }
523
540
  else {
524
- this.premultipliedColorTr = mergeColorAlphaPremultiplied(this.props.colorTr, this.worldAlpha, true);
525
- this.premultipliedColorBl = mergeColorAlphaPremultiplied(this.props.colorBl, this.worldAlpha, true);
526
- this.premultipliedColorBr = mergeColorAlphaPremultiplied(this.props.colorBr, this.worldAlpha, true);
541
+ this.premultipliedColorTr = mergeColorAlphaPremultiplied(tr, alpha, true);
542
+ this.premultipliedColorBl = mergeColorAlphaPremultiplied(bl, alpha, true);
543
+ this.premultipliedColorBr = mergeColorAlphaPremultiplied(br, alpha, true);
527
544
  }
528
545
  }
546
+ if (updateParent === true) {
547
+ parent.setUpdateType(UpdateType.Children);
548
+ }
529
549
  // No need to update zIndex if there is no parent
530
- if (parent !== null && this.updateType & UpdateType.CalculatedZIndex) {
550
+ if (updateType & UpdateType.CalculatedZIndex && parent !== null) {
531
551
  this.calculateZIndex();
532
552
  // Tell parent to re-sort children
533
553
  parent.setUpdateType(UpdateType.ZIndexSortedChildren);
534
554
  }
535
- if (this.props.strictBounds === true &&
555
+ if (props.strictBounds === true &&
536
556
  this.renderState === CoreNodeRenderState.OutOfBounds) {
537
- this.updateType &= ~UpdateType.RenderBounds; // remove render bounds update
557
+ updateType &= ~UpdateType.RenderBounds; // remove render bounds update
538
558
  return;
539
559
  }
540
- if (this.updateType & UpdateType.RecalcUniforms &&
560
+ if (updateType & UpdateType.RecalcUniforms &&
541
561
  this.hasShaderUpdater === true) {
542
562
  //this exists because the boolean hasShaderUpdater === true
543
563
  this.shader.update();
544
564
  }
545
- if (this.updateType & UpdateType.Children && this.children.length > 0) {
565
+ if (updateType & UpdateType.Children && this.children.length > 0) {
546
566
  for (let i = 0, length = this.children.length; i < length; i++) {
547
567
  const child = this.children[i];
548
- child.setUpdateType(this.childUpdateType);
568
+ child.setUpdateType(childUpdateType);
549
569
  if (child.updateType === 0) {
550
570
  continue;
551
571
  }
@@ -563,14 +583,14 @@ export class CoreNode extends EventEmitter {
563
583
  }
564
584
  }
565
585
  // If the node has an RTT parent and requires a texture re-render, inform the RTT parent
566
- // if (this.parentHasRenderTexture && this.updateType & UpdateType.RenderTexture) {
586
+ // if (this.parentHasRenderTexture && updateType & UpdateType.RenderTexture) {
567
587
  // @TODO have a more scoped down updateType for RTT updates
568
- if (this.parentHasRenderTexture && this.updateType > 0) {
588
+ if (parentHasRenderTexture === true) {
569
589
  this.notifyParentRTTOfUpdate();
570
590
  }
571
591
  // Sorting children MUST happen after children have been updated so
572
592
  // that they have the oppotunity to update their calculated zIndex.
573
- if (this.updateType & UpdateType.ZIndexSortedChildren) {
593
+ if (updateType & UpdateType.ZIndexSortedChildren) {
574
594
  // reorder z-index
575
595
  this.sortChildren();
576
596
  }
@@ -589,7 +609,6 @@ export class CoreNode extends EventEmitter {
589
609
  // notify children that we are going out of bounds
590
610
  // we have to do this now before we stop processing the render tree
591
611
  this.notifyChildrenRTTOfUpdate(renderState);
592
- // this.childUpdateType |= UpdateType.RenderState;
593
612
  }
594
613
  }
595
614
  // reset update type
@@ -628,9 +647,6 @@ export class CoreNode extends EventEmitter {
628
647
  }
629
648
  }
630
649
  checkRenderBounds() {
631
- assertTruthy(this.renderBound);
632
- assertTruthy(this.strictBound);
633
- assertTruthy(this.preloadBound);
634
650
  if (boundInsideBound(this.renderBound, this.strictBound)) {
635
651
  return CoreNodeRenderState.InViewport;
636
652
  }
@@ -649,10 +665,8 @@ export class CoreNode extends EventEmitter {
649
665
  return CoreNodeRenderState.OutOfBounds;
650
666
  }
651
667
  updateBoundingRect() {
652
- const transform = this.sceneGlobalTransform || this.globalTransform;
653
- const renderCoords = this.sceneRenderCoords || this.renderCoords;
654
- assertTruthy(transform);
655
- assertTruthy(renderCoords);
668
+ const transform = (this.sceneGlobalTransform || this.globalTransform);
669
+ const renderCoords = (this.sceneRenderCoords || this.renderCoords);
656
670
  if (transform.tb === 0 || transform.tc === 0) {
657
671
  this.renderBound = createBound(renderCoords.x1, renderCoords.y1, renderCoords.x3, renderCoords.y3, this.renderBound);
658
672
  }
@@ -716,7 +730,8 @@ export class CoreNode extends EventEmitter {
716
730
  let newIsRenderable = false;
717
731
  let needsTextureOwnership = false;
718
732
  // If the node is out of bounds or has an alpha of 0, it is not renderable
719
- if (this.checkBasicRenderability() === false) {
733
+ if (this.worldAlpha === 0 ||
734
+ this.renderState <= CoreNodeRenderState.OutOfBounds) {
720
735
  this.updateTextureOwnership(false);
721
736
  this.setRenderable(false);
722
737
  return;
@@ -726,8 +741,11 @@ export class CoreNode extends EventEmitter {
726
741
  // we're only renderable if the texture state is loaded
727
742
  newIsRenderable = this.texture.state === 'loaded';
728
743
  }
729
- else if ((this.hasShader() || this.hasColorProperties() === true) &&
730
- this.hasDimensions() === true) {
744
+ else if (
745
+ // check shader
746
+ (this.props.shader !== null || this.hasColorProps === true) &&
747
+ // check dimensions
748
+ (this.props.width !== 0 && this.props.height !== 0) === true) {
731
749
  // This mean we have dimensions and a color set, so we can render a ColorTexture
732
750
  if (this.stage.defaultTexture &&
733
751
  this.stage.defaultTexture.state === 'loaded') {
@@ -737,17 +755,6 @@ export class CoreNode extends EventEmitter {
737
755
  this.updateTextureOwnership(needsTextureOwnership);
738
756
  this.setRenderable(newIsRenderable);
739
757
  }
740
- /**
741
- * Checks if the node is renderable based on world alpha, dimensions and out of bounds status.
742
- */
743
- checkBasicRenderability() {
744
- if (this.worldAlpha === 0 || this.isOutOfBounds() === true) {
745
- return false;
746
- }
747
- else {
748
- return true;
749
- }
750
- }
751
758
  /**
752
759
  * Sets the renderable state and triggers changes if necessary.
753
760
  * @param isRenderable - The new renderable state
@@ -766,38 +773,10 @@ export class CoreNode extends EventEmitter {
766
773
  updateTextureOwnership(isRenderable) {
767
774
  this.texture?.setRenderableOwner(this, isRenderable);
768
775
  }
769
- /**
770
- * Checks if the node is out of the viewport bounds.
771
- */
772
- isOutOfBounds() {
773
- return this.renderState <= CoreNodeRenderState.OutOfBounds;
774
- }
775
- /**
776
- * Checks if the node has dimensions (width/height)
777
- */
778
- hasDimensions() {
779
- return this.props.width !== 0 && this.props.height !== 0;
780
- }
781
- /**
782
- * Checks if the node has any color properties set.
783
- */
784
- hasColorProperties() {
785
- return (this.props.color !== 0 ||
786
- this.props.colorTop !== 0 ||
787
- this.props.colorBottom !== 0 ||
788
- this.props.colorLeft !== 0 ||
789
- this.props.colorRight !== 0 ||
790
- this.props.colorTl !== 0 ||
791
- this.props.colorTr !== 0 ||
792
- this.props.colorBl !== 0 ||
793
- this.props.colorBr !== 0);
794
- }
795
- hasShader() {
796
- return this.props.shader !== null;
797
- }
798
776
  calculateRenderCoords() {
799
777
  const { width, height } = this;
800
- const { tx, ty, ta, tb, tc, td } = this.globalTransform;
778
+ const g = this.globalTransform;
779
+ const tx = g.tx, ty = g.ty, ta = g.ta, tb = g.tb, tc = g.tc, td = g.td;
801
780
  if (tb === 0 && tc === 0) {
802
781
  const minX = tx;
803
782
  const maxX = tx + width * ta;
@@ -864,7 +843,6 @@ export class CoreNode extends EventEmitter {
864
843
  * Finally, the node's parentClippingRect and clippingRect properties are updated.
865
844
  */
866
845
  calculateClippingRect(parentClippingRect) {
867
- assertTruthy(this.globalTransform);
868
846
  const { clippingRect, props, globalTransform: gt } = this;
869
847
  const { clipping } = props;
870
848
  const isRotated = gt.tb !== 0 || gt.tc !== 0;
@@ -902,68 +880,63 @@ export class CoreNode extends EventEmitter {
902
880
  * Destroy the node and cleanup all resources
903
881
  */
904
882
  destroy() {
883
+ if (this.destroyed === true) {
884
+ return;
885
+ }
886
+ this.removeAllListeners();
887
+ this.destroyed = true;
905
888
  this.unloadTexture();
906
- this.clippingRect.valid = false;
907
889
  this.isRenderable = false;
908
- this.renderCoords = undefined;
909
- this.renderBound = undefined;
910
- this.strictBound = undefined;
911
- this.preloadBound = undefined;
912
- this.globalTransform = undefined;
913
- this.scaleRotateTransform = undefined;
914
- this.localTransform = undefined;
915
- this.props.texture = null;
916
- this.props.shader = null;
890
+ // Kill children
917
891
  while (this.children.length > 0) {
918
- this.children[0]?.destroy();
892
+ this.children[0].destroy();
919
893
  }
920
- // This very action will also remove the node from the parent's children array
921
- this.parent = null;
922
- if (this.rtt) {
894
+ const parent = this.parent;
895
+ if (parent !== null) {
896
+ const index = parent.children.indexOf(this);
897
+ parent.children.splice(index, 1);
898
+ parent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);
899
+ }
900
+ this.props.parent = null;
901
+ this.props.texture = null;
902
+ if (this.rtt === true) {
923
903
  this.stage.renderer.removeRTTNode(this);
924
904
  }
925
- this.removeAllListeners();
926
905
  }
927
906
  renderQuads(renderer) {
928
- // Prevent quad rendering if parent has a render texture
929
- // and renderer is not currently rendering to a texture
930
- if (this.parentHasRenderTexture) {
931
- if (!renderer.renderToTextureActive) {
932
- return;
933
- }
934
- // Prevent quad rendering if parent render texture is not the active render texture
935
- if (this.parentRenderTexture !== renderer.activeRttNode) {
907
+ if (this.parentHasRenderTexture === true) {
908
+ const rtt = renderer.renderToTextureActive;
909
+ if (rtt === false || this.parentRenderTexture !== renderer.activeRttNode)
936
910
  return;
937
- }
938
911
  }
939
- assertTruthy(this.globalTransform);
940
- // add to list of renderables to be sorted before rendering
912
+ const p = this.props;
913
+ const t = this.globalTransform;
914
+ const coords = this.renderCoords;
915
+ const texture = p.texture || this.stage.defaultTexture;
941
916
  renderer.addQuad({
942
- width: this.props.width,
943
- height: this.props.height,
917
+ width: p.width,
918
+ height: p.height,
944
919
  colorTl: this.premultipliedColorTl,
945
920
  colorTr: this.premultipliedColorTr,
946
921
  colorBl: this.premultipliedColorBl,
947
922
  colorBr: this.premultipliedColorBr,
948
- // if we do not have a texture, use the default texture
949
- // this assumes any renderable node is either a distinct texture or a ColorTexture
950
- texture: this.texture || this.stage.defaultTexture,
951
- textureOptions: this.textureOptions,
923
+ texture,
924
+ textureOptions: p.textureOptions,
952
925
  textureCoords: this.textureCoords,
953
- zIndex: this.zIndex,
954
- shader: this.props.shader,
926
+ shader: p.shader,
955
927
  alpha: this.worldAlpha,
956
928
  clippingRect: this.clippingRect,
957
- tx: this.globalTransform.tx,
958
- ty: this.globalTransform.ty,
959
- ta: this.globalTransform.ta,
960
- tb: this.globalTransform.tb,
961
- tc: this.globalTransform.tc,
962
- td: this.globalTransform.td,
963
- renderCoords: this.renderCoords,
964
- rtt: this.rtt,
929
+ tx: t.tx,
930
+ ty: t.ty,
931
+ ta: t.ta,
932
+ tb: t.tb,
933
+ tc: t.tc,
934
+ td: t.td,
935
+ renderCoords: coords,
936
+ rtt: p.rtt,
937
+ zIndex: this.calcZIndex,
965
938
  parentHasRenderTexture: this.parentHasRenderTexture,
966
- framebufferDimensions: this.parentHasRenderTexture === true
939
+ framebufferDimensions: this.parentHasRenderTexture
967
940
  ? this.parentFramebufferDimensions
968
941
  : null,
969
942
  });
@@ -1011,6 +984,7 @@ export class CoreNode extends EventEmitter {
1011
984
  }
1012
985
  set width(value) {
1013
986
  if (this.props.width !== value) {
987
+ this.textureCoords = undefined;
1014
988
  this.props.width = value;
1015
989
  this.setUpdateType(UpdateType.Local);
1016
990
  if (this.props.rtt === true) {
@@ -1025,6 +999,7 @@ export class CoreNode extends EventEmitter {
1025
999
  }
1026
1000
  set height(value) {
1027
1001
  if (this.props.height !== value) {
1002
+ this.textureCoords = undefined;
1028
1003
  this.props.height = value;
1029
1004
  this.setUpdateType(UpdateType.Local);
1030
1005
  if (this.props.rtt === true) {
@@ -1051,7 +1026,7 @@ export class CoreNode extends EventEmitter {
1051
1026
  set scaleX(value) {
1052
1027
  if (this.props.scaleX !== value) {
1053
1028
  this.props.scaleX = value;
1054
- this.setUpdateType(UpdateType.ScaleRotate);
1029
+ this.setUpdateType(UpdateType.Local);
1055
1030
  }
1056
1031
  }
1057
1032
  get scaleY() {
@@ -1060,7 +1035,7 @@ export class CoreNode extends EventEmitter {
1060
1035
  set scaleY(value) {
1061
1036
  if (this.props.scaleY !== value) {
1062
1037
  this.props.scaleY = value;
1063
- this.setUpdateType(UpdateType.ScaleRotate);
1038
+ this.setUpdateType(UpdateType.Local);
1064
1039
  }
1065
1040
  }
1066
1041
  get mount() {
@@ -1127,7 +1102,7 @@ export class CoreNode extends EventEmitter {
1127
1102
  set rotation(value) {
1128
1103
  if (this.props.rotation !== value) {
1129
1104
  this.props.rotation = value;
1130
- this.setUpdateType(UpdateType.ScaleRotate);
1105
+ this.setUpdateType(UpdateType.Local);
1131
1106
  }
1132
1107
  }
1133
1108
  get alpha() {
@@ -1148,9 +1123,18 @@ export class CoreNode extends EventEmitter {
1148
1123
  this.props.autosize = value;
1149
1124
  }
1150
1125
  get boundsMargin() {
1151
- return (this.props.boundsMargin ??
1152
- this.parent?.boundsMargin ??
1153
- this.stage.boundsMargin);
1126
+ const props = this.props;
1127
+ if (props.boundsMargin !== null) {
1128
+ return props.boundsMargin;
1129
+ }
1130
+ const parent = this.parent;
1131
+ if (parent !== null) {
1132
+ const margin = parent.boundsMargin;
1133
+ if (margin !== undefined) {
1134
+ return margin;
1135
+ }
1136
+ }
1137
+ return this.stage.boundsMargin;
1154
1138
  }
1155
1139
  set boundsMargin(value) {
1156
1140
  if (value === this.props.boundsMargin) {
@@ -1179,11 +1163,20 @@ export class CoreNode extends EventEmitter {
1179
1163
  return this.props.color;
1180
1164
  }
1181
1165
  set color(value) {
1182
- this.colorTop = value;
1183
- this.colorBottom = value;
1184
- this.colorLeft = value;
1185
- this.colorRight = value;
1186
- this.props.color = value;
1166
+ const p = this.props;
1167
+ if (p.color === value)
1168
+ return;
1169
+ p.color = value;
1170
+ const has = value > 0;
1171
+ this.hasColorProps = has;
1172
+ if (p.colorTop !== value)
1173
+ this.colorTop = value;
1174
+ if (p.colorBottom !== value)
1175
+ this.colorBottom = value;
1176
+ if (p.colorLeft !== value)
1177
+ this.colorLeft = value;
1178
+ if (p.colorRight !== value)
1179
+ this.colorRight = value;
1187
1180
  this.setUpdateType(UpdateType.PremultipliedColors);
1188
1181
  }
1189
1182
  get colorTop() {
@@ -1195,6 +1188,7 @@ export class CoreNode extends EventEmitter {
1195
1188
  this.colorTr = value;
1196
1189
  }
1197
1190
  this.props.colorTop = value;
1191
+ this.hasColorProps = value > 0;
1198
1192
  this.setUpdateType(UpdateType.PremultipliedColors);
1199
1193
  }
1200
1194
  get colorBottom() {
@@ -1206,6 +1200,7 @@ export class CoreNode extends EventEmitter {
1206
1200
  this.colorBr = value;
1207
1201
  }
1208
1202
  this.props.colorBottom = value;
1203
+ this.hasColorProps = value > 0;
1209
1204
  this.setUpdateType(UpdateType.PremultipliedColors);
1210
1205
  }
1211
1206
  get colorLeft() {
@@ -1217,6 +1212,7 @@ export class CoreNode extends EventEmitter {
1217
1212
  this.colorBl = value;
1218
1213
  }
1219
1214
  this.props.colorLeft = value;
1215
+ this.hasColorProps = value > 0;
1220
1216
  this.setUpdateType(UpdateType.PremultipliedColors);
1221
1217
  }
1222
1218
  get colorRight() {
@@ -1228,6 +1224,7 @@ export class CoreNode extends EventEmitter {
1228
1224
  this.colorBr = value;
1229
1225
  }
1230
1226
  this.props.colorRight = value;
1227
+ this.hasColorProps = value > 0;
1231
1228
  this.setUpdateType(UpdateType.PremultipliedColors);
1232
1229
  }
1233
1230
  get colorTl() {
@@ -1235,6 +1232,7 @@ export class CoreNode extends EventEmitter {
1235
1232
  }
1236
1233
  set colorTl(value) {
1237
1234
  this.props.colorTl = value;
1235
+ this.hasColorProps = value > 0;
1238
1236
  this.setUpdateType(UpdateType.PremultipliedColors);
1239
1237
  }
1240
1238
  get colorTr() {
@@ -1242,6 +1240,7 @@ export class CoreNode extends EventEmitter {
1242
1240
  }
1243
1241
  set colorTr(value) {
1244
1242
  this.props.colorTr = value;
1243
+ this.hasColorProps = value > 0;
1245
1244
  this.setUpdateType(UpdateType.PremultipliedColors);
1246
1245
  }
1247
1246
  get colorBl() {
@@ -1249,6 +1248,7 @@ export class CoreNode extends EventEmitter {
1249
1248
  }
1250
1249
  set colorBl(value) {
1251
1250
  this.props.colorBl = value;
1251
+ this.hasColorProps = value > 0;
1252
1252
  this.setUpdateType(UpdateType.PremultipliedColors);
1253
1253
  }
1254
1254
  get colorBr() {
@@ -1256,6 +1256,7 @@ export class CoreNode extends EventEmitter {
1256
1256
  }
1257
1257
  set colorBr(value) {
1258
1258
  this.props.colorBr = value;
1259
+ this.hasColorProps = value > 0;
1259
1260
  this.setUpdateType(UpdateType.PremultipliedColors);
1260
1261
  }
1261
1262
  // we're only interested in parent zIndex to test
@@ -1305,7 +1306,6 @@ export class CoreNode extends EventEmitter {
1305
1306
  this.applyRTTInheritance(newParent);
1306
1307
  }
1307
1308
  }
1308
- this.updateScaleRotateTransform();
1309
1309
  // fetch render bounds from parent
1310
1310
  this.setUpdateType(UpdateType.RenderBounds | UpdateType.Children);
1311
1311
  }
@@ -1484,7 +1484,6 @@ export class CoreNode extends EventEmitter {
1484
1484
  }
1485
1485
  const oldTexture = this.props.texture;
1486
1486
  if (oldTexture) {
1487
- oldTexture.setRenderableOwner(this, false);
1488
1487
  this.unloadTexture();
1489
1488
  }
1490
1489
  this.textureCoords = undefined;
@@ -1501,6 +1500,20 @@ export class CoreNode extends EventEmitter {
1501
1500
  get textureOptions() {
1502
1501
  return this.props.textureOptions;
1503
1502
  }
1503
+ set interactive(value) {
1504
+ this.props.interactive = value;
1505
+ // Update Stage's interactive Set
1506
+ if (value === true) {
1507
+ this.stage.interactiveNodes.add(this);
1508
+ }
1509
+ }
1510
+ get interactive() {
1511
+ return this.props.interactive;
1512
+ }
1513
+ setRTTUpdates(type) {
1514
+ this.hasRTTupdates = true;
1515
+ this.parent?.setRTTUpdates(type);
1516
+ }
1504
1517
  get strictBounds() {
1505
1518
  return this.props.strictBounds;
1506
1519
  }