GUI system

beta.r3js.org
-=yb4f310 2017-05-22 11:34:18 +02:00
parent 4c34fb2b92
commit eb5e45bed6
5 changed files with 94 additions and 106 deletions

View File

@ -4,8 +4,6 @@
* @param name String
* @param systemType
* @param entityManager
* @param domElement
* @param domStats
* @param parentEntity
* @constructor
*/
@ -14,8 +12,6 @@ GameLib.API.System = function (
name,
systemType,
entityManager,
domElement,
domStats,
parentEntity
) {
@ -23,9 +19,7 @@ GameLib.API.System = function (
this,
GameLib.Component.COMPONENT_SYSTEM,
{
'entityManager' : GameLib.EntityManager,
'domElement' : GameLib.DomElement,
'domStats' : GameLib.DomElement
'entityManager' : GameLib.EntityManager
},
null,
parentEntity
@ -50,16 +44,6 @@ GameLib.API.System = function (
entityManager = null;
}
this.entityManager = entityManager;
if (GameLib.Utils.UndefinedOrNull(domElement)){
domElement = null;
}
this.domElement = domElement;
if (GameLib.Utils.UndefinedOrNull(domStats)){
domStats = null;
}
this.domStats = domStats;
};
GameLib.API.System.prototype = Object.create(GameLib.Component.prototype);
@ -76,8 +60,6 @@ GameLib.API.System.FromObjectComponent = function(objectComponent) {
objectComponent.name,
objectComponent.systemType,
objectComponent.entityManager,
objectComponent.domElement,
objectComponent.domStats,
objectComponent.parentEntity
);
};

View File

@ -51,6 +51,10 @@ GameLib.D3.Stats = function(
GameLib.D3.Stats.prototype = Object.create(GameLib.Component.prototype);
GameLib.D3.Stats.prototype.constructor = GameLib.D3.Stats;
GameLib.D3.Stats.prototype.resize = function() {
console.log('override stats resize per implementation');
};
/**
* Creates a helper instance
* @param update

View File

@ -29,58 +29,58 @@ GameLib.Entity = function (
this.componentToCreate = 0;
this.components = this.components.map(
function (apiComponent) {
if (apiComponent instanceof GameLib.D3.API.PathFollowing) {
return new GameLib.D3.PathFollowing(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.Renderer) {
return new GameLib.D3.Renderer(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.RenderTarget) {
return new GameLib.D3.RenderTarget(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.Pass) {
return new GameLib.D3.Pass(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.Composer) {
return new GameLib.D3.Composer(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.Camera) {
return new GameLib.D3.Camera(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.LookAt) {
return new GameLib.D3.LookAt(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.Follow) {
return new GameLib.D3.Follow(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.Input.Editor) {
return new GameLib.D3.Input.Editor(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.Input.Drive) {
return new GameLib.D3.Input.Drive(this.graphics, apiComponent);
}
if (apiComponent instanceof GameLib.D3.API.Spline) {
return new GameLib.D3.Spline(this.graphics, apiComponent);
}
return apiComponent;
}.bind(this)
);
// this.components = this.components.map(
//
// function (apiComponent) {
//
// if (apiComponent instanceof GameLib.D3.API.PathFollowing) {
// return new GameLib.D3.PathFollowing(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.Renderer) {
// return new GameLib.D3.Renderer(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.RenderTarget) {
// return new GameLib.D3.RenderTarget(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.Pass) {
// return new GameLib.D3.Pass(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.Composer) {
// return new GameLib.D3.Composer(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.Camera) {
// return new GameLib.D3.Camera(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.LookAt) {
// return new GameLib.D3.LookAt(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.Follow) {
// return new GameLib.D3.Follow(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.Input.Editor) {
// return new GameLib.D3.Input.Editor(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.Input.Drive) {
// return new GameLib.D3.Input.Drive(this.graphics, apiComponent);
// }
//
// if (apiComponent instanceof GameLib.D3.API.Spline) {
// return new GameLib.D3.Spline(this.graphics, apiComponent);
// }
//
// return apiComponent;
//
// }.bind(this)
// );
this.instance = this.createInstance();
};

View File

@ -54,7 +54,6 @@ GameLib.GUI = function(
}
};
GameLib.Component.call(
this,
GameLib.Component.COMPONENT_GUI,
@ -92,6 +91,13 @@ GameLib.GUI = function(
GameLib.GUI.prototype = Object.create(GameLib.Component.prototype);
GameLib.GUI.prototype.constructor = GameLib.GUI;
/**
* Resize function
*/
GameLib.GUI.prototype.resize = function() {
console.log('override me per implementation');
};
/**
* Creates a helper instance
* @param update

View File

@ -26,8 +26,6 @@ GameLib.System = function(
apiSystem.name,
apiSystem.systemType,
apiSystem.entityManager,
apiSystem.domElement,
apiSystem.domStats,
apiSystem.parentEntity
);
@ -38,11 +36,6 @@ GameLib.System = function(
);
}
if (this.domElement instanceof GameLib.API.DomElement) {
this.domElement = new GameLib.DomElement(
this.domElement
);
}
};
GameLib.System.prototype = Object.create(GameLib.API.System.prototype);
@ -53,6 +46,7 @@ GameLib.System.SYSTEM_TYPE_RENDER = 0x1;
GameLib.System.SYSTEM_TYPE_ANIMATION = 0x2;
GameLib.System.SYSTEM_TYPE_INPUT = 0x4;
GameLib.System.SYSTEM_TYPE_STORAGE = 0x8;
GameLib.System.SYSTEM_TYPE_GUI = 0x10;
GameLib.System.SYSTEM_TYPE_ALL = 0xFFFF;
/**
@ -102,19 +96,20 @@ GameLib.System.prototype.start = function() {
this.renderEntities.map(
function(entity) {
var stats = entity.getFirstComponent(GameLib.D3.Stats);
stats.instance.dom.style.position = 'absolute';
stats.instance.dom.style.top = '34px';
stats.instance.dom.style.left = '0px';
stats.resize();
stats.domElement.instance.parentElement.appendChild(stats.instance.dom);
var gui = entity.getFirstComponent(GameLib.GUI);
gui.instance.domElement.style.position = 'absolute';
gui.instance.domElement.style.top = '34px';
gui.instance.domElement.style.right = '0px';
gui.instance.domElement.getElementsByTagName('ul')[0].style.maxHeight = window.innerHeight - 93 + 'px';
gui.domElement.instance.parentElement.appendChild(gui.instance.domElement);
}
)
}
if (this.systemType === GameLib.System.SYSTEM_TYPE_GUI) {
var guis = this.entityManager.queryComponents(GameLib.GUI);
guis.map(function(gui){
gui.resize();
gui.domElement.instance.parentElement.appendChild(gui.instance.domElement);
})
}
@ -245,18 +240,31 @@ GameLib.System.prototype.stop = function() {
component.domElement.instance.removeEventListener('mousedown', component.mouseDown, false);
component.domElement.instance.removeEventListener('mousemove', component.mouseMove, false);
component.domElement.instance.removeEventListener('keydown', component.keyDown, false);
// component.domElement.instance.removeEventListener('contextmenu', component.contextMenu, false);
component.controls.dispose();
});
console.log('stopped all input systems');
}
if (this.systemType === GameLib.System.SYSTEM_TYPE_GUI) {
console.log('stopping GUI system');
var guis = this.entityManager.queryComponents(GameLib.GUI);
guis.map(function(gui){
gui.domElement.instance.parentElement.removeChild(gui.instance.domElement);
})
}
if (this.systemType === GameLib.System.SYSTEM_TYPE_RENDER) {
this.domElement.innerHTML = 'Rendering System Stopped';
this.renderers = [];
this.viewports = [];
this.meshes = [];
this.renderEntities.map(
function(entity) {
var stats = entity.getFirstComponent(GameLib.D3.Stats);
stats.domElement.instance.parentElement.removeChild(stats.instance.dom);
}
);
this.renderEntities = [];
}
if (this.systemType === GameLib.System.SYSTEM_TYPE_ANIMATION) {
@ -276,23 +284,11 @@ GameLib.System.prototype.stop = function() {
*/
GameLib.System.prototype.toApiObject = function() {
var apiDomElement = null;
if (this.domElement instanceof GameLib.DomElement) {
apiDomElement = this.domElement.toApiObject();
}
var apiDomStats = null;
if (this.domStats instanceof GameLib.DomElement) {
apiDomStats = this.domStats.toApiObject();
}
return new GameLib.API.System(
this.id,
this.name,
this.systemType,
GameLib.Utils.IdOrNull(this.entityManager),
apiDomElement,
apiDomStats,
GameLib.Utils.IdOrNull(this.parentEntity)
);
};