Optimised particle fields

This commit is contained in:
Nathan Kunicki 2016-02-14 18:06:51 +00:00
parent 7e8c4cdf12
commit 49cb0efe72
3 changed files with 12 additions and 6 deletions

View File

@ -9,11 +9,11 @@ class BlueParticle extends MomentumEngine.Classes.Rect {
constructor (x, y) { constructor (x, y) {
super(x, y, 1, 1, new MomentumEngine.Classes.Color(255, 255, 255, 0)); super(x, y, 1, 1, new MomentumEngine.Classes.Color(255, 255, 255, 0));
this.timeToLive = 15000; this.timeToLive = 25500;
} }
update (delta) { 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), 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); 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); 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); field2 = new MomentumEngine.Classes.Field(baseSize, baseSize, 0.1);
mainScene.addChildEntity(rect); mainScene.addChildEntity(rect);
@ -82,7 +82,7 @@ window.onload = function () {
emitter.setParticleParent(mainScene); emitter.setParticleParent(mainScene);
emitter.particleFields.push(field, field2); emitter.particleFields.push(field, field2);
//emitter.spread = Math.PI / 32; emitter.spread = Math.PI / 8;
emitter.emitting = true; emitter.emitting = true;
particles.start(); particles.start();

View File

@ -195,6 +195,10 @@ class Entity {
let rendered = this.render && this.render(); let rendered = this.render && this.render();
if (rendered) {
this._game._lastFrameTotalRenders++;
}
if (rendered || (typeof rendered == "undefined") || (typeof this.render === "undefined")) { if (rendered || (typeof rendered == "undefined") || (typeof this.render === "undefined")) {
this.children.forEach((child) => { this.children.forEach((child) => {

View File

@ -95,6 +95,7 @@ class Game extends Entity {
this._game = this; this._game = this;
this._lastFrameTimestamp = 0; this._lastFrameTimestamp = 0;
this._lastFrameTotalRenders = 0;
this._wantPause = true; this._wantPause = true;
} }
@ -146,8 +147,9 @@ class Game extends Entity {
let currentTimestamp = +(new Date()), let currentTimestamp = +(new Date()),
delta = currentTimestamp - self._lastFrameTimestamp; delta = currentTimestamp - self._lastFrameTimestamp;
delta = Math.min(delta, 1000 / self.desiredFps); //delta = Math.min(delta, 1000 / self.desiredFps);
self._lastFrameTimestamp = currentTimestamp; self._lastFrameTimestamp = currentTimestamp;
self._lastFrameTotalRenders = 0;
self.step(delta); self.step(delta);