@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
|
@@ -24,6 +24,7 @@ import { Matrix3d } from './lib/Matrix3d.js';
|
|
|
24
24
|
import { RenderCoords } from './lib/RenderCoords.js';
|
|
25
25
|
import { CoreAnimation } from './animations/CoreAnimation.js';
|
|
26
26
|
import { CoreAnimationController } from './animations/CoreAnimationController.js';
|
|
27
|
+
import { bucketSortByZIndex, incrementalRepositionByZIndex, removeChild, } from './lib/collectionUtils.js';
|
|
27
28
|
export var CoreNodeRenderState;
|
|
28
29
|
(function (CoreNodeRenderState) {
|
|
29
30
|
CoreNodeRenderState[CoreNodeRenderState["Init"] = 0] = "Init";
|
|
@@ -31,6 +32,13 @@ export var CoreNodeRenderState;
|
|
|
31
32
|
CoreNodeRenderState[CoreNodeRenderState["InBounds"] = 4] = "InBounds";
|
|
32
33
|
CoreNodeRenderState[CoreNodeRenderState["InViewport"] = 8] = "InViewport";
|
|
33
34
|
})(CoreNodeRenderState || (CoreNodeRenderState = {}));
|
|
35
|
+
const NO_CLIPPING_RECT = {
|
|
36
|
+
x: 0,
|
|
37
|
+
y: 0,
|
|
38
|
+
width: 0,
|
|
39
|
+
height: 0,
|
|
40
|
+
valid: false,
|
|
41
|
+
};
|
|
34
42
|
const CoreNodeRenderStateMap = new Map();
|
|
35
43
|
CoreNodeRenderStateMap.set(CoreNodeRenderState.Init, 'init');
|
|
36
44
|
CoreNodeRenderStateMap.set(CoreNodeRenderState.OutOfBounds, 'outOfBounds');
|
|
@@ -69,21 +77,13 @@ export var UpdateType;
|
|
|
69
77
|
*/
|
|
70
78
|
UpdateType[UpdateType["Clipping"] = 8] = "Clipping";
|
|
71
79
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* @remarks
|
|
75
|
-
* CoreNode Properties Updated:
|
|
76
|
-
* - `calcZIndex`
|
|
77
|
-
*/
|
|
78
|
-
UpdateType[UpdateType["CalculatedZIndex"] = 16] = "CalculatedZIndex";
|
|
79
|
-
/**
|
|
80
|
-
* Z-Index Sorted Children update
|
|
80
|
+
* Sort Z-Index Children update
|
|
81
81
|
*
|
|
82
82
|
* @remarks
|
|
83
83
|
* CoreNode Properties Updated:
|
|
84
84
|
* - `children` (sorts children by their `calcZIndex`)
|
|
85
85
|
*/
|
|
86
|
-
UpdateType[UpdateType["
|
|
86
|
+
UpdateType[UpdateType["SortZIndexChildren"] = 16] = "SortZIndexChildren";
|
|
87
87
|
/**
|
|
88
88
|
* Premultiplied Colors update
|
|
89
89
|
*
|
|
@@ -94,7 +94,7 @@ export var UpdateType;
|
|
|
94
94
|
* - `premultipliedColorBl`
|
|
95
95
|
* - `premultipliedColorBr`
|
|
96
96
|
*/
|
|
97
|
-
UpdateType[UpdateType["PremultipliedColors"] =
|
|
97
|
+
UpdateType[UpdateType["PremultipliedColors"] = 32] = "PremultipliedColors";
|
|
98
98
|
/**
|
|
99
99
|
* World Alpha update
|
|
100
100
|
*
|
|
@@ -102,7 +102,7 @@ export var UpdateType;
|
|
|
102
102
|
* CoreNode Properties Updated:
|
|
103
103
|
* - `worldAlpha` = `parent.worldAlpha` * `alpha`
|
|
104
104
|
*/
|
|
105
|
-
UpdateType[UpdateType["WorldAlpha"] =
|
|
105
|
+
UpdateType[UpdateType["WorldAlpha"] = 64] = "WorldAlpha";
|
|
106
106
|
/**
|
|
107
107
|
* Render State update
|
|
108
108
|
*
|
|
@@ -110,7 +110,7 @@ export var UpdateType;
|
|
|
110
110
|
* CoreNode Properties Updated:
|
|
111
111
|
* - `renderState`
|
|
112
112
|
*/
|
|
113
|
-
UpdateType[UpdateType["RenderState"] =
|
|
113
|
+
UpdateType[UpdateType["RenderState"] = 128] = "RenderState";
|
|
114
114
|
/**
|
|
115
115
|
* Is Renderable update
|
|
116
116
|
*
|
|
@@ -118,23 +118,23 @@ export var UpdateType;
|
|
|
118
118
|
* CoreNode Properties Updated:
|
|
119
119
|
* - `isRenderable`
|
|
120
120
|
*/
|
|
121
|
-
UpdateType[UpdateType["IsRenderable"] =
|
|
121
|
+
UpdateType[UpdateType["IsRenderable"] = 256] = "IsRenderable";
|
|
122
122
|
/**
|
|
123
123
|
* Render Texture update
|
|
124
124
|
*/
|
|
125
|
-
UpdateType[UpdateType["RenderTexture"] =
|
|
125
|
+
UpdateType[UpdateType["RenderTexture"] = 512] = "RenderTexture";
|
|
126
126
|
/**
|
|
127
127
|
* Track if parent has render texture
|
|
128
128
|
*/
|
|
129
|
-
UpdateType[UpdateType["ParentRenderTexture"] =
|
|
129
|
+
UpdateType[UpdateType["ParentRenderTexture"] = 1024] = "ParentRenderTexture";
|
|
130
130
|
/**
|
|
131
131
|
* Render Bounds update
|
|
132
132
|
*/
|
|
133
|
-
UpdateType[UpdateType["RenderBounds"] =
|
|
133
|
+
UpdateType[UpdateType["RenderBounds"] = 2048] = "RenderBounds";
|
|
134
134
|
/**
|
|
135
135
|
* RecalcUniforms
|
|
136
136
|
*/
|
|
137
|
-
UpdateType[UpdateType["RecalcUniforms"] =
|
|
137
|
+
UpdateType[UpdateType["RecalcUniforms"] = 4096] = "RecalcUniforms";
|
|
138
138
|
/**
|
|
139
139
|
* None
|
|
140
140
|
*/
|
|
@@ -142,7 +142,7 @@ export var UpdateType;
|
|
|
142
142
|
/**
|
|
143
143
|
* All
|
|
144
144
|
*/
|
|
145
|
-
UpdateType[UpdateType["All"] =
|
|
145
|
+
UpdateType[UpdateType["All"] = 7167] = "All";
|
|
146
146
|
})(UpdateType || (UpdateType = {}));
|
|
147
147
|
/**
|
|
148
148
|
* A visual Node in the Renderer scene graph.
|
|
@@ -158,7 +158,12 @@ export class CoreNode extends EventEmitter {
|
|
|
158
158
|
_id = getNewId();
|
|
159
159
|
props;
|
|
160
160
|
hasShaderUpdater = false;
|
|
161
|
+
hasShaderTimeFn = false;
|
|
161
162
|
hasColorProps = false;
|
|
163
|
+
zIndexMin = 0;
|
|
164
|
+
zIndexMax = 0;
|
|
165
|
+
previousZIndex = -1;
|
|
166
|
+
zIndexSortList = [];
|
|
162
167
|
updateType = UpdateType.All;
|
|
163
168
|
childUpdateType = UpdateType.None;
|
|
164
169
|
globalTransform;
|
|
@@ -177,7 +182,6 @@ export class CoreNode extends EventEmitter {
|
|
|
177
182
|
valid: false,
|
|
178
183
|
};
|
|
179
184
|
textureCoords;
|
|
180
|
-
updateTextureCoords = false;
|
|
181
185
|
updateShaderUniforms = false;
|
|
182
186
|
isRenderable = false;
|
|
183
187
|
renderState = CoreNodeRenderState.Init;
|
|
@@ -226,7 +230,6 @@ export class CoreNode extends EventEmitter {
|
|
|
226
230
|
p.mount = props.mount;
|
|
227
231
|
p.pivot = props.pivot;
|
|
228
232
|
p.zIndex = props.zIndex;
|
|
229
|
-
p.zIndexLocked = props.zIndexLocked;
|
|
230
233
|
p.textureOptions = props.textureOptions;
|
|
231
234
|
p.data = props.data;
|
|
232
235
|
p.imageType = props.imageType;
|
|
@@ -234,14 +237,20 @@ export class CoreNode extends EventEmitter {
|
|
|
234
237
|
p.srcY = props.srcY;
|
|
235
238
|
p.srcWidth = props.srcWidth;
|
|
236
239
|
p.srcHeight = props.srcHeight;
|
|
237
|
-
p.parent =
|
|
240
|
+
p.parent = props.parent;
|
|
238
241
|
p.texture = null;
|
|
239
242
|
p.shader = null;
|
|
240
243
|
p.src = null;
|
|
241
244
|
p.rtt = false;
|
|
242
245
|
p.boundsMargin = null;
|
|
246
|
+
// Only set non-default values
|
|
247
|
+
if (props.zIndex !== 0) {
|
|
248
|
+
this.zIndex = props.zIndex;
|
|
249
|
+
}
|
|
250
|
+
if (props.parent !== null) {
|
|
251
|
+
props.parent.addChild(this);
|
|
252
|
+
}
|
|
243
253
|
// Assign props to instances
|
|
244
|
-
this.parent = props.parent;
|
|
245
254
|
this.texture = props.texture;
|
|
246
255
|
this.shader = props.shader;
|
|
247
256
|
this.src = props.src;
|
|
@@ -258,43 +267,49 @@ export class CoreNode extends EventEmitter {
|
|
|
258
267
|
}
|
|
259
268
|
//#region Textures
|
|
260
269
|
loadTexture() {
|
|
261
|
-
|
|
262
|
-
if (!texture) {
|
|
270
|
+
if (this.props.texture === null) {
|
|
263
271
|
return;
|
|
264
272
|
}
|
|
265
273
|
// If texture is already loaded / failed, trigger loaded event manually
|
|
266
274
|
// so that users get a consistent event experience.
|
|
267
275
|
// We do this in a microtask to allow listeners to be attached in the same
|
|
268
276
|
// synchronous task after calling loadTexture()
|
|
269
|
-
queueMicrotask(
|
|
270
|
-
if (this.textureOptions.preload === true) {
|
|
271
|
-
this.stage.txManager.loadTexture(texture);
|
|
272
|
-
}
|
|
273
|
-
texture.preventCleanup =
|
|
274
|
-
this.props.textureOptions?.preventCleanup ?? false;
|
|
275
|
-
texture.on('loaded', this.onTextureLoaded);
|
|
276
|
-
texture.on('failed', this.onTextureFailed);
|
|
277
|
-
texture.on('freed', this.onTextureFreed);
|
|
278
|
-
// If the parent is a render texture, the initial texture status
|
|
279
|
-
// will be set to freed until the texture is processed by the
|
|
280
|
-
// Render RTT nodes. So we only need to listen fo changes and
|
|
281
|
-
// no need to check the texture.state until we restructure how
|
|
282
|
-
// textures are being processed.
|
|
283
|
-
if (this.parentHasRenderTexture) {
|
|
284
|
-
this.notifyParentRTTOfUpdate();
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
if (texture.state === 'loaded') {
|
|
288
|
-
this.onTextureLoaded(texture, texture.dimensions);
|
|
289
|
-
}
|
|
290
|
-
else if (texture.state === 'failed') {
|
|
291
|
-
this.onTextureFailed(texture, texture.error);
|
|
292
|
-
}
|
|
293
|
-
else if (texture.state === 'freed') {
|
|
294
|
-
this.onTextureFreed(texture);
|
|
295
|
-
}
|
|
296
|
-
});
|
|
277
|
+
queueMicrotask(this.loadTextureTask);
|
|
297
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* Task for queueMicrotask to loadTexture
|
|
281
|
+
*
|
|
282
|
+
* @remarks
|
|
283
|
+
* This method is called in a microtask to release the texture.
|
|
284
|
+
*/
|
|
285
|
+
loadTextureTask = () => {
|
|
286
|
+
const texture = this.texture;
|
|
287
|
+
if (this.textureOptions.preload === true) {
|
|
288
|
+
this.stage.txManager.loadTexture(texture);
|
|
289
|
+
}
|
|
290
|
+
texture.preventCleanup = this.props.textureOptions?.preventCleanup ?? false;
|
|
291
|
+
texture.on('loaded', this.onTextureLoaded);
|
|
292
|
+
texture.on('failed', this.onTextureFailed);
|
|
293
|
+
texture.on('freed', this.onTextureFreed);
|
|
294
|
+
// If the parent is a render texture, the initial texture status
|
|
295
|
+
// will be set to freed until the texture is processed by the
|
|
296
|
+
// Render RTT nodes. So we only need to listen fo changes and
|
|
297
|
+
// no need to check the texture.state until we restructure how
|
|
298
|
+
// textures are being processed.
|
|
299
|
+
if (this.parentHasRenderTexture) {
|
|
300
|
+
this.notifyParentRTTOfUpdate();
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (texture.state === 'loaded') {
|
|
304
|
+
this.onTextureLoaded(texture, texture.dimensions);
|
|
305
|
+
}
|
|
306
|
+
else if (texture.state === 'failed') {
|
|
307
|
+
this.onTextureFailed(texture, texture.error);
|
|
308
|
+
}
|
|
309
|
+
else if (texture.state === 'freed') {
|
|
310
|
+
this.onTextureFreed(texture);
|
|
311
|
+
}
|
|
312
|
+
};
|
|
298
313
|
unloadTexture() {
|
|
299
314
|
if (this.texture === null) {
|
|
300
315
|
return;
|
|
@@ -303,7 +318,7 @@ export class CoreNode extends EventEmitter {
|
|
|
303
318
|
texture.off('loaded', this.onTextureLoaded);
|
|
304
319
|
texture.off('failed', this.onTextureFailed);
|
|
305
320
|
texture.off('freed', this.onTextureFreed);
|
|
306
|
-
texture.setRenderableOwner(this, false);
|
|
321
|
+
texture.setRenderableOwner(this._id, false);
|
|
307
322
|
}
|
|
308
323
|
onTextureLoaded = (_, dimensions) => {
|
|
309
324
|
if (this.autosize === true) {
|
|
@@ -325,6 +340,10 @@ export class CoreNode extends EventEmitter {
|
|
|
325
340
|
dimensions,
|
|
326
341
|
});
|
|
327
342
|
}
|
|
343
|
+
if (this.stage.calculateTextureCoord === true &&
|
|
344
|
+
this.props.textureOptions !== null) {
|
|
345
|
+
this.textureCoords = this.stage.renderer.getTextureCoords(this);
|
|
346
|
+
}
|
|
328
347
|
// Trigger a local update if the texture is loaded and the resizeMode is 'contain'
|
|
329
348
|
if (this.props.textureOptions?.resizeMode?.type === 'contain') {
|
|
330
349
|
this.setUpdateType(UpdateType.Local);
|
|
@@ -334,20 +353,25 @@ export class CoreNode extends EventEmitter {
|
|
|
334
353
|
// immediately set isRenderable to false, so that we handle the error
|
|
335
354
|
// without waiting for the next frame loop
|
|
336
355
|
this.isRenderable = false;
|
|
356
|
+
this.updateTextureOwnership(false);
|
|
337
357
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
338
358
|
// If parent has a render texture, flag that we need to update
|
|
339
359
|
if (this.parentHasRenderTexture) {
|
|
340
360
|
this.notifyParentRTTOfUpdate();
|
|
341
361
|
}
|
|
342
|
-
this.
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
362
|
+
if (this.texture !== null &&
|
|
363
|
+
this.texture.retryCount > this.texture.maxRetryCount) {
|
|
364
|
+
this.emit('failed', {
|
|
365
|
+
type: 'texture',
|
|
366
|
+
error,
|
|
367
|
+
});
|
|
368
|
+
}
|
|
346
369
|
};
|
|
347
370
|
onTextureFreed = () => {
|
|
348
371
|
// immediately set isRenderable to false, so that we handle the error
|
|
349
372
|
// without waiting for the next frame loop
|
|
350
373
|
this.isRenderable = false;
|
|
374
|
+
this.updateTextureOwnership(false);
|
|
351
375
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
352
376
|
// If parent has a render texture, flag that we need to update
|
|
353
377
|
if (this.parentHasRenderTexture) {
|
|
@@ -373,9 +397,6 @@ export class CoreNode extends EventEmitter {
|
|
|
373
397
|
return;
|
|
374
398
|
parent.setUpdateType(UpdateType.Children);
|
|
375
399
|
}
|
|
376
|
-
sortChildren() {
|
|
377
|
-
this.children.sort((a, b) => a.calcZIndex - b.calcZIndex);
|
|
378
|
-
}
|
|
379
400
|
updateLocalTransform() {
|
|
380
401
|
const p = this.props;
|
|
381
402
|
const { x, y, w, h } = p;
|
|
@@ -433,9 +454,6 @@ export class CoreNode extends EventEmitter {
|
|
|
433
454
|
* @param delta
|
|
434
455
|
*/
|
|
435
456
|
update(delta, parentClippingRect) {
|
|
436
|
-
if (this.updateType === UpdateType.None) {
|
|
437
|
-
return;
|
|
438
|
-
}
|
|
439
457
|
const props = this.props;
|
|
440
458
|
const parent = props.parent;
|
|
441
459
|
const parentHasRenderTexture = this.parentHasRenderTexture;
|
|
@@ -444,6 +462,9 @@ export class CoreNode extends EventEmitter {
|
|
|
444
462
|
let updateType = this.updateType;
|
|
445
463
|
let childUpdateType = this.childUpdateType;
|
|
446
464
|
let updateParent = false;
|
|
465
|
+
// reset update type
|
|
466
|
+
this.updateType = 0;
|
|
467
|
+
this.childUpdateType = 0;
|
|
447
468
|
if (updateType & UpdateType.Local) {
|
|
448
469
|
this.updateLocalTransform();
|
|
449
470
|
updateType |= UpdateType.Global;
|
|
@@ -549,14 +570,9 @@ export class CoreNode extends EventEmitter {
|
|
|
549
570
|
if (updateParent === true) {
|
|
550
571
|
parent.setUpdateType(UpdateType.Children);
|
|
551
572
|
}
|
|
552
|
-
// No need to update zIndex if there is no parent
|
|
553
|
-
if (updateType & UpdateType.CalculatedZIndex && parent !== null) {
|
|
554
|
-
this.calculateZIndex();
|
|
555
|
-
// Tell parent to re-sort children
|
|
556
|
-
parent.setUpdateType(UpdateType.ZIndexSortedChildren);
|
|
557
|
-
}
|
|
558
573
|
if (this.renderState === CoreNodeRenderState.OutOfBounds) {
|
|
559
574
|
updateType &= ~UpdateType.RenderBounds; // remove render bounds update
|
|
575
|
+
this.updateType = updateType;
|
|
560
576
|
return;
|
|
561
577
|
}
|
|
562
578
|
if (updateType & UpdateType.RecalcUniforms &&
|
|
@@ -569,22 +585,18 @@ export class CoreNode extends EventEmitter {
|
|
|
569
585
|
this.shader.update();
|
|
570
586
|
}
|
|
571
587
|
if (updateType & UpdateType.Children && this.children.length > 0) {
|
|
588
|
+
let childClippingRect = this.clippingRect;
|
|
589
|
+
if (this.rtt === true) {
|
|
590
|
+
childClippingRect = NO_CLIPPING_RECT;
|
|
591
|
+
}
|
|
572
592
|
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
573
593
|
const child = this.children[i];
|
|
574
|
-
|
|
594
|
+
if (childUpdateType !== 0) {
|
|
595
|
+
child.setUpdateType(childUpdateType);
|
|
596
|
+
}
|
|
575
597
|
if (child.updateType === 0) {
|
|
576
598
|
continue;
|
|
577
599
|
}
|
|
578
|
-
let childClippingRect = this.clippingRect;
|
|
579
|
-
if (this.rtt === true) {
|
|
580
|
-
childClippingRect = {
|
|
581
|
-
x: 0,
|
|
582
|
-
y: 0,
|
|
583
|
-
width: 0,
|
|
584
|
-
height: 0,
|
|
585
|
-
valid: false,
|
|
586
|
-
};
|
|
587
|
-
}
|
|
588
600
|
child.update(delta, childClippingRect);
|
|
589
601
|
}
|
|
590
602
|
}
|
|
@@ -594,16 +606,11 @@ export class CoreNode extends EventEmitter {
|
|
|
594
606
|
if (parentHasRenderTexture === true) {
|
|
595
607
|
this.notifyParentRTTOfUpdate();
|
|
596
608
|
}
|
|
597
|
-
//
|
|
598
|
-
|
|
599
|
-
if (updateType & UpdateType.ZIndexSortedChildren) {
|
|
609
|
+
//Resort children if needed
|
|
610
|
+
if (updateType & UpdateType.SortZIndexChildren) {
|
|
600
611
|
// reorder z-index
|
|
601
612
|
this.sortChildren();
|
|
602
613
|
}
|
|
603
|
-
if (this.updateTextureCoords === true) {
|
|
604
|
-
this.updateTextureCoords = false;
|
|
605
|
-
this.textureCoords = this.stage.renderer.getTextureCoords(this);
|
|
606
|
-
}
|
|
607
614
|
// If we're out of bounds, apply the render state now
|
|
608
615
|
// this is done so nodes can finish their entire update loop before
|
|
609
616
|
// being marked as out of bounds
|
|
@@ -617,9 +624,6 @@ export class CoreNode extends EventEmitter {
|
|
|
617
624
|
this.notifyChildrenRTTOfUpdate(renderState);
|
|
618
625
|
}
|
|
619
626
|
}
|
|
620
|
-
// reset update type
|
|
621
|
-
this.updateType = 0;
|
|
622
|
-
this.childUpdateType = 0;
|
|
623
627
|
}
|
|
624
628
|
findParentRTTNode() {
|
|
625
629
|
let rttNode = this.parent;
|
|
@@ -730,6 +734,17 @@ export class CoreNode extends EventEmitter {
|
|
|
730
734
|
current: renderState,
|
|
731
735
|
});
|
|
732
736
|
}
|
|
737
|
+
/**
|
|
738
|
+
* Checks if the node is renderable based on world alpha, dimensions and out of bounds status.
|
|
739
|
+
*/
|
|
740
|
+
checkBasicRenderability() {
|
|
741
|
+
if (this.worldAlpha === 0 || this.isOutOfBounds() === true) {
|
|
742
|
+
return false;
|
|
743
|
+
}
|
|
744
|
+
else {
|
|
745
|
+
return true;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
733
748
|
/**
|
|
734
749
|
* Updates the `isRenderable` property based on various conditions.
|
|
735
750
|
*/
|
|
@@ -737,13 +752,20 @@ export class CoreNode extends EventEmitter {
|
|
|
737
752
|
let newIsRenderable = false;
|
|
738
753
|
let needsTextureOwnership = false;
|
|
739
754
|
// If the node is out of bounds or has an alpha of 0, it is not renderable
|
|
740
|
-
if (this.
|
|
741
|
-
this.renderState <= CoreNodeRenderState.OutOfBounds) {
|
|
755
|
+
if (this.checkBasicRenderability() === false) {
|
|
742
756
|
this.updateTextureOwnership(false);
|
|
743
757
|
this.setRenderable(false);
|
|
744
758
|
return;
|
|
745
759
|
}
|
|
746
760
|
if (this.texture !== null) {
|
|
761
|
+
// preemptive check for failed textures this will mark the current node as non-renderable
|
|
762
|
+
// and will prevent further checks until the texture is reloaded or retry is reset on the texture
|
|
763
|
+
if (this.texture.retryCount > this.texture.maxRetryCount) {
|
|
764
|
+
// texture has failed to load, we cannot render
|
|
765
|
+
this.updateTextureOwnership(false);
|
|
766
|
+
this.setRenderable(false);
|
|
767
|
+
return;
|
|
768
|
+
}
|
|
747
769
|
needsTextureOwnership = true;
|
|
748
770
|
// we're only renderable if the texture state is loaded
|
|
749
771
|
newIsRenderable = this.texture.state === 'loaded';
|
|
@@ -752,7 +774,7 @@ export class CoreNode extends EventEmitter {
|
|
|
752
774
|
// check shader
|
|
753
775
|
(this.props.shader !== null || this.hasColorProps === true) &&
|
|
754
776
|
// check dimensions
|
|
755
|
-
|
|
777
|
+
this.hasDimensions() === true) {
|
|
756
778
|
// This mean we have dimensions and a color set, so we can render a ColorTexture
|
|
757
779
|
if (this.stage.defaultTexture &&
|
|
758
780
|
this.stage.defaultTexture.state === 'loaded') {
|
|
@@ -776,17 +798,24 @@ export class CoreNode extends EventEmitter {
|
|
|
776
798
|
isRenderable,
|
|
777
799
|
});
|
|
778
800
|
}
|
|
779
|
-
if (isRenderable === true &&
|
|
780
|
-
this.stage.calculateTextureCoord === true &&
|
|
781
|
-
this.textureCoords === undefined) {
|
|
782
|
-
this.updateTextureCoords = true;
|
|
783
|
-
}
|
|
784
801
|
}
|
|
785
802
|
/**
|
|
786
803
|
* Changes the renderable state of the node.
|
|
787
804
|
*/
|
|
788
805
|
updateTextureOwnership(isRenderable) {
|
|
789
|
-
this.texture?.setRenderableOwner(this, isRenderable);
|
|
806
|
+
this.texture?.setRenderableOwner(this._id, isRenderable);
|
|
807
|
+
}
|
|
808
|
+
/**
|
|
809
|
+
* Checks if the node is out of the viewport bounds.
|
|
810
|
+
*/
|
|
811
|
+
isOutOfBounds() {
|
|
812
|
+
return this.renderState <= CoreNodeRenderState.OutOfBounds;
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Checks if the node has dimensions (width/height)
|
|
816
|
+
*/
|
|
817
|
+
hasDimensions() {
|
|
818
|
+
return this.props.w !== 0 && this.props.h !== 0;
|
|
790
819
|
}
|
|
791
820
|
calculateRenderCoords() {
|
|
792
821
|
const { w, h } = this.props;
|
|
@@ -881,16 +910,6 @@ export class CoreNode extends EventEmitter {
|
|
|
881
910
|
clippingRect.valid = true;
|
|
882
911
|
}
|
|
883
912
|
}
|
|
884
|
-
calculateZIndex() {
|
|
885
|
-
const props = this.props;
|
|
886
|
-
const z = props.zIndex || 0;
|
|
887
|
-
const p = props.parent?.zIndex || 0;
|
|
888
|
-
let zIndex = z;
|
|
889
|
-
if (props.parent?.zIndexLocked) {
|
|
890
|
-
zIndex = z < p ? z : p;
|
|
891
|
-
}
|
|
892
|
-
this.calcZIndex = zIndex;
|
|
893
|
-
}
|
|
894
913
|
/**
|
|
895
914
|
* Destroy the node and cleanup all resources
|
|
896
915
|
*/
|
|
@@ -902,21 +921,23 @@ export class CoreNode extends EventEmitter {
|
|
|
902
921
|
this.destroyed = true;
|
|
903
922
|
this.unloadTexture();
|
|
904
923
|
this.isRenderable = false;
|
|
924
|
+
if (this.hasShaderTimeFn === true) {
|
|
925
|
+
this.stage.untrackTimedNode(this);
|
|
926
|
+
}
|
|
905
927
|
// Kill children
|
|
906
928
|
while (this.children.length > 0) {
|
|
907
929
|
this.children[0].destroy();
|
|
908
930
|
}
|
|
909
931
|
const parent = this.parent;
|
|
910
932
|
if (parent !== null) {
|
|
911
|
-
|
|
912
|
-
parent.children.splice(index, 1);
|
|
913
|
-
parent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);
|
|
933
|
+
parent.removeChild(this);
|
|
914
934
|
}
|
|
915
935
|
this.props.parent = null;
|
|
916
936
|
this.props.texture = null;
|
|
917
937
|
if (this.rtt === true) {
|
|
918
938
|
this.stage.renderer.removeRTTNode(this);
|
|
919
939
|
}
|
|
940
|
+
this.stage.requestRender();
|
|
920
941
|
}
|
|
921
942
|
renderQuads(renderer) {
|
|
922
943
|
if (this.parentHasRenderTexture === true) {
|
|
@@ -928,6 +949,7 @@ export class CoreNode extends EventEmitter {
|
|
|
928
949
|
const t = this.globalTransform;
|
|
929
950
|
const coords = this.renderCoords;
|
|
930
951
|
const texture = p.texture || this.stage.defaultTexture;
|
|
952
|
+
const textureCoords = this.textureCoords || this.stage.renderer.defaultTextureCoords;
|
|
931
953
|
// There is a race condition where the texture can be null
|
|
932
954
|
// with RTT nodes. Adding this defensively to avoid errors.
|
|
933
955
|
if (texture && texture.state !== 'loaded') {
|
|
@@ -942,7 +964,7 @@ export class CoreNode extends EventEmitter {
|
|
|
942
964
|
colorBr: this.premultipliedColorBr,
|
|
943
965
|
texture,
|
|
944
966
|
textureOptions: p.textureOptions,
|
|
945
|
-
textureCoords:
|
|
967
|
+
textureCoords: textureCoords,
|
|
946
968
|
shader: p.shader,
|
|
947
969
|
alpha: this.worldAlpha,
|
|
948
970
|
clippingRect: this.clippingRect,
|
|
@@ -959,8 +981,85 @@ export class CoreNode extends EventEmitter {
|
|
|
959
981
|
framebufferDimensions: this.parentHasRenderTexture
|
|
960
982
|
? this.parentFramebufferDimensions
|
|
961
983
|
: null,
|
|
984
|
+
time: this.hasShaderTimeFn === true ? this.getTimerValue() : null,
|
|
962
985
|
});
|
|
963
986
|
}
|
|
987
|
+
getTimerValue() {
|
|
988
|
+
if (typeof this.shader.time === 'function') {
|
|
989
|
+
return this.shader.time(this.stage);
|
|
990
|
+
}
|
|
991
|
+
return this.stage.elapsedTime;
|
|
992
|
+
}
|
|
993
|
+
sortChildren() {
|
|
994
|
+
const changedCount = this.zIndexSortList.length;
|
|
995
|
+
if (changedCount === 0) {
|
|
996
|
+
return;
|
|
997
|
+
}
|
|
998
|
+
const children = this.children;
|
|
999
|
+
let min = Infinity;
|
|
1000
|
+
let max = -Infinity;
|
|
1001
|
+
// find min and max zIndex
|
|
1002
|
+
for (let i = 0; i < children.length; i++) {
|
|
1003
|
+
const zIndex = children[i].props.zIndex;
|
|
1004
|
+
if (zIndex < min) {
|
|
1005
|
+
min = zIndex;
|
|
1006
|
+
}
|
|
1007
|
+
if (zIndex > max) {
|
|
1008
|
+
max = zIndex;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
// update min and max zIndex
|
|
1012
|
+
this.zIndexMin = min;
|
|
1013
|
+
this.zIndexMax = max;
|
|
1014
|
+
// if min and max are the same, no need to sort
|
|
1015
|
+
if (min === max) {
|
|
1016
|
+
return;
|
|
1017
|
+
}
|
|
1018
|
+
const n = children.length;
|
|
1019
|
+
// decide whether to use incremental sort or bucket sort
|
|
1020
|
+
const useIncremental = changedCount <= 2 || changedCount < n * 0.05;
|
|
1021
|
+
// when changed count is less than 2 or 5% of total children, use incremental sort
|
|
1022
|
+
if (useIncremental === true) {
|
|
1023
|
+
incrementalRepositionByZIndex(this.zIndexSortList, children);
|
|
1024
|
+
}
|
|
1025
|
+
else {
|
|
1026
|
+
bucketSortByZIndex(children, min);
|
|
1027
|
+
}
|
|
1028
|
+
this.zIndexSortList.length = 0;
|
|
1029
|
+
this.zIndexSortList = [];
|
|
1030
|
+
}
|
|
1031
|
+
removeChild(node, targetParent = null) {
|
|
1032
|
+
if (targetParent === null &&
|
|
1033
|
+
this.props.rtt === true &&
|
|
1034
|
+
this.parentHasRenderTexture === true) {
|
|
1035
|
+
node.clearRTTInheritance();
|
|
1036
|
+
}
|
|
1037
|
+
removeChild(node, this.children);
|
|
1038
|
+
}
|
|
1039
|
+
addChild(node, previousParent = null) {
|
|
1040
|
+
const inRttCluster = this.props.rtt === true || this.parentHasRenderTexture === true;
|
|
1041
|
+
const children = this.children;
|
|
1042
|
+
const min = this.zIndexMin;
|
|
1043
|
+
const max = this.zIndexMax;
|
|
1044
|
+
const zIndex = node.zIndex;
|
|
1045
|
+
node.parentHasRenderTexture = inRttCluster;
|
|
1046
|
+
if (previousParent !== null) {
|
|
1047
|
+
const previousParentInRttCluster = previousParent.props.rtt === true ||
|
|
1048
|
+
previousParent.parentHasRenderTexture === true;
|
|
1049
|
+
if (inRttCluster === false && previousParentInRttCluster === true) {
|
|
1050
|
+
// update child RTT status
|
|
1051
|
+
node.clearRTTInheritance();
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
if (inRttCluster === true) {
|
|
1055
|
+
node.markChildrenWithRTT(this);
|
|
1056
|
+
}
|
|
1057
|
+
children.push(node);
|
|
1058
|
+
if (min !== max || (zIndex !== min && zIndex !== max)) {
|
|
1059
|
+
this.zIndexSortList.push(node);
|
|
1060
|
+
this.setUpdateType(UpdateType.SortZIndexChildren);
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
964
1063
|
//#region Properties
|
|
965
1064
|
get id() {
|
|
966
1065
|
return this._id;
|
|
@@ -1004,7 +1103,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1004
1103
|
}
|
|
1005
1104
|
set w(value) {
|
|
1006
1105
|
if (this.props.w !== value) {
|
|
1007
|
-
this.updateTextureCoords = true;
|
|
1008
1106
|
this.props.w = value;
|
|
1009
1107
|
this.setUpdateType(UpdateType.Local);
|
|
1010
1108
|
if (this.props.rtt === true) {
|
|
@@ -1019,7 +1117,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1019
1117
|
}
|
|
1020
1118
|
set h(value) {
|
|
1021
1119
|
if (this.props.h !== value) {
|
|
1022
|
-
this.updateTextureCoords = true;
|
|
1023
1120
|
this.props.h = value;
|
|
1024
1121
|
this.setUpdateType(UpdateType.Local);
|
|
1025
1122
|
if (this.props.rtt === true) {
|
|
@@ -1279,29 +1376,35 @@ export class CoreNode extends EventEmitter {
|
|
|
1279
1376
|
this.hasColorProps = value > 0;
|
|
1280
1377
|
this.setUpdateType(UpdateType.PremultipliedColors);
|
|
1281
1378
|
}
|
|
1282
|
-
// we're only interested in parent zIndex to test
|
|
1283
|
-
// if we should use node zIndex is higher then parent zIndex
|
|
1284
|
-
get zIndexLocked() {
|
|
1285
|
-
return this.props.zIndexLocked || 0;
|
|
1286
|
-
}
|
|
1287
|
-
set zIndexLocked(value) {
|
|
1288
|
-
this.props.zIndexLocked = value;
|
|
1289
|
-
this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);
|
|
1290
|
-
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
1291
|
-
this.children[i].setUpdateType(UpdateType.CalculatedZIndex);
|
|
1292
|
-
}
|
|
1293
|
-
}
|
|
1294
1379
|
get zIndex() {
|
|
1295
1380
|
return this.props.zIndex;
|
|
1296
1381
|
}
|
|
1297
1382
|
set zIndex(value) {
|
|
1298
|
-
|
|
1383
|
+
let sanitizedValue = value;
|
|
1384
|
+
if (isNaN(sanitizedValue) || Number.isFinite(sanitizedValue) === false) {
|
|
1385
|
+
console.warn(`zIndex was set to an invalid value: ${value}, defaulting to 0`);
|
|
1386
|
+
sanitizedValue = 0;
|
|
1387
|
+
}
|
|
1388
|
+
//Clamp to safe integer range
|
|
1389
|
+
if (sanitizedValue > Number.MAX_SAFE_INTEGER) {
|
|
1390
|
+
sanitizedValue = 1000;
|
|
1391
|
+
}
|
|
1392
|
+
else if (sanitizedValue < Number.MIN_SAFE_INTEGER) {
|
|
1393
|
+
sanitizedValue = -1000;
|
|
1394
|
+
}
|
|
1395
|
+
if (this.props.zIndex === sanitizedValue) {
|
|
1299
1396
|
return;
|
|
1300
1397
|
}
|
|
1301
|
-
this.props.zIndex
|
|
1302
|
-
this.
|
|
1303
|
-
|
|
1304
|
-
|
|
1398
|
+
this.previousZIndex = this.props.zIndex;
|
|
1399
|
+
this.props.zIndex = sanitizedValue;
|
|
1400
|
+
const parent = this.parent;
|
|
1401
|
+
if (parent !== null) {
|
|
1402
|
+
const min = parent.zIndexMin;
|
|
1403
|
+
const max = parent.zIndexMax;
|
|
1404
|
+
if (min !== max || sanitizedValue < min || sanitizedValue > max) {
|
|
1405
|
+
parent.zIndexSortList.push(this);
|
|
1406
|
+
parent.setUpdateType(UpdateType.SortZIndexChildren);
|
|
1407
|
+
}
|
|
1305
1408
|
}
|
|
1306
1409
|
}
|
|
1307
1410
|
get parent() {
|
|
@@ -1314,23 +1417,13 @@ export class CoreNode extends EventEmitter {
|
|
|
1314
1417
|
}
|
|
1315
1418
|
this.props.parent = newParent;
|
|
1316
1419
|
if (oldParent) {
|
|
1317
|
-
|
|
1318
|
-
oldParent.children.splice(index, 1);
|
|
1319
|
-
oldParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);
|
|
1320
|
-
}
|
|
1321
|
-
if (newParent) {
|
|
1322
|
-
newParent.children.push(this);
|
|
1323
|
-
// Since this node has a new parent, to be safe, have it do a full update.
|
|
1324
|
-
this.setUpdateType(UpdateType.All);
|
|
1325
|
-
// Tell parent that it's children need to be updated and sorted.
|
|
1326
|
-
newParent.setUpdateType(UpdateType.Children | UpdateType.ZIndexSortedChildren);
|
|
1327
|
-
// If the new parent has an RTT enabled, apply RTT inheritance
|
|
1328
|
-
if (newParent.rtt || newParent.parentHasRenderTexture) {
|
|
1329
|
-
this.applyRTTInheritance(newParent);
|
|
1330
|
-
}
|
|
1420
|
+
oldParent.removeChild(this, newParent);
|
|
1331
1421
|
}
|
|
1332
|
-
|
|
1333
|
-
|
|
1422
|
+
if (newParent !== null) {
|
|
1423
|
+
newParent.addChild(this, oldParent);
|
|
1424
|
+
}
|
|
1425
|
+
//since this node has a new parent, recalc global and render bounds
|
|
1426
|
+
this.setUpdateType(UpdateType.Global | UpdateType.RenderBounds);
|
|
1334
1427
|
}
|
|
1335
1428
|
get rtt() {
|
|
1336
1429
|
return this.props.rtt;
|
|
@@ -1414,8 +1507,15 @@ export class CoreNode extends EventEmitter {
|
|
|
1414
1507
|
}
|
|
1415
1508
|
if (shader.shaderKey !== 'default') {
|
|
1416
1509
|
this.hasShaderUpdater = shader.update !== undefined;
|
|
1510
|
+
this.hasShaderTimeFn = shader.time !== undefined;
|
|
1417
1511
|
shader.attachNode(this);
|
|
1418
1512
|
}
|
|
1513
|
+
if (this.hasShaderTimeFn === true) {
|
|
1514
|
+
this.stage.trackTimedNode(this);
|
|
1515
|
+
}
|
|
1516
|
+
else {
|
|
1517
|
+
this.stage.untrackTimedNode(this);
|
|
1518
|
+
}
|
|
1419
1519
|
this.props.shader = shader;
|
|
1420
1520
|
this.setUpdateType(UpdateType.IsRenderable | UpdateType.RecalcUniforms);
|
|
1421
1521
|
}
|
|
@@ -1512,13 +1612,16 @@ export class CoreNode extends EventEmitter {
|
|
|
1512
1612
|
this.textureCoords = undefined;
|
|
1513
1613
|
this.props.texture = value;
|
|
1514
1614
|
if (value !== null) {
|
|
1515
|
-
value.setRenderableOwner(this, this.isRenderable);
|
|
1615
|
+
value.setRenderableOwner(this._id, this.isRenderable);
|
|
1516
1616
|
this.loadTexture();
|
|
1517
1617
|
}
|
|
1518
1618
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
1519
1619
|
}
|
|
1520
1620
|
set textureOptions(value) {
|
|
1521
1621
|
this.props.textureOptions = value;
|
|
1622
|
+
if (this.stage.calculateTextureCoord === true && value !== null) {
|
|
1623
|
+
this.textureCoords = this.stage.renderer.getTextureCoords(this);
|
|
1624
|
+
}
|
|
1522
1625
|
}
|
|
1523
1626
|
get textureOptions() {
|
|
1524
1627
|
return this.props.textureOptions;
|