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

View File

@ -2,13 +2,23 @@
* GameLib.EntityManager
* @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
@ -31,12 +41,13 @@ GameLib.EntityManager = function() {
this,
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.createInstance = function() {
@ -131,6 +142,8 @@ GameLib.EntityManager.prototype.createEntity = function(name) {
this.entities.push(entity);
this.defaultEntity = entity;
GameLib.Event.Emit(
GameLib.Event.NEW_ENTITY,
{
@ -334,7 +347,7 @@ GameLib.EntityManager.prototype.toApiObject = function() {
this.id,
this.name,
apiEntities,
GameLib.Utils.IdOrNull(this.parentEntity)
GameLib.Utils.IdOrNull(this.defaultEntity)
);
return apiEntityManager;