diff --git a/src/family.js b/src/family.js index 5ab530d..fcdd163 100644 --- a/src/family.js +++ b/src/family.js @@ -99,6 +99,7 @@ var Family = module.exports = Class.extend({ for (i = 0, len = names.length; i < len; ++i) { if (names[i] === componentName) { this._entities.remove(entity); + this.entityRemoved.emit(entity); } } }, diff --git a/test/world.js b/test/world.js index b412c32..c1b3541 100644 --- a/test/world.js +++ b/test/world.js @@ -145,6 +145,43 @@ describe('world', function () { bListener.calledOnce.should.be.false; }); + it('should emit signal when entity has component added', function() { + var world = new CES.World(); + + var abListener = sinon.spy(); + var bListener = sinon.spy(); + world.entityAdded('a', 'b').add(abListener); + + var entity = new CES.Entity(); + entity.addComponent(new CompA()); + world.addEntity(entity); + + abListener.calledOnce.should.be.false; + + entity.addComponent(new CompB()); + + abListener.calledOnce.should.be.true; + }); + + it('should emit signal when entity has component removed', function() { + var world = new CES.World(); + + var abListener = sinon.spy(); + var bListener = sinon.spy(); + world.entityRemoved('a', 'b').add(abListener); + + var entity = new CES.Entity(); + entity.addComponent(new CompA()); + entity.addComponent(new CompB()); + world.addEntity(entity); + + abListener.calledOnce.should.be.false; + + entity.removeComponent('b'); + + abListener.calledOnce.should.be.true; + }); + describe('with system', function() { it('addToWorld should be called when system is added', function() { var world = new CES.World();