modern-canvas 0.4.8 → 0.4.9
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/dist/index.cjs +35 -25
- package/dist/index.d.cts +9 -6
- package/dist/index.d.mts +9 -6
- package/dist/index.d.ts +9 -6
- package/dist/index.js +29 -29
- package/dist/index.mjs +35 -25
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2237,14 +2237,12 @@ class MainLoop extends CoreObject {
|
|
|
2237
2237
|
this.on("process", process);
|
|
2238
2238
|
Ticker.on(this._onNextTick, { sort: 0 });
|
|
2239
2239
|
}
|
|
2240
|
-
return this;
|
|
2241
2240
|
}
|
|
2242
2241
|
stop() {
|
|
2243
2242
|
if (this._starting) {
|
|
2244
2243
|
this._starting = false;
|
|
2245
2244
|
Ticker.off(this._onNextTick, { sort: 0 });
|
|
2246
2245
|
}
|
|
2247
|
-
return this;
|
|
2248
2246
|
}
|
|
2249
2247
|
_onNextTick() {
|
|
2250
2248
|
const elapsed = Ticker.elapsed * this.speed;
|
|
@@ -5773,9 +5771,9 @@ exports.Node = class Node extends CoreObject {
|
|
|
5773
5771
|
case "inherit":
|
|
5774
5772
|
return this._parent?.canProcess() ?? true;
|
|
5775
5773
|
case "pausable":
|
|
5776
|
-
return !this._tree.
|
|
5774
|
+
return !this._tree.processPaused;
|
|
5777
5775
|
case "when_paused":
|
|
5778
|
-
return this._tree.
|
|
5776
|
+
return this._tree.processPaused;
|
|
5779
5777
|
case "always":
|
|
5780
5778
|
return true;
|
|
5781
5779
|
case "disabled":
|
|
@@ -8352,15 +8350,16 @@ class SceneTree extends MainLoop {
|
|
|
8352
8350
|
console.log(`[modern-canvas]`, ...args);
|
|
8353
8351
|
}
|
|
8354
8352
|
}
|
|
8355
|
-
|
|
8353
|
+
_process(delta = 0) {
|
|
8356
8354
|
this.timeline.addTime(delta);
|
|
8357
8355
|
this.emit("processing");
|
|
8358
8356
|
this.root.emit("process", delta);
|
|
8359
8357
|
this.emit("processed");
|
|
8358
|
+
}
|
|
8359
|
+
_render(renderer) {
|
|
8360
8360
|
renderer.program.uniforms.projectionMatrix = this.root.toProjectionArray(true);
|
|
8361
8361
|
this.renderStack.render(renderer);
|
|
8362
8362
|
this._renderScreen(renderer);
|
|
8363
|
-
return this;
|
|
8364
8363
|
}
|
|
8365
8364
|
_renderScreen(renderer) {
|
|
8366
8365
|
renderer.state.reset();
|
|
@@ -8393,7 +8392,7 @@ class SceneTree extends MainLoop {
|
|
|
8393
8392
|
}
|
|
8394
8393
|
__decorateClass$r([
|
|
8395
8394
|
property({ default: false })
|
|
8396
|
-
], SceneTree.prototype, "
|
|
8395
|
+
], SceneTree.prototype, "processPaused");
|
|
8397
8396
|
__decorateClass$r([
|
|
8398
8397
|
property()
|
|
8399
8398
|
], SceneTree.prototype, "backgroundColor");
|
|
@@ -13191,13 +13190,20 @@ class Engine extends SceneTree {
|
|
|
13191
13190
|
await assets.waitUntilLoad();
|
|
13192
13191
|
await this.nextTick();
|
|
13193
13192
|
}
|
|
13193
|
+
async waitAndRender(delta = 0) {
|
|
13194
|
+
this._process(delta);
|
|
13195
|
+
await this.waitUntilLoad();
|
|
13196
|
+
this._render(this.renderer);
|
|
13197
|
+
}
|
|
13194
13198
|
render(delta = 0) {
|
|
13195
|
-
|
|
13199
|
+
this._process(delta);
|
|
13200
|
+
this._render(this.renderer);
|
|
13196
13201
|
}
|
|
13197
|
-
start() {
|
|
13198
|
-
this.
|
|
13199
|
-
|
|
13200
|
-
this.
|
|
13202
|
+
async start() {
|
|
13203
|
+
await this.waitAndRender();
|
|
13204
|
+
super.start((delta) => {
|
|
13205
|
+
this._process(delta);
|
|
13206
|
+
this._render(this.renderer);
|
|
13201
13207
|
});
|
|
13202
13208
|
}
|
|
13203
13209
|
free() {
|
|
@@ -13206,7 +13212,6 @@ class Engine extends SceneTree {
|
|
|
13206
13212
|
this.renderer.free();
|
|
13207
13213
|
}
|
|
13208
13214
|
toPixels() {
|
|
13209
|
-
this.render();
|
|
13210
13215
|
return this.renderer.toPixels();
|
|
13211
13216
|
}
|
|
13212
13217
|
toImageData() {
|
|
@@ -13237,10 +13242,14 @@ class Engine extends SceneTree {
|
|
|
13237
13242
|
}
|
|
13238
13243
|
|
|
13239
13244
|
let engine;
|
|
13240
|
-
let renderLoop;
|
|
13241
13245
|
const queue = [];
|
|
13242
|
-
|
|
13243
|
-
|
|
13246
|
+
let starting = false;
|
|
13247
|
+
async function start(sleep = 100) {
|
|
13248
|
+
if (starting) {
|
|
13249
|
+
return;
|
|
13250
|
+
}
|
|
13251
|
+
starting = true;
|
|
13252
|
+
while (queue.length) {
|
|
13244
13253
|
const cb = queue.shift();
|
|
13245
13254
|
if (cb) {
|
|
13246
13255
|
try {
|
|
@@ -13252,28 +13261,29 @@ async function startRenderLoop(sleep = 100) {
|
|
|
13252
13261
|
await new Promise((r) => setTimeout(r, sleep));
|
|
13253
13262
|
}
|
|
13254
13263
|
}
|
|
13264
|
+
starting = false;
|
|
13255
13265
|
}
|
|
13256
|
-
async function
|
|
13266
|
+
async function task(options) {
|
|
13267
|
+
const { data, width, height, time = 0 } = options;
|
|
13257
13268
|
engine ??= new Engine({ width: 1, height: 1 });
|
|
13258
|
-
|
|
13259
|
-
|
|
13260
|
-
const { data, width, height } = options;
|
|
13269
|
+
engine.root.removeChildren();
|
|
13270
|
+
engine.timeline.currentTime = time;
|
|
13261
13271
|
engine.resize(width, height);
|
|
13262
13272
|
(Array.isArray(data) ? data : [data]).forEach((v) => {
|
|
13263
13273
|
if (v instanceof exports.Node) {
|
|
13264
|
-
root.appendChild(v);
|
|
13274
|
+
engine.root.appendChild(v);
|
|
13265
13275
|
} else {
|
|
13266
|
-
root.appendChild(exports.Node.parse(v));
|
|
13276
|
+
engine.root.appendChild(exports.Node.parse(v));
|
|
13267
13277
|
}
|
|
13268
13278
|
});
|
|
13269
|
-
await engine.waitUntilLoad();
|
|
13270
13279
|
await options.onBeforeRender?.(engine);
|
|
13280
|
+
await engine.waitAndRender();
|
|
13271
13281
|
return engine.toCanvas2D();
|
|
13272
13282
|
}
|
|
13273
13283
|
async function render(options) {
|
|
13274
|
-
renderLoop ??= startRenderLoop();
|
|
13275
13284
|
return new Promise((r) => {
|
|
13276
|
-
queue.push(async () => r(await
|
|
13285
|
+
queue.push(async () => r(await task(options)));
|
|
13286
|
+
start();
|
|
13277
13287
|
});
|
|
13278
13288
|
}
|
|
13279
13289
|
|
package/dist/index.d.cts
CHANGED
|
@@ -595,8 +595,8 @@ declare class MainLoop extends CoreObject {
|
|
|
595
595
|
get starting(): boolean;
|
|
596
596
|
get spf(): number;
|
|
597
597
|
constructor();
|
|
598
|
-
start(process: (delta: number) => void):
|
|
599
|
-
stop():
|
|
598
|
+
start(process: (delta: number) => void): void;
|
|
599
|
+
stop(): void;
|
|
600
600
|
protected _onNextTick(): void;
|
|
601
601
|
free(): void;
|
|
602
602
|
}
|
|
@@ -1569,7 +1569,7 @@ interface SceneTree {
|
|
|
1569
1569
|
emit: (<K extends keyof SceneTreeEventMap>(type: K, ...args: Parameters<SceneTreeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
1570
1570
|
}
|
|
1571
1571
|
declare class SceneTree extends MainLoop {
|
|
1572
|
-
|
|
1572
|
+
processPaused: boolean;
|
|
1573
1573
|
backgroundColor?: ColorValue;
|
|
1574
1574
|
debug: boolean;
|
|
1575
1575
|
readonly input: Input;
|
|
@@ -1583,7 +1583,8 @@ declare class SceneTree extends MainLoop {
|
|
|
1583
1583
|
constructor(timeline?: Timeline);
|
|
1584
1584
|
protected _updateProperty(key: PropertyKey, value: any, oldValue: any, declaration?: PropertyDeclaration): void;
|
|
1585
1585
|
log(...args: any[]): void;
|
|
1586
|
-
protected
|
|
1586
|
+
protected _process(delta?: number): void;
|
|
1587
|
+
protected _render(renderer: WebGLRenderer): void;
|
|
1587
1588
|
protected _renderScreen(renderer: WebGLRenderer): void;
|
|
1588
1589
|
free(): void;
|
|
1589
1590
|
}
|
|
@@ -3042,8 +3043,9 @@ declare class Engine extends SceneTree {
|
|
|
3042
3043
|
resize(width: number, height: number, updateCss?: boolean): this;
|
|
3043
3044
|
nextTick(): Promise<void>;
|
|
3044
3045
|
waitUntilLoad(): Promise<void>;
|
|
3045
|
-
|
|
3046
|
-
|
|
3046
|
+
waitAndRender(delta?: number): Promise<void>;
|
|
3047
|
+
render(delta?: number): void;
|
|
3048
|
+
start(): Promise<void>;
|
|
3047
3049
|
free(): void;
|
|
3048
3050
|
toPixels(): Uint8ClampedArray;
|
|
3049
3051
|
toImageData(): ImageData;
|
|
@@ -3054,6 +3056,7 @@ interface RenderOptions {
|
|
|
3054
3056
|
data: Record<string, any> | Node | (Node | Record<string, any>)[];
|
|
3055
3057
|
width: number;
|
|
3056
3058
|
height: number;
|
|
3059
|
+
time?: number;
|
|
3057
3060
|
onBeforeRender?: (engine: Engine) => void | Promise<void>;
|
|
3058
3061
|
}
|
|
3059
3062
|
declare function render(options: RenderOptions): Promise<HTMLCanvasElement>;
|
package/dist/index.d.mts
CHANGED
|
@@ -595,8 +595,8 @@ declare class MainLoop extends CoreObject {
|
|
|
595
595
|
get starting(): boolean;
|
|
596
596
|
get spf(): number;
|
|
597
597
|
constructor();
|
|
598
|
-
start(process: (delta: number) => void):
|
|
599
|
-
stop():
|
|
598
|
+
start(process: (delta: number) => void): void;
|
|
599
|
+
stop(): void;
|
|
600
600
|
protected _onNextTick(): void;
|
|
601
601
|
free(): void;
|
|
602
602
|
}
|
|
@@ -1569,7 +1569,7 @@ interface SceneTree {
|
|
|
1569
1569
|
emit: (<K extends keyof SceneTreeEventMap>(type: K, ...args: Parameters<SceneTreeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
1570
1570
|
}
|
|
1571
1571
|
declare class SceneTree extends MainLoop {
|
|
1572
|
-
|
|
1572
|
+
processPaused: boolean;
|
|
1573
1573
|
backgroundColor?: ColorValue;
|
|
1574
1574
|
debug: boolean;
|
|
1575
1575
|
readonly input: Input;
|
|
@@ -1583,7 +1583,8 @@ declare class SceneTree extends MainLoop {
|
|
|
1583
1583
|
constructor(timeline?: Timeline);
|
|
1584
1584
|
protected _updateProperty(key: PropertyKey, value: any, oldValue: any, declaration?: PropertyDeclaration): void;
|
|
1585
1585
|
log(...args: any[]): void;
|
|
1586
|
-
protected
|
|
1586
|
+
protected _process(delta?: number): void;
|
|
1587
|
+
protected _render(renderer: WebGLRenderer): void;
|
|
1587
1588
|
protected _renderScreen(renderer: WebGLRenderer): void;
|
|
1588
1589
|
free(): void;
|
|
1589
1590
|
}
|
|
@@ -3042,8 +3043,9 @@ declare class Engine extends SceneTree {
|
|
|
3042
3043
|
resize(width: number, height: number, updateCss?: boolean): this;
|
|
3043
3044
|
nextTick(): Promise<void>;
|
|
3044
3045
|
waitUntilLoad(): Promise<void>;
|
|
3045
|
-
|
|
3046
|
-
|
|
3046
|
+
waitAndRender(delta?: number): Promise<void>;
|
|
3047
|
+
render(delta?: number): void;
|
|
3048
|
+
start(): Promise<void>;
|
|
3047
3049
|
free(): void;
|
|
3048
3050
|
toPixels(): Uint8ClampedArray;
|
|
3049
3051
|
toImageData(): ImageData;
|
|
@@ -3054,6 +3056,7 @@ interface RenderOptions {
|
|
|
3054
3056
|
data: Record<string, any> | Node | (Node | Record<string, any>)[];
|
|
3055
3057
|
width: number;
|
|
3056
3058
|
height: number;
|
|
3059
|
+
time?: number;
|
|
3057
3060
|
onBeforeRender?: (engine: Engine) => void | Promise<void>;
|
|
3058
3061
|
}
|
|
3059
3062
|
declare function render(options: RenderOptions): Promise<HTMLCanvasElement>;
|
package/dist/index.d.ts
CHANGED
|
@@ -595,8 +595,8 @@ declare class MainLoop extends CoreObject {
|
|
|
595
595
|
get starting(): boolean;
|
|
596
596
|
get spf(): number;
|
|
597
597
|
constructor();
|
|
598
|
-
start(process: (delta: number) => void):
|
|
599
|
-
stop():
|
|
598
|
+
start(process: (delta: number) => void): void;
|
|
599
|
+
stop(): void;
|
|
600
600
|
protected _onNextTick(): void;
|
|
601
601
|
free(): void;
|
|
602
602
|
}
|
|
@@ -1569,7 +1569,7 @@ interface SceneTree {
|
|
|
1569
1569
|
emit: (<K extends keyof SceneTreeEventMap>(type: K, ...args: Parameters<SceneTreeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
1570
1570
|
}
|
|
1571
1571
|
declare class SceneTree extends MainLoop {
|
|
1572
|
-
|
|
1572
|
+
processPaused: boolean;
|
|
1573
1573
|
backgroundColor?: ColorValue;
|
|
1574
1574
|
debug: boolean;
|
|
1575
1575
|
readonly input: Input;
|
|
@@ -1583,7 +1583,8 @@ declare class SceneTree extends MainLoop {
|
|
|
1583
1583
|
constructor(timeline?: Timeline);
|
|
1584
1584
|
protected _updateProperty(key: PropertyKey, value: any, oldValue: any, declaration?: PropertyDeclaration): void;
|
|
1585
1585
|
log(...args: any[]): void;
|
|
1586
|
-
protected
|
|
1586
|
+
protected _process(delta?: number): void;
|
|
1587
|
+
protected _render(renderer: WebGLRenderer): void;
|
|
1587
1588
|
protected _renderScreen(renderer: WebGLRenderer): void;
|
|
1588
1589
|
free(): void;
|
|
1589
1590
|
}
|
|
@@ -3042,8 +3043,9 @@ declare class Engine extends SceneTree {
|
|
|
3042
3043
|
resize(width: number, height: number, updateCss?: boolean): this;
|
|
3043
3044
|
nextTick(): Promise<void>;
|
|
3044
3045
|
waitUntilLoad(): Promise<void>;
|
|
3045
|
-
|
|
3046
|
-
|
|
3046
|
+
waitAndRender(delta?: number): Promise<void>;
|
|
3047
|
+
render(delta?: number): void;
|
|
3048
|
+
start(): Promise<void>;
|
|
3047
3049
|
free(): void;
|
|
3048
3050
|
toPixels(): Uint8ClampedArray;
|
|
3049
3051
|
toImageData(): ImageData;
|
|
@@ -3054,6 +3056,7 @@ interface RenderOptions {
|
|
|
3054
3056
|
data: Record<string, any> | Node | (Node | Record<string, any>)[];
|
|
3055
3057
|
width: number;
|
|
3056
3058
|
height: number;
|
|
3059
|
+
time?: number;
|
|
3057
3060
|
onBeforeRender?: (engine: Engine) => void | Promise<void>;
|
|
3058
3061
|
}
|
|
3059
3062
|
declare function render(options: RenderOptions): Promise<HTMLCanvasElement>;
|