@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/CoreTextNode.ts
CHANGED
|
@@ -264,7 +264,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
|
|
|
264
264
|
|
|
265
265
|
if (this.renderState > CoreNodeRenderState.OutOfBounds) {
|
|
266
266
|
// We do want the texture to load immediately
|
|
267
|
-
this.texture.setRenderableOwner(this, true);
|
|
267
|
+
this.texture.setRenderableOwner(this._id, true);
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
|
|
@@ -279,14 +279,19 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
|
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
this._renderInfo = result;
|
|
282
|
+
queueMicrotask(this.emitTextLoadedEvent);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Reusable bound method for emitting loaded event
|
|
286
|
+
private emitTextLoadedEvent = () => {
|
|
282
287
|
this.emit('loaded', {
|
|
283
288
|
type: 'text',
|
|
284
289
|
dimensions: {
|
|
285
|
-
w: width,
|
|
286
|
-
h: height,
|
|
290
|
+
w: this._renderInfo.width,
|
|
291
|
+
h: this._renderInfo.height,
|
|
287
292
|
},
|
|
288
293
|
} satisfies NodeTextLoadedPayload);
|
|
289
|
-
}
|
|
294
|
+
};
|
|
290
295
|
|
|
291
296
|
/**
|
|
292
297
|
* Override renderQuads to handle SDF vs Canvas rendering
|
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
type CreateImageBitmapSupport,
|
|
33
33
|
} from './lib/validateImageBitmap.js';
|
|
34
34
|
import type { Platform } from './platforms/Platform.js';
|
|
35
|
+
import { TextureError, TextureErrorCode } from './TextureError.js';
|
|
35
36
|
|
|
36
37
|
/**
|
|
37
38
|
* Augmentable map of texture class types
|
|
@@ -64,6 +65,7 @@ export interface TextureManagerDebugInfo {
|
|
|
64
65
|
export interface TextureManagerSettings {
|
|
65
66
|
numImageWorkers: number;
|
|
66
67
|
createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
|
|
68
|
+
maxRetryCount: number;
|
|
67
69
|
}
|
|
68
70
|
|
|
69
71
|
export type ResizeModeOptions =
|
|
@@ -138,6 +140,20 @@ export interface TextureOptions {
|
|
|
138
140
|
*/
|
|
139
141
|
preventCleanup?: boolean;
|
|
140
142
|
|
|
143
|
+
/**
|
|
144
|
+
* Number of times to retry loading a failed texture
|
|
145
|
+
*
|
|
146
|
+
* @remarks
|
|
147
|
+
* When a texture fails to load, Lightning will retry up to this many times
|
|
148
|
+
* before permanently giving up. Each retry will clear the texture ownership
|
|
149
|
+
* and then re-establish it to trigger a new load attempt.
|
|
150
|
+
*
|
|
151
|
+
* Set to null to disable retries. Set to 0 to always try once and never retry.
|
|
152
|
+
* This is typically only used on ImageTexture instances.
|
|
153
|
+
*
|
|
154
|
+
*/
|
|
155
|
+
maxRetryCount?: number | null;
|
|
156
|
+
|
|
141
157
|
/**
|
|
142
158
|
* Flip the texture horizontally when rendering
|
|
143
159
|
*
|
|
@@ -178,6 +194,7 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
178
194
|
*/
|
|
179
195
|
txConstructors: Partial<TextureMap> = {};
|
|
180
196
|
|
|
197
|
+
public maxRetryCount: number;
|
|
181
198
|
private priorityQueue: Array<Texture> = [];
|
|
182
199
|
private uploadTextureQueue: Array<Texture> = [];
|
|
183
200
|
private initialized = false;
|
|
@@ -218,10 +235,13 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
218
235
|
constructor(stage: Stage, settings: TextureManagerSettings) {
|
|
219
236
|
super();
|
|
220
237
|
|
|
221
|
-
const { numImageWorkers, createImageBitmapSupport } =
|
|
238
|
+
const { numImageWorkers, createImageBitmapSupport, maxRetryCount } =
|
|
239
|
+
settings;
|
|
240
|
+
|
|
222
241
|
this.stage = stage;
|
|
223
242
|
this.platform = stage.platform;
|
|
224
243
|
this.numImageWorkers = numImageWorkers;
|
|
244
|
+
this.maxRetryCount = maxRetryCount;
|
|
225
245
|
|
|
226
246
|
if (createImageBitmapSupport === 'auto') {
|
|
227
247
|
validateCreateImageBitmap(this.platform)
|
|
@@ -315,14 +335,14 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
315
335
|
if (!TextureClass) {
|
|
316
336
|
throw new Error(`Texture type "${textureType}" is not registered`);
|
|
317
337
|
}
|
|
318
|
-
|
|
319
|
-
const cacheKey = TextureClass.makeCacheKey(
|
|
338
|
+
const resolvedProps = TextureClass.resolveDefaults(props as any);
|
|
339
|
+
const cacheKey = TextureClass.makeCacheKey(resolvedProps as any);
|
|
320
340
|
if (cacheKey && this.keyCache.has(cacheKey)) {
|
|
321
341
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
322
342
|
texture = this.keyCache.get(cacheKey)!;
|
|
323
343
|
} else {
|
|
324
344
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
325
|
-
texture = new TextureClass(this,
|
|
345
|
+
texture = new TextureClass(this, resolvedProps as any);
|
|
326
346
|
|
|
327
347
|
if (cacheKey) {
|
|
328
348
|
this.initTextureToCache(texture, cacheKey);
|
|
@@ -332,25 +352,13 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
332
352
|
return texture as InstanceType<TextureMap[Type]>;
|
|
333
353
|
}
|
|
334
354
|
|
|
335
|
-
orphanTexture(texture: Texture): void {
|
|
336
|
-
// if it is part of the download or upload queue, remove it
|
|
337
|
-
this.removeTextureFromQueue(texture);
|
|
338
|
-
|
|
339
|
-
if (texture.type === TextureType.subTexture) {
|
|
340
|
-
// ignore subtextures
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
this.stage.txMemManager.addToOrphanedTextures(texture);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
355
|
/**
|
|
348
356
|
* Override loadTexture to use the batched approach.
|
|
349
357
|
*
|
|
350
358
|
* @param texture - The texture to load
|
|
351
359
|
* @param immediate - Whether to prioritize the texture for immediate loading
|
|
352
360
|
*/
|
|
353
|
-
loadTexture(texture: Texture, priority?: boolean): void {
|
|
361
|
+
async loadTexture(texture: Texture, priority?: boolean): Promise<void> {
|
|
354
362
|
this.stage.txMemManager.removeFromOrphanedTextures(texture);
|
|
355
363
|
|
|
356
364
|
if (texture.type === TextureType.subTexture) {
|
|
@@ -363,56 +371,39 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
363
371
|
return;
|
|
364
372
|
}
|
|
365
373
|
|
|
366
|
-
if (Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)) {
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
374
|
// if we're not initialized, just queue the texture into the priority queue
|
|
371
375
|
if (this.initialized === false) {
|
|
372
376
|
this.priorityQueue.push(texture);
|
|
373
377
|
return;
|
|
374
378
|
}
|
|
375
379
|
|
|
376
|
-
// If the texture failed to load, we need to re-download it.
|
|
377
|
-
if (texture.state === 'failed') {
|
|
378
|
-
texture.free();
|
|
379
|
-
texture.freeTextureData();
|
|
380
|
-
}
|
|
381
|
-
|
|
382
380
|
texture.setState('loading');
|
|
383
381
|
|
|
384
|
-
// Get
|
|
385
|
-
texture
|
|
386
|
-
.
|
|
387
|
-
.
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
if (priority === true) {
|
|
403
|
-
this.uploadTexture(texture).catch((err) => {
|
|
404
|
-
console.error('Failed to upload priority texture:', err);
|
|
405
|
-
texture.setState('failed');
|
|
406
|
-
});
|
|
407
|
-
} else {
|
|
408
|
-
this.enqueueUploadTexture(texture);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
})
|
|
412
|
-
.catch((err) => {
|
|
413
|
-
console.error(err);
|
|
382
|
+
// Get texture data - early return on failure
|
|
383
|
+
const textureDataResult = await texture.getTextureData().catch((err) => {
|
|
384
|
+
console.error(err);
|
|
385
|
+
texture.setState('failed');
|
|
386
|
+
return null;
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
// Early return if texture data fetch failed
|
|
390
|
+
if (textureDataResult === null || texture.state === 'failed') {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// Handle non-image textures: upload immediately
|
|
395
|
+
const shouldUploadImmediately =
|
|
396
|
+
texture.type !== TextureType.image || priority === true;
|
|
397
|
+
if (shouldUploadImmediately === true) {
|
|
398
|
+
await this.uploadTexture(texture).catch((err) => {
|
|
399
|
+
console.error(`Failed to upload texture:`, err);
|
|
414
400
|
texture.setState('failed');
|
|
415
401
|
});
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
// Queue image textures for throttled upload
|
|
406
|
+
this.enqueueUploadTexture(texture);
|
|
416
407
|
}
|
|
417
408
|
|
|
418
409
|
/**
|
|
@@ -431,6 +422,27 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
431
422
|
return;
|
|
432
423
|
}
|
|
433
424
|
|
|
425
|
+
if (texture.state === 'failed' || texture.state === 'freed') {
|
|
426
|
+
// don't upload failed or freed textures
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
if (texture.state === 'loaded') {
|
|
431
|
+
// already loaded
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
if (texture.textureData === null) {
|
|
436
|
+
texture.setState(
|
|
437
|
+
'failed',
|
|
438
|
+
new TextureError(
|
|
439
|
+
TextureErrorCode.TEXTURE_DATA_NULL,
|
|
440
|
+
'Texture data is null, cannot upload texture',
|
|
441
|
+
),
|
|
442
|
+
);
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
|
|
434
446
|
const coreContext = texture.loadCtxTexture();
|
|
435
447
|
if (coreContext !== null && coreContext.state === 'loaded') {
|
|
436
448
|
texture.setState('loaded');
|
package/src/core/Stage.ts
CHANGED
|
@@ -60,7 +60,7 @@ import type { RendererMainSettings } from '../main-api/Renderer.js';
|
|
|
60
60
|
|
|
61
61
|
export type StageOptions = Omit<
|
|
62
62
|
RendererMainSettings,
|
|
63
|
-
'inspector' | 'platform'
|
|
63
|
+
'inspector' | 'platform' | 'maxRetryCount'
|
|
64
64
|
> & {
|
|
65
65
|
textureMemory: TextureMemoryManagerSettings;
|
|
66
66
|
canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
@@ -68,6 +68,7 @@ export type StageOptions = Omit<
|
|
|
68
68
|
eventBus: EventEmitter;
|
|
69
69
|
platform: Platform | WebPlatform;
|
|
70
70
|
inspector: boolean;
|
|
71
|
+
maxRetryCount: number;
|
|
71
72
|
};
|
|
72
73
|
|
|
73
74
|
export type StageFpsUpdateHandler = (
|
|
@@ -129,9 +130,12 @@ export class Stage {
|
|
|
129
130
|
public readonly eventBus: EventEmitter;
|
|
130
131
|
|
|
131
132
|
/// State
|
|
133
|
+
startTime = 0;
|
|
132
134
|
deltaTime = 0;
|
|
133
135
|
lastFrameTime = 0;
|
|
134
136
|
currentFrameTime = 0;
|
|
137
|
+
elapsedTime = 0;
|
|
138
|
+
private timedNodes: CoreNode[] = [];
|
|
135
139
|
private clrColor = 0x00000000;
|
|
136
140
|
private fpsNumFrames = 0;
|
|
137
141
|
private fpsElapsedTime = 0;
|
|
@@ -167,6 +171,7 @@ export class Stage {
|
|
|
167
171
|
fontEngines,
|
|
168
172
|
createImageBitmapSupport,
|
|
169
173
|
platform,
|
|
174
|
+
maxRetryCount,
|
|
170
175
|
} = options;
|
|
171
176
|
|
|
172
177
|
assertTruthy(
|
|
@@ -176,6 +181,8 @@ export class Stage {
|
|
|
176
181
|
|
|
177
182
|
this.platform = platform;
|
|
178
183
|
|
|
184
|
+
this.startTime = platform.getTimeStamp();
|
|
185
|
+
|
|
179
186
|
this.eventBus = options.eventBus;
|
|
180
187
|
|
|
181
188
|
// Calculate target frame time from targetFPS option
|
|
@@ -184,6 +191,7 @@ export class Stage {
|
|
|
184
191
|
this.txManager = new CoreTextureManager(this, {
|
|
185
192
|
numImageWorkers,
|
|
186
193
|
createImageBitmapSupport,
|
|
194
|
+
maxRetryCount,
|
|
187
195
|
});
|
|
188
196
|
|
|
189
197
|
// Wait for the Texture Manager to initialize
|
|
@@ -335,7 +343,6 @@ export class Stage {
|
|
|
335
343
|
colorBl: 0x00000000,
|
|
336
344
|
colorBr: 0x00000000,
|
|
337
345
|
zIndex: 0,
|
|
338
|
-
zIndexLocked: 0,
|
|
339
346
|
scaleX: 1,
|
|
340
347
|
scaleY: 1,
|
|
341
348
|
mountX: 0,
|
|
@@ -383,9 +390,10 @@ export class Stage {
|
|
|
383
390
|
}
|
|
384
391
|
|
|
385
392
|
updateFrameTime() {
|
|
386
|
-
const newFrameTime = this.platform
|
|
393
|
+
const newFrameTime = this.platform.getTimeStamp();
|
|
387
394
|
this.lastFrameTime = this.currentFrameTime;
|
|
388
395
|
this.currentFrameTime = newFrameTime;
|
|
396
|
+
this.elapsedTime = this.startTime - newFrameTime;
|
|
389
397
|
this.deltaTime = !this.lastFrameTime
|
|
390
398
|
? 100 / 6
|
|
391
399
|
: newFrameTime - this.lastFrameTime;
|
|
@@ -417,7 +425,7 @@ export class Stage {
|
|
|
417
425
|
// Mark the default texture as ALWAYS renderable
|
|
418
426
|
// This prevents it from ever being cleaned up.
|
|
419
427
|
// Fixes https://github.com/lightning-js/renderer/issues/262
|
|
420
|
-
this.defaultTexture.setRenderableOwner(
|
|
428
|
+
this.defaultTexture.setRenderableOwner('stage', true);
|
|
421
429
|
|
|
422
430
|
// When the default texture is loaded, request a render in case the
|
|
423
431
|
// RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123
|
|
@@ -472,16 +480,6 @@ export class Stage {
|
|
|
472
480
|
// Reset render operations and clear the canvas
|
|
473
481
|
renderer.reset();
|
|
474
482
|
|
|
475
|
-
// Check if we need to cleanup textures
|
|
476
|
-
if (txMemManager.criticalCleanupRequested === true) {
|
|
477
|
-
txMemManager.cleanup(false);
|
|
478
|
-
|
|
479
|
-
if (txMemManager.criticalCleanupRequested === true) {
|
|
480
|
-
// If we still need to cleanup, request another but aggressive cleanup
|
|
481
|
-
txMemManager.cleanup(true);
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
|
|
485
483
|
// If we have RTT nodes draw them first
|
|
486
484
|
// So we can use them as textures in the main scene
|
|
487
485
|
if (renderer.rttNodes.length > 0) {
|
|
@@ -501,6 +499,19 @@ export class Stage {
|
|
|
501
499
|
if (renderRequested === true) {
|
|
502
500
|
this.renderRequested = false;
|
|
503
501
|
}
|
|
502
|
+
|
|
503
|
+
if (this.timedNodes.length > 0) {
|
|
504
|
+
for (let key in this.timedNodes) {
|
|
505
|
+
if (this.timedNodes[key]!.isRenderable === true) {
|
|
506
|
+
this.requestRender();
|
|
507
|
+
break;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
// Check if we need to cleanup textures
|
|
512
|
+
if (this.txMemManager.criticalCleanupRequested === true) {
|
|
513
|
+
this.txMemManager.cleanup();
|
|
514
|
+
}
|
|
504
515
|
}
|
|
505
516
|
|
|
506
517
|
/**
|
|
@@ -764,6 +775,30 @@ export class Stage {
|
|
|
764
775
|
return topNode || null;
|
|
765
776
|
}
|
|
766
777
|
|
|
778
|
+
/**
|
|
779
|
+
* add node to timeNodes arrays
|
|
780
|
+
* @param node
|
|
781
|
+
* @returns
|
|
782
|
+
*/
|
|
783
|
+
trackTimedNode(node: CoreNode) {
|
|
784
|
+
if (this.timedNodes[node.id] !== undefined) {
|
|
785
|
+
return;
|
|
786
|
+
}
|
|
787
|
+
this.timedNodes[node.id] = node;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* remove node from timeNodes arrays
|
|
792
|
+
* @param node
|
|
793
|
+
* @returns
|
|
794
|
+
*/
|
|
795
|
+
untrackTimedNode(node: CoreNode) {
|
|
796
|
+
if (this.timedNodes[node.id] === undefined) {
|
|
797
|
+
return;
|
|
798
|
+
}
|
|
799
|
+
delete this.timedNodes[node.id];
|
|
800
|
+
}
|
|
801
|
+
|
|
767
802
|
/**
|
|
768
803
|
* Resolves the default property values for a Node
|
|
769
804
|
*
|
|
@@ -821,7 +856,6 @@ export class Stage {
|
|
|
821
856
|
colorBl,
|
|
822
857
|
colorBr,
|
|
823
858
|
zIndex: props.zIndex ?? 0,
|
|
824
|
-
zIndexLocked: props.zIndexLocked ?? 0,
|
|
825
859
|
parent: props.parent ?? null,
|
|
826
860
|
texture: props.texture ?? null,
|
|
827
861
|
textureOptions: props.textureOptions ?? {},
|
|
@@ -854,8 +888,8 @@ export class Stage {
|
|
|
854
888
|
* @remarks
|
|
855
889
|
* This method is used to cleanup orphaned textures that are no longer in use.
|
|
856
890
|
*/
|
|
857
|
-
cleanup(
|
|
858
|
-
this.txMemManager.cleanup(
|
|
891
|
+
cleanup() {
|
|
892
|
+
this.txMemManager.cleanup();
|
|
859
893
|
}
|
|
860
894
|
|
|
861
895
|
set clearColor(value: number) {
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export enum TextureErrorCode {
|
|
2
|
+
MEMORY_THRESHOLD_EXCEEDED = 'MEMORY_THRESHOLD_EXCEEDED',
|
|
3
|
+
TEXTURE_DATA_NULL = 'TEXTURE_DATA_NULL',
|
|
4
|
+
TEXTURE_TYPE_NOT_REGISTERED = 'TEXTURE_TYPE_NOT_REGISTERED',
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const defaultMessages: Record<TextureErrorCode, string> = {
|
|
8
|
+
[TextureErrorCode.MEMORY_THRESHOLD_EXCEEDED]: 'Memory threshold exceeded',
|
|
9
|
+
[TextureErrorCode.TEXTURE_DATA_NULL]: 'Texture data is null',
|
|
10
|
+
[TextureErrorCode.TEXTURE_TYPE_NOT_REGISTERED]:
|
|
11
|
+
'Texture type is not registered',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export class TextureError extends Error {
|
|
15
|
+
code?: TextureErrorCode;
|
|
16
|
+
|
|
17
|
+
constructor(message: string);
|
|
18
|
+
constructor(code: TextureErrorCode, message?: string);
|
|
19
|
+
constructor(codeOrMessage: TextureErrorCode | string, maybeMessage?: string) {
|
|
20
|
+
const isCode = Object.values(TextureErrorCode).includes(
|
|
21
|
+
codeOrMessage as TextureErrorCode,
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const code = isCode ? (codeOrMessage as TextureErrorCode) : undefined;
|
|
25
|
+
let message: string;
|
|
26
|
+
if (isCode && code) {
|
|
27
|
+
message = maybeMessage ?? defaultMessages[code];
|
|
28
|
+
} else {
|
|
29
|
+
message = String(codeOrMessage);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = new.target.name;
|
|
34
|
+
if (code) this.code = code;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function isTextureError(err: unknown): err is TextureError {
|
|
39
|
+
return (
|
|
40
|
+
err instanceof TextureError ||
|
|
41
|
+
(typeof err === 'object' &&
|
|
42
|
+
err !== null &&
|
|
43
|
+
(err as { name?: unknown }).name === 'TextureError' &&
|
|
44
|
+
typeof (err as { code?: unknown }).code === 'string')
|
|
45
|
+
);
|
|
46
|
+
}
|