Merge pull request #1035 from thecodingmachine/improveDirtyScene

FIX: trackDirtyAnims now listen to more generic events
This commit is contained in:
David Négrier 2021-05-11 17:08:29 +02:00 committed by GitHub
commit d2b122efe5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,6 +2,7 @@ import {ResizableScene} from "../Login/ResizableScene";
import GameObject = Phaser.GameObjects.GameObject; import GameObject = Phaser.GameObjects.GameObject;
import Events = Phaser.Scenes.Events; import Events = Phaser.Scenes.Events;
import AnimationEvents = Phaser.Animations.Events; import AnimationEvents = Phaser.Animations.Events;
import StructEvents = Phaser.Structs.Events;
/** /**
* A scene that can track its dirty/pristine state. * A scene that can track its dirty/pristine state.
@ -23,12 +24,11 @@ export abstract class DirtyScene extends ResizableScene {
} }
this.isAlreadyTracking = true; this.isAlreadyTracking = true;
const trackAnimationFunction = this.trackAnimation.bind(this); const trackAnimationFunction = this.trackAnimation.bind(this);
this.events.on(Events.ADDED_TO_SCENE, (gameObject: GameObject) => { this.sys.updateList.on(StructEvents.PROCESS_QUEUE_ADD, (gameObject: GameObject) => {
this.objectListChanged = true; this.objectListChanged = true;
gameObject.on(AnimationEvents.ANIMATION_UPDATE, trackAnimationFunction); gameObject.on(AnimationEvents.ANIMATION_UPDATE, trackAnimationFunction);
}); });
this.sys.updateList.on(StructEvents.PROCESS_QUEUE_REMOVE, (gameObject: GameObject) => {
this.events.on(Events.REMOVED_FROM_SCENE, (gameObject: GameObject) => {
this.objectListChanged = true; this.objectListChanged = true;
gameObject.removeListener(AnimationEvents.ANIMATION_UPDATE, trackAnimationFunction); gameObject.removeListener(AnimationEvents.ANIMATION_UPDATE, trackAnimationFunction);
}); });