@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -27
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +1 -5
- package/dist/exports/index.js +1 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -1
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +45 -69
- package/dist/src/core/CoreNode.js +323 -305
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -5
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +61 -87
- package/dist/src/core/CoreTextNode.js +276 -235
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +9 -11
- package/dist/src/core/CoreTextureManager.js +80 -91
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +75 -31
- package/dist/src/core/Stage.js +270 -136
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +10 -1
- package/dist/src/core/TextureMemoryManager.js +112 -78
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.js +5 -0
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -4
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +3 -2
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +43 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +51 -2
- package/dist/src/core/lib/WebGlContextWrapper.js +92 -22
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/lib/colorParser.d.ts +21 -0
- package/dist/src/core/lib/colorParser.js +72 -0
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/utils.d.ts +3 -0
- package/dist/src/core/lib/utils.js +42 -0
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platform.js +29 -4
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +37 -0
- package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +9 -0
- package/dist/src/core/platforms/web/WebPlatform.js +84 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +5 -2
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +3 -3
- package/dist/src/core/renderers/CoreShaderNode.js +8 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +7 -6
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +10 -21
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +11 -9
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +5 -6
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +30 -18
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +5 -2
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +3 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -21
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +37 -19
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +144 -117
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -3
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +55 -31
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.js +1 -1
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/utils.d.ts +5 -0
- package/dist/src/core/shaders/utils.js +41 -0
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +57 -34
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +5 -4
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +6 -5
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +79 -36
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +92 -42
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.js +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Spinner.js +2 -0
- package/dist/src/core/shaders/webgl/Spinner.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +41 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +159 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +22 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +366 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +152 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +368 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +355 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +351 -0
- package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/Utils.d.ts +71 -0
- package/dist/src/core/text-rendering/Utils.js +212 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
- package/dist/src/{main-api/texture-usage-trackers/TextureUsageTracker.js → core/text-rendering/canvas/Settings.js} +3 -11
- package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
- package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
- package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
- package/dist/src/core/text-rendering/canvas/draw.js +132 -0
- package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +30 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +12 -0
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +61 -0
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +45 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +69 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
- package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
- package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
- package/dist/src/core/{CoreExtension.js → text-rendering/sdf/index.js} +3 -12
- package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
- package/dist/src/core/textures/ImageTexture.d.ts +4 -3
- package/dist/src/core/textures/ImageTexture.js +36 -9
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +21 -2
- package/dist/src/core/textures/Texture.js +37 -6
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/main-api/INode.d.ts +2 -2
- package/dist/src/main-api/Inspector.d.ts +6 -1
- package/dist/src/main-api/Inspector.js +43 -7
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +122 -46
- package/dist/src/main-api/Renderer.js +174 -37
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +1 -6
- package/dist/src/utils.js +2 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas.ts +1 -1
- package/exports/index.ts +1 -8
- package/exports/utils.ts +7 -1
- package/exports/webgl.ts +3 -1
- package/package.json +2 -3
- package/src/core/CoreNode.test.ts +0 -1
- package/src/core/CoreNode.ts +403 -388
- package/src/core/CoreShaderManager.ts +5 -10
- package/src/core/CoreTextNode.ts +337 -302
- package/src/core/CoreTextureManager.ts +78 -110
- package/src/core/Stage.ts +344 -178
- package/src/core/TextureMemoryManager.ts +150 -100
- package/src/core/animations/CoreAnimation.ts +7 -0
- package/src/core/animations/CoreAnimationController.ts +13 -4
- package/src/core/lib/ImageWorker.ts +9 -2
- package/src/core/lib/RenderCoords.ts +52 -67
- package/src/core/lib/WebGlContextWrapper.ts +125 -68
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
- package/src/core/lib/utils.ts +51 -0
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +77 -0
- package/src/core/platforms/web/WebPlatform.ts +121 -0
- package/src/core/renderers/CoreContextTexture.ts +1 -1
- package/src/core/renderers/CoreRenderer.ts +5 -2
- package/src/core/renderers/CoreShaderNode.ts +10 -6
- package/src/core/renderers/canvas/CanvasRenderer.ts +12 -28
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
- package/src/core/renderers/canvas/CanvasTexture.ts +17 -14
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +5 -0
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +52 -43
- package/src/core/renderers/webgl/WebGlRenderOp.ts +46 -24
- package/src/core/renderers/webgl/WebGlRenderer.ts +177 -145
- package/src/core/renderers/webgl/WebGlShaderNode.ts +7 -5
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +68 -37
- package/src/core/shaders/canvas/Border.ts +1 -4
- package/src/core/shaders/canvas/LinearGradient.ts +8 -6
- package/src/core/shaders/canvas/RadialGradient.ts +22 -36
- package/src/core/shaders/canvas/RoundedWithBorder.ts +17 -11
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +14 -12
- package/src/core/shaders/canvas/RoundedWithShadow.ts +8 -7
- package/src/core/shaders/templates/BorderTemplate.ts +1 -1
- package/src/core/shaders/templates/HolePunchTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
- package/src/core/shaders/webgl/Border.ts +57 -37
- package/src/core/shaders/webgl/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +5 -4
- package/src/core/shaders/webgl/RadialGradient.ts +7 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +80 -39
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +92 -50
- package/src/core/shaders/webgl/SdfShader.ts +1 -4
- package/src/core/text-rendering/CanvasFontHandler.ts +210 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
- package/src/core/text-rendering/SdfFontHandler.ts +554 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
- package/src/core/text-rendering/TextRenderer.ts +406 -0
- package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +5 -11
- package/src/core/text-rendering/canvas/Settings.ts +99 -0
- package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
- package/src/core/text-rendering/canvas/Utils.ts +178 -0
- package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
- package/src/core/text-rendering/canvas/draw.ts +165 -0
- package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
- package/src/core/text-rendering/sdf/Utils.ts +436 -0
- package/src/core/text-rendering/sdf/index.ts +20 -0
- package/src/core/textures/ImageTexture.ts +69 -27
- package/src/core/textures/Texture.ts +50 -6
- package/src/main-api/INode.ts +4 -3
- package/src/main-api/Inspector.ts +53 -8
- package/src/main-api/Renderer.ts +311 -87
- package/src/utils.ts +10 -10
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/core/CoreStuff.js +0 -138
- package/dist/src/core/CoreStuff.js.map +0 -1
- package/dist/src/core/CoreTexturizer.d.ts +0 -14
- package/dist/src/core/CoreTexturizer.js +0 -47
- package/dist/src/core/CoreTexturizer.js.map +0 -1
- package/dist/src/core/LngNode.d.ts +0 -736
- package/dist/src/core/LngNode.js +0 -1174
- package/dist/src/core/LngNode.js.map +0 -1
- package/dist/src/core/Matrix2DContext.d.ts +0 -15
- package/dist/src/core/Matrix2DContext.js +0 -45
- package/dist/src/core/Matrix2DContext.js.map +0 -1
- package/dist/src/core/ShaderNode.d.ts +0 -10
- package/dist/src/core/ShaderNode.js +0 -30
- package/dist/src/core/ShaderNode.js.map +0 -1
- package/dist/src/core/TextNode.d.ts +0 -103
- package/dist/src/core/TextNode.js +0 -331
- package/dist/src/core/TextNode.js.map +0 -1
- package/dist/src/core/lib/Coords.d.ts +0 -14
- package/dist/src/core/lib/Coords.js +0 -55
- package/dist/src/core/lib/Coords.js.map +0 -1
- package/dist/src/core/lib/glm/common.d.ts +0 -162
- package/dist/src/core/lib/glm/common.js +0 -81
- package/dist/src/core/lib/glm/common.js.map +0 -1
- package/dist/src/core/lib/glm/index.d.ts +0 -11
- package/dist/src/core/lib/glm/index.js +0 -30
- package/dist/src/core/lib/glm/index.js.map +0 -1
- package/dist/src/core/lib/glm/mat2.d.ts +0 -219
- package/dist/src/core/lib/glm/mat2.js +0 -396
- package/dist/src/core/lib/glm/mat2.js.map +0 -1
- package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
- package/dist/src/core/lib/glm/mat2d.js +0 -442
- package/dist/src/core/lib/glm/mat2d.js.map +0 -1
- package/dist/src/core/lib/glm/mat3.d.ts +0 -283
- package/dist/src/core/lib/glm/mat3.js +0 -680
- package/dist/src/core/lib/glm/mat3.js.map +0 -1
- package/dist/src/core/lib/glm/mat4.d.ts +0 -550
- package/dist/src/core/lib/glm/mat4.js +0 -1802
- package/dist/src/core/lib/glm/mat4.js.map +0 -1
- package/dist/src/core/lib/glm/quat.d.ts +0 -363
- package/dist/src/core/lib/glm/quat.js +0 -693
- package/dist/src/core/lib/glm/quat.js.map +0 -1
- package/dist/src/core/lib/glm/quat2.d.ts +0 -356
- package/dist/src/core/lib/glm/quat2.js +0 -754
- package/dist/src/core/lib/glm/quat2.js.map +0 -1
- package/dist/src/core/lib/glm/vec2.d.ts +0 -365
- package/dist/src/core/lib/glm/vec2.js +0 -569
- package/dist/src/core/lib/glm/vec2.js.map +0 -1
- package/dist/src/core/lib/glm/vec3.d.ts +0 -406
- package/dist/src/core/lib/glm/vec3.js +0 -720
- package/dist/src/core/lib/glm/vec3.js.map +0 -1
- package/dist/src/core/lib/glm/vec4.d.ts +0 -330
- package/dist/src/core/lib/glm/vec4.js +0 -608
- package/dist/src/core/lib/glm/vec4.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
- package/dist/src/core/renderers/CoreShaderManager.js +0 -33
- package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -27
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/IRenderDriver.d.ts +0 -20
- package/dist/src/main-api/IRenderDriver.js.map +0 -1
- package/dist/src/main-api/IShaderController.d.ts +0 -14
- package/dist/src/main-api/IShaderController.js +0 -30
- package/dist/src/main-api/IShaderController.js.map +0 -1
- package/dist/src/main-api/IShaderNode.d.ts +0 -17
- package/dist/src/main-api/IShaderNode.js +0 -19
- package/dist/src/main-api/IShaderNode.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -375
- package/dist/src/main-api/RendererMain.js +0 -365
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -69
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
- /package/dist/src/core/{CoreStuff.d.ts → shaders/webgl/Spinner.d.ts} +0 -0
package/src/core/CoreNode.ts
CHANGED
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
import {
|
|
21
21
|
assertTruthy,
|
|
22
22
|
getNewId,
|
|
23
|
-
isProductionEnvironment,
|
|
24
23
|
mergeColorAlphaPremultiplied,
|
|
25
24
|
} from '../utils.js';
|
|
26
25
|
import type { TextureOptions } from './CoreTextureManager.js';
|
|
@@ -28,6 +27,7 @@ import type { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
|
28
27
|
import type { Stage } from './Stage.js';
|
|
29
28
|
import {
|
|
30
29
|
type Texture,
|
|
30
|
+
type TextureCoords,
|
|
31
31
|
type TextureFailedEventHandler,
|
|
32
32
|
type TextureFreedEventHandler,
|
|
33
33
|
type TextureLoadedEventHandler,
|
|
@@ -77,33 +77,24 @@ export enum UpdateType {
|
|
|
77
77
|
Children = 1,
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* @remarks
|
|
83
|
-
* CoreNode Properties Updated:
|
|
84
|
-
* - `scaleRotateTransform`
|
|
85
|
-
*/
|
|
86
|
-
ScaleRotate = 2,
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Translate transform update (x/y/width/height/pivot/mount)
|
|
80
|
+
* localTransform
|
|
90
81
|
*
|
|
91
82
|
* @remarks
|
|
92
83
|
* CoreNode Properties Updated:
|
|
93
84
|
* - `localTransform`
|
|
94
85
|
*/
|
|
95
|
-
Local =
|
|
86
|
+
Local = 2,
|
|
96
87
|
|
|
97
88
|
/**
|
|
98
|
-
*
|
|
89
|
+
* globalTransform
|
|
99
90
|
*
|
|
100
|
-
* @remarks
|
|
91
|
+
* * @remarks
|
|
101
92
|
* CoreNode Properties Updated:
|
|
102
93
|
* - `globalTransform`
|
|
94
|
+
* - `renderBounds`
|
|
103
95
|
* - `renderCoords`
|
|
104
|
-
* - `renderBound`
|
|
105
96
|
*/
|
|
106
|
-
Global =
|
|
97
|
+
Global = 4,
|
|
107
98
|
|
|
108
99
|
/**
|
|
109
100
|
* Clipping rect update
|
|
@@ -112,7 +103,7 @@ export enum UpdateType {
|
|
|
112
103
|
* CoreNode Properties Updated:
|
|
113
104
|
* - `clippingRect`
|
|
114
105
|
*/
|
|
115
|
-
Clipping =
|
|
106
|
+
Clipping = 8,
|
|
116
107
|
|
|
117
108
|
/**
|
|
118
109
|
* Calculated ZIndex update
|
|
@@ -121,7 +112,7 @@ export enum UpdateType {
|
|
|
121
112
|
* CoreNode Properties Updated:
|
|
122
113
|
* - `calcZIndex`
|
|
123
114
|
*/
|
|
124
|
-
CalculatedZIndex =
|
|
115
|
+
CalculatedZIndex = 16,
|
|
125
116
|
|
|
126
117
|
/**
|
|
127
118
|
* Z-Index Sorted Children update
|
|
@@ -130,7 +121,7 @@ export enum UpdateType {
|
|
|
130
121
|
* CoreNode Properties Updated:
|
|
131
122
|
* - `children` (sorts children by their `calcZIndex`)
|
|
132
123
|
*/
|
|
133
|
-
ZIndexSortedChildren =
|
|
124
|
+
ZIndexSortedChildren = 32,
|
|
134
125
|
|
|
135
126
|
/**
|
|
136
127
|
* Premultiplied Colors update
|
|
@@ -142,7 +133,7 @@ export enum UpdateType {
|
|
|
142
133
|
* - `premultipliedColorBl`
|
|
143
134
|
* - `premultipliedColorBr`
|
|
144
135
|
*/
|
|
145
|
-
PremultipliedColors =
|
|
136
|
+
PremultipliedColors = 64,
|
|
146
137
|
|
|
147
138
|
/**
|
|
148
139
|
* World Alpha update
|
|
@@ -151,7 +142,7 @@ export enum UpdateType {
|
|
|
151
142
|
* CoreNode Properties Updated:
|
|
152
143
|
* - `worldAlpha` = `parent.worldAlpha` * `alpha`
|
|
153
144
|
*/
|
|
154
|
-
WorldAlpha =
|
|
145
|
+
WorldAlpha = 128,
|
|
155
146
|
|
|
156
147
|
/**
|
|
157
148
|
* Render State update
|
|
@@ -160,7 +151,7 @@ export enum UpdateType {
|
|
|
160
151
|
* CoreNode Properties Updated:
|
|
161
152
|
* - `renderState`
|
|
162
153
|
*/
|
|
163
|
-
RenderState =
|
|
154
|
+
RenderState = 256,
|
|
164
155
|
|
|
165
156
|
/**
|
|
166
157
|
* Is Renderable update
|
|
@@ -169,22 +160,27 @@ export enum UpdateType {
|
|
|
169
160
|
* CoreNode Properties Updated:
|
|
170
161
|
* - `isRenderable`
|
|
171
162
|
*/
|
|
172
|
-
IsRenderable =
|
|
163
|
+
IsRenderable = 512,
|
|
173
164
|
|
|
174
165
|
/**
|
|
175
166
|
* Render Texture update
|
|
176
167
|
*/
|
|
177
|
-
RenderTexture =
|
|
168
|
+
RenderTexture = 1024,
|
|
178
169
|
|
|
179
170
|
/**
|
|
180
171
|
* Track if parent has render texture
|
|
181
172
|
*/
|
|
182
|
-
ParentRenderTexture =
|
|
173
|
+
ParentRenderTexture = 2048,
|
|
183
174
|
|
|
184
175
|
/**
|
|
185
176
|
* Render Bounds update
|
|
186
177
|
*/
|
|
187
|
-
RenderBounds =
|
|
178
|
+
RenderBounds = 4096,
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* RecalcUniforms
|
|
182
|
+
*/
|
|
183
|
+
RecalcUniforms = 8192,
|
|
188
184
|
|
|
189
185
|
/**
|
|
190
186
|
* None
|
|
@@ -195,11 +191,6 @@ export enum UpdateType {
|
|
|
195
191
|
* All
|
|
196
192
|
*/
|
|
197
193
|
All = 14335,
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* RecalcUniforms
|
|
201
|
-
*/
|
|
202
|
-
RecalcUniforms = 16384,
|
|
203
194
|
}
|
|
204
195
|
|
|
205
196
|
/**
|
|
@@ -424,15 +415,6 @@ export interface CoreNodeProps {
|
|
|
424
415
|
*/
|
|
425
416
|
texture: Texture | null;
|
|
426
417
|
|
|
427
|
-
/**
|
|
428
|
-
* [Deprecated]: Prevents the texture from being cleaned up when the Node is removed
|
|
429
|
-
*
|
|
430
|
-
* @remarks
|
|
431
|
-
* Please use the `preventCleanup` property on {@link TextureOptions} instead.
|
|
432
|
-
*
|
|
433
|
-
* @default false
|
|
434
|
-
*/
|
|
435
|
-
preventCleanup: boolean;
|
|
436
418
|
/**
|
|
437
419
|
* Options to associate with the Node's Texture
|
|
438
420
|
*/
|
|
@@ -682,6 +664,12 @@ export interface CoreNodeProps {
|
|
|
682
664
|
* are provided. Only works when createImageBitmap is supported on the browser.
|
|
683
665
|
*/
|
|
684
666
|
srcY?: number;
|
|
667
|
+
/**
|
|
668
|
+
* Mark the node as interactive so we can perform hit tests on it
|
|
669
|
+
* when pointer events are registered.
|
|
670
|
+
* @default false
|
|
671
|
+
*/
|
|
672
|
+
interactive?: boolean;
|
|
685
673
|
/**
|
|
686
674
|
* By enabling Strict bounds the renderer will not process & render child nodes of a node that is out of the visible area
|
|
687
675
|
*
|
|
@@ -694,7 +682,7 @@ export interface CoreNodeProps {
|
|
|
694
682
|
* This is a big performance gain but may be disabled in cases where the width of the parent node is
|
|
695
683
|
* unknown and the render must process the child nodes regardless of the viewport status of the parent node
|
|
696
684
|
*
|
|
697
|
-
* @default
|
|
685
|
+
* @default true
|
|
698
686
|
*/
|
|
699
687
|
strictBounds: boolean;
|
|
700
688
|
}
|
|
@@ -730,11 +718,13 @@ export class CoreNode extends EventEmitter {
|
|
|
730
718
|
protected _id: number = getNewId();
|
|
731
719
|
readonly props: CoreNodeProps;
|
|
732
720
|
|
|
721
|
+
private hasShaderUpdater = false;
|
|
722
|
+
private hasColorProps = false;
|
|
723
|
+
|
|
733
724
|
public updateType = UpdateType.All;
|
|
734
725
|
public childUpdateType = UpdateType.None;
|
|
735
726
|
|
|
736
727
|
public globalTransform?: Matrix3d;
|
|
737
|
-
public scaleRotateTransform?: Matrix3d;
|
|
738
728
|
public localTransform?: Matrix3d;
|
|
739
729
|
public sceneGlobalTransform?: Matrix3d;
|
|
740
730
|
public renderCoords?: RenderCoords;
|
|
@@ -749,6 +739,8 @@ export class CoreNode extends EventEmitter {
|
|
|
749
739
|
height: 0,
|
|
750
740
|
valid: false,
|
|
751
741
|
};
|
|
742
|
+
public textureCoords?: TextureCoords;
|
|
743
|
+
public updateTextureCoords?: boolean = false;
|
|
752
744
|
public isRenderable = false;
|
|
753
745
|
public renderState: CoreNodeRenderState = CoreNodeRenderState.Init;
|
|
754
746
|
|
|
@@ -761,65 +753,93 @@ export class CoreNode extends EventEmitter {
|
|
|
761
753
|
public hasRTTupdates = false;
|
|
762
754
|
public parentHasRenderTexture = false;
|
|
763
755
|
public rttParent: CoreNode | null = null;
|
|
756
|
+
/**
|
|
757
|
+
* only used when rtt = true
|
|
758
|
+
*/
|
|
759
|
+
public framebufferDimensions: Dimensions | null = null;
|
|
760
|
+
|
|
761
|
+
public destroyed = false;
|
|
764
762
|
|
|
765
763
|
constructor(readonly stage: Stage, props: CoreNodeProps) {
|
|
766
764
|
super();
|
|
767
765
|
|
|
768
|
-
this.props =
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
766
|
+
const p = (this.props = {} as CoreNodeProps);
|
|
767
|
+
|
|
768
|
+
// Fast-path assign only known keys
|
|
769
|
+
p.x = props.x;
|
|
770
|
+
p.y = props.y;
|
|
771
|
+
p.width = props.width;
|
|
772
|
+
p.height = props.height;
|
|
773
|
+
p.alpha = props.alpha;
|
|
774
|
+
p.autosize = props.autosize;
|
|
775
|
+
p.clipping = props.clipping;
|
|
776
|
+
p.color = props.color;
|
|
777
|
+
|
|
778
|
+
p.colorTop = props.colorTop;
|
|
779
|
+
p.colorBottom = props.colorBottom;
|
|
780
|
+
p.colorLeft = props.colorLeft;
|
|
781
|
+
p.colorRight = props.colorRight;
|
|
782
|
+
p.colorTl = props.colorTl;
|
|
783
|
+
p.colorTr = props.colorTr;
|
|
784
|
+
p.colorBl = props.colorBl;
|
|
785
|
+
p.colorBr = props.colorBr;
|
|
786
|
+
|
|
787
|
+
p.scaleX = props.scaleX;
|
|
788
|
+
p.scaleY = props.scaleY;
|
|
789
|
+
p.rotation = props.rotation;
|
|
790
|
+
p.pivotX = props.pivotX;
|
|
791
|
+
p.pivotY = props.pivotY;
|
|
792
|
+
p.mountX = props.mountX;
|
|
793
|
+
p.mountY = props.mountY;
|
|
794
|
+
p.mount = props.mount;
|
|
795
|
+
p.pivot = props.pivot;
|
|
796
|
+
p.strictBounds = props.strictBounds;
|
|
797
|
+
|
|
798
|
+
p.zIndex = props.zIndex;
|
|
799
|
+
p.zIndexLocked = props.zIndexLocked;
|
|
800
|
+
p.textureOptions = props.textureOptions;
|
|
801
|
+
|
|
802
|
+
p.data = props.data;
|
|
803
|
+
p.imageType = props.imageType;
|
|
804
|
+
p.srcX = props.srcX;
|
|
805
|
+
p.srcY = props.srcY;
|
|
806
|
+
p.srcWidth = props.srcWidth;
|
|
807
|
+
p.srcHeight = props.srcHeight;
|
|
808
|
+
|
|
809
|
+
p.parent = null;
|
|
810
|
+
p.texture = null;
|
|
811
|
+
p.shader = null;
|
|
812
|
+
p.src = null;
|
|
813
|
+
p.rtt = false;
|
|
814
|
+
p.boundsMargin = null;
|
|
815
|
+
|
|
816
|
+
// Assign props to instances
|
|
777
817
|
this.parent = props.parent;
|
|
778
818
|
this.texture = props.texture;
|
|
779
819
|
this.shader = props.shader;
|
|
780
820
|
this.src = props.src;
|
|
781
821
|
this.rtt = props.rtt;
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
this.boundsMargin = Array.isArray(props.boundsMargin)
|
|
785
|
-
? props.boundsMargin
|
|
786
|
-
: [
|
|
787
|
-
props.boundsMargin,
|
|
788
|
-
props.boundsMargin,
|
|
789
|
-
props.boundsMargin,
|
|
790
|
-
props.boundsMargin,
|
|
791
|
-
];
|
|
792
|
-
}
|
|
822
|
+
this.boundsMargin = props.boundsMargin;
|
|
823
|
+
this.interactive = props.interactive;
|
|
793
824
|
|
|
794
825
|
this.setUpdateType(
|
|
795
|
-
UpdateType.
|
|
796
|
-
UpdateType.Local |
|
|
797
|
-
UpdateType.RenderBounds |
|
|
798
|
-
UpdateType.RenderState,
|
|
826
|
+
UpdateType.Local | UpdateType.RenderBounds | UpdateType.RenderState,
|
|
799
827
|
);
|
|
800
828
|
|
|
801
|
-
if (isProductionEnvironment() === false && props.preventCleanup === true) {
|
|
802
|
-
console.warn(
|
|
803
|
-
'CoreNode.preventCleanup: Is deprecated and will be removed in upcoming release, please use textureOptions.preventCleanup instead',
|
|
804
|
-
);
|
|
805
|
-
}
|
|
806
|
-
|
|
807
829
|
// if the default texture isn't loaded yet, wait for it to load
|
|
808
830
|
// this only happens when the node is created before the stage is ready
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
) {
|
|
813
|
-
this.stage.defaultTexture.once('loaded', () => {
|
|
814
|
-
this.setUpdateType(UpdateType.IsRenderable);
|
|
815
|
-
});
|
|
831
|
+
const dt = this.stage.defaultTexture;
|
|
832
|
+
if (dt !== null && dt.state !== 'loaded') {
|
|
833
|
+
dt.once('loaded', () => this.setUpdateType(UpdateType.IsRenderable));
|
|
816
834
|
}
|
|
817
835
|
}
|
|
818
836
|
|
|
819
837
|
//#region Textures
|
|
820
838
|
loadTexture(): void {
|
|
821
839
|
const { texture } = this.props;
|
|
822
|
-
|
|
840
|
+
if (!texture) {
|
|
841
|
+
return;
|
|
842
|
+
}
|
|
823
843
|
|
|
824
844
|
// If texture is already loaded / failed, trigger loaded event manually
|
|
825
845
|
// so that users get a consistent event experience.
|
|
@@ -847,11 +867,9 @@ export class CoreNode extends EventEmitter {
|
|
|
847
867
|
}
|
|
848
868
|
|
|
849
869
|
if (texture.state === 'loaded') {
|
|
850
|
-
|
|
851
|
-
this.onTextureLoaded(texture, texture.dimensions);
|
|
870
|
+
this.onTextureLoaded(texture, texture.dimensions!);
|
|
852
871
|
} else if (texture.state === 'failed') {
|
|
853
|
-
|
|
854
|
-
this.onTextureFailed(texture, texture.error);
|
|
872
|
+
this.onTextureFailed(texture, texture.error!);
|
|
855
873
|
} else if (texture.state === 'freed') {
|
|
856
874
|
this.onTextureFreed(texture);
|
|
857
875
|
}
|
|
@@ -859,12 +877,15 @@ export class CoreNode extends EventEmitter {
|
|
|
859
877
|
}
|
|
860
878
|
|
|
861
879
|
unloadTexture(): void {
|
|
862
|
-
if (this.texture
|
|
863
|
-
|
|
864
|
-
this.texture.off('failed', this.onTextureFailed);
|
|
865
|
-
this.texture.off('freed', this.onTextureFreed);
|
|
866
|
-
this.texture.setRenderableOwner(this, false);
|
|
880
|
+
if (this.texture === null) {
|
|
881
|
+
return;
|
|
867
882
|
}
|
|
883
|
+
|
|
884
|
+
const texture = this.texture;
|
|
885
|
+
texture.off('loaded', this.onTextureLoaded);
|
|
886
|
+
texture.off('failed', this.onTextureFailed);
|
|
887
|
+
texture.off('freed', this.onTextureFreed);
|
|
888
|
+
texture.setRenderableOwner(this, false);
|
|
868
889
|
}
|
|
869
890
|
|
|
870
891
|
autosizeNode(dimensions: Dimensions) {
|
|
@@ -874,7 +895,7 @@ export class CoreNode extends EventEmitter {
|
|
|
874
895
|
}
|
|
875
896
|
}
|
|
876
897
|
|
|
877
|
-
|
|
898
|
+
protected onTextureLoaded: TextureLoadedEventHandler = (_, dimensions) => {
|
|
878
899
|
this.autosizeNode(dimensions);
|
|
879
900
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
880
901
|
|
|
@@ -902,6 +923,9 @@ export class CoreNode extends EventEmitter {
|
|
|
902
923
|
};
|
|
903
924
|
|
|
904
925
|
private onTextureFailed: TextureFailedEventHandler = (_, error) => {
|
|
926
|
+
// immediately set isRenderable to false, so that we handle the error
|
|
927
|
+
// without waiting for the next frame loop
|
|
928
|
+
this.isRenderable = false;
|
|
905
929
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
906
930
|
|
|
907
931
|
// If parent has a render texture, flag that we need to update
|
|
@@ -916,6 +940,9 @@ export class CoreNode extends EventEmitter {
|
|
|
916
940
|
};
|
|
917
941
|
|
|
918
942
|
private onTextureFreed: TextureFreedEventHandler = () => {
|
|
943
|
+
// immediately set isRenderable to false, so that we handle the error
|
|
944
|
+
// without waiting for the next frame loop
|
|
945
|
+
this.isRenderable = false;
|
|
919
946
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
920
947
|
|
|
921
948
|
// If parent has a render texture, flag that we need to update
|
|
@@ -943,46 +970,30 @@ export class CoreNode extends EventEmitter {
|
|
|
943
970
|
const parent = this.props.parent;
|
|
944
971
|
if (!parent) return;
|
|
945
972
|
|
|
946
|
-
|
|
947
|
-
// Inform the parent if it doesn’t already have a child update
|
|
948
|
-
parent.setUpdateType(UpdateType.Children);
|
|
949
|
-
}
|
|
973
|
+
parent.setUpdateType(UpdateType.Children);
|
|
950
974
|
}
|
|
951
975
|
|
|
952
976
|
sortChildren() {
|
|
953
977
|
this.children.sort((a, b) => a.calcZIndex - b.calcZIndex);
|
|
954
978
|
}
|
|
955
979
|
|
|
956
|
-
updateScaleRotateTransform() {
|
|
957
|
-
const { rotation, scaleX, scaleY } = this.props;
|
|
958
|
-
|
|
959
|
-
// optimize simple translation cases
|
|
960
|
-
if (rotation === 0 && scaleX === 1 && scaleY === 1) {
|
|
961
|
-
this.scaleRotateTransform = undefined;
|
|
962
|
-
return;
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
this.scaleRotateTransform = Matrix3d.rotate(
|
|
966
|
-
rotation,
|
|
967
|
-
this.scaleRotateTransform,
|
|
968
|
-
).scale(scaleX, scaleY);
|
|
969
|
-
}
|
|
970
|
-
|
|
971
980
|
updateLocalTransform() {
|
|
972
|
-
const
|
|
973
|
-
const
|
|
974
|
-
const
|
|
981
|
+
const p = this.props;
|
|
982
|
+
const { x, y, width, height } = p;
|
|
983
|
+
const mountTranslateX = p.mountX * width;
|
|
984
|
+
const mountTranslateY = p.mountY * height;
|
|
975
985
|
|
|
976
|
-
if (
|
|
977
|
-
const pivotTranslateX =
|
|
978
|
-
const pivotTranslateY =
|
|
986
|
+
if (p.rotation !== 0 || p.scaleX !== 1 || p.scaleY !== 1) {
|
|
987
|
+
const pivotTranslateX = p.pivotX * width;
|
|
988
|
+
const pivotTranslateY = p.pivotY * height;
|
|
979
989
|
|
|
980
990
|
this.localTransform = Matrix3d.translate(
|
|
981
991
|
x - mountTranslateX + pivotTranslateX,
|
|
982
992
|
y - mountTranslateY + pivotTranslateY,
|
|
983
993
|
this.localTransform,
|
|
984
994
|
)
|
|
985
|
-
.
|
|
995
|
+
.rotate(p.rotation)
|
|
996
|
+
.scale(p.scaleX, p.scaleY)
|
|
986
997
|
.translate(-pivotTranslateX, -pivotTranslateY);
|
|
987
998
|
} else {
|
|
988
999
|
this.localTransform = Matrix3d.translate(
|
|
@@ -993,11 +1004,11 @@ export class CoreNode extends EventEmitter {
|
|
|
993
1004
|
}
|
|
994
1005
|
|
|
995
1006
|
// Handle 'contain' resize mode
|
|
996
|
-
const texture =
|
|
1007
|
+
const texture = p.texture;
|
|
997
1008
|
if (
|
|
998
1009
|
texture &&
|
|
999
1010
|
texture.dimensions &&
|
|
1000
|
-
|
|
1011
|
+
p.textureOptions.resizeMode?.type === 'contain'
|
|
1001
1012
|
) {
|
|
1002
1013
|
let resizeModeScaleX = 1;
|
|
1003
1014
|
let resizeModeScaleY = 1;
|
|
@@ -1029,8 +1040,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1029
1040
|
.translate(extraX, extraY)
|
|
1030
1041
|
.scale(resizeModeScaleX, resizeModeScaleY);
|
|
1031
1042
|
}
|
|
1032
|
-
|
|
1033
|
-
this.setUpdateType(UpdateType.Global);
|
|
1034
1043
|
}
|
|
1035
1044
|
|
|
1036
1045
|
/**
|
|
@@ -1038,27 +1047,34 @@ export class CoreNode extends EventEmitter {
|
|
|
1038
1047
|
* @param delta
|
|
1039
1048
|
*/
|
|
1040
1049
|
update(delta: number, parentClippingRect: RectWithValid): void {
|
|
1041
|
-
if (this.updateType
|
|
1042
|
-
|
|
1043
|
-
this.setUpdateType(UpdateType.Local);
|
|
1050
|
+
if (this.updateType === UpdateType.None) {
|
|
1051
|
+
return;
|
|
1044
1052
|
}
|
|
1045
1053
|
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1054
|
+
const props = this.props;
|
|
1055
|
+
const parent = props.parent;
|
|
1056
|
+
const parentHasRenderTexture = this.parentHasRenderTexture;
|
|
1057
|
+
const hasParent = props.parent !== null;
|
|
1050
1058
|
|
|
1051
|
-
const parent = this.props.parent;
|
|
1052
1059
|
let renderState: CoreNodeRenderState | null = null;
|
|
1053
1060
|
|
|
1061
|
+
let updateType = this.updateType;
|
|
1062
|
+
let childUpdateType = this.childUpdateType;
|
|
1063
|
+
let updateParent = false;
|
|
1064
|
+
|
|
1065
|
+
if (updateType & UpdateType.Local) {
|
|
1066
|
+
this.updateLocalTransform();
|
|
1067
|
+
|
|
1068
|
+
updateType |= UpdateType.Global;
|
|
1069
|
+
updateParent = hasParent;
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1054
1072
|
// Handle specific RTT updates at this node level
|
|
1055
|
-
if (
|
|
1073
|
+
if (updateType & UpdateType.RenderTexture && this.rtt === true) {
|
|
1056
1074
|
this.hasRTTupdates = true;
|
|
1057
1075
|
}
|
|
1058
1076
|
|
|
1059
|
-
if (
|
|
1060
|
-
assertTruthy(this.localTransform);
|
|
1061
|
-
|
|
1077
|
+
if (updateType & UpdateType.Global) {
|
|
1062
1078
|
if (this.parentHasRenderTexture === true && parent?.rtt === true) {
|
|
1063
1079
|
// we are at the start of the RTT chain, so we need to reset the globalTransform
|
|
1064
1080
|
// for correct RTT rendering
|
|
@@ -1067,7 +1083,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1067
1083
|
// Maintain a full scene global transform for bounds detection
|
|
1068
1084
|
this.sceneGlobalTransform = Matrix3d.copy(
|
|
1069
1085
|
parent?.globalTransform || Matrix3d.identity(),
|
|
1070
|
-
).multiply(this.localTransform);
|
|
1086
|
+
).multiply(this.localTransform!);
|
|
1071
1087
|
} else if (
|
|
1072
1088
|
this.parentHasRenderTexture === true &&
|
|
1073
1089
|
parent?.rtt === false
|
|
@@ -1076,50 +1092,53 @@ export class CoreNode extends EventEmitter {
|
|
|
1076
1092
|
// so we need to propogate the sceneGlobalTransform of the parent
|
|
1077
1093
|
// to maintain a full scene global transform for bounds detection
|
|
1078
1094
|
this.sceneGlobalTransform = Matrix3d.copy(
|
|
1079
|
-
parent?.sceneGlobalTransform || this.localTransform
|
|
1080
|
-
).multiply(this.localTransform);
|
|
1095
|
+
parent?.sceneGlobalTransform || this.localTransform!,
|
|
1096
|
+
).multiply(this.localTransform!);
|
|
1081
1097
|
|
|
1082
1098
|
this.globalTransform = Matrix3d.copy(
|
|
1083
|
-
parent?.globalTransform || this.localTransform
|
|
1099
|
+
parent?.globalTransform || this.localTransform!,
|
|
1084
1100
|
this.globalTransform,
|
|
1085
1101
|
);
|
|
1086
1102
|
} else {
|
|
1087
1103
|
this.globalTransform = Matrix3d.copy(
|
|
1088
|
-
parent?.globalTransform || this.localTransform
|
|
1104
|
+
parent?.globalTransform || this.localTransform!,
|
|
1089
1105
|
this.globalTransform,
|
|
1090
1106
|
);
|
|
1091
1107
|
}
|
|
1092
1108
|
|
|
1093
1109
|
if (parent !== null) {
|
|
1094
|
-
this.globalTransform.multiply(this.localTransform);
|
|
1110
|
+
this.globalTransform.multiply(this.localTransform!);
|
|
1095
1111
|
}
|
|
1096
1112
|
this.calculateRenderCoords();
|
|
1097
1113
|
this.updateBoundingRect();
|
|
1098
1114
|
|
|
1099
|
-
|
|
1115
|
+
updateType |=
|
|
1100
1116
|
UpdateType.RenderState |
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1117
|
+
UpdateType.Children |
|
|
1118
|
+
UpdateType.RecalcUniforms;
|
|
1119
|
+
updateParent = hasParent;
|
|
1120
|
+
childUpdateType |= UpdateType.Global;
|
|
1105
1121
|
|
|
1106
1122
|
if (this.clipping === true) {
|
|
1107
|
-
|
|
1108
|
-
|
|
1123
|
+
updateType |= UpdateType.Clipping | UpdateType.RenderBounds;
|
|
1124
|
+
updateParent = hasParent;
|
|
1125
|
+
childUpdateType |= UpdateType.RenderBounds;
|
|
1109
1126
|
}
|
|
1110
1127
|
}
|
|
1111
1128
|
|
|
1112
|
-
if (
|
|
1129
|
+
if (updateType & UpdateType.RenderBounds) {
|
|
1113
1130
|
this.createRenderBounds();
|
|
1114
|
-
this.setUpdateType(UpdateType.RenderState);
|
|
1115
|
-
this.setUpdateType(UpdateType.Children);
|
|
1116
1131
|
|
|
1117
|
-
|
|
1132
|
+
updateType |= UpdateType.RenderState | UpdateType.Children;
|
|
1133
|
+
updateParent = hasParent;
|
|
1134
|
+
childUpdateType |= UpdateType.RenderBounds;
|
|
1118
1135
|
}
|
|
1119
1136
|
|
|
1120
|
-
if (
|
|
1137
|
+
if (updateType & UpdateType.RenderState) {
|
|
1121
1138
|
renderState = this.checkRenderBounds();
|
|
1122
|
-
|
|
1139
|
+
|
|
1140
|
+
updateType |= UpdateType.IsRenderable;
|
|
1141
|
+
updateParent = hasParent;
|
|
1123
1142
|
|
|
1124
1143
|
// if we're not going out of bounds, update the render state
|
|
1125
1144
|
// this is done so the update loop can finish before we mark a node
|
|
@@ -1129,96 +1148,98 @@ export class CoreNode extends EventEmitter {
|
|
|
1129
1148
|
}
|
|
1130
1149
|
}
|
|
1131
1150
|
|
|
1132
|
-
if (
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
this.worldAlpha = this.props.alpha;
|
|
1137
|
-
}
|
|
1138
|
-
this.setUpdateType(
|
|
1151
|
+
if (updateType & UpdateType.WorldAlpha) {
|
|
1152
|
+
this.worldAlpha = ((parent && parent.worldAlpha) || 1) * props.alpha;
|
|
1153
|
+
updateType |=
|
|
1154
|
+
UpdateType.PremultipliedColors |
|
|
1139
1155
|
UpdateType.Children |
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
this.childUpdateType |= UpdateType.WorldAlpha;
|
|
1156
|
+
UpdateType.IsRenderable;
|
|
1157
|
+
updateParent = hasParent;
|
|
1158
|
+
childUpdateType |= UpdateType.WorldAlpha;
|
|
1144
1159
|
}
|
|
1145
1160
|
|
|
1146
|
-
if (
|
|
1161
|
+
if (updateType & UpdateType.IsRenderable) {
|
|
1147
1162
|
this.updateIsRenderable();
|
|
1148
1163
|
}
|
|
1149
1164
|
|
|
1150
|
-
if (
|
|
1165
|
+
if (updateType & UpdateType.Clipping) {
|
|
1151
1166
|
this.calculateClippingRect(parentClippingRect);
|
|
1152
|
-
|
|
1167
|
+
updateType |= UpdateType.Children;
|
|
1168
|
+
updateParent = hasParent;
|
|
1153
1169
|
|
|
1154
|
-
|
|
1155
|
-
this.childUpdateType |= UpdateType.RenderBounds;
|
|
1170
|
+
childUpdateType |= UpdateType.Clipping | UpdateType.RenderBounds;
|
|
1156
1171
|
}
|
|
1157
1172
|
|
|
1158
|
-
if (
|
|
1159
|
-
|
|
1160
|
-
this.props.colorTl,
|
|
1161
|
-
this.worldAlpha,
|
|
1162
|
-
true,
|
|
1163
|
-
);
|
|
1173
|
+
if (updateType & UpdateType.PremultipliedColors) {
|
|
1174
|
+
const alpha = this.worldAlpha;
|
|
1164
1175
|
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
)
|
|
1176
|
+
const tl = props.colorTl;
|
|
1177
|
+
const tr = props.colorTr;
|
|
1178
|
+
const bl = props.colorBl;
|
|
1179
|
+
const br = props.colorBr;
|
|
1180
|
+
|
|
1181
|
+
// Fast equality check (covers all 4 corners)
|
|
1182
|
+
const same = tl === tr && tl === bl && tl === br;
|
|
1183
|
+
|
|
1184
|
+
const merged = mergeColorAlphaPremultiplied(tl, alpha, true);
|
|
1185
|
+
|
|
1186
|
+
this.premultipliedColorTl = merged;
|
|
1187
|
+
|
|
1188
|
+
if (same) {
|
|
1171
1189
|
this.premultipliedColorTr =
|
|
1172
1190
|
this.premultipliedColorBl =
|
|
1173
1191
|
this.premultipliedColorBr =
|
|
1174
|
-
|
|
1192
|
+
merged;
|
|
1175
1193
|
} else {
|
|
1176
1194
|
this.premultipliedColorTr = mergeColorAlphaPremultiplied(
|
|
1177
|
-
|
|
1178
|
-
|
|
1195
|
+
tr,
|
|
1196
|
+
alpha,
|
|
1179
1197
|
true,
|
|
1180
1198
|
);
|
|
1181
1199
|
this.premultipliedColorBl = mergeColorAlphaPremultiplied(
|
|
1182
|
-
|
|
1183
|
-
|
|
1200
|
+
bl,
|
|
1201
|
+
alpha,
|
|
1184
1202
|
true,
|
|
1185
1203
|
);
|
|
1186
1204
|
this.premultipliedColorBr = mergeColorAlphaPremultiplied(
|
|
1187
|
-
|
|
1188
|
-
|
|
1205
|
+
br,
|
|
1206
|
+
alpha,
|
|
1189
1207
|
true,
|
|
1190
1208
|
);
|
|
1191
1209
|
}
|
|
1192
1210
|
}
|
|
1193
1211
|
|
|
1212
|
+
if (updateParent === true) {
|
|
1213
|
+
parent!.setUpdateType(UpdateType.Children);
|
|
1214
|
+
}
|
|
1194
1215
|
// No need to update zIndex if there is no parent
|
|
1195
|
-
if (
|
|
1216
|
+
if (updateType & UpdateType.CalculatedZIndex && parent !== null) {
|
|
1196
1217
|
this.calculateZIndex();
|
|
1197
1218
|
// Tell parent to re-sort children
|
|
1198
1219
|
parent.setUpdateType(UpdateType.ZIndexSortedChildren);
|
|
1199
1220
|
}
|
|
1200
1221
|
|
|
1201
1222
|
if (
|
|
1202
|
-
|
|
1223
|
+
props.strictBounds === true &&
|
|
1203
1224
|
this.renderState === CoreNodeRenderState.OutOfBounds
|
|
1204
1225
|
) {
|
|
1205
|
-
|
|
1226
|
+
updateType &= ~UpdateType.RenderBounds; // remove render bounds update
|
|
1206
1227
|
return;
|
|
1207
1228
|
}
|
|
1208
1229
|
|
|
1209
1230
|
if (
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
this.updateType & UpdateType.RecalcUniforms)
|
|
1231
|
+
updateType & UpdateType.RecalcUniforms &&
|
|
1232
|
+
this.hasShaderUpdater === true
|
|
1213
1233
|
) {
|
|
1214
|
-
this
|
|
1234
|
+
//this exists because the boolean hasShaderUpdater === true
|
|
1235
|
+
this.shader!.update!();
|
|
1215
1236
|
}
|
|
1216
1237
|
|
|
1217
|
-
if (
|
|
1238
|
+
if (updateType & UpdateType.Children && this.children.length > 0) {
|
|
1218
1239
|
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
1219
1240
|
const child = this.children[i] as CoreNode;
|
|
1220
1241
|
|
|
1221
|
-
child.setUpdateType(
|
|
1242
|
+
child.setUpdateType(childUpdateType);
|
|
1222
1243
|
|
|
1223
1244
|
if (child.updateType === 0) {
|
|
1224
1245
|
continue;
|
|
@@ -1240,19 +1261,24 @@ export class CoreNode extends EventEmitter {
|
|
|
1240
1261
|
}
|
|
1241
1262
|
|
|
1242
1263
|
// If the node has an RTT parent and requires a texture re-render, inform the RTT parent
|
|
1243
|
-
// if (this.parentHasRenderTexture &&
|
|
1264
|
+
// if (this.parentHasRenderTexture && updateType & UpdateType.RenderTexture) {
|
|
1244
1265
|
// @TODO have a more scoped down updateType for RTT updates
|
|
1245
|
-
if (
|
|
1266
|
+
if (parentHasRenderTexture === true) {
|
|
1246
1267
|
this.notifyParentRTTOfUpdate();
|
|
1247
1268
|
}
|
|
1248
1269
|
|
|
1249
1270
|
// Sorting children MUST happen after children have been updated so
|
|
1250
1271
|
// that they have the oppotunity to update their calculated zIndex.
|
|
1251
|
-
if (
|
|
1272
|
+
if (updateType & UpdateType.ZIndexSortedChildren) {
|
|
1252
1273
|
// reorder z-index
|
|
1253
1274
|
this.sortChildren();
|
|
1254
1275
|
}
|
|
1255
1276
|
|
|
1277
|
+
if (this.updateTextureCoords === true) {
|
|
1278
|
+
this.updateTextureCoords = false;
|
|
1279
|
+
this.textureCoords = this.stage.renderer.getTextureCoords!(this);
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1256
1282
|
// If we're out of bounds, apply the render state now
|
|
1257
1283
|
// this is done so nodes can finish their entire update loop before
|
|
1258
1284
|
// being marked as out of bounds
|
|
@@ -1267,7 +1293,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1267
1293
|
// notify children that we are going out of bounds
|
|
1268
1294
|
// we have to do this now before we stop processing the render tree
|
|
1269
1295
|
this.notifyChildrenRTTOfUpdate(renderState);
|
|
1270
|
-
// this.childUpdateType |= UpdateType.RenderState;
|
|
1271
1296
|
}
|
|
1272
1297
|
}
|
|
1273
1298
|
|
|
@@ -1284,15 +1309,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1284
1309
|
return rttNode;
|
|
1285
1310
|
}
|
|
1286
1311
|
|
|
1287
|
-
private getRTTParentRenderState(): CoreNodeRenderState | null {
|
|
1288
|
-
const rttNode = this.rttParent || this.findParentRTTNode();
|
|
1289
|
-
if (!rttNode) {
|
|
1290
|
-
return null;
|
|
1291
|
-
}
|
|
1292
|
-
|
|
1293
|
-
return rttNode.renderState;
|
|
1294
|
-
}
|
|
1295
|
-
|
|
1296
1312
|
private notifyChildrenRTTOfUpdate(renderState: CoreNodeRenderState) {
|
|
1297
1313
|
for (const child of this.children) {
|
|
1298
1314
|
// force child to update render state
|
|
@@ -1302,7 +1318,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1302
1318
|
}
|
|
1303
1319
|
}
|
|
1304
1320
|
|
|
1305
|
-
|
|
1321
|
+
protected notifyParentRTTOfUpdate() {
|
|
1306
1322
|
if (this.parent === null) {
|
|
1307
1323
|
return;
|
|
1308
1324
|
}
|
|
@@ -1323,20 +1339,16 @@ export class CoreNode extends EventEmitter {
|
|
|
1323
1339
|
}
|
|
1324
1340
|
|
|
1325
1341
|
checkRenderBounds(): CoreNodeRenderState {
|
|
1326
|
-
|
|
1327
|
-
assertTruthy(this.strictBound);
|
|
1328
|
-
assertTruthy(this.preloadBound);
|
|
1329
|
-
|
|
1330
|
-
if (boundInsideBound(this.renderBound, this.strictBound)) {
|
|
1342
|
+
if (boundInsideBound(this.renderBound!, this.strictBound!)) {
|
|
1331
1343
|
return CoreNodeRenderState.InViewport;
|
|
1332
1344
|
}
|
|
1333
1345
|
|
|
1334
|
-
if (boundInsideBound(this.renderBound
|
|
1346
|
+
if (boundInsideBound(this.renderBound!, this.preloadBound!)) {
|
|
1335
1347
|
return CoreNodeRenderState.InBounds;
|
|
1336
1348
|
}
|
|
1337
1349
|
|
|
1338
1350
|
// check if we're larger then our parent, we're definitely in the viewport
|
|
1339
|
-
if (boundLargeThanBound(this.renderBound
|
|
1351
|
+
if (boundLargeThanBound(this.renderBound!, this.strictBound!)) {
|
|
1340
1352
|
return CoreNodeRenderState.InViewport;
|
|
1341
1353
|
}
|
|
1342
1354
|
|
|
@@ -1352,18 +1364,21 @@ export class CoreNode extends EventEmitter {
|
|
|
1352
1364
|
}
|
|
1353
1365
|
|
|
1354
1366
|
updateBoundingRect() {
|
|
1355
|
-
const transform = this.sceneGlobalTransform ||
|
|
1356
|
-
|
|
1367
|
+
const transform = (this.sceneGlobalTransform ||
|
|
1368
|
+
this.globalTransform) as Matrix3d;
|
|
1369
|
+
const renderCoords = (this.sceneRenderCoords ||
|
|
1370
|
+
this.renderCoords) as RenderCoords;
|
|
1357
1371
|
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1372
|
+
if (transform.tb === 0 || transform.tc === 0) {
|
|
1373
|
+
this.renderBound = createBound(
|
|
1374
|
+
renderCoords.x1,
|
|
1375
|
+
renderCoords.y1,
|
|
1376
|
+
renderCoords.x3,
|
|
1377
|
+
renderCoords.y3,
|
|
1378
|
+
this.renderBound,
|
|
1379
|
+
);
|
|
1365
1380
|
} else {
|
|
1366
|
-
const {
|
|
1381
|
+
const { x1, y1, x2, y2, x3, y3, x4, y4 } = renderCoords;
|
|
1367
1382
|
this.renderBound = createBound(
|
|
1368
1383
|
Math.min(x1, x2, x3, x4),
|
|
1369
1384
|
Math.min(y1, y2, y3, y4),
|
|
@@ -1375,8 +1390,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1375
1390
|
}
|
|
1376
1391
|
|
|
1377
1392
|
createRenderBounds(): void {
|
|
1378
|
-
assertTruthy(this.stage);
|
|
1379
|
-
|
|
1380
1393
|
if (this.parent !== null && this.parent.strictBound !== undefined) {
|
|
1381
1394
|
// we have a parent with a valid bound, copy it
|
|
1382
1395
|
const parentBound = this.parent.strictBound;
|
|
@@ -1458,7 +1471,10 @@ export class CoreNode extends EventEmitter {
|
|
|
1458
1471
|
let needsTextureOwnership = false;
|
|
1459
1472
|
|
|
1460
1473
|
// If the node is out of bounds or has an alpha of 0, it is not renderable
|
|
1461
|
-
if (
|
|
1474
|
+
if (
|
|
1475
|
+
this.worldAlpha === 0 ||
|
|
1476
|
+
this.renderState <= CoreNodeRenderState.OutOfBounds
|
|
1477
|
+
) {
|
|
1462
1478
|
this.updateTextureOwnership(false);
|
|
1463
1479
|
this.setRenderable(false);
|
|
1464
1480
|
return;
|
|
@@ -1470,8 +1486,10 @@ export class CoreNode extends EventEmitter {
|
|
|
1470
1486
|
// we're only renderable if the texture state is loaded
|
|
1471
1487
|
newIsRenderable = this.texture.state === 'loaded';
|
|
1472
1488
|
} else if (
|
|
1473
|
-
|
|
1474
|
-
this.
|
|
1489
|
+
// check shader
|
|
1490
|
+
(this.props.shader !== null || this.hasColorProps === true) &&
|
|
1491
|
+
// check dimensions
|
|
1492
|
+
(this.props.width !== 0 && this.props.height !== 0) === true
|
|
1475
1493
|
) {
|
|
1476
1494
|
// This mean we have dimensions and a color set, so we can render a ColorTexture
|
|
1477
1495
|
if (
|
|
@@ -1486,23 +1504,19 @@ export class CoreNode extends EventEmitter {
|
|
|
1486
1504
|
this.setRenderable(newIsRenderable);
|
|
1487
1505
|
}
|
|
1488
1506
|
|
|
1489
|
-
/**
|
|
1490
|
-
* Checks if the node is renderable based on world alpha, dimensions and out of bounds status.
|
|
1491
|
-
*/
|
|
1492
|
-
checkBasicRenderability(): boolean {
|
|
1493
|
-
if (this.worldAlpha === 0 || this.isOutOfBounds() === true) {
|
|
1494
|
-
return false;
|
|
1495
|
-
} else {
|
|
1496
|
-
return true;
|
|
1497
|
-
}
|
|
1498
|
-
}
|
|
1499
|
-
|
|
1500
1507
|
/**
|
|
1501
1508
|
* Sets the renderable state and triggers changes if necessary.
|
|
1502
1509
|
* @param isRenderable - The new renderable state
|
|
1503
1510
|
*/
|
|
1504
1511
|
setRenderable(isRenderable: boolean) {
|
|
1505
1512
|
this.isRenderable = isRenderable;
|
|
1513
|
+
if (
|
|
1514
|
+
isRenderable === true &&
|
|
1515
|
+
this.stage.calculateTextureCoord === true &&
|
|
1516
|
+
this.textureCoords === undefined
|
|
1517
|
+
) {
|
|
1518
|
+
this.updateTextureCoords = true;
|
|
1519
|
+
}
|
|
1506
1520
|
}
|
|
1507
1521
|
|
|
1508
1522
|
/**
|
|
@@ -1512,44 +1526,16 @@ export class CoreNode extends EventEmitter {
|
|
|
1512
1526
|
this.texture?.setRenderableOwner(this, isRenderable);
|
|
1513
1527
|
}
|
|
1514
1528
|
|
|
1515
|
-
/**
|
|
1516
|
-
* Checks if the node is out of the viewport bounds.
|
|
1517
|
-
*/
|
|
1518
|
-
isOutOfBounds(): boolean {
|
|
1519
|
-
return this.renderState <= CoreNodeRenderState.OutOfBounds;
|
|
1520
|
-
}
|
|
1521
|
-
|
|
1522
|
-
/**
|
|
1523
|
-
* Checks if the node has dimensions (width/height)
|
|
1524
|
-
*/
|
|
1525
|
-
hasDimensions(): boolean {
|
|
1526
|
-
return this.props.width !== 0 && this.props.height !== 0;
|
|
1527
|
-
}
|
|
1528
|
-
|
|
1529
|
-
/**
|
|
1530
|
-
* Checks if the node has any color properties set.
|
|
1531
|
-
*/
|
|
1532
|
-
hasColorProperties(): boolean {
|
|
1533
|
-
return (
|
|
1534
|
-
this.props.color !== 0 ||
|
|
1535
|
-
this.props.colorTop !== 0 ||
|
|
1536
|
-
this.props.colorBottom !== 0 ||
|
|
1537
|
-
this.props.colorLeft !== 0 ||
|
|
1538
|
-
this.props.colorRight !== 0 ||
|
|
1539
|
-
this.props.colorTl !== 0 ||
|
|
1540
|
-
this.props.colorTr !== 0 ||
|
|
1541
|
-
this.props.colorBl !== 0 ||
|
|
1542
|
-
this.props.colorBr !== 0
|
|
1543
|
-
);
|
|
1544
|
-
}
|
|
1545
|
-
|
|
1546
|
-
hasShader(): boolean {
|
|
1547
|
-
return this.props.shader !== null;
|
|
1548
|
-
}
|
|
1549
|
-
|
|
1550
1529
|
calculateRenderCoords() {
|
|
1551
1530
|
const { width, height } = this;
|
|
1552
|
-
|
|
1531
|
+
|
|
1532
|
+
const g = this.globalTransform!;
|
|
1533
|
+
const tx = g.tx,
|
|
1534
|
+
ty = g.ty,
|
|
1535
|
+
ta = g.ta,
|
|
1536
|
+
tb = g.tb,
|
|
1537
|
+
tc = g.tc,
|
|
1538
|
+
td = g.td;
|
|
1553
1539
|
if (tb === 0 && tc === 0) {
|
|
1554
1540
|
const minX = tx;
|
|
1555
1541
|
const maxX = tx + width * ta;
|
|
@@ -1647,16 +1633,15 @@ export class CoreNode extends EventEmitter {
|
|
|
1647
1633
|
* Finally, the node's parentClippingRect and clippingRect properties are updated.
|
|
1648
1634
|
*/
|
|
1649
1635
|
calculateClippingRect(parentClippingRect: RectWithValid) {
|
|
1650
|
-
assertTruthy(this.globalTransform);
|
|
1651
1636
|
const { clippingRect, props, globalTransform: gt } = this;
|
|
1652
1637
|
const { clipping } = props;
|
|
1653
|
-
const isRotated = gt
|
|
1638
|
+
const isRotated = gt!.tb !== 0 || gt!.tc !== 0;
|
|
1654
1639
|
|
|
1655
1640
|
if (clipping === true && isRotated === false) {
|
|
1656
|
-
clippingRect.x = gt
|
|
1657
|
-
clippingRect.y = gt
|
|
1658
|
-
clippingRect.width = this.width * gt
|
|
1659
|
-
clippingRect.height = this.height * gt
|
|
1641
|
+
clippingRect.x = gt!.tx;
|
|
1642
|
+
clippingRect.y = gt!.ty;
|
|
1643
|
+
clippingRect.width = this.width * gt!.ta;
|
|
1644
|
+
clippingRect.height = this.height * gt!.td;
|
|
1660
1645
|
clippingRect.valid = true;
|
|
1661
1646
|
} else {
|
|
1662
1647
|
clippingRect.valid = false;
|
|
@@ -1688,78 +1673,76 @@ export class CoreNode extends EventEmitter {
|
|
|
1688
1673
|
* Destroy the node and cleanup all resources
|
|
1689
1674
|
*/
|
|
1690
1675
|
destroy(): void {
|
|
1691
|
-
this.
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
this.isRenderable = false;
|
|
1676
|
+
if (this.destroyed === true) {
|
|
1677
|
+
return;
|
|
1678
|
+
}
|
|
1695
1679
|
|
|
1696
|
-
this.
|
|
1697
|
-
this.renderBound = undefined;
|
|
1698
|
-
this.strictBound = undefined;
|
|
1699
|
-
this.preloadBound = undefined;
|
|
1700
|
-
this.globalTransform = undefined;
|
|
1701
|
-
this.scaleRotateTransform = undefined;
|
|
1702
|
-
this.localTransform = undefined;
|
|
1680
|
+
this.removeAllListeners();
|
|
1703
1681
|
|
|
1704
|
-
this.
|
|
1705
|
-
this.
|
|
1682
|
+
this.destroyed = true;
|
|
1683
|
+
this.unloadTexture();
|
|
1684
|
+
this.isRenderable = false;
|
|
1706
1685
|
|
|
1686
|
+
// Kill children
|
|
1707
1687
|
while (this.children.length > 0) {
|
|
1708
|
-
this.children[0]
|
|
1688
|
+
this.children[0]!.destroy();
|
|
1709
1689
|
}
|
|
1710
1690
|
|
|
1711
|
-
|
|
1712
|
-
|
|
1691
|
+
const parent = this.parent;
|
|
1692
|
+
if (parent !== null) {
|
|
1693
|
+
const index = parent.children.indexOf(this);
|
|
1694
|
+
parent.children.splice(index, 1);
|
|
1695
|
+
parent.setUpdateType(
|
|
1696
|
+
UpdateType.Children | UpdateType.ZIndexSortedChildren,
|
|
1697
|
+
);
|
|
1698
|
+
}
|
|
1713
1699
|
|
|
1714
|
-
|
|
1700
|
+
this.props.parent = null;
|
|
1701
|
+
this.props.texture = null;
|
|
1702
|
+
|
|
1703
|
+
if (this.rtt === true) {
|
|
1715
1704
|
this.stage.renderer.removeRTTNode(this);
|
|
1716
1705
|
}
|
|
1717
|
-
|
|
1718
|
-
this.removeAllListeners();
|
|
1719
1706
|
}
|
|
1720
1707
|
|
|
1721
1708
|
renderQuads(renderer: CoreRenderer): void {
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
if (!renderer.renderToTextureActive) {
|
|
1726
|
-
return;
|
|
1727
|
-
}
|
|
1728
|
-
// Prevent quad rendering if parent render texture is not the active render texture
|
|
1729
|
-
if (this.parentRenderTexture !== renderer.activeRttNode) {
|
|
1709
|
+
if (this.parentHasRenderTexture === true) {
|
|
1710
|
+
const rtt = renderer.renderToTextureActive;
|
|
1711
|
+
if (rtt === false || this.parentRenderTexture !== renderer.activeRttNode)
|
|
1730
1712
|
return;
|
|
1731
|
-
}
|
|
1732
1713
|
}
|
|
1733
1714
|
|
|
1734
|
-
|
|
1735
|
-
|
|
1715
|
+
const p = this.props;
|
|
1716
|
+
const t = this.globalTransform!;
|
|
1717
|
+
const coords = this.renderCoords;
|
|
1718
|
+
const texture = p.texture || this.stage.defaultTexture;
|
|
1736
1719
|
|
|
1737
|
-
// add to list of renderables to be sorted before rendering
|
|
1738
1720
|
renderer.addQuad({
|
|
1739
|
-
width:
|
|
1740
|
-
height:
|
|
1721
|
+
width: p.width,
|
|
1722
|
+
height: p.height,
|
|
1741
1723
|
colorTl: this.premultipliedColorTl,
|
|
1742
1724
|
colorTr: this.premultipliedColorTr,
|
|
1743
1725
|
colorBl: this.premultipliedColorBl,
|
|
1744
1726
|
colorBr: this.premultipliedColorBr,
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
zIndex: this.zIndex,
|
|
1750
|
-
shader: this.props.shader as CoreShaderNode<any>,
|
|
1727
|
+
texture,
|
|
1728
|
+
textureOptions: p.textureOptions,
|
|
1729
|
+
textureCoords: this.textureCoords,
|
|
1730
|
+
shader: p.shader as CoreShaderNode<any>,
|
|
1751
1731
|
alpha: this.worldAlpha,
|
|
1752
1732
|
clippingRect: this.clippingRect,
|
|
1753
|
-
tx:
|
|
1754
|
-
ty:
|
|
1755
|
-
ta:
|
|
1756
|
-
tb:
|
|
1757
|
-
tc:
|
|
1758
|
-
td:
|
|
1759
|
-
renderCoords:
|
|
1760
|
-
rtt:
|
|
1733
|
+
tx: t.tx,
|
|
1734
|
+
ty: t.ty,
|
|
1735
|
+
ta: t.ta,
|
|
1736
|
+
tb: t.tb,
|
|
1737
|
+
tc: t.tc,
|
|
1738
|
+
td: t.td,
|
|
1739
|
+
renderCoords: coords,
|
|
1740
|
+
rtt: p.rtt,
|
|
1741
|
+
zIndex: this.calcZIndex,
|
|
1761
1742
|
parentHasRenderTexture: this.parentHasRenderTexture,
|
|
1762
|
-
framebufferDimensions: this.
|
|
1743
|
+
framebufferDimensions: this.parentHasRenderTexture
|
|
1744
|
+
? this.parentFramebufferDimensions
|
|
1745
|
+
: null,
|
|
1763
1746
|
});
|
|
1764
1747
|
}
|
|
1765
1748
|
|
|
@@ -1820,14 +1803,16 @@ export class CoreNode extends EventEmitter {
|
|
|
1820
1803
|
|
|
1821
1804
|
set width(value: number) {
|
|
1822
1805
|
if (this.props.width !== value) {
|
|
1806
|
+
this.textureCoords = undefined;
|
|
1823
1807
|
this.props.width = value;
|
|
1824
1808
|
this.setUpdateType(UpdateType.Local);
|
|
1825
1809
|
|
|
1826
|
-
if (this.props.rtt) {
|
|
1827
|
-
this.
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1810
|
+
if (this.props.rtt === true) {
|
|
1811
|
+
this.framebufferDimensions!.width = value;
|
|
1812
|
+
this.texture = this.stage.txManager.createTexture(
|
|
1813
|
+
'RenderTexture',
|
|
1814
|
+
this.framebufferDimensions!,
|
|
1815
|
+
);
|
|
1831
1816
|
|
|
1832
1817
|
this.setUpdateType(UpdateType.RenderTexture);
|
|
1833
1818
|
}
|
|
@@ -1840,14 +1825,16 @@ export class CoreNode extends EventEmitter {
|
|
|
1840
1825
|
|
|
1841
1826
|
set height(value: number) {
|
|
1842
1827
|
if (this.props.height !== value) {
|
|
1828
|
+
this.textureCoords = undefined;
|
|
1843
1829
|
this.props.height = value;
|
|
1844
1830
|
this.setUpdateType(UpdateType.Local);
|
|
1845
1831
|
|
|
1846
|
-
if (this.props.rtt) {
|
|
1847
|
-
this.
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1832
|
+
if (this.props.rtt === true) {
|
|
1833
|
+
this.framebufferDimensions!.height = value;
|
|
1834
|
+
this.texture = this.stage.txManager.createTexture(
|
|
1835
|
+
'RenderTexture',
|
|
1836
|
+
this.framebufferDimensions!,
|
|
1837
|
+
);
|
|
1851
1838
|
|
|
1852
1839
|
this.setUpdateType(UpdateType.RenderTexture);
|
|
1853
1840
|
}
|
|
@@ -1874,7 +1861,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1874
1861
|
set scaleX(value: number) {
|
|
1875
1862
|
if (this.props.scaleX !== value) {
|
|
1876
1863
|
this.props.scaleX = value;
|
|
1877
|
-
this.setUpdateType(UpdateType.
|
|
1864
|
+
this.setUpdateType(UpdateType.Local);
|
|
1878
1865
|
}
|
|
1879
1866
|
}
|
|
1880
1867
|
|
|
@@ -1885,7 +1872,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1885
1872
|
set scaleY(value: number) {
|
|
1886
1873
|
if (this.props.scaleY !== value) {
|
|
1887
1874
|
this.props.scaleY = value;
|
|
1888
|
-
this.setUpdateType(UpdateType.
|
|
1875
|
+
this.setUpdateType(UpdateType.Local);
|
|
1889
1876
|
}
|
|
1890
1877
|
}
|
|
1891
1878
|
|
|
@@ -1966,7 +1953,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1966
1953
|
set rotation(value: number) {
|
|
1967
1954
|
if (this.props.rotation !== value) {
|
|
1968
1955
|
this.props.rotation = value;
|
|
1969
|
-
this.setUpdateType(UpdateType.
|
|
1956
|
+
this.setUpdateType(UpdateType.Local);
|
|
1970
1957
|
}
|
|
1971
1958
|
}
|
|
1972
1959
|
|
|
@@ -1994,11 +1981,20 @@ export class CoreNode extends EventEmitter {
|
|
|
1994
1981
|
}
|
|
1995
1982
|
|
|
1996
1983
|
get boundsMargin(): number | [number, number, number, number] | null {
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
1984
|
+
const props = this.props;
|
|
1985
|
+
if (props.boundsMargin !== null) {
|
|
1986
|
+
return props.boundsMargin;
|
|
1987
|
+
}
|
|
1988
|
+
|
|
1989
|
+
const parent = this.parent;
|
|
1990
|
+
if (parent !== null) {
|
|
1991
|
+
const margin = parent.boundsMargin;
|
|
1992
|
+
if (margin !== undefined) {
|
|
1993
|
+
return margin;
|
|
1994
|
+
}
|
|
1995
|
+
}
|
|
1996
|
+
|
|
1997
|
+
return this.stage.boundsMargin;
|
|
2002
1998
|
}
|
|
2003
1999
|
|
|
2004
2000
|
set boundsMargin(value: number | [number, number, number, number] | null) {
|
|
@@ -2035,11 +2031,18 @@ export class CoreNode extends EventEmitter {
|
|
|
2035
2031
|
}
|
|
2036
2032
|
|
|
2037
2033
|
set color(value: number) {
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2034
|
+
const p = this.props;
|
|
2035
|
+
if (p.color === value) return;
|
|
2036
|
+
|
|
2037
|
+
p.color = value;
|
|
2038
|
+
|
|
2039
|
+
const has = value > 0;
|
|
2040
|
+
this.hasColorProps = has;
|
|
2041
|
+
|
|
2042
|
+
if (p.colorTop !== value) this.colorTop = value;
|
|
2043
|
+
if (p.colorBottom !== value) this.colorBottom = value;
|
|
2044
|
+
if (p.colorLeft !== value) this.colorLeft = value;
|
|
2045
|
+
if (p.colorRight !== value) this.colorRight = value;
|
|
2043
2046
|
|
|
2044
2047
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2045
2048
|
}
|
|
@@ -2054,6 +2057,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2054
2057
|
this.colorTr = value;
|
|
2055
2058
|
}
|
|
2056
2059
|
this.props.colorTop = value;
|
|
2060
|
+
this.hasColorProps = value > 0;
|
|
2057
2061
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2058
2062
|
}
|
|
2059
2063
|
|
|
@@ -2067,6 +2071,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2067
2071
|
this.colorBr = value;
|
|
2068
2072
|
}
|
|
2069
2073
|
this.props.colorBottom = value;
|
|
2074
|
+
this.hasColorProps = value > 0;
|
|
2070
2075
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2071
2076
|
}
|
|
2072
2077
|
|
|
@@ -2080,6 +2085,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2080
2085
|
this.colorBl = value;
|
|
2081
2086
|
}
|
|
2082
2087
|
this.props.colorLeft = value;
|
|
2088
|
+
this.hasColorProps = value > 0;
|
|
2083
2089
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2084
2090
|
}
|
|
2085
2091
|
|
|
@@ -2093,6 +2099,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2093
2099
|
this.colorBr = value;
|
|
2094
2100
|
}
|
|
2095
2101
|
this.props.colorRight = value;
|
|
2102
|
+
this.hasColorProps = value > 0;
|
|
2096
2103
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2097
2104
|
}
|
|
2098
2105
|
|
|
@@ -2102,6 +2109,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2102
2109
|
|
|
2103
2110
|
set colorTl(value: number) {
|
|
2104
2111
|
this.props.colorTl = value;
|
|
2112
|
+
this.hasColorProps = value > 0;
|
|
2105
2113
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2106
2114
|
}
|
|
2107
2115
|
|
|
@@ -2111,6 +2119,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2111
2119
|
|
|
2112
2120
|
set colorTr(value: number) {
|
|
2113
2121
|
this.props.colorTr = value;
|
|
2122
|
+
this.hasColorProps = value > 0;
|
|
2114
2123
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2115
2124
|
}
|
|
2116
2125
|
|
|
@@ -2120,6 +2129,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2120
2129
|
|
|
2121
2130
|
set colorBl(value: number) {
|
|
2122
2131
|
this.props.colorBl = value;
|
|
2132
|
+
this.hasColorProps = value > 0;
|
|
2123
2133
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2124
2134
|
}
|
|
2125
2135
|
|
|
@@ -2129,6 +2139,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2129
2139
|
|
|
2130
2140
|
set colorBr(value: number) {
|
|
2131
2141
|
this.props.colorBr = value;
|
|
2142
|
+
this.hasColorProps = value > 0;
|
|
2132
2143
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2133
2144
|
}
|
|
2134
2145
|
|
|
@@ -2170,10 +2181,6 @@ export class CoreNode extends EventEmitter {
|
|
|
2170
2181
|
this.props.parent = newParent;
|
|
2171
2182
|
if (oldParent) {
|
|
2172
2183
|
const index = oldParent.children.indexOf(this);
|
|
2173
|
-
assertTruthy(
|
|
2174
|
-
index !== -1,
|
|
2175
|
-
"CoreNode.parent: Node not found in old parent's children!",
|
|
2176
|
-
);
|
|
2177
2184
|
oldParent.children.splice(index, 1);
|
|
2178
2185
|
oldParent.setUpdateType(
|
|
2179
2186
|
UpdateType.Children | UpdateType.ZIndexSortedChildren,
|
|
@@ -2193,26 +2200,11 @@ export class CoreNode extends EventEmitter {
|
|
|
2193
2200
|
this.applyRTTInheritance(newParent);
|
|
2194
2201
|
}
|
|
2195
2202
|
}
|
|
2196
|
-
this.updateScaleRotateTransform();
|
|
2197
2203
|
|
|
2198
2204
|
// fetch render bounds from parent
|
|
2199
2205
|
this.setUpdateType(UpdateType.RenderBounds | UpdateType.Children);
|
|
2200
2206
|
}
|
|
2201
2207
|
|
|
2202
|
-
get preventCleanup(): boolean {
|
|
2203
|
-
return this.props.textureOptions.preventCleanup || false;
|
|
2204
|
-
}
|
|
2205
|
-
|
|
2206
|
-
set preventCleanup(value: boolean) {
|
|
2207
|
-
if (isProductionEnvironment() === false) {
|
|
2208
|
-
console.warn(
|
|
2209
|
-
'CoreNode.preventCleanup: Is deprecated and will be removed in upcoming release, please use textureOptions.preventCleanup instead',
|
|
2210
|
-
);
|
|
2211
|
-
}
|
|
2212
|
-
|
|
2213
|
-
this.props.textureOptions.preventCleanup = value;
|
|
2214
|
-
}
|
|
2215
|
-
|
|
2216
2208
|
get rtt(): boolean {
|
|
2217
2209
|
return this.props.rtt;
|
|
2218
2210
|
}
|
|
@@ -2237,11 +2229,14 @@ export class CoreNode extends EventEmitter {
|
|
|
2237
2229
|
}
|
|
2238
2230
|
}
|
|
2239
2231
|
private initRenderTexture() {
|
|
2240
|
-
this.
|
|
2232
|
+
this.framebufferDimensions = {
|
|
2241
2233
|
width: this.width,
|
|
2242
2234
|
height: this.height,
|
|
2243
|
-
}
|
|
2244
|
-
|
|
2235
|
+
};
|
|
2236
|
+
this.texture = this.stage.txManager.createTexture(
|
|
2237
|
+
'RenderTexture',
|
|
2238
|
+
this.framebufferDimensions,
|
|
2239
|
+
);
|
|
2245
2240
|
this.stage.renderer.renderToTexture(this);
|
|
2246
2241
|
}
|
|
2247
2242
|
|
|
@@ -2251,6 +2246,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2251
2246
|
|
|
2252
2247
|
this.hasRTTupdates = false;
|
|
2253
2248
|
this.texture = null;
|
|
2249
|
+
this.framebufferDimensions = null;
|
|
2254
2250
|
}
|
|
2255
2251
|
|
|
2256
2252
|
private markChildrenWithRTT(node: CoreNode | null = null) {
|
|
@@ -2300,13 +2296,17 @@ export class CoreNode extends EventEmitter {
|
|
|
2300
2296
|
return;
|
|
2301
2297
|
}
|
|
2302
2298
|
if (shader === null) {
|
|
2299
|
+
this.hasShaderUpdater = false;
|
|
2303
2300
|
this.props.shader = this.stage.defShaderNode;
|
|
2304
2301
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
2305
2302
|
return;
|
|
2306
2303
|
}
|
|
2307
|
-
shader.
|
|
2304
|
+
if (shader.shaderKey !== 'default') {
|
|
2305
|
+
this.hasShaderUpdater = shader.update !== undefined;
|
|
2306
|
+
shader.attachNode(this);
|
|
2307
|
+
}
|
|
2308
2308
|
this.props.shader = shader;
|
|
2309
|
-
this.setUpdateType(UpdateType.IsRenderable);
|
|
2309
|
+
this.setUpdateType(UpdateType.IsRenderable | UpdateType.RecalcUniforms);
|
|
2310
2310
|
}
|
|
2311
2311
|
|
|
2312
2312
|
get src(): string | null {
|
|
@@ -2382,16 +2382,14 @@ export class CoreNode extends EventEmitter {
|
|
|
2382
2382
|
}
|
|
2383
2383
|
|
|
2384
2384
|
/**
|
|
2385
|
-
* Returns the framebuffer dimensions of the
|
|
2386
|
-
* If the node has a render texture, the dimensions are the same as the node's dimensions.
|
|
2387
|
-
* If the node does not have a render texture, the dimensions are inherited from the parent.
|
|
2388
|
-
* If the node parent has a render texture and the node is a render texture, the nodes dimensions are used.
|
|
2385
|
+
* Returns the framebuffer dimensions of the RTT parent
|
|
2389
2386
|
*/
|
|
2390
|
-
get
|
|
2391
|
-
if (this.
|
|
2392
|
-
return this.
|
|
2387
|
+
get parentFramebufferDimensions(): Dimensions {
|
|
2388
|
+
if (this.rttParent !== null) {
|
|
2389
|
+
return this.rttParent.framebufferDimensions as Dimensions;
|
|
2393
2390
|
}
|
|
2394
|
-
|
|
2391
|
+
this.rttParent = this.findParentRTTNode() as CoreNode;
|
|
2392
|
+
return this.rttParent.framebufferDimensions as Dimensions;
|
|
2395
2393
|
}
|
|
2396
2394
|
|
|
2397
2395
|
/**
|
|
@@ -2419,10 +2417,10 @@ export class CoreNode extends EventEmitter {
|
|
|
2419
2417
|
|
|
2420
2418
|
const oldTexture = this.props.texture;
|
|
2421
2419
|
if (oldTexture) {
|
|
2422
|
-
oldTexture.setRenderableOwner(this, false);
|
|
2423
2420
|
this.unloadTexture();
|
|
2424
2421
|
}
|
|
2425
2422
|
|
|
2423
|
+
this.textureCoords = undefined;
|
|
2426
2424
|
this.props.texture = value;
|
|
2427
2425
|
if (value !== null) {
|
|
2428
2426
|
value.setRenderableOwner(this, this.isRenderable);
|
|
@@ -2440,6 +2438,23 @@ export class CoreNode extends EventEmitter {
|
|
|
2440
2438
|
return this.props.textureOptions;
|
|
2441
2439
|
}
|
|
2442
2440
|
|
|
2441
|
+
set interactive(value: boolean | undefined) {
|
|
2442
|
+
this.props.interactive = value;
|
|
2443
|
+
// Update Stage's interactive Set
|
|
2444
|
+
if (value === true) {
|
|
2445
|
+
this.stage.interactiveNodes.add(this);
|
|
2446
|
+
}
|
|
2447
|
+
}
|
|
2448
|
+
|
|
2449
|
+
get interactive(): boolean | undefined {
|
|
2450
|
+
return this.props.interactive;
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2453
|
+
setRTTUpdates(type: number) {
|
|
2454
|
+
this.hasRTTupdates = true;
|
|
2455
|
+
this.parent?.setRTTUpdates(type);
|
|
2456
|
+
}
|
|
2457
|
+
|
|
2443
2458
|
get strictBounds(): boolean {
|
|
2444
2459
|
return this.props.strictBounds;
|
|
2445
2460
|
}
|