Эх сурвалжийг харах

[ts][pixi] Fixed regression on rendering setup pose before update state (removed internal Ticker). Closes #2539.

Davide Tantillo 1 жил өмнө
parent
commit
28a503a7ac

+ 5 - 9
spine-ts/spine-pixi/src/Spine.ts

@@ -123,12 +123,7 @@ export class Spine extends Container {
 	}
 	}
 	/** When `true`, the Spine AnimationState and the Skeleton will be automatically updated using the {@link Ticker.shared} instance. */
 	/** When `true`, the Spine AnimationState and the Skeleton will be automatically updated using the {@link Ticker.shared} instance. */
 	public set autoUpdate (value: boolean) {
 	public set autoUpdate (value: boolean) {
-		if (value) {
-			Ticker.shared.add(this.internalUpdate, this);
-			this.autoUpdateWarned = false;
-		} else {
-			Ticker.shared.remove(this.internalUpdate, this);
-		}
+		if (value) this.autoUpdateWarned = false;
 		this._autoUpdate = value;
 		this._autoUpdate = value;
 	}
 	}
 
 
@@ -171,14 +166,14 @@ export class Spine extends Container {
 
 
 	/** If {@link Spine.autoUpdate} is `false`, this method allows to update the AnimationState and the Skeleton with the given delta. */
 	/** If {@link Spine.autoUpdate} is `false`, this method allows to update the AnimationState and the Skeleton with the given delta. */
 	public update (deltaSeconds: number): void {
 	public update (deltaSeconds: number): void {
-		if (this.autoUpdate && !this.autoUpdateWarned) {
+		if (this._autoUpdate && !this.autoUpdateWarned) {
 			console.warn("You are calling update on a Spine instance that has autoUpdate set to true. This is probably not what you want.");
 			console.warn("You are calling update on a Spine instance that has autoUpdate set to true. This is probably not what you want.");
 			this.autoUpdateWarned = true;
 			this.autoUpdateWarned = true;
 		}
 		}
-		this.internalUpdate(0, deltaSeconds);
+		this.internalUpdate(deltaSeconds);
 	}
 	}
 
 
-	protected internalUpdate (_deltaFrame: number, deltaSeconds?: number): void {
+	protected internalUpdate (deltaSeconds?: number): void {
 		// Because reasons, pixi uses deltaFrames at 60fps. We ignore the default deltaFrames and use the deltaSeconds from pixi ticker.
 		// Because reasons, pixi uses deltaFrames at 60fps. We ignore the default deltaFrames and use the deltaSeconds from pixi ticker.
 		const delta = deltaSeconds ?? Ticker.shared.deltaMS / 1000;
 		const delta = deltaSeconds ?? Ticker.shared.deltaMS / 1000;
 		this.state.update(delta);
 		this.state.update(delta);
@@ -191,6 +186,7 @@ export class Spine extends Container {
 
 
 	/** Render the meshes based on the current skeleton state, render debug information, then call {@link Container.updateTransform}. */
 	/** Render the meshes based on the current skeleton state, render debug information, then call {@link Container.updateTransform}. */
 	public override updateTransform (): void {
 	public override updateTransform (): void {
+		if (this._autoUpdate) this.internalUpdate();
 		this.renderMeshes();
 		this.renderMeshes();
 		this.sortChildren();
 		this.sortChildren();
 		this.debug?.renderDebug(this);
 		this.debug?.renderDebug(this);