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 name String
* @param systemType * @param systemType
* @param entityManager * @param entityManager
* @param domElement
* @param domStats
* @param parentEntity * @param parentEntity
* @constructor * @constructor
*/ */
@ -14,8 +12,6 @@ GameLib.API.System = function (
name, name,
systemType, systemType,
entityManager, entityManager,
domElement,
domStats,
parentEntity parentEntity
) { ) {
@ -23,9 +19,7 @@ GameLib.API.System = function (
this, this,
GameLib.Component.COMPONENT_SYSTEM, GameLib.Component.COMPONENT_SYSTEM,
{ {
'entityManager' : GameLib.EntityManager, 'entityManager' : GameLib.EntityManager
'domElement' : GameLib.DomElement,
'domStats' : GameLib.DomElement
}, },
null, null,
parentEntity parentEntity
@ -50,16 +44,6 @@ GameLib.API.System = function (
entityManager = null; entityManager = null;
} }
this.entityManager = entityManager; 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); GameLib.API.System.prototype = Object.create(GameLib.Component.prototype);
@ -76,8 +60,6 @@ GameLib.API.System.FromObjectComponent = function(objectComponent) {
objectComponent.name, objectComponent.name,
objectComponent.systemType, objectComponent.systemType,
objectComponent.entityManager, objectComponent.entityManager,
objectComponent.domElement,
objectComponent.domStats,
objectComponent.parentEntity 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 = Object.create(GameLib.Component.prototype);
GameLib.D3.Stats.prototype.constructor = GameLib.D3.Stats; 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 * Creates a helper instance
* @param update * @param update

View File

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

View File

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

View File

@ -26,8 +26,6 @@ GameLib.System = function(
apiSystem.name, apiSystem.name,
apiSystem.systemType, apiSystem.systemType,
apiSystem.entityManager, apiSystem.entityManager,
apiSystem.domElement,
apiSystem.domStats,
apiSystem.parentEntity 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); 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_ANIMATION = 0x2;
GameLib.System.SYSTEM_TYPE_INPUT = 0x4; GameLib.System.SYSTEM_TYPE_INPUT = 0x4;
GameLib.System.SYSTEM_TYPE_STORAGE = 0x8; GameLib.System.SYSTEM_TYPE_STORAGE = 0x8;
GameLib.System.SYSTEM_TYPE_GUI = 0x10;
GameLib.System.SYSTEM_TYPE_ALL = 0xFFFF; GameLib.System.SYSTEM_TYPE_ALL = 0xFFFF;
/** /**
@ -102,19 +96,20 @@ GameLib.System.prototype.start = function() {
this.renderEntities.map( this.renderEntities.map(
function(entity) { function(entity) {
var stats = entity.getFirstComponent(GameLib.D3.Stats); var stats = entity.getFirstComponent(GameLib.D3.Stats);
stats.instance.dom.style.position = 'absolute'; stats.resize();
stats.instance.dom.style.top = '34px';
stats.instance.dom.style.left = '0px';
stats.domElement.instance.parentElement.appendChild(stats.instance.dom); 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('mousedown', component.mouseDown, false);
component.domElement.instance.removeEventListener('mousemove', component.mouseMove, false); component.domElement.instance.removeEventListener('mousemove', component.mouseMove, false);
component.domElement.instance.removeEventListener('keydown', component.keyDown, false); component.domElement.instance.removeEventListener('keydown', component.keyDown, false);
// component.domElement.instance.removeEventListener('contextmenu', component.contextMenu, false);
component.controls.dispose(); component.controls.dispose();
}); });
console.log('stopped all input systems'); 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) { if (this.systemType === GameLib.System.SYSTEM_TYPE_RENDER) {
this.domElement.innerHTML = 'Rendering System Stopped';
this.renderers = []; this.renderEntities.map(
this.viewports = []; function(entity) {
this.meshes = []; 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) { if (this.systemType === GameLib.System.SYSTEM_TYPE_ANIMATION) {
@ -276,23 +284,11 @@ GameLib.System.prototype.stop = function() {
*/ */
GameLib.System.prototype.toApiObject = 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( return new GameLib.API.System(
this.id, this.id,
this.name, this.name,
this.systemType, this.systemType,
GameLib.Utils.IdOrNull(this.entityManager), GameLib.Utils.IdOrNull(this.entityManager),
apiDomElement,
apiDomStats,
GameLib.Utils.IdOrNull(this.parentEntity) GameLib.Utils.IdOrNull(this.parentEntity)
); );
}; };