Merge pull request #1082 from thecodingmachine/disabling_physics_optim
Moving Physics optim to DirtyScene
This commit is contained in:
commit
4f4d2532b7
@ -12,6 +12,7 @@ export abstract class DirtyScene extends ResizableScene {
|
|||||||
private isAlreadyTracking: boolean = false;
|
private isAlreadyTracking: boolean = false;
|
||||||
protected dirty:boolean = true;
|
protected dirty:boolean = true;
|
||||||
private objectListChanged:boolean = true;
|
private objectListChanged:boolean = true;
|
||||||
|
private physicsEnabled: boolean = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Track all objects added to the scene and adds a callback each time an animation is added.
|
* Track all objects added to the scene and adds a callback each time an animation is added.
|
||||||
@ -37,6 +38,27 @@ export abstract class DirtyScene extends ResizableScene {
|
|||||||
this.events.on(Events.RENDER, () => {
|
this.events.on(Events.RENDER, () => {
|
||||||
this.objectListChanged = false;
|
this.objectListChanged = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.physics.disableUpdate();
|
||||||
|
this.events.on(Events.POST_UPDATE, () => {
|
||||||
|
let objectMoving = false;
|
||||||
|
for (const body of this.physics.world.bodies.entries) {
|
||||||
|
if (body.velocity.x !== 0 || body.velocity.y !== 0) {
|
||||||
|
this.objectListChanged = true;
|
||||||
|
objectMoving = true;
|
||||||
|
if (!this.physicsEnabled) {
|
||||||
|
this.physics.enableUpdate();
|
||||||
|
this.physicsEnabled = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!objectMoving && this.physicsEnabled) {
|
||||||
|
this.physics.disableUpdate();
|
||||||
|
this.physicsEnabled = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private trackAnimation(): void {
|
private trackAnimation(): void {
|
||||||
|
@ -188,7 +188,6 @@ export class GameScene extends DirtyScene implements CenterListener {
|
|||||||
private popUpElements : Map<number, DOMElement> = new Map<number, Phaser.GameObjects.DOMElement>();
|
private popUpElements : Map<number, DOMElement> = new Map<number, Phaser.GameObjects.DOMElement>();
|
||||||
private originalMapUrl: string|undefined;
|
private originalMapUrl: string|undefined;
|
||||||
private pinchManager: PinchManager|undefined;
|
private pinchManager: PinchManager|undefined;
|
||||||
private physicsEnabled: boolean = true;
|
|
||||||
private mapTransitioning: boolean = false; //used to prevent transitions happenning at the same time.
|
private mapTransitioning: boolean = false; //used to prevent transitions happenning at the same time.
|
||||||
private onVisibilityChangeCallback: () => void;
|
private onVisibilityChangeCallback: () => void;
|
||||||
private emoteManager!: EmoteManager;
|
private emoteManager!: EmoteManager;
|
||||||
@ -1099,8 +1098,6 @@ ${escapedMessage}
|
|||||||
}
|
}
|
||||||
|
|
||||||
createCollisionWithPlayer() {
|
createCollisionWithPlayer() {
|
||||||
this.physics.disableUpdate();
|
|
||||||
this.physicsEnabled = false;
|
|
||||||
//add collision layer
|
//add collision layer
|
||||||
this.Layers.forEach((Layer: Phaser.Tilemaps.TilemapLayer) => {
|
this.Layers.forEach((Layer: Phaser.Tilemaps.TilemapLayer) => {
|
||||||
this.physics.add.collider(this.CurrentPlayer, Layer, (object1: GameObject, object2: GameObject) => {
|
this.physics.add.collider(this.CurrentPlayer, Layer, (object1: GameObject, object2: GameObject) => {
|
||||||
@ -1240,20 +1237,7 @@ ${escapedMessage}
|
|||||||
this.dirty = false;
|
this.dirty = false;
|
||||||
mediaManager.updateScene();
|
mediaManager.updateScene();
|
||||||
this.currentTick = time;
|
this.currentTick = time;
|
||||||
if (this.CurrentPlayer.isMoving()) {
|
|
||||||
this.dirty = true;
|
|
||||||
}
|
|
||||||
this.CurrentPlayer.moveUser(delta);
|
this.CurrentPlayer.moveUser(delta);
|
||||||
if (this.CurrentPlayer.isMoving()) {
|
|
||||||
this.dirty = true;
|
|
||||||
if (!this.physicsEnabled) {
|
|
||||||
this.physics.enableUpdate();
|
|
||||||
this.physicsEnabled = true;
|
|
||||||
}
|
|
||||||
} else if (this.physicsEnabled) {
|
|
||||||
this.physics.disableUpdate();
|
|
||||||
this.physicsEnabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Let's handle all events
|
// Let's handle all events
|
||||||
while (this.pendingEvents.length !== 0) {
|
while (this.pendingEvents.length !== 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user