@omnimedia/omnitool 1.1.0-70 → 1.1.0-71
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 +46 -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 +41 -14
- 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({
|
|
@@ -89,11 +93,11 @@ 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, dispose} = this.#findOrCreate<Text>(layer)!
|
|
97
|
+
this.#applyTransform(sprite, layer.matrix)
|
|
98
|
+
parent.addChild(sprite)
|
|
95
99
|
return {
|
|
96
|
-
dispose: () =>
|
|
100
|
+
dispose: () => dispose()
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
|
|
@@ -102,7 +106,7 @@ export class Compositor {
|
|
|
102
106
|
parent: Container,
|
|
103
107
|
) {
|
|
104
108
|
const texture = Texture.from(layer.frame)
|
|
105
|
-
const sprite = this.#findOrCreate<Sprite>(layer)!
|
|
109
|
+
const {sprite, dispose} = this.#findOrCreate<Sprite>(layer)!
|
|
106
110
|
sprite.texture = texture
|
|
107
111
|
this.#applyTransform(sprite, layer.matrix)
|
|
108
112
|
parent.addChild(sprite)
|
|
@@ -110,6 +114,7 @@ export class Compositor {
|
|
|
110
114
|
dispose: () => {
|
|
111
115
|
texture.destroy(true)
|
|
112
116
|
layer.frame.close()
|
|
117
|
+
dispose()
|
|
113
118
|
}
|
|
114
119
|
}
|
|
115
120
|
}
|
|
@@ -146,20 +151,47 @@ export class Compositor {
|
|
|
146
151
|
text: layer.content,
|
|
147
152
|
style: layer.style
|
|
148
153
|
})
|
|
149
|
-
text.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
154
|
+
text.eventMode = "static"
|
|
155
|
+
const down = () => this.onPointerDown.publish({id: layer.id, object: text})
|
|
156
|
+
const up = () => this.onPointerUp.publish({id: layer.id, object: text})
|
|
157
|
+
text.on("pointerdown", down)
|
|
158
|
+
text.on("pointerup", up)
|
|
159
|
+
|
|
160
|
+
return {
|
|
161
|
+
sprite: this.#activeObjects
|
|
162
|
+
.set(layer.id, text)
|
|
163
|
+
.get(layer.id) as T,
|
|
164
|
+
dispose: () => {
|
|
165
|
+
text.off("pointerdown", down)
|
|
166
|
+
text.off("pointerup", up)
|
|
167
|
+
}
|
|
168
|
+
}
|
|
153
169
|
}
|
|
154
170
|
case 'image': {
|
|
155
171
|
const sprite = new Sprite()
|
|
156
|
-
sprite.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
+
sprite.on("pointerdown", down)
|
|
176
|
+
sprite.on("pointerup", up)
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
sprite: this.#activeObjects
|
|
180
|
+
.set(layer.id, sprite)
|
|
181
|
+
.get(layer.id) as T,
|
|
182
|
+
dispose: () => {
|
|
183
|
+
sprite.off("pointerdown", down)
|
|
184
|
+
sprite.off("pointerup", up)
|
|
185
|
+
}
|
|
186
|
+
}
|
|
160
187
|
}
|
|
161
188
|
}
|
|
162
|
-
} else return
|
|
189
|
+
} else return {
|
|
190
|
+
sprite: object,
|
|
191
|
+
dispose: () => {}} as {
|
|
192
|
+
sprite: T
|
|
193
|
+
dispose: () => void
|
|
194
|
+
}
|
|
163
195
|
}
|
|
164
196
|
|
|
165
197
|
#collectIds(layers: Layer | Composition): Set<number> {
|