perf: slow emitter tick
This commit is contained in:
parent
810e449012
commit
4c8ed08099
|
@ -1,6 +1,7 @@
|
|||
import {compose} from '@avocado/core';
|
||||
import {Trait} from '@avocado/entity';
|
||||
import {Property} from '@avocado/mixins';
|
||||
import {Ticker} from '@avocado/timing';
|
||||
|
||||
const decorate = compose(
|
||||
)
|
||||
|
@ -9,6 +10,13 @@ export class Emitter extends decorate(Trait) {
|
|||
|
||||
initialize() {
|
||||
this.emitters = {};
|
||||
this.ticker = new Ticker(1 / 10);
|
||||
this.ticker.on('tick', (elapsed) => {
|
||||
for (const key in this.emitters) {
|
||||
const emitter = this.emitters[key];
|
||||
emitter.tick(elapsed);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
hooks() {
|
||||
|
@ -18,7 +26,7 @@ export class Emitter extends decorate(Trait) {
|
|||
return (elapsed) => {
|
||||
for (const key in this.emitters) {
|
||||
const emitter = this.emitters[key];
|
||||
emitter.tick(elapsed);
|
||||
this.ticker.tick(elapsed);
|
||||
if (!emitter.hasParticles()) {
|
||||
delete this.emitters[key];
|
||||
}
|
||||
|
@ -55,10 +63,7 @@ export class Emitter extends decorate(Trait) {
|
|||
}
|
||||
|
||||
renderTick(elapsed) {
|
||||
for (const key in this.emitters) {
|
||||
const emitter = this.emitters[key];
|
||||
emitter.tick(elapsed);
|
||||
}
|
||||
this.ticker.tick(elapsed);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user