@lightningjs/renderer 0.9.4 → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -82
- package/dist/exports/index.d.ts +42 -3
- package/dist/exports/index.js +37 -3
- package/dist/exports/index.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +461 -46
- package/dist/src/core/CoreNode.js +170 -104
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +16 -6
- package/dist/src/core/CoreShaderManager.js +20 -20
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +30 -4
- package/dist/src/core/CoreTextNode.js +24 -1
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +31 -82
- package/dist/src/core/CoreTextureManager.js +39 -126
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +67 -9
- package/dist/src/core/Stage.js +174 -30
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +97 -8
- package/dist/src/core/TextureMemoryManager.js +142 -19
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +14 -6
- package/dist/src/core/animations/CoreAnimation.js +137 -43
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +59 -52
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/platform.js +7 -1
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +3 -2
- package/dist/src/core/renderers/CoreContextTexture.js +7 -1
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +5 -1
- package/dist/src/core/renderers/CoreRenderer.js +0 -1
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +3 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +16 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +2 -5
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +2 -2
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +7 -10
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +3 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +47 -9
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +2 -43
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +70 -37
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +8 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +103 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +3 -18
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +5 -2
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +4 -36
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +3 -2
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +4 -2
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +2 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +4 -36
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +69 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +5 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +10 -26
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +116 -365
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -2
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +2 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +2 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +1 -1
- package/dist/src/core/textures/NoiseTexture.js +3 -0
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +2 -2
- package/dist/src/core/textures/SubTexture.js +5 -1
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +23 -2
- package/dist/src/core/textures/Texture.js +32 -3
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +7 -0
- package/dist/src/core/utils.js +12 -10
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +9 -14
- package/dist/src/main-api/DynamicShaderController.js +21 -17
- package/dist/src/main-api/DynamicShaderController.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +43 -463
- package/dist/src/main-api/INode.js +1 -19
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +10 -10
- package/dist/src/main-api/Inspector.js +18 -15
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +71 -25
- package/dist/src/main-api/Renderer.js +80 -109
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/ShaderController.d.ts +3 -8
- package/dist/src/main-api/ShaderController.js +8 -3
- package/dist/src/main-api/ShaderController.js.map +1 -1
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.js +7 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/index.ts +62 -3
- package/package.json +8 -7
- package/src/core/CoreNode.test.ts +93 -0
- package/src/core/CoreNode.ts +675 -188
- package/src/core/CoreShaderManager.ts +56 -29
- package/src/core/CoreTextNode.ts +41 -9
- package/src/core/CoreTextureManager.ts +55 -175
- package/src/core/Stage.ts +199 -43
- package/src/core/TextureMemoryManager.ts +231 -22
- package/src/core/animations/CoreAnimation.ts +194 -67
- package/src/core/lib/ImageWorker.ts +79 -52
- package/src/core/lib/utils.ts +1 -0
- package/src/core/platform.ts +8 -1
- package/src/core/renderers/CoreContextTexture.ts +9 -2
- package/src/core/renderers/CoreRenderer.ts +5 -2
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +20 -1
- package/src/core/renderers/canvas/CanvasCoreTexture.ts +2 -6
- package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +2 -2
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +7 -11
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +51 -9
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +94 -92
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +129 -3
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +7 -15
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +5 -2
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +6 -15
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +6 -2
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +10 -2
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +2 -1
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +6 -15
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +80 -0
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +14 -15
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -2
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -1
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +139 -447
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -3
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +2 -2
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +4 -2
- package/src/core/text-rendering/renderers/TextRenderer.ts +3 -2
- package/src/core/textures/ColorTexture.ts +1 -1
- package/src/core/textures/ImageTexture.ts +1 -1
- package/src/core/textures/NoiseTexture.ts +4 -1
- package/src/core/textures/SubTexture.ts +7 -7
- package/src/core/textures/Texture.ts +46 -3
- package/src/core/utils.ts +12 -11
- package/src/main-api/DynamicShaderController.ts +104 -0
- package/src/main-api/INode.ts +57 -479
- package/src/main-api/Inspector.ts +37 -39
- package/src/main-api/Renderer.ts +586 -0
- package/src/main-api/ShaderController.ts +81 -0
- package/src/main-api/utils.ts +45 -0
- package/src/utils.ts +8 -0
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js +0 -29
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/core/renderers/SpecificNode.d.ts +0 -1
- package/dist/src/core/renderers/SpecificNode.js +0 -19
- package/dist/src/core/renderers/SpecificNode.js.map +0 -1
- package/dist/src/core/renderers/webgl/newShader/effectsMock.d.ts +0 -13
- package/dist/src/core/renderers/webgl/newShader/effectsMock.js +0 -62
- package/dist/src/core/renderers/webgl/newShader/effectsMock.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -24
- package/dist/src/main-api/ICoreDriver.js +0 -20
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -378
- package/dist/src/main-api/RendererMain.js +0 -367
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -21
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -115
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -101
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -425
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -204
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -93
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -290
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -40
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -61
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -203
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -25
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -232
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -24
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -113
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -46
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -160
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -184
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -109
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -147
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -74
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/exports/core-api.ts +0 -102
- package/exports/main-api.ts +0 -62
- package/src/core/CoreExtension.ts +0 -32
- package/src/main-api/ICoreDriver.ts +0 -68
- package/src/main-api/RendererMain.ts +0 -685
- package/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts +0 -45
- package/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts +0 -154
- package/src/main-api/texture-usage-trackers/TextureUsageTracker.ts +0 -54
- package/src/render-drivers/main/MainCoreDriver.ts +0 -159
- package/src/render-drivers/main/MainOnlyNode.ts +0 -553
- package/src/render-drivers/main/MainOnlyTextNode.ts +0 -261
- package/src/render-drivers/threadx/NodeStruct.ts +0 -320
- package/src/render-drivers/threadx/SharedNode.ts +0 -101
- package/src/render-drivers/threadx/TextNodeStruct.ts +0 -213
- package/src/render-drivers/threadx/ThreadXCoreDriver.ts +0 -291
- package/src/render-drivers/threadx/ThreadXMainAnimationController.ts +0 -135
- package/src/render-drivers/threadx/ThreadXMainNode.ts +0 -201
- package/src/render-drivers/threadx/ThreadXMainTextNode.ts +0 -85
- package/src/render-drivers/threadx/ThreadXRendererMessage.ts +0 -112
- package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +0 -253
- package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +0 -151
- package/src/render-drivers/threadx/worker/renderer.ts +0 -156
- package/src/render-drivers/utils.ts +0 -102
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAgC9E,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,MAAM,OAAO,KAAM,SAAQ,YAAY;IA0BhB;IAzBrB,oBAAoB;IACJ,gBAAgB,CAAmB;IACnC,SAAS,CAAqB;IAC9B,YAAY,CAAuB;IACnC,WAAW,CAAgB;IAC3B,aAAa,CAA2B;IACxC,SAAS,CAAoB;IAC7B,QAAQ,CAAe;IACvB,IAAI,CAAW;IACf,YAAY,CAAmC;IAE/D,SAAS;IACT,SAAS,GAAG,CAAC,CAAC;IACd,aAAa,GAAG,CAAC,CAAC;IAClB,gBAAgB,GAAG,CAAC,CAAC;IACb,YAAY,GAAG,CAAC,CAAC;IACjB,cAAc,GAAG,CAAC,CAAC;IACnB,eAAe,GAAG,KAAK,CAAC;IAEhC,cAAc;IACd,UAAU,GAAsB,IAAI,CAAC;IAErC;;OAEG;IACH,YAAqB,OAAqB;QACxC,KAAK,EAAE,CAAC;QADW,YAAO,GAAP,OAAO,CAAc;QAExC,MAAM,EACJ,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,UAAU,GACX,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAqC,CAAC;QAC1D,IAAI,YAAY,EAAE;YAChB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC9B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,KAAK,EAAE,mBAAmB,EAAE;YAC9B,WAAW,CAAC,GAAG,EAAE;gBACf,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;YAClE,CAAC,EAAE,IAAI,CAAC,CAAC;SACV;QAED,MAAM,eAAe,GAAwB;YAC3C,KAAK,EAAE,IAAI;YACX,MAAM;YACN,UAAU,EACR,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,uBAAuB;YACpE,UAAU,EAAE,UAAU,IAAI,UAAU;YACpC,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,UAAU,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;SACzD;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,eAAe,CAAC,CAAC;SACxD;QACD,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAE/B,yCAAyC;QACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,aAAa;YAChB,UAAU,KAAK,OAAO;gBACpB,CAAC,CAAC;oBACE,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;oBACpC,GAAG,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC;iBAC/B;gBACH,CAAC,CAAC;oBACE,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;iBACrC,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzD,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE;YAClC,EAAE,EAAE,MAAM;YACV,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;YACjB,GAAG,EAAE,KAAK;SACX,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QAErB,8BAA8B;QAC9B,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,IAAI,CAAC,CAAC;SACjB;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;SACR;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,YAAY,EAAE,CAAC;QAEvC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa;YAClC,CAAC,CAAC,GAAG,GAAG,CAAC;YACT,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,gBAAgB;YAC3B,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC,CAAC;QACH,iBAAiB;QACjB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC3C,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEvB,wBAAwB;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC1D;QAED,+CAA+C;QAC/C,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEjB,sCAAsC;QACtC,IAAI,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE;YACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;SAC5B;QAED,uCAAuC;QACvC,mDAAmD;QACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,QAAQ,CAAC,cAAc,EAAE,CAAC;SAC3B;QAED,oBAAoB;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,sBAAsB;QACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;QAEnB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,2CAA2C;QAC3C,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;IACH,CAAC;IAED,YAAY;QACV,+DAA+D;QAC/D,2CAA2C;QAC3C,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC;YACtC,IAAI,IAAI,CAAC,cAAc,IAAI,iBAAiB,EAAE;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CACjD,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrB,GAAG;oBACH,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI;iBACxB,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;aAC1B;SACF;IACH,CAAC;IAED,QAAQ,CAAC,IAAc;QACrB,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,KAAK,EAAE;gBACV,SAAS;aACV;YAED,IAAI,KAAK,EAAE,UAAU,KAAK,CAAC,EAAE;gBAC3B,SAAS;aACV;YAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CACjB,OAAgB,EAChB,uBAAqD,IAAI;QAEzD,IAAI,UAAU,GAAG,oBAAoB,CAAC;QAEtC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,sDAAsD;QACtD,IAAI,UAAU,EAAE;YACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,gBAAgB,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,2BAA2B,UAAU,cAAc,CAAC,CAAC;gBAClE,UAAU,GAAG,IAAI,CAAC;gBAClB,gBAAgB,GAAG,IAAI,CAAC;aACzB;iBAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;gBACnD,OAAO,CAAC,IAAI,CACV,sCAAsC,UAAU,YAAY,EAC5D,OAAO,CACR,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC;gBAClB,gBAAgB,GAAG,IAAI,CAAC;aACzB;SACF;QAED,IAAI,CAAC,UAAU,EAAE;YACf,qFAAqF;YACrF,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAC3D,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACrB,8BAA8B;oBAC9B,SAAS;iBACV;gBACD,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;oBAC7B,UAAU,GAAG,IAA6B,CAAC;oBAC3C,MAAM;iBACP;aACF;YACD,IAAI,CAAC,UAAU,EAAE;gBACf,uDAAuD;gBACvD,UAAU,GAAG,QAAQ,CAAC;aACvB;SACF;QAED,IAAI,gBAAgB,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SACrE;QAED,yEAAyE;QACzE,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5D,YAAY,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;QAErE,kEAAkE;QAClE,wDAAwD;QACxD,OAAO,oBAA+C,CAAC;IACzD,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAkB,MAAM,wBAAwB,CAAC;AAM3E,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,OAAO,EACL,oBAAoB,GAErB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAE,YAAY,EAA0B,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AA4B5D,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,MAAM,OAAO,KAAK;IAsCK;IArCrB,oBAAoB;IACJ,gBAAgB,CAAmB;IACnC,SAAS,CAAqB;IAC9B,YAAY,CAAuB;IACnC,WAAW,CAAgB;IAC3B,aAAa,CAA2B;IACxC,SAAS,CAAoB;IAC7B,QAAQ,CAAe;IACvB,IAAI,CAAW;IACf,YAAY,CAAmC;IAC/C,YAAY,CAAuB;IAEnD;;;;;;;OAOG;IACa,QAAQ,CAAe;IAEvC,SAAS;IACT,SAAS,GAAG,CAAC,CAAC;IACd,aAAa,GAAG,CAAC,CAAC;IAClB,gBAAgB,GAAG,CAAC,CAAC;IACb,YAAY,GAAG,CAAC,CAAC;IACjB,cAAc,GAAG,CAAC,CAAC;IACnB,eAAe,GAAG,KAAK,CAAC;IACxB,eAAe,GAAuC,EAAE,CAAC;IAEjE,cAAc;IACd,UAAU,GAAsB,IAAI,CAAC;IAErC;;OAEG;IACH,YAAqB,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;QACxC,MAAM,EACJ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,UAAU,GACX,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAqC,CAAC;QAC1D,IAAI,YAAY,EAAE;YAChB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC9B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,MAAM,eAAe,GAAwB;YAC3C,KAAK,EAAE,IAAI;YACX,MAAM;YACN,UAAU,EACR,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,uBAAuB;YACpE,UAAU,EAAE,UAAU,IAAI,UAAU;YACpC,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,UAAU,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;SACzD;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,eAAe,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QACpD,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAE/B,yCAAyC;QACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,aAAa;YAChB,UAAU,KAAK,OAAO;gBACpB,CAAC,CAAC;oBACE,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;oBACpC,GAAG,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC;iBAC/B;gBACH,CAAC,CAAC;oBACE,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;iBACrC,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzD,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE;YAClC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,IAAI,CAAC,YAAY;YACzB,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,IAAI;YACT,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QAErB,8BAA8B;QAC9B,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,IAAI,CAAC,CAAC;SACjB;IACH,CAAC;IAED,eAAe;QACb,MAAM,YAAY,GAAG,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa;YAClC,CAAC,CAAC,GAAG,GAAG,CAAC;YACT,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC;QAE3C,0EAA0E;QAC1E,oEAAoE;QACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,gBAAgB;YAC3B,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;SACR;QACD,iBAAiB;QACjB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC3C,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEvB,wBAAwB;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC1D;QAED,+CAA+C;QAC/C,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEjB,uCAAuC;QACvC,IAAI,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE;YAC9C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC7B;QAED,uCAAuC;QACvC,mDAAmD;QACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,QAAQ,CAAC,cAAc,EAAE,CAAC;SAC3B;QAED,oBAAoB;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,sBAAsB;QACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;QAEnB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,2CAA2C;QAC3C,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,IAAY,EAAE,IAAa;QACzC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB;QACd,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,YAAY;QACV,+DAA+D;QAC/D,2CAA2C;QAC3C,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC;YACtC,IAAI,IAAI,CAAC,cAAc,IAAI,iBAAiB,EAAE;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CACjD,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;oBAChC,GAAG;oBACH,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI;iBACxB,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;aAC1B;SACF;IACH,CAAC;IAED,QAAQ,CAAC,IAAc;QACrB,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,KAAK,EAAE;gBACV,SAAS;aACV;YAED,IAAI,KAAK,EAAE,UAAU,KAAK,CAAC,EAAE;gBAC3B,SAAS;aACV;YAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CACjB,OAAgB,EAChB,uBAAqD,IAAI;QAEzD,IAAI,UAAU,GAAG,oBAAoB,CAAC;QAEtC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,sDAAsD;QACtD,IAAI,UAAU,EAAE;YACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,gBAAgB,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,2BAA2B,UAAU,cAAc,CAAC,CAAC;gBAClE,UAAU,GAAG,IAAI,CAAC;gBAClB,gBAAgB,GAAG,IAAI,CAAC;aACzB;iBAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;gBACnD,OAAO,CAAC,IAAI,CACV,sCAAsC,UAAU,YAAY,EAC5D,OAAO,CACR,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC;gBAClB,gBAAgB,GAAG,IAAI,CAAC;aACzB;SACF;QAED,IAAI,CAAC,UAAU,EAAE;YACf,qFAAqF;YACrF,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAC3D,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACrB,8BAA8B;oBAC9B,SAAS;iBACV;gBACD,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;oBAC7B,UAAU,GAAG,IAA6B,CAAC;oBAC3C,MAAM;iBACP;aACF;YACD,IAAI,CAAC,UAAU,EAAE;gBACf,uDAAuD;gBACvD,UAAU,GAAG,QAAQ,CAAC;aACvB;SACF;QAED,IAAI,gBAAgB,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SACrE;QAED,yEAAyE;QACzE,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5D,YAAY,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;QAErE,kEAAkE;QAClE,wDAAwD;QACxD,OAAO,oBAA+C,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CACb,IAAqB,EACrB,KAA8B;QAE9B,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,KAA6B;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,cAAc,CAAC,KAAiC;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG;YACpB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAClC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YACtB,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,IAAI,IAAI;YACxD,QAAQ;YACR,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,YAAY;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,QAAQ;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,QAAQ;YACxC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,QAAQ;YAC1C,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,MAAM;YACpC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK;YACrC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC;YAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC;YAC3B,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;YACvC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;YAC7B,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,YAAY;YAChD,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,QAAQ;YAC9C,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,KAAK;YAC7C,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,WAAW,EAAE,IAAI;SAClB,CAAC;QAEF,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;OAUG;IACO,mBAAmB,CAAC,KAA6B;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5E,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC;QAC/D,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC;QACjE,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC;QAClE,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAEpD,OAAO;YACL,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;YACf,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;YACf,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;YACvB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;YACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;YACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;YACjC,KAAK;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;YACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK;YACvC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;YACnC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK;YACrC,OAAO;YACP,OAAO;YACP,OAAO;YACP,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC;YACzB,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;YACrC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;YAC9B,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,EAAE;YAC1C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY;YACzC,+EAA+E;YAC/E,kDAAkD;YAClD,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC;YACxC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC;YACxC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;YACvB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC;YACxC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC;YACxC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG;YAC1C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG;YAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;YAC7B,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK;YACvB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,13 +1,102 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Stage } from './Stage.js';
|
|
2
|
+
import type { Texture } from './textures/Texture.js';
|
|
3
|
+
export interface TextureMemoryManagerSettings {
|
|
4
|
+
/**
|
|
5
|
+
* Critical Threshold (in bytes)
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* When the amount of memory used by textures exceeds this threshold,
|
|
9
|
+
* the Renderer will immediately trigger a Texture Cleanup towards the
|
|
10
|
+
* Target Threshold Level.
|
|
11
|
+
*
|
|
12
|
+
* When set to `0`, the Texture Memory Manager is disabled.
|
|
13
|
+
*
|
|
14
|
+
* @defaultValue `124e6` (118 MB)
|
|
15
|
+
*/
|
|
16
|
+
criticalThreshold: number;
|
|
17
|
+
/**
|
|
18
|
+
* Target Threshold Level (as fraction of Critical Threshold)
|
|
19
|
+
*
|
|
20
|
+
* @remarks
|
|
21
|
+
* This value is the fractional level of the Critical Threshold that the
|
|
22
|
+
* Texture Memory Manager will attempt to maintain by cleaning up textures.
|
|
23
|
+
* The Texture Memory Manager will attempt to keep the memory usage below
|
|
24
|
+
* this level by freeing up non-renderable textures.
|
|
25
|
+
*
|
|
26
|
+
* Valid Range: 0.0 - 1.0
|
|
27
|
+
*
|
|
28
|
+
* @defaultValue `0.5`
|
|
29
|
+
*/
|
|
30
|
+
targetThresholdLevel: number;
|
|
31
|
+
/**
|
|
32
|
+
* Interval between Texture Cleanups (in milliseconds)
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* Texture Memory Manager will perform a Texture Cleanup no more
|
|
36
|
+
* frequently than this interval generally when the scene becomes idle.
|
|
37
|
+
*
|
|
38
|
+
* @defaultValue `30,000` (30 seconds)
|
|
39
|
+
*/
|
|
40
|
+
cleanupInterval: number;
|
|
41
|
+
/**
|
|
42
|
+
* Whether or not to log debug information
|
|
43
|
+
*
|
|
44
|
+
* @defaultValue `false`
|
|
45
|
+
*/
|
|
46
|
+
debugLogging: boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface MemoryInfo {
|
|
49
|
+
criticalThreshold: number;
|
|
50
|
+
targetThreshold: number;
|
|
51
|
+
renderableMemUsed: number;
|
|
52
|
+
memUsed: number;
|
|
53
|
+
renderableTexturesLoaded: number;
|
|
54
|
+
loadedTextures: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* LRU (Least Recently Used) style memory manager for textures
|
|
58
|
+
*
|
|
59
|
+
* @remarks
|
|
60
|
+
* This class is responsible for managing the memory usage of textures
|
|
61
|
+
* in the Renderer. It keeps track of the memory used by each texture
|
|
62
|
+
* and triggers a cleanup when the memory usage exceeds a critical
|
|
63
|
+
* threshold (`criticalThreshold`).
|
|
64
|
+
*
|
|
65
|
+
* The cleanup process will free up non-renderable textures until the
|
|
66
|
+
* memory usage is below a target threshold (`targetThresholdLevel`).
|
|
67
|
+
*
|
|
68
|
+
* The memory manager's clean up process will also be triggered when the
|
|
69
|
+
* scene is idle for a certain amount of time (`cleanupInterval`).
|
|
70
|
+
*/
|
|
2
71
|
export declare class TextureMemoryManager {
|
|
72
|
+
private stage;
|
|
3
73
|
private memUsed;
|
|
4
|
-
private
|
|
5
|
-
private
|
|
6
|
-
|
|
74
|
+
private loadedTextures;
|
|
75
|
+
private criticalThreshold;
|
|
76
|
+
private targetThreshold;
|
|
77
|
+
private cleanupInterval;
|
|
78
|
+
private debugLogging;
|
|
79
|
+
private lastCleanupTime;
|
|
80
|
+
criticalCleanupRequested: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* The current frame time in milliseconds
|
|
83
|
+
*
|
|
84
|
+
* @remarks
|
|
85
|
+
* This is used to determine when to perform Idle Texture Cleanups.
|
|
86
|
+
*
|
|
87
|
+
* Set by stage via `updateFrameTime` method.
|
|
88
|
+
*/
|
|
89
|
+
frameTime: number;
|
|
90
|
+
constructor(stage: Stage, settings: TextureMemoryManagerSettings);
|
|
91
|
+
setTextureMemUse(texture: Texture, byteSize: number): void;
|
|
92
|
+
checkCleanup(): boolean;
|
|
93
|
+
cleanup(): void;
|
|
7
94
|
/**
|
|
8
|
-
*
|
|
95
|
+
* Get the current texture memory usage information
|
|
96
|
+
*
|
|
97
|
+
* @remarks
|
|
98
|
+
* This method is for debugging purposes and returns information about the
|
|
99
|
+
* current memory usage of the textures in the Renderer.
|
|
9
100
|
*/
|
|
10
|
-
|
|
11
|
-
setTextureMemUse(ctxTexture: CoreContextTexture, byteSize: number): void;
|
|
12
|
-
gc(): void;
|
|
101
|
+
getMemoryInfo(): MemoryInfo;
|
|
13
102
|
}
|
|
@@ -1,44 +1,167 @@
|
|
|
1
|
+
import { bytesToMb } from './utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* LRU (Least Recently Used) style memory manager for textures
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* This class is responsible for managing the memory usage of textures
|
|
7
|
+
* in the Renderer. It keeps track of the memory used by each texture
|
|
8
|
+
* and triggers a cleanup when the memory usage exceeds a critical
|
|
9
|
+
* threshold (`criticalThreshold`).
|
|
10
|
+
*
|
|
11
|
+
* The cleanup process will free up non-renderable textures until the
|
|
12
|
+
* memory usage is below a target threshold (`targetThresholdLevel`).
|
|
13
|
+
*
|
|
14
|
+
* The memory manager's clean up process will also be triggered when the
|
|
15
|
+
* scene is idle for a certain amount of time (`cleanupInterval`).
|
|
16
|
+
*/
|
|
1
17
|
export class TextureMemoryManager {
|
|
18
|
+
stage;
|
|
2
19
|
memUsed = 0;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
20
|
+
loadedTextures = new Map();
|
|
21
|
+
criticalThreshold;
|
|
22
|
+
targetThreshold;
|
|
23
|
+
cleanupInterval;
|
|
24
|
+
debugLogging;
|
|
25
|
+
lastCleanupTime = 0;
|
|
26
|
+
criticalCleanupRequested = false;
|
|
6
27
|
/**
|
|
7
|
-
*
|
|
28
|
+
* The current frame time in milliseconds
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* This is used to determine when to perform Idle Texture Cleanups.
|
|
32
|
+
*
|
|
33
|
+
* Set by stage via `updateFrameTime` method.
|
|
8
34
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
35
|
+
frameTime = 0;
|
|
36
|
+
constructor(stage, settings) {
|
|
37
|
+
this.stage = stage;
|
|
38
|
+
const { criticalThreshold } = settings;
|
|
39
|
+
this.criticalThreshold = Math.round(criticalThreshold);
|
|
40
|
+
const targetFraction = Math.max(0, Math.min(1, settings.targetThresholdLevel));
|
|
41
|
+
this.targetThreshold = Math.round(criticalThreshold * targetFraction);
|
|
42
|
+
this.cleanupInterval = settings.cleanupInterval;
|
|
43
|
+
this.debugLogging = settings.debugLogging;
|
|
44
|
+
if (settings.debugLogging) {
|
|
45
|
+
let lastMemUse = 0;
|
|
46
|
+
setInterval(() => {
|
|
47
|
+
if (lastMemUse !== this.memUsed) {
|
|
48
|
+
lastMemUse = this.memUsed;
|
|
49
|
+
console.log(`[TextureMemoryManager] Memory used: ${bytesToMb(this.memUsed)} mb / ${bytesToMb(this.criticalThreshold)} mb (${((this.memUsed / this.criticalThreshold) *
|
|
50
|
+
100).toFixed(1)}%)`);
|
|
51
|
+
}
|
|
52
|
+
}, 1000);
|
|
53
|
+
}
|
|
11
54
|
// If the threshold is 0, we disable the memory manager by replacing the
|
|
12
55
|
// setTextureMemUse method with a no-op function.
|
|
13
|
-
if (
|
|
56
|
+
if (criticalThreshold === 0) {
|
|
14
57
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
15
58
|
this.setTextureMemUse = () => { };
|
|
16
59
|
}
|
|
17
60
|
}
|
|
18
|
-
setTextureMemUse(
|
|
19
|
-
if (this.
|
|
61
|
+
setTextureMemUse(texture, byteSize) {
|
|
62
|
+
if (this.loadedTextures.has(texture)) {
|
|
20
63
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
21
|
-
this.memUsed -= this.
|
|
64
|
+
this.memUsed -= this.loadedTextures.get(texture);
|
|
22
65
|
}
|
|
23
66
|
if (byteSize === 0) {
|
|
24
|
-
this.
|
|
67
|
+
this.loadedTextures.delete(texture);
|
|
25
68
|
return;
|
|
26
69
|
}
|
|
27
70
|
else {
|
|
28
71
|
this.memUsed += byteSize;
|
|
29
|
-
this.
|
|
72
|
+
this.loadedTextures.set(texture, byteSize);
|
|
30
73
|
}
|
|
31
|
-
if (this.memUsed > this.
|
|
32
|
-
this.
|
|
74
|
+
if (this.memUsed > this.criticalThreshold) {
|
|
75
|
+
this.criticalCleanupRequested = true;
|
|
33
76
|
}
|
|
34
77
|
}
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
78
|
+
checkCleanup() {
|
|
79
|
+
return (this.criticalCleanupRequested ||
|
|
80
|
+
(this.memUsed > this.targetThreshold &&
|
|
81
|
+
this.frameTime - this.lastCleanupTime >= this.cleanupInterval));
|
|
82
|
+
}
|
|
83
|
+
cleanup() {
|
|
84
|
+
const critical = this.criticalCleanupRequested;
|
|
85
|
+
this.lastCleanupTime = this.frameTime;
|
|
86
|
+
this.criticalCleanupRequested = false;
|
|
87
|
+
if (critical) {
|
|
88
|
+
this.stage.queueFrameEvent('criticalCleanup', {
|
|
89
|
+
memUsed: this.memUsed,
|
|
90
|
+
criticalThreshold: this.criticalThreshold,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (this.debugLogging) {
|
|
94
|
+
console.log(`[TextureMemoryManager] Cleaning up textures. Critical: ${critical}`);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Sort the loaded textures by renderability, then by last touch time.
|
|
98
|
+
*
|
|
99
|
+
* This will ensure that the array is ordered by the following:
|
|
100
|
+
* - Non-renderable textures, starting at the least recently rendered
|
|
101
|
+
* - Renderable textures, starting at the least recently rendered
|
|
102
|
+
*/
|
|
103
|
+
const textures = [...this.loadedTextures.keys()].sort((textureA, textureB) => {
|
|
104
|
+
const txARenderable = textureA.renderable;
|
|
105
|
+
const txBRenderable = textureB.renderable;
|
|
106
|
+
if (txARenderable === txBRenderable) {
|
|
107
|
+
return (textureA.lastRenderableChangeTime -
|
|
108
|
+
textureB.lastRenderableChangeTime);
|
|
40
109
|
}
|
|
110
|
+
else if (txARenderable) {
|
|
111
|
+
return 1;
|
|
112
|
+
}
|
|
113
|
+
else if (txBRenderable) {
|
|
114
|
+
return -1;
|
|
115
|
+
}
|
|
116
|
+
return 0;
|
|
41
117
|
});
|
|
118
|
+
// Free non-renderable textures until we reach the target threshold
|
|
119
|
+
const memTarget = this.targetThreshold;
|
|
120
|
+
const txManager = this.stage.txManager;
|
|
121
|
+
for (const texture of textures) {
|
|
122
|
+
if (texture.renderable) {
|
|
123
|
+
// Stop at the first renderable texture (The rest are renderable because of the sort above)
|
|
124
|
+
// We don't want to free renderable textures because they will just likely be reloaded in the next frame
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
texture.ctxTexture.free();
|
|
128
|
+
txManager.removeTextureFromCache(texture);
|
|
129
|
+
if (this.memUsed <= memTarget) {
|
|
130
|
+
// Stop once we've freed enough textures to reach under the target threshold
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (this.memUsed >= this.criticalThreshold) {
|
|
135
|
+
this.stage.queueFrameEvent('criticalCleanupFailed', {
|
|
136
|
+
memUsed: this.memUsed,
|
|
137
|
+
criticalThreshold: this.criticalThreshold,
|
|
138
|
+
});
|
|
139
|
+
console.warn(`[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${this.memUsed}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get the current texture memory usage information
|
|
144
|
+
*
|
|
145
|
+
* @remarks
|
|
146
|
+
* This method is for debugging purposes and returns information about the
|
|
147
|
+
* current memory usage of the textures in the Renderer.
|
|
148
|
+
*/
|
|
149
|
+
getMemoryInfo() {
|
|
150
|
+
let renderableTexturesLoaded = 0;
|
|
151
|
+
const renderableMemUsed = [...this.loadedTextures.keys()].reduce(
|
|
152
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
153
|
+
(acc, texture) => {
|
|
154
|
+
renderableTexturesLoaded += texture.renderable ? 1 : 0;
|
|
155
|
+
return (acc + (texture.renderable ? this.loadedTextures.get(texture) : 0));
|
|
156
|
+
}, 0);
|
|
157
|
+
return {
|
|
158
|
+
criticalThreshold: this.criticalThreshold,
|
|
159
|
+
targetThreshold: this.targetThreshold,
|
|
160
|
+
renderableMemUsed,
|
|
161
|
+
memUsed: this.memUsed,
|
|
162
|
+
renderableTexturesLoaded,
|
|
163
|
+
loadedTextures: this.loadedTextures.size,
|
|
164
|
+
};
|
|
42
165
|
}
|
|
43
166
|
}
|
|
44
167
|
//# sourceMappingURL=TextureMemoryManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureMemoryManager.js","sourceRoot":"","sources":["../../../src/core/TextureMemoryManager.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"TextureMemoryManager.js","sourceRoot":"","sources":["../../../src/core/TextureMemoryManager.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA4DvC;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,oBAAoB;IAmBX;IAlBZ,OAAO,GAAG,CAAC,CAAC;IACZ,cAAc,GAAyB,IAAI,GAAG,EAAE,CAAC;IACjD,iBAAiB,CAAS;IAC1B,eAAe,CAAS;IACxB,eAAe,CAAS;IACxB,YAAY,CAAU;IACtB,eAAe,GAAG,CAAC,CAAC;IACrB,wBAAwB,GAAG,KAAK,CAAC;IACxC;;;;;;;OAOG;IACI,SAAS,GAAG,CAAC,CAAC;IAErB,YAAoB,KAAY,EAAE,QAAsC;QAApD,UAAK,GAAL,KAAK,CAAO;QAC9B,MAAM,EAAE,iBAAiB,EAAE,GAAG,QAAQ,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC7B,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAC3C,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAE1C,IAAI,QAAQ,CAAC,YAAY,EAAE;YACzB,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,WAAW,CAAC,GAAG,EAAE;gBACf,IAAI,UAAU,KAAK,IAAI,CAAC,OAAO,EAAE;oBAC/B,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC1B,OAAO,CAAC,GAAG,CACT,uCAAuC,SAAS,CAC9C,IAAI,CAAC,OAAO,CACb,SAAS,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CACjD,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;wBACvC,GAAG,CACJ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACjB,CAAC;iBACH;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;SACV;QAED,wEAAwE;QACxE,iDAAiD;QACjD,IAAI,iBAAiB,KAAK,CAAC,EAAE;YAC3B,gEAAgE;YAChE,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;SAClC;IACH,CAAC;IAED,gBAAgB,CAAC,OAAgB,EAAE,QAAgB;QACjD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACpC,oEAAoE;YACpE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;SACnD;QAED,IAAI,QAAQ,KAAK,CAAC,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO;SACR;aAAM;YACL,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACzC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACtC;IACH,CAAC;IAED,YAAY;QACV,OAAO,CACL,IAAI,CAAC,wBAAwB;YAC7B,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe;gBAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,CACjE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAEtC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,iBAAiB,EAAE;gBAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;aAC1C,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,CAAC,GAAG,CACT,0DAA0D,QAAQ,EAAE,CACrE,CAAC;SACH;QAED;;;;;;WAMG;QACH,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACnD,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACrB,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC;YAC1C,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC;YAC1C,IAAI,aAAa,KAAK,aAAa,EAAE;gBACnC,OAAO,CACL,QAAQ,CAAC,wBAAwB;oBACjC,QAAQ,CAAC,wBAAwB,CAClC,CAAC;aACH;iBAAM,IAAI,aAAa,EAAE;gBACxB,OAAO,CAAC,CAAC;aACV;iBAAM,IAAI,aAAa,EAAE;gBACxB,OAAO,CAAC,CAAC,CAAC;aACX;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CACF,CAAC;QAEF,mEAAmE;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtB,2FAA2F;gBAC3F,wGAAwG;gBACxG,MAAM;aACP;YACD,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1B,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;gBAC7B,4EAA4E;gBAC5E,MAAM;aACP;SACF;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,uBAAuB,EAAE;gBAClD,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;aAC1C,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CACV,+EAA+E,IAAI,CAAC,OAAO,EAAE,CAC9F,CAAC;SACH;IACH,CAAC;IAED;;;;;;OAMG;IACH,aAAa;QACX,IAAI,wBAAwB,GAAG,CAAC,CAAC;QACjC,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM;QAC9D,oEAAoE;QACpE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACf,wBAAwB,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CACL,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACnE,CAAC;QACJ,CAAC,EACD,CAAC,CACF,CAAC;QACF,OAAO;YACL,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,iBAAiB;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,wBAAwB;YACxB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;SACzC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { INodeAnimatableProps } from '../../main-api/INode.js';
|
|
1
|
+
import { type CoreNode, type CoreNodeAnimateProps } from '../CoreNode.js';
|
|
3
2
|
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
4
3
|
export interface AnimationSettings {
|
|
5
4
|
duration: number;
|
|
@@ -10,20 +9,29 @@ export interface AnimationSettings {
|
|
|
10
9
|
repeatDelay: number;
|
|
11
10
|
stopMethod: 'reverse' | 'reset' | false;
|
|
12
11
|
}
|
|
12
|
+
type PropValues = {
|
|
13
|
+
start: number;
|
|
14
|
+
target: number;
|
|
15
|
+
};
|
|
16
|
+
type PropValuesMap = Record<string, Record<string, PropValues>>;
|
|
13
17
|
export declare class CoreAnimation extends EventEmitter {
|
|
14
18
|
private node;
|
|
15
19
|
private props;
|
|
16
|
-
propStartValues: Partial<INodeAnimatableProps>;
|
|
17
|
-
restoreValues: Partial<INodeAnimatableProps>;
|
|
18
20
|
settings: AnimationSettings;
|
|
19
21
|
private progress;
|
|
20
22
|
private delayFor;
|
|
21
23
|
private timingFunction;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
propValuesMap: PropValuesMap;
|
|
25
|
+
dynPropValuesMap: PropValuesMap | undefined;
|
|
26
|
+
constructor(node: CoreNode, props: Partial<CoreNodeAnimateProps>, settings: Partial<AnimationSettings>);
|
|
24
27
|
reset(): void;
|
|
28
|
+
private restoreValues;
|
|
25
29
|
restore(): void;
|
|
30
|
+
private reverseValues;
|
|
26
31
|
reverse(): void;
|
|
27
32
|
private applyEasing;
|
|
33
|
+
updateValue(propName: string, propValue: number, startValue: number, easing: string | undefined): number;
|
|
34
|
+
private updateValues;
|
|
28
35
|
update(dt: number): void;
|
|
29
36
|
}
|
|
37
|
+
export {};
|
|
@@ -16,28 +16,62 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
+
import {} from '../CoreNode.js';
|
|
19
20
|
import { getTimingFunction } from '../utils.js';
|
|
20
21
|
import { mergeColorProgress } from '../../utils.js';
|
|
21
22
|
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
22
23
|
export class CoreAnimation extends EventEmitter {
|
|
23
24
|
node;
|
|
24
25
|
props;
|
|
25
|
-
propStartValues = {};
|
|
26
|
-
restoreValues = {};
|
|
27
26
|
settings;
|
|
28
27
|
progress = 0;
|
|
29
28
|
delayFor = 0;
|
|
30
29
|
timingFunction;
|
|
31
|
-
|
|
30
|
+
propValuesMap = {};
|
|
31
|
+
dynPropValuesMap = undefined;
|
|
32
32
|
constructor(node, props, settings) {
|
|
33
33
|
super();
|
|
34
34
|
this.node = node;
|
|
35
35
|
this.props = props;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
for (const key in props) {
|
|
37
|
+
if (key !== 'shaderProps') {
|
|
38
|
+
if (this.propValuesMap['props'] === undefined) {
|
|
39
|
+
this.propValuesMap['props'] = {};
|
|
40
|
+
}
|
|
41
|
+
this.propValuesMap['props'][key] = {
|
|
42
|
+
start: node[key],
|
|
43
|
+
target: props[key],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else if (node.shader.type !== 'DynamicShader') {
|
|
47
|
+
this.propValuesMap['shaderProps'] = {};
|
|
48
|
+
for (const key in props.shaderProps) {
|
|
49
|
+
this.propValuesMap['shaderProps'][key] = {
|
|
50
|
+
start: node.shader.props[key],
|
|
51
|
+
target: props.shaderProps[key],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const shaderPropKeys = Object.keys(props.shaderProps);
|
|
57
|
+
const spLength = shaderPropKeys.length;
|
|
58
|
+
this.dynPropValuesMap = {};
|
|
59
|
+
for (let j = 0; j < spLength; j++) {
|
|
60
|
+
const effectName = shaderPropKeys[j];
|
|
61
|
+
const effect = props.shaderProps[effectName];
|
|
62
|
+
this.dynPropValuesMap[effectName] = {};
|
|
63
|
+
const effectProps = Object.entries(effect);
|
|
64
|
+
const eLength = effectProps.length;
|
|
65
|
+
for (let k = 0; k < eLength; k++) {
|
|
66
|
+
const [key, value] = effectProps[k];
|
|
67
|
+
this.dynPropValuesMap[effectName][key] = {
|
|
68
|
+
start: node.shader.props[effectName][key],
|
|
69
|
+
target: value,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
41
75
|
const easing = settings.easing || 'linear';
|
|
42
76
|
const delay = settings.delay ?? 0;
|
|
43
77
|
this.settings = {
|
|
@@ -57,22 +91,62 @@ export class CoreAnimation extends EventEmitter {
|
|
|
57
91
|
this.delayFor = this.settings.delay || 0;
|
|
58
92
|
this.update(0);
|
|
59
93
|
}
|
|
94
|
+
restoreValues(target, valueMap) {
|
|
95
|
+
const entries = Object.entries(valueMap);
|
|
96
|
+
const eLength = entries.length;
|
|
97
|
+
for (let i = 0; i < eLength; i++) {
|
|
98
|
+
const [key, value] = entries[i];
|
|
99
|
+
target[key] = value.start;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
60
102
|
restore() {
|
|
61
103
|
this.reset();
|
|
62
|
-
|
|
63
|
-
this.node
|
|
64
|
-
}
|
|
104
|
+
if (this.propValuesMap['props'] !== undefined) {
|
|
105
|
+
this.restoreValues(this.node, this.propValuesMap['props']);
|
|
106
|
+
}
|
|
107
|
+
if (this.propValuesMap['shaderProps'] !== undefined) {
|
|
108
|
+
this.restoreValues(this.node.shader.props, this.propValuesMap['shaderProps']);
|
|
109
|
+
}
|
|
110
|
+
if (this.dynPropValuesMap !== undefined) {
|
|
111
|
+
const dynEntries = Object.keys(this.dynPropValuesMap);
|
|
112
|
+
const dynEntriesL = dynEntries.length;
|
|
113
|
+
if (dynEntriesL > 0) {
|
|
114
|
+
for (let i = 0; i < dynEntriesL; i++) {
|
|
115
|
+
const key = dynEntries[i];
|
|
116
|
+
this.restoreValues(this.node.shader.props[key], this.dynPropValuesMap[key]);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
reverseValues(valueMap) {
|
|
122
|
+
const entries = Object.entries(valueMap);
|
|
123
|
+
const eLength = entries.length;
|
|
124
|
+
for (let i = 0; i < eLength; i++) {
|
|
125
|
+
const [key, value] = entries[i];
|
|
126
|
+
valueMap[key] = {
|
|
127
|
+
start: value.target,
|
|
128
|
+
target: value.start,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
65
131
|
}
|
|
66
132
|
reverse() {
|
|
67
133
|
this.progress = 0;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
134
|
+
if (this.propValuesMap['props'] !== undefined) {
|
|
135
|
+
this.reverseValues(this.propValuesMap['props']);
|
|
136
|
+
}
|
|
137
|
+
if (this.propValuesMap['shaderProps'] !== undefined) {
|
|
138
|
+
this.reverseValues(this.propValuesMap['shaderProps']);
|
|
139
|
+
}
|
|
140
|
+
if (this.dynPropValuesMap !== undefined) {
|
|
141
|
+
const dynEntries = Object.keys(this.dynPropValuesMap);
|
|
142
|
+
const dynEntriesL = dynEntries.length;
|
|
143
|
+
if (dynEntriesL > 0) {
|
|
144
|
+
for (let i = 0; i < dynEntriesL; i++) {
|
|
145
|
+
const key = dynEntries[i];
|
|
146
|
+
this.reverseValues(this.dynPropValuesMap[key]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
76
150
|
// restore stop method if we are not looping
|
|
77
151
|
if (!this.settings.loop) {
|
|
78
152
|
this.settings.stopMethod = false;
|
|
@@ -81,6 +155,37 @@ export class CoreAnimation extends EventEmitter {
|
|
|
81
155
|
applyEasing(p, s, e) {
|
|
82
156
|
return (this.timingFunction(p) || p) * (e - s) + s;
|
|
83
157
|
}
|
|
158
|
+
updateValue(propName, propValue, startValue, easing) {
|
|
159
|
+
if (this.progress === 1) {
|
|
160
|
+
return propValue;
|
|
161
|
+
}
|
|
162
|
+
if (this.progress === 0) {
|
|
163
|
+
return startValue;
|
|
164
|
+
}
|
|
165
|
+
const endValue = propValue;
|
|
166
|
+
if (propName.indexOf('color') !== -1) {
|
|
167
|
+
if (startValue === endValue) {
|
|
168
|
+
return startValue;
|
|
169
|
+
}
|
|
170
|
+
if (easing) {
|
|
171
|
+
const easingProgressValue = this.timingFunction(this.progress) || this.progress;
|
|
172
|
+
return mergeColorProgress(startValue, endValue, easingProgressValue);
|
|
173
|
+
}
|
|
174
|
+
return mergeColorProgress(startValue, endValue, this.progress);
|
|
175
|
+
}
|
|
176
|
+
if (easing) {
|
|
177
|
+
return this.applyEasing(this.progress, startValue, endValue);
|
|
178
|
+
}
|
|
179
|
+
return startValue + (endValue - startValue) * this.progress;
|
|
180
|
+
}
|
|
181
|
+
updateValues(target, valueMap, easing) {
|
|
182
|
+
const entries = Object.entries(valueMap);
|
|
183
|
+
const eLength = entries.length;
|
|
184
|
+
for (let i = 0; i < eLength; i++) {
|
|
185
|
+
const [key, value] = entries[i];
|
|
186
|
+
target[key] = this.updateValue(key, value.target, value.start, easing);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
84
189
|
update(dt) {
|
|
85
190
|
const { duration, loop, easing, stopMethod } = this.settings;
|
|
86
191
|
const { delayFor } = this;
|
|
@@ -121,32 +226,21 @@ export class CoreAnimation extends EventEmitter {
|
|
|
121
226
|
return;
|
|
122
227
|
}
|
|
123
228
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const easingColorValue = mergeColorProgress(startValue, endValue, easingProgressValue);
|
|
138
|
-
this.node[propName] = easingColorValue;
|
|
139
|
-
continue;
|
|
229
|
+
if (this.propValuesMap['props'] !== undefined) {
|
|
230
|
+
this.updateValues(this.node, this.propValuesMap['props'], easing);
|
|
231
|
+
}
|
|
232
|
+
if (this.propValuesMap['shaderProps'] !== undefined) {
|
|
233
|
+
this.updateValues(this.node.shader.props, this.propValuesMap['shaderProps'], easing);
|
|
234
|
+
}
|
|
235
|
+
if (this.dynPropValuesMap !== undefined) {
|
|
236
|
+
const dynEntries = Object.keys(this.dynPropValuesMap);
|
|
237
|
+
const dynEntriesL = dynEntries.length;
|
|
238
|
+
if (dynEntriesL > 0) {
|
|
239
|
+
for (let i = 0; i < dynEntriesL; i++) {
|
|
240
|
+
const key = dynEntries[i];
|
|
241
|
+
this.updateValues(this.node.shader.props[key], this.dynPropValuesMap[key], easing);
|
|
140
242
|
}
|
|
141
|
-
this.node[propName] = mergeColorProgress(startValue, endValue, this.progress);
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
if (easing) {
|
|
145
|
-
this.node[propName] = this.applyEasing(this.progress, startValue, endValue);
|
|
146
|
-
continue;
|
|
147
243
|
}
|
|
148
|
-
this.node[propName] =
|
|
149
|
-
startValue + (endValue - startValue) * this.progress;
|
|
150
244
|
}
|
|
151
245
|
if (this.progress === 1) {
|
|
152
246
|
this.emit('finished', {});
|