fix entity manager with default instance

beta.r3js.org
-=yb4f310 2017-10-27 09:30:08 +02:00
parent b52177f3ad
commit 724647f8a6
2 changed files with 27 additions and 14 deletions

View File

@ -4,13 +4,13 @@
* @param id * @param id
* @param name * @param name
* @param entities GameLib.API.Entity[] * @param entities GameLib.API.Entity[]
* @param parentEntity * @param defaultEntity
*/ */
GameLib.API.EntityManager = function( GameLib.API.EntityManager = function(
id, id,
name, name,
entities, entities,
parentEntity defaultEntity
) { ) {
if (GameLib.Utils.UndefinedOrNull(id)) { if (GameLib.Utils.UndefinedOrNull(id)) {
id = GameLib.Utils.RandomId(); id = GameLib.Utils.RandomId();
@ -27,10 +27,10 @@ GameLib.API.EntityManager = function(
} }
this.entities = entities; this.entities = entities;
if (GameLib.Utils.UndefinedOrNull(parentEntity)) { if (GameLib.Utils.UndefinedOrNull(defaultEntity)) {
parentEntity = null; defaultEntity = null;
} }
this.parentEntity = parentEntity; this.defaultEntity = defaultEntity;
}; };
GameLib.API.EntityManager.prototype = Object.create(GameLib.Component.prototype); GameLib.API.EntityManager.prototype = Object.create(GameLib.Component.prototype);
@ -53,6 +53,6 @@ GameLib.API.EntityManager.FromObject = function(objectEntityManager) {
objectEntityManager.id, objectEntityManager.id,
objectEntityManager.name, objectEntityManager.name,
apiEntities, apiEntities,
objectEntityManager.parentEntity objectEntityManager.defaultEntity
); );
}; };

View File

@ -2,13 +2,23 @@
* GameLib.EntityManager * GameLib.EntityManager
* @constructor * @constructor
*/ */
GameLib.EntityManager = function() { GameLib.EntityManager = function(apiEntityManager) {
this.id = GameLib.Utils.RandomId(); if (GameLib.Utils.UndefinedOrNull(apiEntityManager)) {
apiEntityManager = {};
}
this.name = 'Entity Manager (' + this.id + ')'; if (apiEntityManager instanceof GameLib.EntityManager) {
return apiEntityManager;
}
this.entities = []; GameLib.API.EntityManager.call(
this,
apiEntityManager.id,
apiEntityManager.name,
apiEntityManager.entities,
apiEntityManager.defaultEntity
);
/** /**
* The 'register' array is a register of each component currently loaded - when the linking * The 'register' array is a register of each component currently loaded - when the linking
@ -31,12 +41,13 @@ GameLib.EntityManager = function() {
this, this,
GameLib.Component.COMPONENT_ENTITY_MANAGER, GameLib.Component.COMPONENT_ENTITY_MANAGER,
{ {
'entities' : [GameLib.Entity] 'entities' : [GameLib.Entity],
'defaultEntity' : GameLib.Entity
} }
); );
}; };
GameLib.EntityManager.prototype = Object.create(GameLib.Component.prototype); GameLib.EntityManager.prototype = Object.create(GameLib.API.EntityManager.prototype);
GameLib.EntityManager.prototype.constructor = GameLib.EntityManager; GameLib.EntityManager.prototype.constructor = GameLib.EntityManager;
GameLib.EntityManager.prototype.createInstance = function() { GameLib.EntityManager.prototype.createInstance = function() {
@ -131,6 +142,8 @@ GameLib.EntityManager.prototype.createEntity = function(name) {
this.entities.push(entity); this.entities.push(entity);
this.defaultEntity = entity;
GameLib.Event.Emit( GameLib.Event.Emit(
GameLib.Event.NEW_ENTITY, GameLib.Event.NEW_ENTITY,
{ {
@ -334,7 +347,7 @@ GameLib.EntityManager.prototype.toApiObject = function() {
this.id, this.id,
this.name, this.name,
apiEntities, apiEntities,
GameLib.Utils.IdOrNull(this.parentEntity) GameLib.Utils.IdOrNull(this.defaultEntity)
); );
return apiEntityManager; return apiEntityManager;