From 49cb0efe7274a5c632cfa21f691ca6dc2fef28de Mon Sep 17 00:00:00 2001 From: Nathan Kunicki Date: Sun, 14 Feb 2016 18:06:51 +0000 Subject: [PATCH] Optimised particle fields --- examples/particles/particles.js | 10 +++++----- src/classes/entity.js | 4 ++++ src/classes/game.js | 4 +++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/examples/particles/particles.js b/examples/particles/particles.js index a2afdf9..d842993 100644 --- a/examples/particles/particles.js +++ b/examples/particles/particles.js @@ -9,11 +9,11 @@ class BlueParticle extends MomentumEngine.Classes.Rect { constructor (x, y) { super(x, y, 1, 1, new MomentumEngine.Classes.Color(255, 255, 255, 0)); - this.timeToLive = 15000; + this.timeToLive = 25500; } update (delta) { - this.color.a = this.color.a - (delta * 0.00005); + this.color.a = this.color.a - (delta * 0.00004); } } @@ -46,10 +46,10 @@ window.onload = function () { let rect = new MomentumEngine.Classes.Rect(width / 8 - baseSize, height / 2 - baseSize, baseSize * 2, baseSize * 2, red), emitter = new MomentumEngine.Classes.Emitter(baseSize, baseSize, 4, new MomentumEngine.Classes.Vector2D(0, 0.05), BlueParticle); - let fieldRect = new MomentumEngine.Classes.Rect(width - (baseSize * 33), height - (baseSize * 10), baseSize * 2, baseSize * 2, blue), + let fieldRect = new MomentumEngine.Classes.Rect(width - (baseSize * 33), height - (baseSize * 11), baseSize * 2, baseSize * 2, blue), field = new MomentumEngine.Classes.Field(baseSize, baseSize, 0.1); - let fieldRect2 = new MomentumEngine.Classes.Rect(width - (baseSize * 33), baseSize * 10, baseSize * 2, baseSize * 2, blue), + let fieldRect2 = new MomentumEngine.Classes.Rect(width - (baseSize * 33), baseSize * 9, baseSize * 2, baseSize * 2, blue), field2 = new MomentumEngine.Classes.Field(baseSize, baseSize, 0.1); mainScene.addChildEntity(rect); @@ -82,7 +82,7 @@ window.onload = function () { emitter.setParticleParent(mainScene); emitter.particleFields.push(field, field2); - //emitter.spread = Math.PI / 32; + emitter.spread = Math.PI / 8; emitter.emitting = true; particles.start(); diff --git a/src/classes/entity.js b/src/classes/entity.js index b2232b9..93be8eb 100644 --- a/src/classes/entity.js +++ b/src/classes/entity.js @@ -195,6 +195,10 @@ class Entity { let rendered = this.render && this.render(); + if (rendered) { + this._game._lastFrameTotalRenders++; + } + if (rendered || (typeof rendered == "undefined") || (typeof this.render === "undefined")) { this.children.forEach((child) => { diff --git a/src/classes/game.js b/src/classes/game.js index 283a47d..976c7b3 100644 --- a/src/classes/game.js +++ b/src/classes/game.js @@ -95,6 +95,7 @@ class Game extends Entity { this._game = this; this._lastFrameTimestamp = 0; + this._lastFrameTotalRenders = 0; this._wantPause = true; } @@ -146,8 +147,9 @@ class Game extends Entity { let currentTimestamp = +(new Date()), delta = currentTimestamp - self._lastFrameTimestamp; - delta = Math.min(delta, 1000 / self.desiredFps); + //delta = Math.min(delta, 1000 / self.desiredFps); self._lastFrameTimestamp = currentTimestamp; + self._lastFrameTotalRenders = 0; self.step(delta);