@omnimedia/omnitool 1.1.0-70 → 1.1.0-72
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/package.json +1 -1
- package/s/driver/parts/compositor.ts +44 -14
- package/x/demo/demo.bundle.min.js +5 -5
- package/x/demo/demo.bundle.min.js.map +3 -3
- package/x/driver/parts/compositor.d.ts +8 -0
- package/x/driver/parts/compositor.js +37 -13
- package/x/driver/parts/compositor.js.map +1 -1
- package/x/index.html +2 -2
- package/x/tests.bundle.min.js +10 -10
- package/x/tests.bundle.min.js.map +3 -3
- package/x/tests.html +1 -1
package/package.json
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
import {pub} from "@e280/stz"
|
|
1
3
|
import {autoDetectRenderer, Container, Renderer, Sprite, Text, Texture} from "pixi.js"
|
|
2
4
|
|
|
3
5
|
import {Id} from "../../timeline/index.js"
|
|
@@ -6,6 +8,8 @@ import {Mat6, mat6ToMatrix} from "../../timeline/utils/matrix.js"
|
|
|
6
8
|
import {makeTransition} from "../../features/transition/transition.js"
|
|
7
9
|
|
|
8
10
|
export class Compositor {
|
|
11
|
+
onPointerDown = pub<[{id: Id, object: Container}]>()
|
|
12
|
+
onPointerUp = pub<[{id: Id, object: Container}]>()
|
|
9
13
|
|
|
10
14
|
static async setup() {
|
|
11
15
|
const renderer = await autoDetectRenderer({
|
|
@@ -24,7 +28,7 @@ export class Compositor {
|
|
|
24
28
|
|
|
25
29
|
#transitions: Map<string, ReturnType<typeof makeTransition>> = new Map()
|
|
26
30
|
// objects rendered for current Composition
|
|
27
|
-
#activeObjects = new Map<number, Container>()
|
|
31
|
+
#activeObjects = new Map<number, {sprite: Container, dispose: () => void}>()
|
|
28
32
|
|
|
29
33
|
async composite(
|
|
30
34
|
composition: Composition,
|
|
@@ -51,7 +55,7 @@ export class Compositor {
|
|
|
51
55
|
* get object for current Composition
|
|
52
56
|
* */
|
|
53
57
|
getActiveObject(id: Id) {
|
|
54
|
-
return this.#activeObjects.get(id)
|
|
58
|
+
return this.#activeObjects.get(id)?.sprite
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
async #renderLayer(
|
|
@@ -89,9 +93,9 @@ export class Compositor {
|
|
|
89
93
|
layer: Extract<Layer, {kind: 'text'}>,
|
|
90
94
|
parent: Container,
|
|
91
95
|
) {
|
|
92
|
-
const
|
|
93
|
-
this.#applyTransform(
|
|
94
|
-
parent.addChild(
|
|
96
|
+
const sprite = this.#findOrCreate<Text>(layer)!
|
|
97
|
+
this.#applyTransform(sprite, layer.matrix)
|
|
98
|
+
parent.addChild(sprite)
|
|
95
99
|
return {
|
|
96
100
|
dispose: () => {}
|
|
97
101
|
}
|
|
@@ -146,20 +150,44 @@ export class Compositor {
|
|
|
146
150
|
text: layer.content,
|
|
147
151
|
style: layer.style
|
|
148
152
|
})
|
|
149
|
-
text.
|
|
153
|
+
text.eventMode = "static"
|
|
154
|
+
const down = () => this.onPointerDown.publish({id: layer.id, object: text})
|
|
155
|
+
const up = () => this.onPointerUp.publish({id: layer.id, object: text})
|
|
156
|
+
|
|
157
|
+
text.on("pointerdown", down)
|
|
158
|
+
text.on("pointerup", up)
|
|
159
|
+
|
|
150
160
|
return this.#activeObjects
|
|
151
|
-
.set(layer.id,
|
|
152
|
-
|
|
161
|
+
.set(layer.id, {
|
|
162
|
+
sprite: text,
|
|
163
|
+
dispose() {
|
|
164
|
+
text.off("pointerdown", down)
|
|
165
|
+
text.off("pointerup", up)
|
|
166
|
+
}
|
|
167
|
+
})
|
|
168
|
+
.get(layer.id)?.sprite as T
|
|
153
169
|
}
|
|
154
170
|
case 'image': {
|
|
155
171
|
const sprite = new Sprite()
|
|
156
|
-
sprite.
|
|
172
|
+
sprite.eventMode = "static"
|
|
173
|
+
const down = () => this.onPointerDown.publish({id: layer.id, object: sprite})
|
|
174
|
+
const up = () => this.onPointerUp.publish({id: layer.id, object: sprite})
|
|
175
|
+
|
|
176
|
+
sprite.on("pointerdown", down)
|
|
177
|
+
sprite.on("pointerup", up)
|
|
178
|
+
|
|
157
179
|
return this.#activeObjects
|
|
158
|
-
.set(layer.id,
|
|
159
|
-
|
|
180
|
+
.set(layer.id, {
|
|
181
|
+
sprite,
|
|
182
|
+
dispose() {
|
|
183
|
+
sprite.off("pointerdown", down)
|
|
184
|
+
sprite.off("pointerup", up)
|
|
185
|
+
}
|
|
186
|
+
})
|
|
187
|
+
.get(layer.id)?.sprite as T
|
|
160
188
|
}
|
|
161
189
|
}
|
|
162
|
-
} else return object as T
|
|
190
|
+
} else return object.sprite as T
|
|
163
191
|
}
|
|
164
192
|
|
|
165
193
|
#collectIds(layers: Layer | Composition): Set<number> {
|
|
@@ -178,10 +206,12 @@ export class Compositor {
|
|
|
178
206
|
#cleanup(activeIds: Set<number>) {
|
|
179
207
|
for (const id of this.#activeObjects.keys()) {
|
|
180
208
|
if (!activeIds.has(id)) {
|
|
181
|
-
const
|
|
182
|
-
|
|
209
|
+
const {sprite, dispose} = this.#activeObjects.get(id)!
|
|
210
|
+
sprite.destroy(true)
|
|
211
|
+
dispose()
|
|
183
212
|
this.#activeObjects.delete(id)
|
|
184
213
|
}
|
|
185
214
|
}
|
|
186
215
|
}
|
|
187
216
|
}
|
|
217
|
+
|