@lightningjs/renderer 3.0.0-beta18 → 3.0.0-beta19
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/dist/src/core/Autosizer.d.ts +29 -0
- package/dist/src/core/Autosizer.js +178 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +44 -26
- package/dist/src/core/CoreNode.js +253 -150
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +1 -0
- package/dist/src/core/CoreTextNode.js +8 -4
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +16 -2
- package/dist/src/core/CoreTextureManager.js +38 -51
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +18 -2
- package/dist/src/core/Stage.js +44 -14
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +2 -4
- package/dist/src/core/TextureMemoryManager.js +80 -95
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +11 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +34 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -67
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.js +2 -2
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +3 -1
- package/dist/src/core/renderers/CoreRenderer.js +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +6 -0
- package/dist/src/core/renderers/CoreShaderNode.js +2 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +1 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js +4 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +6 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +11 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +51 -14
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +2 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +57 -61
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +12 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +3 -1
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +3 -2
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +3 -2
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +2 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.js +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +2 -3
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +7 -1
- package/dist/src/core/textures/ImageTexture.js +20 -36
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +1 -1
- package/dist/src/core/textures/NoiseTexture.js +2 -2
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +1 -1
- package/dist/src/core/textures/RenderTexture.js +2 -2
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +2 -4
- package/dist/src/core/textures/SubTexture.js +13 -31
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +67 -8
- package/dist/src/core/textures/Texture.js +127 -15
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +15 -2
- package/dist/src/main-api/Renderer.js +19 -12
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreNode.test.ts +0 -1
- package/src/core/CoreNode.ts +296 -177
- package/src/core/CoreTextNode.ts +9 -4
- package/src/core/CoreTextureManager.ts +69 -57
- package/src/core/Stage.ts +51 -17
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +95 -122
- package/src/core/lib/WebGlContextWrapper.ts +40 -0
- package/src/core/lib/collectionUtils.ts +118 -0
- package/src/core/lib/textureCompression.ts +433 -77
- package/src/core/platforms/web/WebPlatform.ts +2 -2
- package/src/core/renderers/CoreContextTexture.ts +1 -0
- package/src/core/renderers/CoreRenderer.ts +3 -2
- package/src/core/renderers/CoreShaderNode.ts +7 -0
- package/src/core/renderers/canvas/CanvasTexture.ts +5 -1
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +8 -0
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +58 -15
- package/src/core/renderers/webgl/WebGlRenderOp.ts +4 -1
- package/src/core/renderers/webgl/WebGlRenderer.ts +66 -68
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +16 -0
- package/src/core/shaders/webgl/Rounded.ts +3 -1
- package/src/core/shaders/webgl/RoundedWithBorder.ts +3 -2
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +3 -2
- package/src/core/shaders/webgl/RoundedWithShadow.ts +2 -1
- package/src/core/text-rendering/SdfFontHandler.ts +1 -1
- package/src/core/textures/ColorTexture.ts +6 -4
- package/src/core/textures/ImageTexture.ts +35 -42
- package/src/core/textures/NoiseTexture.ts +6 -4
- package/src/core/textures/RenderTexture.ts +6 -4
- package/src/core/textures/SubTexture.ts +17 -38
- package/src/core/textures/Texture.ts +159 -20
- package/src/main-api/Renderer.ts +36 -14
- package/dist/src/core/AutosizeManager.d.ts +0 -29
- package/dist/src/core/AutosizeManager.js +0 -171
- package/dist/src/core/AutosizeManager.js.map +0 -1
- package/dist/src/core/animations/Animation.d.ts +0 -16
- package/dist/src/core/animations/Animation.js +0 -111
- package/dist/src/core/animations/Animation.js.map +0 -1
- package/dist/src/core/animations/CoreTransition.d.ts +0 -24
- package/dist/src/core/animations/CoreTransition.js +0 -63
- package/dist/src/core/animations/CoreTransition.js.map +0 -1
- package/dist/src/core/animations/Playback.d.ts +0 -62
- package/dist/src/core/animations/Playback.js +0 -155
- package/dist/src/core/animations/Playback.js.map +0 -1
- package/dist/src/core/animations/Transition.d.ts +0 -25
- package/dist/src/core/animations/Transition.js +0 -63
- package/dist/src/core/animations/Transition.js.map +0 -1
- package/dist/src/core/animations/utils.d.ts +0 -2
- package/dist/src/core/animations/utils.js +0 -137
- package/dist/src/core/animations/utils.js.map +0 -1
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -81
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -17
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -125
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -19
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -58
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -69
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -272
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -645
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -78
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -202
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -84
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -108
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -408
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -126
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -148
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -134
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -143
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
package/src/core/CoreNode.ts
CHANGED
|
@@ -57,6 +57,11 @@ import type { IAnimationController } from '../common/IAnimationController.js';
|
|
|
57
57
|
import { CoreAnimation } from './animations/CoreAnimation.js';
|
|
58
58
|
import { CoreAnimationController } from './animations/CoreAnimationController.js';
|
|
59
59
|
import type { CoreShaderNode } from './renderers/CoreShaderNode.js';
|
|
60
|
+
import {
|
|
61
|
+
bucketSortByZIndex,
|
|
62
|
+
incrementalRepositionByZIndex,
|
|
63
|
+
removeChild,
|
|
64
|
+
} from './lib/collectionUtils.js';
|
|
60
65
|
|
|
61
66
|
export enum CoreNodeRenderState {
|
|
62
67
|
Init = 0,
|
|
@@ -65,6 +70,14 @@ export enum CoreNodeRenderState {
|
|
|
65
70
|
InViewport = 8,
|
|
66
71
|
}
|
|
67
72
|
|
|
73
|
+
const NO_CLIPPING_RECT: RectWithValid = {
|
|
74
|
+
x: 0,
|
|
75
|
+
y: 0,
|
|
76
|
+
width: 0,
|
|
77
|
+
height: 0,
|
|
78
|
+
valid: false,
|
|
79
|
+
};
|
|
80
|
+
|
|
68
81
|
const CoreNodeRenderStateMap: Map<CoreNodeRenderState, string> = new Map();
|
|
69
82
|
CoreNodeRenderStateMap.set(CoreNodeRenderState.Init, 'init');
|
|
70
83
|
CoreNodeRenderStateMap.set(CoreNodeRenderState.OutOfBounds, 'outOfBounds');
|
|
@@ -107,22 +120,13 @@ export enum UpdateType {
|
|
|
107
120
|
Clipping = 8,
|
|
108
121
|
|
|
109
122
|
/**
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* @remarks
|
|
113
|
-
* CoreNode Properties Updated:
|
|
114
|
-
* - `calcZIndex`
|
|
115
|
-
*/
|
|
116
|
-
CalculatedZIndex = 16,
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Z-Index Sorted Children update
|
|
123
|
+
* Sort Z-Index Children update
|
|
120
124
|
*
|
|
121
125
|
* @remarks
|
|
122
126
|
* CoreNode Properties Updated:
|
|
123
127
|
* - `children` (sorts children by their `calcZIndex`)
|
|
124
128
|
*/
|
|
125
|
-
|
|
129
|
+
SortZIndexChildren = 16,
|
|
126
130
|
|
|
127
131
|
/**
|
|
128
132
|
* Premultiplied Colors update
|
|
@@ -134,7 +138,7 @@ export enum UpdateType {
|
|
|
134
138
|
* - `premultipliedColorBl`
|
|
135
139
|
* - `premultipliedColorBr`
|
|
136
140
|
*/
|
|
137
|
-
PremultipliedColors =
|
|
141
|
+
PremultipliedColors = 32,
|
|
138
142
|
|
|
139
143
|
/**
|
|
140
144
|
* World Alpha update
|
|
@@ -143,7 +147,7 @@ export enum UpdateType {
|
|
|
143
147
|
* CoreNode Properties Updated:
|
|
144
148
|
* - `worldAlpha` = `parent.worldAlpha` * `alpha`
|
|
145
149
|
*/
|
|
146
|
-
WorldAlpha =
|
|
150
|
+
WorldAlpha = 64,
|
|
147
151
|
|
|
148
152
|
/**
|
|
149
153
|
* Render State update
|
|
@@ -152,7 +156,7 @@ export enum UpdateType {
|
|
|
152
156
|
* CoreNode Properties Updated:
|
|
153
157
|
* - `renderState`
|
|
154
158
|
*/
|
|
155
|
-
RenderState =
|
|
159
|
+
RenderState = 128,
|
|
156
160
|
|
|
157
161
|
/**
|
|
158
162
|
* Is Renderable update
|
|
@@ -161,27 +165,27 @@ export enum UpdateType {
|
|
|
161
165
|
* CoreNode Properties Updated:
|
|
162
166
|
* - `isRenderable`
|
|
163
167
|
*/
|
|
164
|
-
IsRenderable =
|
|
168
|
+
IsRenderable = 256,
|
|
165
169
|
|
|
166
170
|
/**
|
|
167
171
|
* Render Texture update
|
|
168
172
|
*/
|
|
169
|
-
RenderTexture =
|
|
173
|
+
RenderTexture = 512,
|
|
170
174
|
|
|
171
175
|
/**
|
|
172
176
|
* Track if parent has render texture
|
|
173
177
|
*/
|
|
174
|
-
ParentRenderTexture =
|
|
178
|
+
ParentRenderTexture = 1024,
|
|
175
179
|
|
|
176
180
|
/**
|
|
177
181
|
* Render Bounds update
|
|
178
182
|
*/
|
|
179
|
-
RenderBounds =
|
|
183
|
+
RenderBounds = 2048,
|
|
180
184
|
|
|
181
185
|
/**
|
|
182
186
|
* RecalcUniforms
|
|
183
187
|
*/
|
|
184
|
-
RecalcUniforms =
|
|
188
|
+
RecalcUniforms = 4096,
|
|
185
189
|
|
|
186
190
|
/**
|
|
187
191
|
* None
|
|
@@ -191,7 +195,7 @@ export enum UpdateType {
|
|
|
191
195
|
/**
|
|
192
196
|
* All
|
|
193
197
|
*/
|
|
194
|
-
All =
|
|
198
|
+
All = 7167,
|
|
195
199
|
}
|
|
196
200
|
|
|
197
201
|
/**
|
|
@@ -390,7 +394,11 @@ export interface CoreNodeProps {
|
|
|
390
394
|
* The Node's z-index.
|
|
391
395
|
*
|
|
392
396
|
* @remarks
|
|
393
|
-
*
|
|
397
|
+
* Max z-index of children under the same parent determines which child
|
|
398
|
+
* is rendered on top. Higher z-index means the Node is rendered on top of
|
|
399
|
+
* children with lower z-index.
|
|
400
|
+
*
|
|
401
|
+
* Max value is 1000 and min value is -1000. Values outside of this range will be clamped.
|
|
394
402
|
*/
|
|
395
403
|
zIndex: number;
|
|
396
404
|
/**
|
|
@@ -447,7 +455,6 @@ export interface CoreNodeProps {
|
|
|
447
455
|
* settings being defaults)
|
|
448
456
|
*/
|
|
449
457
|
src: string | null;
|
|
450
|
-
zIndexLocked: number;
|
|
451
458
|
/**
|
|
452
459
|
* Scale to render the Node at
|
|
453
460
|
*
|
|
@@ -707,7 +714,13 @@ export class CoreNode extends EventEmitter {
|
|
|
707
714
|
readonly props: CoreNodeProps;
|
|
708
715
|
|
|
709
716
|
private hasShaderUpdater = false;
|
|
717
|
+
public hasShaderTimeFn = false;
|
|
710
718
|
private hasColorProps = false;
|
|
719
|
+
private zIndexMin = 0;
|
|
720
|
+
private zIndexMax = 0;
|
|
721
|
+
|
|
722
|
+
public previousZIndex = -1;
|
|
723
|
+
public zIndexSortList: CoreNode[] = [];
|
|
711
724
|
|
|
712
725
|
public updateType = UpdateType.All;
|
|
713
726
|
public childUpdateType = UpdateType.None;
|
|
@@ -728,7 +741,6 @@ export class CoreNode extends EventEmitter {
|
|
|
728
741
|
valid: false,
|
|
729
742
|
};
|
|
730
743
|
public textureCoords?: TextureCoords;
|
|
731
|
-
public updateTextureCoords: boolean = false;
|
|
732
744
|
public updateShaderUniforms: boolean = false;
|
|
733
745
|
public isRenderable = false;
|
|
734
746
|
public renderState: CoreNodeRenderState = CoreNodeRenderState.Init;
|
|
@@ -751,7 +763,6 @@ export class CoreNode extends EventEmitter {
|
|
|
751
763
|
|
|
752
764
|
constructor(readonly stage: Stage, props: CoreNodeProps) {
|
|
753
765
|
super();
|
|
754
|
-
|
|
755
766
|
const p = (this.props = {} as CoreNodeProps);
|
|
756
767
|
|
|
757
768
|
// Fast-path assign only known keys
|
|
@@ -784,7 +795,6 @@ export class CoreNode extends EventEmitter {
|
|
|
784
795
|
p.pivot = props.pivot;
|
|
785
796
|
|
|
786
797
|
p.zIndex = props.zIndex;
|
|
787
|
-
p.zIndexLocked = props.zIndexLocked;
|
|
788
798
|
p.textureOptions = props.textureOptions;
|
|
789
799
|
|
|
790
800
|
p.data = props.data;
|
|
@@ -794,15 +804,23 @@ export class CoreNode extends EventEmitter {
|
|
|
794
804
|
p.srcWidth = props.srcWidth;
|
|
795
805
|
p.srcHeight = props.srcHeight;
|
|
796
806
|
|
|
797
|
-
p.parent =
|
|
807
|
+
p.parent = props.parent;
|
|
798
808
|
p.texture = null;
|
|
799
809
|
p.shader = null;
|
|
800
810
|
p.src = null;
|
|
801
811
|
p.rtt = false;
|
|
802
812
|
p.boundsMargin = null;
|
|
803
813
|
|
|
814
|
+
// Only set non-default values
|
|
815
|
+
if (props.zIndex !== 0) {
|
|
816
|
+
this.zIndex = props.zIndex;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
if (props.parent !== null) {
|
|
820
|
+
props.parent.addChild(this);
|
|
821
|
+
}
|
|
822
|
+
|
|
804
823
|
// Assign props to instances
|
|
805
|
-
this.parent = props.parent;
|
|
806
824
|
this.texture = props.texture;
|
|
807
825
|
this.shader = props.shader;
|
|
808
826
|
this.src = props.src;
|
|
@@ -824,8 +842,7 @@ export class CoreNode extends EventEmitter {
|
|
|
824
842
|
|
|
825
843
|
//#region Textures
|
|
826
844
|
loadTexture(): void {
|
|
827
|
-
|
|
828
|
-
if (!texture) {
|
|
845
|
+
if (this.props.texture === null) {
|
|
829
846
|
return;
|
|
830
847
|
}
|
|
831
848
|
|
|
@@ -833,36 +850,44 @@ export class CoreNode extends EventEmitter {
|
|
|
833
850
|
// so that users get a consistent event experience.
|
|
834
851
|
// We do this in a microtask to allow listeners to be attached in the same
|
|
835
852
|
// synchronous task after calling loadTexture()
|
|
836
|
-
queueMicrotask(
|
|
837
|
-
|
|
838
|
-
this.stage.txManager.loadTexture(texture);
|
|
839
|
-
}
|
|
853
|
+
queueMicrotask(this.loadTextureTask);
|
|
854
|
+
}
|
|
840
855
|
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
if (this.parentHasRenderTexture) {
|
|
853
|
-
this.notifyParentRTTOfUpdate();
|
|
854
|
-
return;
|
|
855
|
-
}
|
|
856
|
+
/**
|
|
857
|
+
* Task for queueMicrotask to loadTexture
|
|
858
|
+
*
|
|
859
|
+
* @remarks
|
|
860
|
+
* This method is called in a microtask to release the texture.
|
|
861
|
+
*/
|
|
862
|
+
private loadTextureTask = (): void => {
|
|
863
|
+
const texture = this.texture as Texture;
|
|
864
|
+
if (this.textureOptions.preload === true) {
|
|
865
|
+
this.stage.txManager.loadTexture(texture);
|
|
866
|
+
}
|
|
856
867
|
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
868
|
+
texture.preventCleanup = this.props.textureOptions?.preventCleanup ?? false;
|
|
869
|
+
texture.on('loaded', this.onTextureLoaded);
|
|
870
|
+
texture.on('failed', this.onTextureFailed);
|
|
871
|
+
texture.on('freed', this.onTextureFreed);
|
|
872
|
+
|
|
873
|
+
// If the parent is a render texture, the initial texture status
|
|
874
|
+
// will be set to freed until the texture is processed by the
|
|
875
|
+
// Render RTT nodes. So we only need to listen fo changes and
|
|
876
|
+
// no need to check the texture.state until we restructure how
|
|
877
|
+
// textures are being processed.
|
|
878
|
+
if (this.parentHasRenderTexture) {
|
|
879
|
+
this.notifyParentRTTOfUpdate();
|
|
880
|
+
return;
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
if (texture.state === 'loaded') {
|
|
884
|
+
this.onTextureLoaded(texture, texture.dimensions!);
|
|
885
|
+
} else if (texture.state === 'failed') {
|
|
886
|
+
this.onTextureFailed(texture, texture.error!);
|
|
887
|
+
} else if (texture.state === 'freed') {
|
|
888
|
+
this.onTextureFreed(texture);
|
|
889
|
+
}
|
|
890
|
+
};
|
|
866
891
|
|
|
867
892
|
unloadTexture(): void {
|
|
868
893
|
if (this.texture === null) {
|
|
@@ -873,7 +898,7 @@ export class CoreNode extends EventEmitter {
|
|
|
873
898
|
texture.off('loaded', this.onTextureLoaded);
|
|
874
899
|
texture.off('failed', this.onTextureFailed);
|
|
875
900
|
texture.off('freed', this.onTextureFreed);
|
|
876
|
-
texture.setRenderableOwner(this, false);
|
|
901
|
+
texture.setRenderableOwner(this._id, false);
|
|
877
902
|
}
|
|
878
903
|
|
|
879
904
|
protected onTextureLoaded: TextureLoadedEventHandler = (_, dimensions) => {
|
|
@@ -901,6 +926,13 @@ export class CoreNode extends EventEmitter {
|
|
|
901
926
|
} satisfies NodeTextureLoadedPayload);
|
|
902
927
|
}
|
|
903
928
|
|
|
929
|
+
if (
|
|
930
|
+
this.stage.calculateTextureCoord === true &&
|
|
931
|
+
this.props.textureOptions !== null
|
|
932
|
+
) {
|
|
933
|
+
this.textureCoords = this.stage.renderer.getTextureCoords!(this);
|
|
934
|
+
}
|
|
935
|
+
|
|
904
936
|
// Trigger a local update if the texture is loaded and the resizeMode is 'contain'
|
|
905
937
|
if (this.props.textureOptions?.resizeMode?.type === 'contain') {
|
|
906
938
|
this.setUpdateType(UpdateType.Local);
|
|
@@ -911,6 +943,7 @@ export class CoreNode extends EventEmitter {
|
|
|
911
943
|
// immediately set isRenderable to false, so that we handle the error
|
|
912
944
|
// without waiting for the next frame loop
|
|
913
945
|
this.isRenderable = false;
|
|
946
|
+
this.updateTextureOwnership(false);
|
|
914
947
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
915
948
|
|
|
916
949
|
// If parent has a render texture, flag that we need to update
|
|
@@ -918,16 +951,22 @@ export class CoreNode extends EventEmitter {
|
|
|
918
951
|
this.notifyParentRTTOfUpdate();
|
|
919
952
|
}
|
|
920
953
|
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
954
|
+
if (
|
|
955
|
+
this.texture !== null &&
|
|
956
|
+
this.texture.retryCount > this.texture.maxRetryCount
|
|
957
|
+
) {
|
|
958
|
+
this.emit('failed', {
|
|
959
|
+
type: 'texture',
|
|
960
|
+
error,
|
|
961
|
+
} satisfies NodeTextureFailedPayload);
|
|
962
|
+
}
|
|
925
963
|
};
|
|
926
964
|
|
|
927
965
|
private onTextureFreed: TextureFreedEventHandler = () => {
|
|
928
966
|
// immediately set isRenderable to false, so that we handle the error
|
|
929
967
|
// without waiting for the next frame loop
|
|
930
968
|
this.isRenderable = false;
|
|
969
|
+
this.updateTextureOwnership(false);
|
|
931
970
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
932
971
|
|
|
933
972
|
// If parent has a render texture, flag that we need to update
|
|
@@ -958,10 +997,6 @@ export class CoreNode extends EventEmitter {
|
|
|
958
997
|
parent.setUpdateType(UpdateType.Children);
|
|
959
998
|
}
|
|
960
999
|
|
|
961
|
-
sortChildren() {
|
|
962
|
-
this.children.sort((a, b) => a.calcZIndex - b.calcZIndex);
|
|
963
|
-
}
|
|
964
|
-
|
|
965
1000
|
updateLocalTransform() {
|
|
966
1001
|
const p = this.props;
|
|
967
1002
|
const { x, y, w, h } = p;
|
|
@@ -1032,10 +1067,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1032
1067
|
* @param delta
|
|
1033
1068
|
*/
|
|
1034
1069
|
update(delta: number, parentClippingRect: RectWithValid): void {
|
|
1035
|
-
if (this.updateType === UpdateType.None) {
|
|
1036
|
-
return;
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
1070
|
const props = this.props;
|
|
1040
1071
|
const parent = props.parent;
|
|
1041
1072
|
const parentHasRenderTexture = this.parentHasRenderTexture;
|
|
@@ -1046,6 +1077,9 @@ export class CoreNode extends EventEmitter {
|
|
|
1046
1077
|
let updateType = this.updateType;
|
|
1047
1078
|
let childUpdateType = this.childUpdateType;
|
|
1048
1079
|
let updateParent = false;
|
|
1080
|
+
// reset update type
|
|
1081
|
+
this.updateType = 0;
|
|
1082
|
+
this.childUpdateType = 0;
|
|
1049
1083
|
|
|
1050
1084
|
if (updateType & UpdateType.Local) {
|
|
1051
1085
|
this.updateLocalTransform();
|
|
@@ -1197,15 +1231,10 @@ export class CoreNode extends EventEmitter {
|
|
|
1197
1231
|
if (updateParent === true) {
|
|
1198
1232
|
parent!.setUpdateType(UpdateType.Children);
|
|
1199
1233
|
}
|
|
1200
|
-
// No need to update zIndex if there is no parent
|
|
1201
|
-
if (updateType & UpdateType.CalculatedZIndex && parent !== null) {
|
|
1202
|
-
this.calculateZIndex();
|
|
1203
|
-
// Tell parent to re-sort children
|
|
1204
|
-
parent.setUpdateType(UpdateType.ZIndexSortedChildren);
|
|
1205
|
-
}
|
|
1206
1234
|
|
|
1207
1235
|
if (this.renderState === CoreNodeRenderState.OutOfBounds) {
|
|
1208
1236
|
updateType &= ~UpdateType.RenderBounds; // remove render bounds update
|
|
1237
|
+
this.updateType = updateType;
|
|
1209
1238
|
return;
|
|
1210
1239
|
}
|
|
1211
1240
|
|
|
@@ -1223,26 +1252,23 @@ export class CoreNode extends EventEmitter {
|
|
|
1223
1252
|
}
|
|
1224
1253
|
|
|
1225
1254
|
if (updateType & UpdateType.Children && this.children.length > 0) {
|
|
1255
|
+
let childClippingRect = this.clippingRect;
|
|
1256
|
+
|
|
1257
|
+
if (this.rtt === true) {
|
|
1258
|
+
childClippingRect = NO_CLIPPING_RECT;
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1226
1261
|
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
1227
1262
|
const child = this.children[i] as CoreNode;
|
|
1228
1263
|
|
|
1229
|
-
|
|
1264
|
+
if (childUpdateType !== 0) {
|
|
1265
|
+
child.setUpdateType(childUpdateType);
|
|
1266
|
+
}
|
|
1230
1267
|
|
|
1231
1268
|
if (child.updateType === 0) {
|
|
1232
1269
|
continue;
|
|
1233
1270
|
}
|
|
1234
1271
|
|
|
1235
|
-
let childClippingRect = this.clippingRect;
|
|
1236
|
-
if (this.rtt === true) {
|
|
1237
|
-
childClippingRect = {
|
|
1238
|
-
x: 0,
|
|
1239
|
-
y: 0,
|
|
1240
|
-
width: 0,
|
|
1241
|
-
height: 0,
|
|
1242
|
-
valid: false,
|
|
1243
|
-
};
|
|
1244
|
-
}
|
|
1245
|
-
|
|
1246
1272
|
child.update(delta, childClippingRect);
|
|
1247
1273
|
}
|
|
1248
1274
|
}
|
|
@@ -1254,18 +1280,12 @@ export class CoreNode extends EventEmitter {
|
|
|
1254
1280
|
this.notifyParentRTTOfUpdate();
|
|
1255
1281
|
}
|
|
1256
1282
|
|
|
1257
|
-
//
|
|
1258
|
-
|
|
1259
|
-
if (updateType & UpdateType.ZIndexSortedChildren) {
|
|
1283
|
+
//Resort children if needed
|
|
1284
|
+
if (updateType & UpdateType.SortZIndexChildren) {
|
|
1260
1285
|
// reorder z-index
|
|
1261
1286
|
this.sortChildren();
|
|
1262
1287
|
}
|
|
1263
1288
|
|
|
1264
|
-
if (this.updateTextureCoords === true) {
|
|
1265
|
-
this.updateTextureCoords = false;
|
|
1266
|
-
this.textureCoords = this.stage.renderer.getTextureCoords!(this);
|
|
1267
|
-
}
|
|
1268
|
-
|
|
1269
1289
|
// If we're out of bounds, apply the render state now
|
|
1270
1290
|
// this is done so nodes can finish their entire update loop before
|
|
1271
1291
|
// being marked as out of bounds
|
|
@@ -1282,10 +1302,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1282
1302
|
this.notifyChildrenRTTOfUpdate(renderState);
|
|
1283
1303
|
}
|
|
1284
1304
|
}
|
|
1285
|
-
|
|
1286
|
-
// reset update type
|
|
1287
|
-
this.updateType = 0;
|
|
1288
|
-
this.childUpdateType = 0;
|
|
1289
1305
|
}
|
|
1290
1306
|
|
|
1291
1307
|
private findParentRTTNode(): CoreNode | null {
|
|
@@ -1441,6 +1457,17 @@ export class CoreNode extends EventEmitter {
|
|
|
1441
1457
|
});
|
|
1442
1458
|
}
|
|
1443
1459
|
|
|
1460
|
+
/**
|
|
1461
|
+
* Checks if the node is renderable based on world alpha, dimensions and out of bounds status.
|
|
1462
|
+
*/
|
|
1463
|
+
checkBasicRenderability(): boolean {
|
|
1464
|
+
if (this.worldAlpha === 0 || this.isOutOfBounds() === true) {
|
|
1465
|
+
return false;
|
|
1466
|
+
} else {
|
|
1467
|
+
return true;
|
|
1468
|
+
}
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1444
1471
|
/**
|
|
1445
1472
|
* Updates the `isRenderable` property based on various conditions.
|
|
1446
1473
|
*/
|
|
@@ -1449,25 +1476,30 @@ export class CoreNode extends EventEmitter {
|
|
|
1449
1476
|
let needsTextureOwnership = false;
|
|
1450
1477
|
|
|
1451
1478
|
// If the node is out of bounds or has an alpha of 0, it is not renderable
|
|
1452
|
-
if (
|
|
1453
|
-
this.worldAlpha === 0 ||
|
|
1454
|
-
this.renderState <= CoreNodeRenderState.OutOfBounds
|
|
1455
|
-
) {
|
|
1479
|
+
if (this.checkBasicRenderability() === false) {
|
|
1456
1480
|
this.updateTextureOwnership(false);
|
|
1457
1481
|
this.setRenderable(false);
|
|
1458
1482
|
return;
|
|
1459
1483
|
}
|
|
1460
1484
|
|
|
1461
1485
|
if (this.texture !== null) {
|
|
1462
|
-
|
|
1486
|
+
// preemptive check for failed textures this will mark the current node as non-renderable
|
|
1487
|
+
// and will prevent further checks until the texture is reloaded or retry is reset on the texture
|
|
1488
|
+
if (this.texture.retryCount > this.texture.maxRetryCount) {
|
|
1489
|
+
// texture has failed to load, we cannot render
|
|
1490
|
+
this.updateTextureOwnership(false);
|
|
1491
|
+
this.setRenderable(false);
|
|
1492
|
+
return;
|
|
1493
|
+
}
|
|
1463
1494
|
|
|
1495
|
+
needsTextureOwnership = true;
|
|
1464
1496
|
// we're only renderable if the texture state is loaded
|
|
1465
1497
|
newIsRenderable = this.texture.state === 'loaded';
|
|
1466
1498
|
} else if (
|
|
1467
1499
|
// check shader
|
|
1468
1500
|
(this.props.shader !== null || this.hasColorProps === true) &&
|
|
1469
1501
|
// check dimensions
|
|
1470
|
-
|
|
1502
|
+
this.hasDimensions() === true
|
|
1471
1503
|
) {
|
|
1472
1504
|
// This mean we have dimensions and a color set, so we can render a ColorTexture
|
|
1473
1505
|
if (
|
|
@@ -1497,21 +1529,27 @@ export class CoreNode extends EventEmitter {
|
|
|
1497
1529
|
isRenderable,
|
|
1498
1530
|
} satisfies NodeRenderablePayload);
|
|
1499
1531
|
}
|
|
1500
|
-
|
|
1501
|
-
if (
|
|
1502
|
-
isRenderable === true &&
|
|
1503
|
-
this.stage.calculateTextureCoord === true &&
|
|
1504
|
-
this.textureCoords === undefined
|
|
1505
|
-
) {
|
|
1506
|
-
this.updateTextureCoords = true;
|
|
1507
|
-
}
|
|
1508
1532
|
}
|
|
1509
1533
|
|
|
1510
1534
|
/**
|
|
1511
1535
|
* Changes the renderable state of the node.
|
|
1512
1536
|
*/
|
|
1513
1537
|
updateTextureOwnership(isRenderable: boolean) {
|
|
1514
|
-
this.texture?.setRenderableOwner(this, isRenderable);
|
|
1538
|
+
this.texture?.setRenderableOwner(this._id, isRenderable);
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
/**
|
|
1542
|
+
* Checks if the node is out of the viewport bounds.
|
|
1543
|
+
*/
|
|
1544
|
+
isOutOfBounds(): boolean {
|
|
1545
|
+
return this.renderState <= CoreNodeRenderState.OutOfBounds;
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
/**
|
|
1549
|
+
* Checks if the node has dimensions (width/height)
|
|
1550
|
+
*/
|
|
1551
|
+
hasDimensions(): boolean {
|
|
1552
|
+
return this.props.w !== 0 && this.props.h !== 0;
|
|
1515
1553
|
}
|
|
1516
1554
|
|
|
1517
1555
|
calculateRenderCoords() {
|
|
@@ -1645,18 +1683,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1645
1683
|
}
|
|
1646
1684
|
}
|
|
1647
1685
|
|
|
1648
|
-
calculateZIndex(): void {
|
|
1649
|
-
const props = this.props;
|
|
1650
|
-
const z = props.zIndex || 0;
|
|
1651
|
-
const p = props.parent?.zIndex || 0;
|
|
1652
|
-
|
|
1653
|
-
let zIndex = z;
|
|
1654
|
-
if (props.parent?.zIndexLocked) {
|
|
1655
|
-
zIndex = z < p ? z : p;
|
|
1656
|
-
}
|
|
1657
|
-
this.calcZIndex = zIndex;
|
|
1658
|
-
}
|
|
1659
|
-
|
|
1660
1686
|
/**
|
|
1661
1687
|
* Destroy the node and cleanup all resources
|
|
1662
1688
|
*/
|
|
@@ -1670,6 +1696,9 @@ export class CoreNode extends EventEmitter {
|
|
|
1670
1696
|
this.destroyed = true;
|
|
1671
1697
|
this.unloadTexture();
|
|
1672
1698
|
this.isRenderable = false;
|
|
1699
|
+
if (this.hasShaderTimeFn === true) {
|
|
1700
|
+
this.stage.untrackTimedNode(this);
|
|
1701
|
+
}
|
|
1673
1702
|
|
|
1674
1703
|
// Kill children
|
|
1675
1704
|
while (this.children.length > 0) {
|
|
@@ -1678,11 +1707,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1678
1707
|
|
|
1679
1708
|
const parent = this.parent;
|
|
1680
1709
|
if (parent !== null) {
|
|
1681
|
-
|
|
1682
|
-
parent.children.splice(index, 1);
|
|
1683
|
-
parent.setUpdateType(
|
|
1684
|
-
UpdateType.Children | UpdateType.ZIndexSortedChildren,
|
|
1685
|
-
);
|
|
1710
|
+
parent.removeChild(this);
|
|
1686
1711
|
}
|
|
1687
1712
|
|
|
1688
1713
|
this.props.parent = null;
|
|
@@ -1691,6 +1716,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1691
1716
|
if (this.rtt === true) {
|
|
1692
1717
|
this.stage.renderer.removeRTTNode(this);
|
|
1693
1718
|
}
|
|
1719
|
+
this.stage.requestRender();
|
|
1694
1720
|
}
|
|
1695
1721
|
|
|
1696
1722
|
renderQuads(renderer: CoreRenderer): void {
|
|
@@ -1704,6 +1730,8 @@ export class CoreNode extends EventEmitter {
|
|
|
1704
1730
|
const t = this.globalTransform!;
|
|
1705
1731
|
const coords = this.renderCoords;
|
|
1706
1732
|
const texture = p.texture || this.stage.defaultTexture;
|
|
1733
|
+
const textureCoords =
|
|
1734
|
+
this.textureCoords || this.stage.renderer.defaultTextureCoords;
|
|
1707
1735
|
|
|
1708
1736
|
// There is a race condition where the texture can be null
|
|
1709
1737
|
// with RTT nodes. Adding this defensively to avoid errors.
|
|
@@ -1720,7 +1748,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1720
1748
|
colorBr: this.premultipliedColorBr,
|
|
1721
1749
|
texture,
|
|
1722
1750
|
textureOptions: p.textureOptions,
|
|
1723
|
-
textureCoords:
|
|
1751
|
+
textureCoords: textureCoords,
|
|
1724
1752
|
shader: p.shader as CoreShaderNode<any>,
|
|
1725
1753
|
alpha: this.worldAlpha,
|
|
1726
1754
|
clippingRect: this.clippingRect,
|
|
@@ -1737,9 +1765,102 @@ export class CoreNode extends EventEmitter {
|
|
|
1737
1765
|
framebufferDimensions: this.parentHasRenderTexture
|
|
1738
1766
|
? this.parentFramebufferDimensions
|
|
1739
1767
|
: null,
|
|
1768
|
+
time: this.hasShaderTimeFn === true ? this.getTimerValue() : null,
|
|
1740
1769
|
});
|
|
1741
1770
|
}
|
|
1742
1771
|
|
|
1772
|
+
getTimerValue(): number {
|
|
1773
|
+
if (typeof this.shader!.time === 'function') {
|
|
1774
|
+
return this.shader!.time(this.stage);
|
|
1775
|
+
}
|
|
1776
|
+
return this.stage.elapsedTime;
|
|
1777
|
+
}
|
|
1778
|
+
|
|
1779
|
+
sortChildren() {
|
|
1780
|
+
const changedCount = this.zIndexSortList.length;
|
|
1781
|
+
if (changedCount === 0) {
|
|
1782
|
+
return;
|
|
1783
|
+
}
|
|
1784
|
+
const children = this.children;
|
|
1785
|
+
let min = Infinity;
|
|
1786
|
+
let max = -Infinity;
|
|
1787
|
+
// find min and max zIndex
|
|
1788
|
+
for (let i = 0; i < children.length; i++) {
|
|
1789
|
+
const zIndex = children[i]!.props.zIndex;
|
|
1790
|
+
if (zIndex < min) {
|
|
1791
|
+
min = zIndex;
|
|
1792
|
+
}
|
|
1793
|
+
if (zIndex > max) {
|
|
1794
|
+
max = zIndex;
|
|
1795
|
+
}
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
// update min and max zIndex
|
|
1799
|
+
this.zIndexMin = min;
|
|
1800
|
+
this.zIndexMax = max;
|
|
1801
|
+
|
|
1802
|
+
// if min and max are the same, no need to sort
|
|
1803
|
+
if (min === max) {
|
|
1804
|
+
return;
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
const n = children.length;
|
|
1808
|
+
// decide whether to use incremental sort or bucket sort
|
|
1809
|
+
const useIncremental = changedCount <= 2 || changedCount < n * 0.05;
|
|
1810
|
+
|
|
1811
|
+
// when changed count is less than 2 or 5% of total children, use incremental sort
|
|
1812
|
+
if (useIncremental === true) {
|
|
1813
|
+
incrementalRepositionByZIndex(this.zIndexSortList, children);
|
|
1814
|
+
} else {
|
|
1815
|
+
bucketSortByZIndex(children, min);
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
this.zIndexSortList.length = 0;
|
|
1819
|
+
this.zIndexSortList = [];
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
removeChild(node: CoreNode, targetParent: CoreNode | null = null) {
|
|
1823
|
+
if (
|
|
1824
|
+
targetParent === null &&
|
|
1825
|
+
this.props.rtt === true &&
|
|
1826
|
+
this.parentHasRenderTexture === true
|
|
1827
|
+
) {
|
|
1828
|
+
node.clearRTTInheritance();
|
|
1829
|
+
}
|
|
1830
|
+
removeChild(node, this.children);
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
addChild(node: CoreNode, previousParent: CoreNode | null = null) {
|
|
1834
|
+
const inRttCluster =
|
|
1835
|
+
this.props.rtt === true || this.parentHasRenderTexture === true;
|
|
1836
|
+
const children = this.children;
|
|
1837
|
+
const min = this.zIndexMin;
|
|
1838
|
+
const max = this.zIndexMax;
|
|
1839
|
+
const zIndex = node.zIndex;
|
|
1840
|
+
|
|
1841
|
+
node.parentHasRenderTexture = inRttCluster;
|
|
1842
|
+
if (previousParent !== null) {
|
|
1843
|
+
const previousParentInRttCluster =
|
|
1844
|
+
previousParent.props.rtt === true ||
|
|
1845
|
+
previousParent.parentHasRenderTexture === true;
|
|
1846
|
+
if (inRttCluster === false && previousParentInRttCluster === true) {
|
|
1847
|
+
// update child RTT status
|
|
1848
|
+
node.clearRTTInheritance();
|
|
1849
|
+
}
|
|
1850
|
+
}
|
|
1851
|
+
|
|
1852
|
+
if (inRttCluster === true) {
|
|
1853
|
+
node.markChildrenWithRTT(this);
|
|
1854
|
+
}
|
|
1855
|
+
|
|
1856
|
+
children.push(node);
|
|
1857
|
+
|
|
1858
|
+
if (min !== max || (zIndex !== min && zIndex !== max)) {
|
|
1859
|
+
this.zIndexSortList.push(node);
|
|
1860
|
+
this.setUpdateType(UpdateType.SortZIndexChildren);
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
|
|
1743
1864
|
//#region Properties
|
|
1744
1865
|
get id(): number {
|
|
1745
1866
|
return this._id;
|
|
@@ -1797,7 +1918,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1797
1918
|
|
|
1798
1919
|
set w(value: number) {
|
|
1799
1920
|
if (this.props.w !== value) {
|
|
1800
|
-
this.updateTextureCoords = true;
|
|
1801
1921
|
this.props.w = value;
|
|
1802
1922
|
this.setUpdateType(UpdateType.Local);
|
|
1803
1923
|
|
|
@@ -1819,7 +1939,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1819
1939
|
|
|
1820
1940
|
set h(value: number) {
|
|
1821
1941
|
if (this.props.h !== value) {
|
|
1822
|
-
this.updateTextureCoords = true;
|
|
1823
1942
|
this.props.h = value;
|
|
1824
1943
|
this.setUpdateType(UpdateType.Local);
|
|
1825
1944
|
|
|
@@ -2137,33 +2256,39 @@ export class CoreNode extends EventEmitter {
|
|
|
2137
2256
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
2138
2257
|
}
|
|
2139
2258
|
|
|
2140
|
-
// we're only interested in parent zIndex to test
|
|
2141
|
-
// if we should use node zIndex is higher then parent zIndex
|
|
2142
|
-
get zIndexLocked(): number {
|
|
2143
|
-
return this.props.zIndexLocked || 0;
|
|
2144
|
-
}
|
|
2145
|
-
|
|
2146
|
-
set zIndexLocked(value: number) {
|
|
2147
|
-
this.props.zIndexLocked = value;
|
|
2148
|
-
this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);
|
|
2149
|
-
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
2150
|
-
this.children[i]!.setUpdateType(UpdateType.CalculatedZIndex);
|
|
2151
|
-
}
|
|
2152
|
-
}
|
|
2153
|
-
|
|
2154
2259
|
get zIndex(): number {
|
|
2155
2260
|
return this.props.zIndex;
|
|
2156
2261
|
}
|
|
2157
2262
|
|
|
2158
2263
|
set zIndex(value: number) {
|
|
2159
|
-
|
|
2160
|
-
|
|
2264
|
+
let sanitizedValue = value;
|
|
2265
|
+
if (isNaN(sanitizedValue) || Number.isFinite(sanitizedValue) === false) {
|
|
2266
|
+
console.warn(
|
|
2267
|
+
`zIndex was set to an invalid value: ${value}, defaulting to 0`,
|
|
2268
|
+
);
|
|
2269
|
+
sanitizedValue = 0;
|
|
2161
2270
|
}
|
|
2162
2271
|
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2272
|
+
//Clamp to safe integer range
|
|
2273
|
+
if (sanitizedValue > Number.MAX_SAFE_INTEGER) {
|
|
2274
|
+
sanitizedValue = 1000;
|
|
2275
|
+
} else if (sanitizedValue < Number.MIN_SAFE_INTEGER) {
|
|
2276
|
+
sanitizedValue = -1000;
|
|
2277
|
+
}
|
|
2278
|
+
|
|
2279
|
+
if (this.props.zIndex === sanitizedValue) {
|
|
2280
|
+
return;
|
|
2281
|
+
}
|
|
2282
|
+
this.previousZIndex = this.props.zIndex;
|
|
2283
|
+
this.props.zIndex = sanitizedValue;
|
|
2284
|
+
const parent = this.parent;
|
|
2285
|
+
if (parent !== null) {
|
|
2286
|
+
const min = parent.zIndexMin;
|
|
2287
|
+
const max = parent.zIndexMax;
|
|
2288
|
+
if (min !== max || sanitizedValue < min || sanitizedValue > max) {
|
|
2289
|
+
parent.zIndexSortList.push(this);
|
|
2290
|
+
parent.setUpdateType(UpdateType.SortZIndexChildren);
|
|
2291
|
+
}
|
|
2167
2292
|
}
|
|
2168
2293
|
}
|
|
2169
2294
|
|
|
@@ -2178,29 +2303,13 @@ export class CoreNode extends EventEmitter {
|
|
|
2178
2303
|
}
|
|
2179
2304
|
this.props.parent = newParent;
|
|
2180
2305
|
if (oldParent) {
|
|
2181
|
-
|
|
2182
|
-
oldParent.children.splice(index, 1);
|
|
2183
|
-
oldParent.setUpdateType(
|
|
2184
|
-
UpdateType.Children | UpdateType.ZIndexSortedChildren,
|
|
2185
|
-
);
|
|
2306
|
+
oldParent.removeChild(this, newParent);
|
|
2186
2307
|
}
|
|
2187
|
-
if (newParent) {
|
|
2188
|
-
newParent.
|
|
2189
|
-
// Since this node has a new parent, to be safe, have it do a full update.
|
|
2190
|
-
this.setUpdateType(UpdateType.All);
|
|
2191
|
-
// Tell parent that it's children need to be updated and sorted.
|
|
2192
|
-
newParent.setUpdateType(
|
|
2193
|
-
UpdateType.Children | UpdateType.ZIndexSortedChildren,
|
|
2194
|
-
);
|
|
2195
|
-
|
|
2196
|
-
// If the new parent has an RTT enabled, apply RTT inheritance
|
|
2197
|
-
if (newParent.rtt || newParent.parentHasRenderTexture) {
|
|
2198
|
-
this.applyRTTInheritance(newParent);
|
|
2199
|
-
}
|
|
2308
|
+
if (newParent !== null) {
|
|
2309
|
+
newParent.addChild(this, oldParent);
|
|
2200
2310
|
}
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
this.setUpdateType(UpdateType.RenderBounds | UpdateType.Children);
|
|
2311
|
+
//since this node has a new parent, recalc global and render bounds
|
|
2312
|
+
this.setUpdateType(UpdateType.Global | UpdateType.RenderBounds);
|
|
2204
2313
|
}
|
|
2205
2314
|
|
|
2206
2315
|
get rtt(): boolean {
|
|
@@ -2301,8 +2410,15 @@ export class CoreNode extends EventEmitter {
|
|
|
2301
2410
|
}
|
|
2302
2411
|
if (shader.shaderKey !== 'default') {
|
|
2303
2412
|
this.hasShaderUpdater = shader.update !== undefined;
|
|
2413
|
+
this.hasShaderTimeFn = shader.time !== undefined;
|
|
2304
2414
|
shader.attachNode(this);
|
|
2305
2415
|
}
|
|
2416
|
+
|
|
2417
|
+
if (this.hasShaderTimeFn === true) {
|
|
2418
|
+
this.stage.trackTimedNode(this);
|
|
2419
|
+
} else {
|
|
2420
|
+
this.stage.untrackTimedNode(this);
|
|
2421
|
+
}
|
|
2306
2422
|
this.props.shader = shader;
|
|
2307
2423
|
this.setUpdateType(UpdateType.IsRenderable | UpdateType.RecalcUniforms);
|
|
2308
2424
|
}
|
|
@@ -2421,7 +2537,7 @@ export class CoreNode extends EventEmitter {
|
|
|
2421
2537
|
this.textureCoords = undefined;
|
|
2422
2538
|
this.props.texture = value;
|
|
2423
2539
|
if (value !== null) {
|
|
2424
|
-
value.setRenderableOwner(this, this.isRenderable);
|
|
2540
|
+
value.setRenderableOwner(this._id, this.isRenderable);
|
|
2425
2541
|
this.loadTexture();
|
|
2426
2542
|
}
|
|
2427
2543
|
|
|
@@ -2430,6 +2546,9 @@ export class CoreNode extends EventEmitter {
|
|
|
2430
2546
|
|
|
2431
2547
|
set textureOptions(value: TextureOptions) {
|
|
2432
2548
|
this.props.textureOptions = value;
|
|
2549
|
+
if (this.stage.calculateTextureCoord === true && value !== null) {
|
|
2550
|
+
this.textureCoords = this.stage.renderer.getTextureCoords!(this);
|
|
2551
|
+
}
|
|
2433
2552
|
}
|
|
2434
2553
|
|
|
2435
2554
|
get textureOptions(): TextureOptions {
|