diff --git a/CHANGELOG.md b/CHANGELOG.md index aa57983b..7ad28c30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,7 +30,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Changed -- +- Allow entity names to be set after construction! Entities will now default to a name "Entity#1234" followed by an id. diff --git a/src/engine/EntityComponentSystem/Entity.ts b/src/engine/EntityComponentSystem/Entity.ts index d1208cfb..12d848cb 100644 --- a/src/engine/EntityComponentSystem/Entity.ts +++ b/src/engine/EntityComponentSystem/Entity.ts @@ -101,12 +101,18 @@ export class Entity implements OnInitialize, OnPreUpdate, OnPostUpdate { protected _setName(name: string) { if (name) { this._name = name; + } else { + this._name = `Entity#${this.id}`; } } public get name(): string { return this._name; } + public set name(name: string) { + this._setName(name); + } + /** * Whether this entity is active, if set to false it will be reclaimed */ diff --git a/src/engine/Graphics/Context/debug-font.png b/src/engine/Graphics/Context/debug-font.png index c4873941acec988b86e83217154912f88f608f69..0f69959dc138dd7ef6f5466f8e600aa4d826b1b0 100644 GIT binary patch delta 1684 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 { entityManager.addEntity(entity); entityManager.addEntity(entity2); expect(entityManager.getByName('some-e')).toEqual([entity]); - expect(entityManager.getByName('anonymous')).toEqual([entity2]); + expect(entityManager.getByName(entity2.name)).toEqual([entity2]); }); it('can clear entities', () => { diff --git a/src/spec/EntitySpec.ts b/src/spec/EntitySpec.ts index f2c4949d..6234cc83 100644 --- a/src/spec/EntitySpec.ts +++ b/src/spec/EntitySpec.ts @@ -45,9 +45,15 @@ describe('An entity', () => { expect(e.name).toBe('my-name'); }); + it('can have a name set after construction', () => { + const e = new ex.Entity(); + e.name = 'MyCoolName'; + expect(e.name).toBe('MyCoolName'); + }); + it('has a default name', () => { const e = new ex.Entity(); - expect(e.name).toBe('anonymous'); + expect(e.name).toMatch(/^Entity#\d+$/); }); it('can be killed', () => {