@lightningtv/renderer 3.0.0-beta1 → 3.2.4
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/NOTICE +4 -0
- package/README.md +22 -28
- package/dist/exports/canvas-shaders.js +0 -16
- package/dist/exports/canvas-shaders.js.map +1 -1
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -19
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -23
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/inspector.js +0 -18
- package/dist/exports/inspector.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -19
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl-shaders.js +0 -16
- package/dist/exports/webgl-shaders.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -19
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +15 -3
- package/dist/src/common/CommonTypes.js +0 -18
- package/dist/src/common/CommonTypes.js.map +1 -1
- package/dist/src/common/EventEmitter.js +0 -18
- package/dist/src/common/EventEmitter.js.map +1 -1
- package/dist/src/common/IEventEmitter.js +0 -16
- package/dist/src/common/IEventEmitter.js.map +1 -1
- package/dist/src/core/Autosizer.d.ts +35 -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 +139 -101
- package/dist/src/core/CoreNode.js +813 -528
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -3
- package/dist/src/core/CoreShaderManager.js +0 -18
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +75 -87
- package/dist/src/core/CoreTextNode.js +380 -258
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +25 -14
- package/dist/src/core/CoreTextureManager.js +83 -140
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +102 -36
- package/dist/src/core/Stage.js +424 -191
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/TextureMemoryManager.d.ts +11 -4
- package/dist/src/core/TextureMemoryManager.js +114 -134
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/AnimationManager.js +0 -18
- package/dist/src/core/animations/AnimationManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -24
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -22
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ContextSpy.js +0 -18
- package/dist/src/core/lib/ContextSpy.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +33 -31
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.d.ts +1 -0
- package/dist/src/core/lib/Matrix3d.js +7 -19
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +27 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +78 -3
- package/dist/src/core/lib/WebGlContextWrapper.js +150 -25
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +82 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +1 -19
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -85
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/textureSvg.js +0 -18
- package/dist/src/core/lib/textureSvg.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -1
- package/dist/src/core/lib/utils.js +44 -20
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +42 -0
- package/dist/src/core/platforms/Platform.js +4 -0
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
- package/dist/src/core/platforms/web/WebPlatform.js +90 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
- package/dist/src/core/renderers/CoreContextTexture.js +0 -18
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderOp.js +0 -18
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +15 -3
- package/dist/src/core/renderers/CoreRenderer.js +1 -18
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +13 -3
- package/dist/src/core/renderers/CoreShaderNode.js +25 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +89 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -21
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +18 -31
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/BatchRenderOp.d.ts +25 -0
- package/dist/src/core/renderers/webgl/BatchRenderOp.js +60 -0
- package/dist/src/core/renderers/webgl/BatchRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -70
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +34 -20
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +319 -195
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -3
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +9 -7
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +99 -48
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +67 -41
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +7 -21
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +14 -28
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -17
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +44 -22
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +47 -25
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +9 -21
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +0 -16
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
- package/dist/src/core/shaders/canvas/utils/render.js +31 -34
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +12 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +31 -27
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -19
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -17
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +4 -2
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/utils.js +25 -0
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +118 -51
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -41
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -19
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +73 -34
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -48
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +25 -23
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +160 -55
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +168 -58
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +8 -36
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Shadow.js +39 -34
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
- package/dist/src/core/text-rendering/TextRenderer.js +2 -0
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +66 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -22
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +13 -6
- package/dist/src/core/textures/ImageTexture.js +57 -66
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -26
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -30
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +19 -55
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +90 -12
- package/dist/src/core/textures/Texture.js +160 -35
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -19
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +135 -2
- package/dist/src/main-api/Inspector.js +507 -30
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +294 -81
- package/dist/src/main-api/Renderer.js +225 -96
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +19 -6
- package/dist/src/utils.js +32 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas-shaders.ts +0 -17
- package/exports/canvas.ts +1 -19
- package/exports/index.ts +6 -27
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +0 -16
- package/exports/webgl.ts +3 -20
- package/package.json +23 -22
- package/src/common/CommonTypes.ts +20 -22
- package/src/common/EventEmitter.ts +0 -19
- package/src/common/IAnimationController.ts +0 -18
- package/src/common/IEventEmitter.ts +0 -17
- package/src/core/Autosizer.ts +205 -0
- package/src/core/CoreNode.test.ts +376 -45
- package/src/core/CoreNode.ts +1017 -656
- package/src/core/CoreShaderManager.ts +3 -21
- package/src/core/CoreTextNode.ts +457 -314
- package/src/core/CoreTextureManager.ts +123 -168
- package/src/core/Stage.ts +526 -236
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +150 -167
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +15 -32
- package/src/core/animations/CoreAnimationController.ts +13 -23
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +45 -32
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +196 -72
- package/src/core/lib/collectionUtils.ts +99 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -21
- package/src/core/lib/textureCompression.ts +433 -93
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +58 -19
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +64 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +2 -20
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +16 -23
- package/src/core/renderers/CoreShaderNode.ts +37 -6
- package/src/core/renderers/CoreShaderProgram.ts +0 -19
- package/src/core/renderers/canvas/CanvasRenderer.ts +108 -137
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -23
- package/src/core/renderers/canvas/CanvasTexture.ts +25 -37
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -34
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -24
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -103
- package/src/core/renderers/webgl/WebGlRenderer.ts +368 -233
- package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -7
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +122 -76
- package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
- package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +91 -50
- package/src/core/shaders/canvas/HolePunch.ts +4 -28
- package/src/core/shaders/canvas/LinearGradient.ts +10 -25
- package/src/core/shaders/canvas/RadialGradient.ts +23 -54
- package/src/core/shaders/canvas/Rounded.ts +2 -19
- package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -35
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +77 -47
- package/src/core/shaders/canvas/RoundedWithShadow.ts +21 -34
- package/src/core/shaders/canvas/Shadow.ts +0 -17
- package/src/core/shaders/canvas/utils/render.ts +45 -53
- package/src/core/shaders/templates/BorderTemplate.ts +42 -29
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -22
- package/src/core/shaders/templates/LinearGradientTemplate.ts +0 -17
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -25
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +7 -19
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -18
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +118 -55
- package/src/core/shaders/webgl/Default.ts +6 -43
- package/src/core/shaders/webgl/HolePunch.ts +4 -24
- package/src/core/shaders/webgl/LinearGradient.ts +73 -35
- package/src/core/shaders/webgl/RadialGradient.ts +58 -51
- package/src/core/shaders/webgl/Rounded.ts +25 -45
- package/src/core/shaders/webgl/RoundedWithBorder.ts +161 -63
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +169 -68
- package/src/core/shaders/webgl/RoundedWithShadow.ts +73 -39
- package/src/core/shaders/webgl/SdfShader.ts +8 -41
- package/src/core/shaders/webgl/Shadow.ts +39 -35
- package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
- package/src/core/text-rendering/SdfFontHandler.ts +566 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +426 -0
- package/src/core/text-rendering/Utils.ts +80 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
- package/src/core/textures/ColorTexture.ts +7 -24
- package/src/core/textures/ImageTexture.ts +110 -92
- package/src/core/textures/NoiseTexture.ts +14 -31
- package/src/core/textures/RenderTexture.ts +18 -35
- package/src/core/textures/SubTexture.ts +25 -65
- package/src/core/textures/Texture.ts +214 -46
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +0 -18
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +519 -159
- package/src/utils.ts +64 -29
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -56
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -217
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -36
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -107
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +0 -2
- package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
- package/dist/src/core/shaders/webgl/DefaultBatched.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 -126
- 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 -91
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -611
- 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 -370
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -145
- package/src/core/shaders/templates/shaderUtils.ts +0 -47
- package/src/core/shaders/webgl/DefaultBatched.ts +0 -129
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
- /package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +0 -0
|
@@ -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
|
+
}
|
|
@@ -1,25 +1,6 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2024 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
1
|
import { isProductionEnvironment } from '../utils.js';
|
|
20
|
-
import { getTimeStamp } from './platform.js';
|
|
21
2
|
import type { Stage } from './Stage.js';
|
|
22
|
-
import {
|
|
3
|
+
import { Texture, TextureType } from './textures/Texture.js';
|
|
23
4
|
import { bytesToMb } from './utils.js';
|
|
24
5
|
|
|
25
6
|
export interface TextureMemoryManagerSettings {
|
|
@@ -116,17 +97,21 @@ export interface MemoryInfo {
|
|
|
116
97
|
*/
|
|
117
98
|
export class TextureMemoryManager {
|
|
118
99
|
private memUsed = 0;
|
|
119
|
-
private loadedTextures:
|
|
120
|
-
private orphanedTextures: Texture
|
|
121
|
-
private criticalThreshold: number;
|
|
122
|
-
private targetThreshold: number;
|
|
123
|
-
private cleanupInterval: number;
|
|
124
|
-
private debugLogging: boolean;
|
|
100
|
+
private loadedTextures: Set<Texture> = new Set();
|
|
101
|
+
private orphanedTextures: Set<Texture> = new Set();
|
|
102
|
+
private criticalThreshold: number = 124e6;
|
|
103
|
+
private targetThreshold: number = 0.5;
|
|
104
|
+
private cleanupInterval: number = 5000;
|
|
105
|
+
private debugLogging: boolean = false;
|
|
106
|
+
private loggingID: ReturnType<typeof setInterval> =
|
|
107
|
+
0 as unknown as ReturnType<typeof setInterval>;
|
|
125
108
|
private lastCleanupTime = 0;
|
|
126
|
-
private baselineMemoryAllocation: number;
|
|
109
|
+
private baselineMemoryAllocation: number = 26e6;
|
|
110
|
+
|
|
111
|
+
private hasWarnedAboveCritical = false;
|
|
127
112
|
|
|
128
113
|
public criticalCleanupRequested = false;
|
|
129
|
-
public doNotExceedCriticalThreshold: boolean;
|
|
114
|
+
public doNotExceedCriticalThreshold: boolean = false;
|
|
130
115
|
|
|
131
116
|
/**
|
|
132
117
|
* The current frame time in milliseconds
|
|
@@ -139,46 +124,7 @@ export class TextureMemoryManager {
|
|
|
139
124
|
public frameTime = 0;
|
|
140
125
|
|
|
141
126
|
constructor(private stage: Stage, settings: TextureMemoryManagerSettings) {
|
|
142
|
-
|
|
143
|
-
this.doNotExceedCriticalThreshold = doNotExceedCriticalThreshold || false;
|
|
144
|
-
this.criticalThreshold = Math.round(criticalThreshold);
|
|
145
|
-
const targetFraction = Math.max(
|
|
146
|
-
0,
|
|
147
|
-
Math.min(1, settings.targetThresholdLevel),
|
|
148
|
-
);
|
|
149
|
-
this.cleanupInterval = settings.cleanupInterval;
|
|
150
|
-
this.debugLogging = settings.debugLogging;
|
|
151
|
-
this.baselineMemoryAllocation = Math.round(
|
|
152
|
-
settings.baselineMemoryAllocation,
|
|
153
|
-
);
|
|
154
|
-
this.targetThreshold = Math.max(
|
|
155
|
-
Math.round(criticalThreshold * targetFraction),
|
|
156
|
-
this.baselineMemoryAllocation,
|
|
157
|
-
);
|
|
158
|
-
this.memUsed = Math.round(settings.baselineMemoryAllocation);
|
|
159
|
-
|
|
160
|
-
if (settings.debugLogging) {
|
|
161
|
-
let lastMemUse = 0;
|
|
162
|
-
setInterval(() => {
|
|
163
|
-
if (lastMemUse !== this.memUsed) {
|
|
164
|
-
lastMemUse = this.memUsed;
|
|
165
|
-
console.log(
|
|
166
|
-
`[TextureMemoryManager] Memory used: ${bytesToMb(
|
|
167
|
-
this.memUsed,
|
|
168
|
-
)} mb / ${bytesToMb(this.criticalThreshold)} mb (${(
|
|
169
|
-
(this.memUsed / this.criticalThreshold) *
|
|
170
|
-
100
|
|
171
|
-
).toFixed(1)}%)`,
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
}, 1000);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// If the threshold is 0, we disable the memory manager by replacing the
|
|
178
|
-
// setTextureMemUse method with a no-op function.
|
|
179
|
-
if (criticalThreshold === 0) {
|
|
180
|
-
this.setTextureMemUse = () => {};
|
|
181
|
-
}
|
|
127
|
+
this.updateSettings(settings);
|
|
182
128
|
}
|
|
183
129
|
|
|
184
130
|
/**
|
|
@@ -188,13 +134,13 @@ export class TextureMemoryManager {
|
|
|
188
134
|
*/
|
|
189
135
|
addToOrphanedTextures(texture: Texture) {
|
|
190
136
|
// if the texture is already in the orphaned textures list add it at the end
|
|
191
|
-
if (this.orphanedTextures.
|
|
192
|
-
this.
|
|
137
|
+
if (this.orphanedTextures.has(texture)) {
|
|
138
|
+
this.orphanedTextures.delete(texture);
|
|
193
139
|
}
|
|
194
140
|
|
|
195
141
|
// If the texture can be cleaned up, add it to the orphaned textures list
|
|
196
142
|
if (texture.preventCleanup === false) {
|
|
197
|
-
this.orphanedTextures.
|
|
143
|
+
this.orphanedTextures.add(texture);
|
|
198
144
|
}
|
|
199
145
|
}
|
|
200
146
|
|
|
@@ -204,10 +150,7 @@ export class TextureMemoryManager {
|
|
|
204
150
|
* @param texture - The texture to remove from the orphaned textures list
|
|
205
151
|
*/
|
|
206
152
|
removeFromOrphanedTextures(texture: Texture) {
|
|
207
|
-
|
|
208
|
-
if (index !== -1) {
|
|
209
|
-
this.orphanedTextures.splice(index, 1);
|
|
210
|
-
}
|
|
153
|
+
this.orphanedTextures.delete(texture);
|
|
211
154
|
}
|
|
212
155
|
|
|
213
156
|
/**
|
|
@@ -217,17 +160,19 @@ export class TextureMemoryManager {
|
|
|
217
160
|
* @param byteSize - The size of the texture in bytes
|
|
218
161
|
*/
|
|
219
162
|
setTextureMemUse(texture: Texture, byteSize: number) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
this.memUsed -= this.loadedTextures.get(texture)!;
|
|
223
|
-
}
|
|
163
|
+
// Update global memory counter by subtracting old value
|
|
164
|
+
this.memUsed -= texture.memUsed;
|
|
224
165
|
|
|
225
166
|
if (byteSize === 0) {
|
|
167
|
+
// PERFORMANCE: Mark for deletion, slot will be reused later
|
|
226
168
|
this.loadedTextures.delete(texture);
|
|
169
|
+
texture.memUsed = 0;
|
|
227
170
|
return;
|
|
228
171
|
} else {
|
|
172
|
+
// Update texture memory and add to tracking if not already present
|
|
173
|
+
texture.memUsed = byteSize;
|
|
229
174
|
this.memUsed += byteSize;
|
|
230
|
-
this.loadedTextures.
|
|
175
|
+
this.loadedTextures.add(texture);
|
|
231
176
|
}
|
|
232
177
|
|
|
233
178
|
if (this.memUsed > this.criticalThreshold) {
|
|
@@ -247,82 +192,33 @@ export class TextureMemoryManager {
|
|
|
247
192
|
return this.memUsed > this.criticalThreshold;
|
|
248
193
|
}
|
|
249
194
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
) {
|
|
261
|
-
const texture = this.orphanedTextures.shift();
|
|
262
|
-
|
|
263
|
-
if (texture === undefined) {
|
|
264
|
-
continue;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
if (texture.renderable === true) {
|
|
268
|
-
// If the texture is renderable, we can't free it up
|
|
269
|
-
continue;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
texture.free();
|
|
273
|
-
txManager.removeTextureFromCache(texture);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
cleanupDeep(critical: boolean) {
|
|
278
|
-
// Free non-renderable textures until we reach the target threshold
|
|
279
|
-
const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
|
|
280
|
-
const txManager = this.stage.txManager;
|
|
281
|
-
|
|
282
|
-
// sort by renderability
|
|
283
|
-
const filteredAndSortedTextures: Texture[] = [];
|
|
284
|
-
const textures = [...this.loadedTextures.keys()];
|
|
285
|
-
for (let i = 0; i < textures.length; i++) {
|
|
286
|
-
const texture = textures[i];
|
|
287
|
-
if (texture === undefined) {
|
|
288
|
-
continue;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
if (
|
|
292
|
-
texture.type === TextureType.image ||
|
|
293
|
-
texture.type === TextureType.noise ||
|
|
294
|
-
texture.type === TextureType.renderToTexture
|
|
295
|
-
) {
|
|
296
|
-
if (texture.renderable === true) {
|
|
297
|
-
filteredAndSortedTextures.push(texture);
|
|
298
|
-
} else {
|
|
299
|
-
filteredAndSortedTextures.unshift(texture);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
195
|
+
/**
|
|
196
|
+
* Destroy a texture and remove it from the memory manager
|
|
197
|
+
*
|
|
198
|
+
* @param texture - The texture to destroy
|
|
199
|
+
*/
|
|
200
|
+
destroyTexture(texture: Texture) {
|
|
201
|
+
if (this.debugLogging === true) {
|
|
202
|
+
console.log(
|
|
203
|
+
`[TextureMemoryManager] Destroying texture. State: ${texture.state}`,
|
|
204
|
+
);
|
|
302
205
|
}
|
|
303
206
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
if (texture === undefined) {
|
|
307
|
-
continue;
|
|
308
|
-
}
|
|
207
|
+
// PERFORMANCE: Null out array position, slot will be reused later
|
|
208
|
+
this.loadedTextures.delete(texture);
|
|
309
209
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
210
|
+
// Destroy texture and update memory counters
|
|
211
|
+
const txManager = this.stage.txManager;
|
|
212
|
+
txManager.removeTextureFromCache(texture);
|
|
313
213
|
|
|
314
|
-
|
|
315
|
-
break;
|
|
316
|
-
}
|
|
214
|
+
texture.destroy();
|
|
317
215
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
txManager.removeTextureFromQueue(texture);
|
|
322
|
-
}
|
|
216
|
+
// Update memory counters
|
|
217
|
+
this.memUsed -= texture.memUsed;
|
|
218
|
+
texture.memUsed = 0;
|
|
323
219
|
}
|
|
324
220
|
|
|
325
|
-
cleanup(
|
|
221
|
+
cleanup(full: boolean = false) {
|
|
326
222
|
const critical = this.criticalCleanupRequested;
|
|
327
223
|
this.lastCleanupTime = this.frameTime;
|
|
328
224
|
|
|
@@ -335,16 +231,38 @@ export class TextureMemoryManager {
|
|
|
335
231
|
|
|
336
232
|
if (this.debugLogging === true) {
|
|
337
233
|
console.log(
|
|
338
|
-
`[TextureMemoryManager] Cleaning up textures. Critical: ${critical}.
|
|
234
|
+
`[TextureMemoryManager] Cleaning up textures. Critical: ${critical}. Full: ${full}`,
|
|
339
235
|
);
|
|
340
236
|
}
|
|
341
237
|
|
|
342
|
-
//
|
|
343
|
-
this.
|
|
238
|
+
// Free non-renderable textures until we reach the target threshold
|
|
239
|
+
const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
|
|
344
240
|
|
|
345
|
-
//
|
|
346
|
-
|
|
347
|
-
|
|
241
|
+
// PERFORMANCE: Zero-overhead cleanup with null marking
|
|
242
|
+
// Skip null entries, mark cleaned textures as null for later defrag
|
|
243
|
+
let currentMemUsed = this.memUsed;
|
|
244
|
+
|
|
245
|
+
for (const texture of this.loadedTextures) {
|
|
246
|
+
// Early exit: target memory reached
|
|
247
|
+
if (full === false && currentMemUsed < memTarget) {
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Fast type check for cleanable textures
|
|
252
|
+
const isCleanableType =
|
|
253
|
+
texture.type === TextureType.image ||
|
|
254
|
+
texture.type === TextureType.noise ||
|
|
255
|
+
texture.type === TextureType.renderToTexture;
|
|
256
|
+
|
|
257
|
+
// Immediate cleanup if eligible
|
|
258
|
+
if (isCleanableType && texture.canBeCleanedUp() === true) {
|
|
259
|
+
// Get memory before destroying
|
|
260
|
+
const textureMemory = texture.memUsed;
|
|
261
|
+
|
|
262
|
+
// Destroy texture (which will null out the array position)
|
|
263
|
+
this.destroyTexture(texture);
|
|
264
|
+
currentMemUsed -= textureMemory;
|
|
265
|
+
}
|
|
348
266
|
}
|
|
349
267
|
|
|
350
268
|
if (this.memUsed >= this.criticalThreshold) {
|
|
@@ -352,14 +270,20 @@ export class TextureMemoryManager {
|
|
|
352
270
|
memUsed: this.memUsed,
|
|
353
271
|
criticalThreshold: this.criticalThreshold,
|
|
354
272
|
});
|
|
355
|
-
|
|
356
|
-
if (
|
|
273
|
+
// Only emit the warning once per over-threshold period
|
|
274
|
+
if (
|
|
275
|
+
!this.hasWarnedAboveCritical &&
|
|
276
|
+
(this.debugLogging === true || isProductionEnvironment === false)
|
|
277
|
+
) {
|
|
357
278
|
console.warn(
|
|
358
279
|
`[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${this.memUsed}`,
|
|
359
280
|
);
|
|
281
|
+
|
|
282
|
+
this.hasWarnedAboveCritical = true;
|
|
360
283
|
}
|
|
361
284
|
} else {
|
|
362
285
|
this.criticalCleanupRequested = false;
|
|
286
|
+
this.hasWarnedAboveCritical = false;
|
|
363
287
|
}
|
|
364
288
|
}
|
|
365
289
|
|
|
@@ -372,15 +296,17 @@ export class TextureMemoryManager {
|
|
|
372
296
|
*/
|
|
373
297
|
getMemoryInfo(): MemoryInfo {
|
|
374
298
|
let renderableTexturesLoaded = 0;
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
|
|
299
|
+
let renderableMemUsed = this.baselineMemoryAllocation;
|
|
300
|
+
|
|
301
|
+
for (const texture of this.loadedTextures) {
|
|
302
|
+
if (texture && texture.renderable) {
|
|
303
|
+
renderableTexturesLoaded += 1;
|
|
304
|
+
renderableMemUsed += texture.memUsed;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Count non-null entries for accurate loaded texture count
|
|
309
|
+
const actualLoadedTextures = this.loadedTextures.size;
|
|
384
310
|
|
|
385
311
|
return {
|
|
386
312
|
criticalThreshold: this.criticalThreshold,
|
|
@@ -388,8 +314,65 @@ export class TextureMemoryManager {
|
|
|
388
314
|
renderableMemUsed,
|
|
389
315
|
memUsed: this.memUsed,
|
|
390
316
|
renderableTexturesLoaded,
|
|
391
|
-
loadedTextures:
|
|
317
|
+
loadedTextures: actualLoadedTextures,
|
|
392
318
|
baselineMemoryAllocation: this.baselineMemoryAllocation,
|
|
393
319
|
};
|
|
394
320
|
}
|
|
321
|
+
|
|
322
|
+
public updateSettings(settings: TextureMemoryManagerSettings): void {
|
|
323
|
+
const { criticalThreshold, doNotExceedCriticalThreshold } = settings;
|
|
324
|
+
|
|
325
|
+
this.doNotExceedCriticalThreshold = doNotExceedCriticalThreshold || false;
|
|
326
|
+
this.criticalThreshold = Math.round(criticalThreshold);
|
|
327
|
+
|
|
328
|
+
if (this.memUsed === 0) {
|
|
329
|
+
this.memUsed = Math.round(settings.baselineMemoryAllocation);
|
|
330
|
+
} else {
|
|
331
|
+
const memUsedExBaseline = this.memUsed - this.baselineMemoryAllocation;
|
|
332
|
+
this.memUsed = Math.round(
|
|
333
|
+
settings.baselineMemoryAllocation + memUsedExBaseline,
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
this.baselineMemoryAllocation = Math.round(
|
|
337
|
+
settings.baselineMemoryAllocation,
|
|
338
|
+
);
|
|
339
|
+
const targetFraction = Math.max(
|
|
340
|
+
0,
|
|
341
|
+
Math.min(1, settings.targetThresholdLevel),
|
|
342
|
+
);
|
|
343
|
+
this.targetThreshold = Math.max(
|
|
344
|
+
Math.round(criticalThreshold * targetFraction),
|
|
345
|
+
this.baselineMemoryAllocation,
|
|
346
|
+
);
|
|
347
|
+
|
|
348
|
+
this.cleanupInterval = settings.cleanupInterval;
|
|
349
|
+
this.debugLogging = settings.debugLogging;
|
|
350
|
+
|
|
351
|
+
if (this.loggingID && !settings.debugLogging) {
|
|
352
|
+
clearInterval(this.loggingID);
|
|
353
|
+
this.loggingID = 0 as unknown as ReturnType<typeof setInterval>;
|
|
354
|
+
}
|
|
355
|
+
if (settings.debugLogging && !this.loggingID) {
|
|
356
|
+
let lastMemUse = 0;
|
|
357
|
+
this.loggingID = setInterval(() => {
|
|
358
|
+
if (lastMemUse !== this.memUsed) {
|
|
359
|
+
lastMemUse = this.memUsed;
|
|
360
|
+
console.log(
|
|
361
|
+
`[TextureMemoryManager] Memory used: ${bytesToMb(
|
|
362
|
+
this.memUsed,
|
|
363
|
+
)} mb / ${bytesToMb(this.criticalThreshold)} mb (${(
|
|
364
|
+
(this.memUsed / this.criticalThreshold) *
|
|
365
|
+
100
|
|
366
|
+
).toFixed(1)}%)`,
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
}, 1000);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// If the threshold is 0, we disable the memory manager by replacing the
|
|
373
|
+
// setTextureMemUse method with a no-op function.
|
|
374
|
+
if (criticalThreshold === 0) {
|
|
375
|
+
this.setTextureMemUse = () => {};
|
|
376
|
+
}
|
|
377
|
+
}
|
|
395
378
|
}
|
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
1
|
import { CoreAnimation } from './CoreAnimation.js';
|
|
21
2
|
|
|
22
3
|
export class AnimationManager {
|
|
@@ -1,34 +1,14 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
1
|
import { type CoreNode, type CoreNodeAnimateProps } from '../CoreNode.js';
|
|
21
|
-
import { getTimingFunction } from '../utils.js';
|
|
2
|
+
import { getTimingFunction, type TimingFunction } from '../utils.js';
|
|
22
3
|
import { mergeColorProgress } from '../../utils.js';
|
|
23
4
|
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
24
5
|
|
|
25
6
|
export interface AnimationSettings {
|
|
26
7
|
duration: number;
|
|
27
8
|
delay: number;
|
|
28
|
-
easing: string;
|
|
9
|
+
easing: string | TimingFunction;
|
|
29
10
|
loop: boolean;
|
|
30
11
|
repeat: number;
|
|
31
|
-
repeatDelay: number;
|
|
32
12
|
stopMethod: 'reverse' | 'reset' | false;
|
|
33
13
|
}
|
|
34
14
|
|
|
@@ -43,7 +23,7 @@ export class CoreAnimation extends EventEmitter {
|
|
|
43
23
|
private progress = 0;
|
|
44
24
|
private delayFor = 0;
|
|
45
25
|
private delay = 0;
|
|
46
|
-
private timingFunction:
|
|
26
|
+
private timingFunction: TimingFunction;
|
|
47
27
|
|
|
48
28
|
propValuesMap: PropValuesMap = {};
|
|
49
29
|
|
|
@@ -89,10 +69,10 @@ export class CoreAnimation extends EventEmitter {
|
|
|
89
69
|
easing,
|
|
90
70
|
loop: settings.loop ?? false,
|
|
91
71
|
repeat: settings.repeat ?? 0,
|
|
92
|
-
repeatDelay: settings.repeatDelay ?? 0,
|
|
93
72
|
stopMethod: settings.stopMethod ?? false,
|
|
94
73
|
};
|
|
95
|
-
this.timingFunction =
|
|
74
|
+
this.timingFunction =
|
|
75
|
+
typeof easing === 'string' ? getTimingFunction(easing) : easing;
|
|
96
76
|
this.delayFor = delay;
|
|
97
77
|
this.delay = delay;
|
|
98
78
|
}
|
|
@@ -162,14 +142,14 @@ export class CoreAnimation extends EventEmitter {
|
|
|
162
142
|
}
|
|
163
143
|
|
|
164
144
|
private applyEasing(p: number, s: number, e: number): number {
|
|
165
|
-
return
|
|
145
|
+
return this.timingFunction(p) * (e - s) + s;
|
|
166
146
|
}
|
|
167
147
|
|
|
168
148
|
updateValue(
|
|
169
149
|
propName: string,
|
|
170
150
|
propValue: number,
|
|
171
151
|
startValue: number,
|
|
172
|
-
easing: string | undefined,
|
|
152
|
+
easing: string | TimingFunction | undefined,
|
|
173
153
|
): number {
|
|
174
154
|
if (this.progress === 1) {
|
|
175
155
|
return propValue;
|
|
@@ -201,7 +181,7 @@ export class CoreAnimation extends EventEmitter {
|
|
|
201
181
|
private updateValues(
|
|
202
182
|
target: Record<string, number>,
|
|
203
183
|
valueMap: Record<string, PropValues>,
|
|
204
|
-
easing: string | undefined,
|
|
184
|
+
easing: string | TimingFunction | undefined,
|
|
205
185
|
) {
|
|
206
186
|
const entries = Object.entries(valueMap);
|
|
207
187
|
const eLength = entries.length;
|
|
@@ -215,6 +195,13 @@ export class CoreAnimation extends EventEmitter {
|
|
|
215
195
|
update(dt: number) {
|
|
216
196
|
const { duration, loop, easing, stopMethod } = this.settings;
|
|
217
197
|
const { delayFor } = this;
|
|
198
|
+
|
|
199
|
+
if (this.node.destroyed) {
|
|
200
|
+
// cleanup
|
|
201
|
+
this.emit('destroyed', {});
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
|
|
218
205
|
if (duration === 0 && delayFor === 0) {
|
|
219
206
|
this.emit('finished', {});
|
|
220
207
|
return;
|
|
@@ -273,10 +260,6 @@ export class CoreAnimation extends EventEmitter {
|
|
|
273
260
|
);
|
|
274
261
|
}
|
|
275
262
|
|
|
276
|
-
if (this.progress < 1) {
|
|
277
|
-
this.emit('tick', { progress: this.progress });
|
|
278
|
-
}
|
|
279
|
-
|
|
280
263
|
if (this.progress === 1) {
|
|
281
264
|
this.emit('finished', {});
|
|
282
265
|
}
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/unbound-method */
|
|
2
|
-
/*
|
|
3
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
4
|
-
* following copyright and licenses apply:
|
|
5
|
-
*
|
|
6
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
7
|
-
*
|
|
8
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
9
|
-
* you may not use this file except in compliance with the License.
|
|
10
|
-
* You may obtain a copy of the License at
|
|
11
|
-
*
|
|
12
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
-
*
|
|
14
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
-
* See the License for the specific language governing permissions and
|
|
18
|
-
* limitations under the License.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
1
|
import type {
|
|
22
2
|
AnimationControllerState,
|
|
23
3
|
IAnimationController,
|
|
@@ -52,6 +32,7 @@ export class CoreAnimationController
|
|
|
52
32
|
this.onAnimating = this.onAnimating.bind(this);
|
|
53
33
|
this.onFinished = this.onFinished.bind(this);
|
|
54
34
|
this.onTick = this.onTick.bind(this);
|
|
35
|
+
this.onDestroy = this.onDestroy.bind(this);
|
|
55
36
|
}
|
|
56
37
|
|
|
57
38
|
start(): IAnimationController {
|
|
@@ -96,6 +77,7 @@ export class CoreAnimationController
|
|
|
96
77
|
this.animation.once('finished', this.onFinished);
|
|
97
78
|
this.animation.on('animating', this.onAnimating);
|
|
98
79
|
this.animation.on('tick', this.onTick);
|
|
80
|
+
this.animation.on('destroyed', this.onDestroy);
|
|
99
81
|
// Then register the animation
|
|
100
82
|
this.manager.registerAnimation(this.animation);
|
|
101
83
|
}
|
|
@@ -107,6 +89,7 @@ export class CoreAnimationController
|
|
|
107
89
|
this.animation.off('finished', this.onFinished);
|
|
108
90
|
this.animation.off('animating', this.onAnimating);
|
|
109
91
|
this.animation.off('tick', this.onTick);
|
|
92
|
+
this.animation.off('destroy', this.onDestroy);
|
|
110
93
|
}
|
|
111
94
|
|
|
112
95
|
private makeStoppedPromise(): void {
|
|
@@ -117,8 +100,12 @@ export class CoreAnimationController
|
|
|
117
100
|
}
|
|
118
101
|
}
|
|
119
102
|
|
|
103
|
+
private onDestroy(this: CoreAnimationController): void {
|
|
104
|
+
this.unregisterAnimation();
|
|
105
|
+
this.state = 'stopped';
|
|
106
|
+
}
|
|
107
|
+
|
|
120
108
|
private onFinished(this: CoreAnimationController): void {
|
|
121
|
-
assertTruthy(this.stoppedResolve);
|
|
122
109
|
// If the animation is looping, then we need to restart it.
|
|
123
110
|
const { loop, stopMethod } = this.animation.settings;
|
|
124
111
|
|
|
@@ -136,8 +123,11 @@ export class CoreAnimationController
|
|
|
136
123
|
this.unregisterAnimation();
|
|
137
124
|
|
|
138
125
|
// resolve promise
|
|
139
|
-
this.stoppedResolve
|
|
140
|
-
|
|
126
|
+
if (this.stoppedResolve !== null) {
|
|
127
|
+
this.stoppedResolve();
|
|
128
|
+
this.stoppedResolve = null;
|
|
129
|
+
}
|
|
130
|
+
|
|
141
131
|
this.emit('stopped', this);
|
|
142
132
|
this.state = 'stopped';
|
|
143
133
|
}
|