@lightningjs/renderer 0.7.2 → 0.7.3
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/COPYING +1 -0
- package/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +221 -221
- package/dist/src/common/CommonTypes.d.ts +7 -0
- package/dist/src/core/Stage.d.ts +2 -1
- package/dist/src/core/Stage.js +4 -0
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.js +3 -0
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +8 -0
- package/dist/src/core/animations/CoreAnimationController.js +26 -0
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +21 -21
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +47 -47
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +49 -49
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +5 -5
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +31 -31
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +13 -13
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
- package/dist/src/main-api/ICoreDriver.d.ts +2 -1
- package/dist/src/main-api/Inspector.d.ts +6 -0
- package/dist/src/main-api/Inspector.js +105 -19
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/RendererMain.d.ts +12 -0
- package/dist/src/main-api/RendererMain.js +19 -1
- package/dist/src/main-api/RendererMain.js.map +1 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +2 -1
- package/dist/src/render-drivers/main/MainCoreDriver.js +7 -1
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +2 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +7 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +9 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/core-api.ts +102 -102
- package/exports/main-api.ts +60 -60
- package/exports/utils.ts +41 -41
- package/package.json +5 -3
- package/scripts/please-use-pnpm.js +13 -0
- package/src/common/CommonTypes.ts +113 -105
- package/src/common/EventEmitter.ts +77 -77
- package/src/common/IAnimationController.ts +29 -29
- package/src/core/CoreExtension.ts +32 -32
- package/src/core/CoreNode.ts +926 -926
- package/src/core/CoreShaderManager.ts +243 -243
- package/src/core/CoreTextNode.ts +391 -391
- package/src/core/CoreTextureManager.ts +326 -326
- package/src/core/Stage.ts +354 -342
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +181 -177
- package/src/core/animations/CoreAnimationController.ts +148 -117
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/ImageWorker.ts +124 -124
- package/src/core/lib/Matrix3d.ts +290 -290
- package/src/core/lib/WebGlContextWrapper.ts +992 -992
- package/src/core/lib/textureCompression.ts +152 -152
- package/src/core/lib/utils.ts +241 -241
- package/src/core/platform.ts +46 -46
- package/src/core/renderers/CoreContextTexture.ts +30 -30
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +63 -63
- package/src/core/renderers/CoreShader.ts +41 -41
- package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +37 -37
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +231 -231
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +107 -107
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +520 -520
- package/src/core/renderers/webgl/WebGlCoreShader.ts +337 -337
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +131 -131
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +136 -136
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +95 -95
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +474 -474
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +161 -161
- package/src/core/renderers/webgl/shaders/SdfShader.ts +174 -174
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +86 -86
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +33 -33
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +135 -135
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +145 -145
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +176 -176
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +159 -159
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +186 -186
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +121 -121
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +114 -114
- package/src/core/text-rendering/TextTextureRendererUtils.ts +189 -189
- package/src/core/text-rendering/TrFontManager.ts +96 -96
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +141 -141
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +169 -169
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +105 -105
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +77 -77
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +751 -751
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +741 -741
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +775 -775
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +84 -84
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +393 -393
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +51 -51
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +504 -504
- package/src/core/textures/ColorTexture.ts +86 -86
- package/src/core/textures/ImageTexture.ts +133 -133
- package/src/core/textures/NoiseTexture.ts +96 -96
- package/src/core/textures/SubTexture.ts +143 -143
- package/src/core/textures/Texture.ts +218 -218
- package/src/core/utils.ts +224 -224
- package/src/env.d.ts +7 -7
- package/src/main-api/ICoreDriver.ts +66 -61
- package/src/main-api/INode.ts +470 -470
- package/src/main-api/Inspector.ts +432 -0
- package/src/main-api/RendererMain.ts +649 -610
- package/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts +45 -45
- package/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts +154 -154
- package/src/main-api/texture-usage-trackers/TextureUsageTracker.ts +54 -54
- package/src/render-drivers/main/MainCoreDriver.ts +148 -133
- package/src/render-drivers/main/MainOnlyNode.ts +453 -453
- package/src/render-drivers/main/MainOnlyTextNode.ts +261 -261
- package/src/render-drivers/threadx/NodeStruct.ts +300 -300
- package/src/render-drivers/threadx/SharedNode.ts +97 -97
- package/src/render-drivers/threadx/TextNodeStruct.ts +211 -211
- package/src/render-drivers/threadx/ThreadXCoreDriver.ts +285 -273
- package/src/render-drivers/threadx/ThreadXMainAnimationController.ts +99 -99
- package/src/render-drivers/threadx/ThreadXMainNode.ts +178 -178
- package/src/render-drivers/threadx/ThreadXMainTextNode.ts +85 -85
- package/src/render-drivers/threadx/ThreadXRendererMessage.ts +110 -97
- package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +238 -238
- package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +149 -149
- package/src/render-drivers/threadx/worker/renderer.ts +151 -151
- package/src/render-drivers/utils.ts +57 -57
- package/src/utils.ts +207 -207
- package/dist/src/core/lib/WebGlContext.d.ts +0 -414
- package/dist/src/core/lib/WebGlContext.js +0 -640
- package/dist/src/core/lib/WebGlContext.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.d.ts +0 -8
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js +0 -29
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.d.ts +0 -19
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.d.ts +0 -8
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.d.ts +0 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js +0 -41
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.d.ts +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js +0 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.d.ts +0 -9
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,221 +1,221 @@
|
|
|
1
|
-
# Lightning 3 Renderer (Beta)
|
|
2
|
-
|
|
3
|
-
**Warning: This is beta software and all of the exposed APIs are subject to
|
|
4
|
-
breaking changes**
|
|
5
|
-
|
|
6
|
-
A powerful 2D scene renderer designed for rendering highly performant user
|
|
7
|
-
interfaces on web browsers running on embedded devices using WebGL.
|
|
8
|
-
|
|
9
|
-
The Renderer is not designed for direct application development but instead
|
|
10
|
-
to provide a lightweight API for front-end application frameworks like Bolt and
|
|
11
|
-
Solid.
|
|
12
|
-
|
|
13
|
-
## Setup & Commands
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
# Install renderer + example dependencies
|
|
17
|
-
pnpm install
|
|
18
|
-
|
|
19
|
-
# Build Renderer
|
|
20
|
-
pnpm build
|
|
21
|
-
|
|
22
|
-
# Build Renderer (watch mode)
|
|
23
|
-
pnpm watch
|
|
24
|
-
|
|
25
|
-
# Run unit tests
|
|
26
|
-
pnpm test
|
|
27
|
-
|
|
28
|
-
# Run Visual Regression Tests
|
|
29
|
-
pnpm test:visual
|
|
30
|
-
|
|
31
|
-
# Build API Documentation (builds into ./typedocs folder)
|
|
32
|
-
pnpm typedoc
|
|
33
|
-
|
|
34
|
-
# Launch Example Tests in dev mode (includes Build Renderer (watch mode))
|
|
35
|
-
pnpm start
|
|
36
|
-
|
|
37
|
-
# Launch Example Tests in production mode
|
|
38
|
-
# IMPORTANT: To run test examples on embedded devices that use older browser versions
|
|
39
|
-
# you MUST run the examples in this mode.
|
|
40
|
-
pnpm start:prod
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Example Tests
|
|
44
|
-
|
|
45
|
-
The Example Tests sub-project define a set of tests for various Renderer
|
|
46
|
-
features. This is NOT an automated test. The command below will launch a
|
|
47
|
-
web server which can be accessed by a web browser for manual testing. However,
|
|
48
|
-
many of the Example Tests define Snapshots for the Visual Regression Test Runner
|
|
49
|
-
(see below).
|
|
50
|
-
|
|
51
|
-
The Example Tests can be launched with:
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
pnpm start
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
See [examples/README.md](./examples/README.md) for more info.
|
|
58
|
-
|
|
59
|
-
## Visual Regression Tests
|
|
60
|
-
|
|
61
|
-
In order to prevent bugs on existing Renderer features when new features or bug
|
|
62
|
-
fixes are added, the Renderer includes a Visual Regression Test Runner along
|
|
63
|
-
with a set of certified snapshot files that are checked into the repository.
|
|
64
|
-
|
|
65
|
-
These tests can be launched with:
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
pnpm test:visual
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
The captured Snapshots of these tests are optionally defined in the individual
|
|
72
|
-
Example Tests.
|
|
73
|
-
|
|
74
|
-
See [visual-regression/README.md](./visual-regression/README.md) for more info.
|
|
75
|
-
|
|
76
|
-
## Release Procedure
|
|
77
|
-
|
|
78
|
-
See [RELEASE.md](./RELEASE.md)
|
|
79
|
-
|
|
80
|
-
## Main Space vs Core Space
|
|
81
|
-
|
|
82
|
-
The Lightning 3 Renderer runs code in two logically seperate environments:
|
|
83
|
-
the **Main Space** and the **Core Space**.
|
|
84
|
-
|
|
85
|
-
Users of the Renderer will write most of their code for the Main Space using
|
|
86
|
-
the **Main API**. This is code that will always run on the browser's main thread
|
|
87
|
-
and includes initializing the Renderer, creating/modifying/destroying nodes,
|
|
88
|
-
controlling animations, etc.
|
|
89
|
-
|
|
90
|
-
The Core Space is where the actual rendering of each UI frame happens and is
|
|
91
|
-
mostly meant to be transparent to users of the Renderer. However, the Core Space
|
|
92
|
-
is where all of the code that must be tightly coupled to the rendering process
|
|
93
|
-
must be loaded and run. The Core Space is extendible by users by writing
|
|
94
|
-
**Core Extensions** via the **Core API**. This allows for users to develop their
|
|
95
|
-
own shaders, textures, text renderers, dynamic shader effects, and more. Fonts
|
|
96
|
-
used in an application must be loaded in this way too. The Core Space exists
|
|
97
|
-
seperately from the Main Space because it is allowed to execute on the page's
|
|
98
|
-
main thread OR a Web Worker thread. A **Core Driver** (see below) is used to
|
|
99
|
-
bridge the Main Space with the Core Space.
|
|
100
|
-
|
|
101
|
-
## Core Drivers
|
|
102
|
-
|
|
103
|
-
The Lightning 3 Renderer is designed to be able to use a single thread or
|
|
104
|
-
multiple web worker threads based on the configuration of a **Core Driver**.
|
|
105
|
-
|
|
106
|
-
A Core Driver essentially acts as a bridge between the Main and Core spaces
|
|
107
|
-
defined above.
|
|
108
|
-
|
|
109
|
-
The Renderer comes with two Core Drivers: the Main Core Driver for single
|
|
110
|
-
threaded rendering and the ThreadX Core Driver for multi-threaded rendering.
|
|
111
|
-
|
|
112
|
-
NOTE: The ThreadX Core Driver is experimental and even when the Renderer
|
|
113
|
-
graduates from beta may still not be ready for production use.
|
|
114
|
-
|
|
115
|
-
### Main Core Driver
|
|
116
|
-
|
|
117
|
-
The Main Core Driver renders your application on the web page's main thread.
|
|
118
|
-
|
|
119
|
-
It can be configured into the Renderer like so:
|
|
120
|
-
|
|
121
|
-
```ts
|
|
122
|
-
import { MainCoreDriver, RendererMain } from '@lightningjs/renderer';
|
|
123
|
-
|
|
124
|
-
const renderer = new RendererMain(
|
|
125
|
-
{
|
|
126
|
-
// App Config
|
|
127
|
-
},
|
|
128
|
-
'app', // App div ID
|
|
129
|
-
new MainCoreDriver(), // Main Render driver
|
|
130
|
-
);
|
|
131
|
-
|
|
132
|
-
// ...
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### ThreadX Core Driver
|
|
136
|
-
|
|
137
|
-
The ThreadX Core Driver renders your application on a seperately spawned
|
|
138
|
-
Web Worker thread.
|
|
139
|
-
|
|
140
|
-
It can be configured into the Renderer like so:
|
|
141
|
-
|
|
142
|
-
```ts
|
|
143
|
-
import {
|
|
144
|
-
ThreadXCoreDriver,
|
|
145
|
-
RendererMain,
|
|
146
|
-
} from '@lightningjs/renderer';
|
|
147
|
-
|
|
148
|
-
// The `@lightningjs/vite-plugin-import-chunk-url` Vite plugin is required for this:
|
|
149
|
-
import coreWorkerUrl from './common/CoreWorker.js?importChunkUrl';
|
|
150
|
-
|
|
151
|
-
const renderer = new RendererMain(
|
|
152
|
-
{
|
|
153
|
-
// App Config
|
|
154
|
-
},
|
|
155
|
-
'app', // App div ID
|
|
156
|
-
new ThreadXCoreDriver({
|
|
157
|
-
coreWorkerUrl,
|
|
158
|
-
});
|
|
159
|
-
);
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
## Core Extensions
|
|
163
|
-
|
|
164
|
-
To load fonts, and/or other custom code into the Core Space, you must write a
|
|
165
|
-
Core Extension and pass it via dynamically importable URL to the initialization
|
|
166
|
-
of the Renderer.
|
|
167
|
-
|
|
168
|
-
Just like with loading the ThreadX Core Web Worker for the ThreadX, you import
|
|
169
|
-
your core extension using the `@lightningjs/vite-plugin-import-chunk-url` plugin so that
|
|
170
|
-
it's code is bundled and loaded seperately from your main app's bundle.
|
|
171
|
-
|
|
172
|
-
You can write a Core Extension by extending the CoreExtension class from the
|
|
173
|
-
Core API like so:
|
|
174
|
-
|
|
175
|
-
```ts
|
|
176
|
-
import {
|
|
177
|
-
CoreExtension,
|
|
178
|
-
WebTrFontFace,
|
|
179
|
-
SdfTrFontFace,
|
|
180
|
-
type Stage,
|
|
181
|
-
} from '@lightning/renderer/core';
|
|
182
|
-
|
|
183
|
-
export default class MyCoreExtension extends CoreExtension {
|
|
184
|
-
async run(stage: Stage) {
|
|
185
|
-
// Load fonts into core
|
|
186
|
-
stage.fontManager.addFontFace(
|
|
187
|
-
new WebTrFontFace('Ubuntu', {}, '/fonts/Ubuntu-Regular.ttf'),
|
|
188
|
-
);
|
|
189
|
-
|
|
190
|
-
stage.fontManager.addFontFace(
|
|
191
|
-
new SdfTrFontFace(
|
|
192
|
-
'Ubuntu',
|
|
193
|
-
{},
|
|
194
|
-
'msdf',
|
|
195
|
-
stage,
|
|
196
|
-
'/fonts/Ubuntu-Regular.msdf.png',
|
|
197
|
-
'/fonts/Ubuntu-Regular.msdf.json',
|
|
198
|
-
),
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
And then in your application's main entry point you can import it using
|
|
205
|
-
`@lightningjs/vite-plugin-import-chunk-url`:
|
|
206
|
-
|
|
207
|
-
```ts
|
|
208
|
-
import coreExtensionModuleUrl from './MyCoreExtension.js?importChunkUrl';
|
|
209
|
-
|
|
210
|
-
// Set up driver, etc.
|
|
211
|
-
|
|
212
|
-
// Initialize the Renderer
|
|
213
|
-
const renderer = new RendererMain(
|
|
214
|
-
{
|
|
215
|
-
// Other Renderer Config...
|
|
216
|
-
coreExtensionModule: coreExtensionModuleUrl,
|
|
217
|
-
},
|
|
218
|
-
'app',
|
|
219
|
-
driver,
|
|
220
|
-
);
|
|
221
|
-
```
|
|
1
|
+
# Lightning 3 Renderer (Beta)
|
|
2
|
+
|
|
3
|
+
**Warning: This is beta software and all of the exposed APIs are subject to
|
|
4
|
+
breaking changes**
|
|
5
|
+
|
|
6
|
+
A powerful 2D scene renderer designed for rendering highly performant user
|
|
7
|
+
interfaces on web browsers running on embedded devices using WebGL.
|
|
8
|
+
|
|
9
|
+
The Renderer is not designed for direct application development but instead
|
|
10
|
+
to provide a lightweight API for front-end application frameworks like Bolt and
|
|
11
|
+
Solid.
|
|
12
|
+
|
|
13
|
+
## Setup & Commands
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
# Install renderer + example dependencies
|
|
17
|
+
pnpm install
|
|
18
|
+
|
|
19
|
+
# Build Renderer
|
|
20
|
+
pnpm build
|
|
21
|
+
|
|
22
|
+
# Build Renderer (watch mode)
|
|
23
|
+
pnpm watch
|
|
24
|
+
|
|
25
|
+
# Run unit tests
|
|
26
|
+
pnpm test
|
|
27
|
+
|
|
28
|
+
# Run Visual Regression Tests
|
|
29
|
+
pnpm test:visual
|
|
30
|
+
|
|
31
|
+
# Build API Documentation (builds into ./typedocs folder)
|
|
32
|
+
pnpm typedoc
|
|
33
|
+
|
|
34
|
+
# Launch Example Tests in dev mode (includes Build Renderer (watch mode))
|
|
35
|
+
pnpm start
|
|
36
|
+
|
|
37
|
+
# Launch Example Tests in production mode
|
|
38
|
+
# IMPORTANT: To run test examples on embedded devices that use older browser versions
|
|
39
|
+
# you MUST run the examples in this mode.
|
|
40
|
+
pnpm start:prod
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Example Tests
|
|
44
|
+
|
|
45
|
+
The Example Tests sub-project define a set of tests for various Renderer
|
|
46
|
+
features. This is NOT an automated test. The command below will launch a
|
|
47
|
+
web server which can be accessed by a web browser for manual testing. However,
|
|
48
|
+
many of the Example Tests define Snapshots for the Visual Regression Test Runner
|
|
49
|
+
(see below).
|
|
50
|
+
|
|
51
|
+
The Example Tests can be launched with:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
pnpm start
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
See [examples/README.md](./examples/README.md) for more info.
|
|
58
|
+
|
|
59
|
+
## Visual Regression Tests
|
|
60
|
+
|
|
61
|
+
In order to prevent bugs on existing Renderer features when new features or bug
|
|
62
|
+
fixes are added, the Renderer includes a Visual Regression Test Runner along
|
|
63
|
+
with a set of certified snapshot files that are checked into the repository.
|
|
64
|
+
|
|
65
|
+
These tests can be launched with:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
pnpm test:visual
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The captured Snapshots of these tests are optionally defined in the individual
|
|
72
|
+
Example Tests.
|
|
73
|
+
|
|
74
|
+
See [visual-regression/README.md](./visual-regression/README.md) for more info.
|
|
75
|
+
|
|
76
|
+
## Release Procedure
|
|
77
|
+
|
|
78
|
+
See [RELEASE.md](./RELEASE.md)
|
|
79
|
+
|
|
80
|
+
## Main Space vs Core Space
|
|
81
|
+
|
|
82
|
+
The Lightning 3 Renderer runs code in two logically seperate environments:
|
|
83
|
+
the **Main Space** and the **Core Space**.
|
|
84
|
+
|
|
85
|
+
Users of the Renderer will write most of their code for the Main Space using
|
|
86
|
+
the **Main API**. This is code that will always run on the browser's main thread
|
|
87
|
+
and includes initializing the Renderer, creating/modifying/destroying nodes,
|
|
88
|
+
controlling animations, etc.
|
|
89
|
+
|
|
90
|
+
The Core Space is where the actual rendering of each UI frame happens and is
|
|
91
|
+
mostly meant to be transparent to users of the Renderer. However, the Core Space
|
|
92
|
+
is where all of the code that must be tightly coupled to the rendering process
|
|
93
|
+
must be loaded and run. The Core Space is extendible by users by writing
|
|
94
|
+
**Core Extensions** via the **Core API**. This allows for users to develop their
|
|
95
|
+
own shaders, textures, text renderers, dynamic shader effects, and more. Fonts
|
|
96
|
+
used in an application must be loaded in this way too. The Core Space exists
|
|
97
|
+
seperately from the Main Space because it is allowed to execute on the page's
|
|
98
|
+
main thread OR a Web Worker thread. A **Core Driver** (see below) is used to
|
|
99
|
+
bridge the Main Space with the Core Space.
|
|
100
|
+
|
|
101
|
+
## Core Drivers
|
|
102
|
+
|
|
103
|
+
The Lightning 3 Renderer is designed to be able to use a single thread or
|
|
104
|
+
multiple web worker threads based on the configuration of a **Core Driver**.
|
|
105
|
+
|
|
106
|
+
A Core Driver essentially acts as a bridge between the Main and Core spaces
|
|
107
|
+
defined above.
|
|
108
|
+
|
|
109
|
+
The Renderer comes with two Core Drivers: the Main Core Driver for single
|
|
110
|
+
threaded rendering and the ThreadX Core Driver for multi-threaded rendering.
|
|
111
|
+
|
|
112
|
+
NOTE: The ThreadX Core Driver is experimental and even when the Renderer
|
|
113
|
+
graduates from beta may still not be ready for production use.
|
|
114
|
+
|
|
115
|
+
### Main Core Driver
|
|
116
|
+
|
|
117
|
+
The Main Core Driver renders your application on the web page's main thread.
|
|
118
|
+
|
|
119
|
+
It can be configured into the Renderer like so:
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
import { MainCoreDriver, RendererMain } from '@lightningjs/renderer';
|
|
123
|
+
|
|
124
|
+
const renderer = new RendererMain(
|
|
125
|
+
{
|
|
126
|
+
// App Config
|
|
127
|
+
},
|
|
128
|
+
'app', // App div ID
|
|
129
|
+
new MainCoreDriver(), // Main Render driver
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
// ...
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### ThreadX Core Driver
|
|
136
|
+
|
|
137
|
+
The ThreadX Core Driver renders your application on a seperately spawned
|
|
138
|
+
Web Worker thread.
|
|
139
|
+
|
|
140
|
+
It can be configured into the Renderer like so:
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
import {
|
|
144
|
+
ThreadXCoreDriver,
|
|
145
|
+
RendererMain,
|
|
146
|
+
} from '@lightningjs/renderer';
|
|
147
|
+
|
|
148
|
+
// The `@lightningjs/vite-plugin-import-chunk-url` Vite plugin is required for this:
|
|
149
|
+
import coreWorkerUrl from './common/CoreWorker.js?importChunkUrl';
|
|
150
|
+
|
|
151
|
+
const renderer = new RendererMain(
|
|
152
|
+
{
|
|
153
|
+
// App Config
|
|
154
|
+
},
|
|
155
|
+
'app', // App div ID
|
|
156
|
+
new ThreadXCoreDriver({
|
|
157
|
+
coreWorkerUrl,
|
|
158
|
+
});
|
|
159
|
+
);
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Core Extensions
|
|
163
|
+
|
|
164
|
+
To load fonts, and/or other custom code into the Core Space, you must write a
|
|
165
|
+
Core Extension and pass it via dynamically importable URL to the initialization
|
|
166
|
+
of the Renderer.
|
|
167
|
+
|
|
168
|
+
Just like with loading the ThreadX Core Web Worker for the ThreadX, you import
|
|
169
|
+
your core extension using the `@lightningjs/vite-plugin-import-chunk-url` plugin so that
|
|
170
|
+
it's code is bundled and loaded seperately from your main app's bundle.
|
|
171
|
+
|
|
172
|
+
You can write a Core Extension by extending the CoreExtension class from the
|
|
173
|
+
Core API like so:
|
|
174
|
+
|
|
175
|
+
```ts
|
|
176
|
+
import {
|
|
177
|
+
CoreExtension,
|
|
178
|
+
WebTrFontFace,
|
|
179
|
+
SdfTrFontFace,
|
|
180
|
+
type Stage,
|
|
181
|
+
} from '@lightning/renderer/core';
|
|
182
|
+
|
|
183
|
+
export default class MyCoreExtension extends CoreExtension {
|
|
184
|
+
async run(stage: Stage) {
|
|
185
|
+
// Load fonts into core
|
|
186
|
+
stage.fontManager.addFontFace(
|
|
187
|
+
new WebTrFontFace('Ubuntu', {}, '/fonts/Ubuntu-Regular.ttf'),
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
stage.fontManager.addFontFace(
|
|
191
|
+
new SdfTrFontFace(
|
|
192
|
+
'Ubuntu',
|
|
193
|
+
{},
|
|
194
|
+
'msdf',
|
|
195
|
+
stage,
|
|
196
|
+
'/fonts/Ubuntu-Regular.msdf.png',
|
|
197
|
+
'/fonts/Ubuntu-Regular.msdf.json',
|
|
198
|
+
),
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
And then in your application's main entry point you can import it using
|
|
205
|
+
`@lightningjs/vite-plugin-import-chunk-url`:
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
import coreExtensionModuleUrl from './MyCoreExtension.js?importChunkUrl';
|
|
209
|
+
|
|
210
|
+
// Set up driver, etc.
|
|
211
|
+
|
|
212
|
+
// Initialize the Renderer
|
|
213
|
+
const renderer = new RendererMain(
|
|
214
|
+
{
|
|
215
|
+
// Other Renderer Config...
|
|
216
|
+
coreExtensionModule: coreExtensionModuleUrl,
|
|
217
|
+
},
|
|
218
|
+
'app',
|
|
219
|
+
driver,
|
|
220
|
+
);
|
|
221
|
+
```
|
|
@@ -64,3 +64,10 @@ export interface FpsUpdatePayload {
|
|
|
64
64
|
fps: number;
|
|
65
65
|
contextSpyData: Record<string, number> | null;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Event payload for when a frame tick event is emitted by the Stage
|
|
69
|
+
*/
|
|
70
|
+
export interface FrameTickPayload {
|
|
71
|
+
time: number;
|
|
72
|
+
delta: number;
|
|
73
|
+
}
|
package/dist/src/core/Stage.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { CoreShaderManager } from './CoreShaderManager.js';
|
|
|
7
7
|
import type { TextRenderer, TextRendererMap, TrProps } from './text-rendering/renderers/TextRenderer.js';
|
|
8
8
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
9
9
|
import { ContextSpy } from './lib/ContextSpy.js';
|
|
10
|
-
import type { FpsUpdatePayload } from '../common/CommonTypes.js';
|
|
10
|
+
import type { FpsUpdatePayload, FrameTickPayload } from '../common/CommonTypes.js';
|
|
11
11
|
export interface StageOptions {
|
|
12
12
|
rootId: number;
|
|
13
13
|
appWidth: number;
|
|
@@ -24,6 +24,7 @@ export interface StageOptions {
|
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
export type StageFpsUpdateHandler = (stage: Stage, fpsData: FpsUpdatePayload) => void;
|
|
27
|
+
export type StageFrameTickHandler = (stage: Stage, frameTickData: FrameTickPayload) => void;
|
|
27
28
|
export declare class Stage extends EventEmitter {
|
|
28
29
|
readonly options: StageOptions;
|
|
29
30
|
readonly animationManager: AnimationManager;
|
package/dist/src/core/Stage.js
CHANGED
|
@@ -139,6 +139,10 @@ export class Stage extends EventEmitter {
|
|
|
139
139
|
this.deltaTime = !this.lastFrameTime
|
|
140
140
|
? 100 / 6
|
|
141
141
|
: this.currentFrameTime - this.lastFrameTime;
|
|
142
|
+
this.emit('frameTick', {
|
|
143
|
+
time: this.currentFrameTime,
|
|
144
|
+
delta: this.deltaTime,
|
|
145
|
+
});
|
|
142
146
|
// step animation
|
|
143
147
|
animationManager.update(this.deltaTime);
|
|
144
148
|
}
|
|
@@ -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,MAAM,aAAa,CAAC;AAC3C,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;
|
|
1
|
+
{"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,6 +84,9 @@ export class CoreAnimation extends EventEmitter {
|
|
|
84
84
|
this.delayFor -= dt;
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
|
+
if (this.delayFor <= 0 && this.progress === 0) {
|
|
88
|
+
this.emit('start', {});
|
|
89
|
+
}
|
|
87
90
|
this.progress += dt / duration;
|
|
88
91
|
if (this.progress > 1) {
|
|
89
92
|
this.progress = loop ? 0 : 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreAnimation.js","sourceRoot":"","sources":["../../../../src/core/animations/CoreAnimation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAY5D,MAAM,OAAO,aAAc,SAAQ,YAAY;IASnC;IACA;IACD;IAVF,eAAe,GAAkC,EAAE,CAAC;IACpD,aAAa,GAAkC,EAAE,CAAC;IACjD,QAAQ,GAAG,CAAC,CAAC;IACb,QAAQ,GAAG,CAAC,CAAC;IACb,cAAc,CAAoC;IAClD,SAAS,CAAoC,CAAC,oCAAoC;IAE1F,YACU,IAAc,EACd,KAAoC,EACrC,QAAoC;QAE3C,KAAK,EAAE,CAAC;QAJA,SAAI,GAAJ,IAAI,CAAU;QACd,UAAK,GAAL,KAAK,CAA+B;QACrC,aAAQ,GAAR,QAAQ,CAA4B;QAG3C,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAsC,CAAC;QACzE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvC,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC1D,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAuC,CAAC,OAAO,CACpE,CAAC,QAAQ,EAAE,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAW,CAAC;QACjE,CAAC,CACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAuC,CAAC,OAAO,CACpE,CAAC,QAAQ,EAAE,EAAE;YACX,2CAA2C;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAW,CAAC;YAE1D,gCAAgC;YAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;QAC9C,CAAC,CACF,CAAC;QAEF,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;SAClC;IACH,CAAC;IAED,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACzC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,EAAU;QACf,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1B,OAAO;SACR;QAED,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YACpB,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,IAAI,EAAE,GAAG,QAAQ,CAAC;QAE/B,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,UAAU,EAAE;gBACd,4EAA4E;gBAC5E,iFAAiF;gBACjF,kDAAkD;gBAClD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC1B,OAAO;aACR;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAA+B,CAAC;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAW,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAW,CAAC;YAC5D,MAAM,QAAQ,GAAG,SAAS,CAAC;YAE3B,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBACpC,qDAAqD;gBACrD,IAAI,UAAU,KAAK,QAAQ,EAAE;oBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;oBACjC,SAAS;iBACV;gBAED,IAAI,MAAM,EAAE;oBACV,MAAM,mBAAmB,GACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;oBACtD,MAAM,gBAAgB,GAAG,kBAAkB,CACzC,UAAU,EACV,QAAQ,EACR,mBAAmB,CACpB,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC;oBACvC,SAAS;iBACV;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CACtC,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,QAAQ,CACd,CAAC;gBACF,SAAS;aACV;YAED,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,WAAW,CACpC,IAAI,CAAC,QAAQ,EACb,UAAU,EACV,QAAQ,CACT,CAAC;gBACF,SAAS;aACV;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,UAAU,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACxD;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SAC3B;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"CoreAnimation.js","sourceRoot":"","sources":["../../../../src/core/animations/CoreAnimation.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,11 @@ import type { CoreAnimation } from './CoreAnimation.js';
|
|
|
4
4
|
export declare class CoreAnimationController implements IAnimationController {
|
|
5
5
|
private manager;
|
|
6
6
|
private animation;
|
|
7
|
+
startedPromise: Promise<void> | null;
|
|
8
|
+
/**
|
|
9
|
+
* If this is null, then the animation hasn't started yet.
|
|
10
|
+
*/
|
|
11
|
+
startedResolve: ((scope?: any) => void) | null;
|
|
7
12
|
stoppedPromise: Promise<void> | null;
|
|
8
13
|
/**
|
|
9
14
|
* If this is null, then the animation is in a finished / stopped state.
|
|
@@ -15,7 +20,10 @@ export declare class CoreAnimationController implements IAnimationController {
|
|
|
15
20
|
stop(): IAnimationController;
|
|
16
21
|
pause(): IAnimationController;
|
|
17
22
|
restore(): IAnimationController;
|
|
23
|
+
waitUntilStarted(): Promise<void>;
|
|
18
24
|
waitUntilStopped(): Promise<void>;
|
|
25
|
+
private makeStartedPromise;
|
|
19
26
|
private makeStoppedPromise;
|
|
27
|
+
private started;
|
|
20
28
|
private finished;
|
|
21
29
|
}
|
|
@@ -20,6 +20,11 @@ import { assertTruthy } from '../../utils.js';
|
|
|
20
20
|
export class CoreAnimationController {
|
|
21
21
|
manager;
|
|
22
22
|
animation;
|
|
23
|
+
startedPromise = null;
|
|
24
|
+
/**
|
|
25
|
+
* If this is null, then the animation hasn't started yet.
|
|
26
|
+
*/
|
|
27
|
+
startedResolve = null;
|
|
23
28
|
stoppedPromise = null;
|
|
24
29
|
/**
|
|
25
30
|
* If this is null, then the animation is in a finished / stopped state.
|
|
@@ -32,6 +37,8 @@ export class CoreAnimationController {
|
|
|
32
37
|
}
|
|
33
38
|
state;
|
|
34
39
|
start() {
|
|
40
|
+
this.makeStartedPromise();
|
|
41
|
+
this.animation.once('start', this.started.bind(this));
|
|
35
42
|
this.makeStoppedPromise();
|
|
36
43
|
this.animation.once('finished', this.finished.bind(this));
|
|
37
44
|
// prevent registering the same animation twice
|
|
@@ -61,12 +68,25 @@ export class CoreAnimationController {
|
|
|
61
68
|
this.animation.restore();
|
|
62
69
|
return this;
|
|
63
70
|
}
|
|
71
|
+
waitUntilStarted() {
|
|
72
|
+
this.makeStartedPromise();
|
|
73
|
+
const promise = this.startedPromise;
|
|
74
|
+
assertTruthy(promise);
|
|
75
|
+
return promise;
|
|
76
|
+
}
|
|
64
77
|
waitUntilStopped() {
|
|
65
78
|
this.makeStoppedPromise();
|
|
66
79
|
const promise = this.stoppedPromise;
|
|
67
80
|
assertTruthy(promise);
|
|
68
81
|
return promise;
|
|
69
82
|
}
|
|
83
|
+
makeStartedPromise() {
|
|
84
|
+
if (this.startedResolve === null) {
|
|
85
|
+
this.startedPromise = new Promise((resolve) => {
|
|
86
|
+
this.startedResolve = resolve;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
70
90
|
makeStoppedPromise() {
|
|
71
91
|
if (this.stoppedResolve === null) {
|
|
72
92
|
this.stoppedPromise = new Promise((resolve) => {
|
|
@@ -74,6 +94,12 @@ export class CoreAnimationController {
|
|
|
74
94
|
});
|
|
75
95
|
}
|
|
76
96
|
}
|
|
97
|
+
started() {
|
|
98
|
+
assertTruthy(this.startedResolve);
|
|
99
|
+
// resolve promise (and pass current this to continue to the chain)
|
|
100
|
+
this.startedResolve(this);
|
|
101
|
+
this.startedResolve = null;
|
|
102
|
+
}
|
|
77
103
|
finished() {
|
|
78
104
|
assertTruthy(this.stoppedResolve);
|
|
79
105
|
// If the animation is looping, then we need to restart it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreAnimationController.js","sourceRoot":"","sources":["../../../../src/core/animations/CoreAnimationController.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,OAAO,uBAAuB;
|
|
1
|
+
{"version":3,"file":"CoreAnimationController.js","sourceRoot":"","sources":["../../../../src/core/animations/CoreAnimationController.ts"],"names":[],"mappings":"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"}
|