r3-legacy/src/game-lib-d3-api-game.js

214 lines
5.0 KiB
JavaScript
Raw Normal View History

2017-01-10 17:04:30 +01:00
/**
* Raw Game API object - should always correspond with the Game Schema
* @param id
* @param name
* @param gameType
* @param width
* @param height
* @param scenes
* @param cameras
* @param renderers
* @param composers
* @param systems
2017-01-12 04:44:01 +01:00
* @param viewports
2017-01-10 17:04:30 +01:00
* @param entityManager
* @param mouse
* @param activeCameraIndex
* @param activeRendererIndex
* @param parentEntity
* @constructor
*/
GameLib.D3.API.Game = function(
id,
name,
gameType,
width,
height,
scenes,
cameras,
renderers,
composers,
systems,
2017-01-12 04:44:01 +01:00
viewports,
2017-01-10 17:04:30 +01:00
entityManager,
mouse,
parentEntity
) {
GameLib.Component.call(
this,
GameLib.Component.COMPONENT_GAME,
{
'scenes' : [GameLib.D3.Scene],
'cameras' : [GameLib.D3.Camera],
'renderers' : [GameLib.D3.Renderer],
'composers' : [GameLib.D3.Composer],
'systems' : [GameLib.D3.System],
2017-01-12 04:44:01 +01:00
'viewports' : [GameLib.D3.Viewport],
2017-01-10 17:04:30 +01:00
'entityManager' : GameLib.EntityManager,
2017-01-12 04:44:01 +01:00
'mouse' : GameLib.D3.Mouse
2017-01-10 17:04:30 +01:00
},
null,
parentEntity
);
if (GameLib.Utils.UndefinedOrNull(id)) {
id = GameLib.Utils.RandomId();
}
this.id = id;
if (GameLib.Utils.UndefinedOrNull(name)) {
name = 'Game (' + this.id + ')';
}
this.name = name;
if (GameLib.Utils.UndefinedOrNull(gameType)) {
gameType = GameLib.D3.Game.GAME_TYPE_VR_PONG;
}
this.gameType = gameType;
if (GameLib.Utils.UndefinedOrNull(width)) {
width = 800;
}
this.width = width;
if (GameLib.Utils.UndefinedOrNull(height)) {
height = 600;
}
this.height = height;
if (GameLib.Utils.UndefinedOrNull(scenes)) {
scenes = [];
}
this.scenes = scenes;
if (GameLib.Utils.UndefinedOrNull(cameras)) {
cameras = [];
}
this.cameras = cameras;
if (GameLib.Utils.UndefinedOrNull(renderers)) {
renderers = [];
}
this.renderers = renderers;
if (GameLib.Utils.UndefinedOrNull(composers)) {
composers = [];
}
this.composers = composers;
if (GameLib.Utils.UndefinedOrNull(systems)) {
systems = [];
}
this.systems = systems;
2017-01-12 04:44:01 +01:00
if (GameLib.Utils.UndefinedOrNull(viewports)) {
viewports = [];
}
this.viewports = viewports;
2017-01-10 17:04:30 +01:00
if (GameLib.Utils.UndefinedOrNull(entityManager)) {
entityManager = new GameLib.API.EntityManager();
}
this.entityManager = entityManager;
if (GameLib.Utils.UndefinedOrNull(mouse)) {
mouse = null;
}
this.mouse = mouse;
};
GameLib.D3.API.Game.prototype = Object.create(GameLib.Component.prototype);
GameLib.D3.API.Game.prototype.constructor = GameLib.D3.API.Game;
/**
* Creates an API camera from an Object camera
* @param objectGame
* @constructor
*/
GameLib.D3.API.Game.FromObjectGame = function(objectGame) {
var apiScenes = [];
var apiCameras = [];
var apiRenderers = [];
var apiComposers = [];
var apiSystems = [];
2017-01-12 04:44:01 +01:00
var apiViewports = [];
2017-01-10 17:04:30 +01:00
var apiEntityManager = null;
var apiMouse = null;
if (objectGame.scenes) {
apiScenes = objectGame.scenes.map(
function(objectScene){
return GameLib.API.Scene.FromObjectScene(objectScene);
}
);
}
if (objectGame.cameras) {
apiCameras = objectGame.cameras.map(
function(objectCamera){
return GameLib.API.Camera.FromObjectCamera(objectCamera);
}
);
}
if (objectGame.renderers) {
apiRenderers = objectGame.renderers.map(
function(objectRenderer){
return GameLib.API.Renderer.FromObjectComponent(objectRenderer);
}
);
}
if (objectGame.composers) {
apiComposers = objectGame.composers.map(
function(objectComposer){
return GameLib.API.Composer.FromObjectComponent(objectComposer);
}
);
}
if (objectGame.systems) {
apiSystems = objectGame.systems.map(
function(objectSystem){
return GameLib.API.System.FromObjectComponent(objectSystem);
}
);
}
2017-01-12 04:44:01 +01:00
if (objectGame.viewports) {
apiViewports = objectGame.viewports.map(
function(objectViewport){
return GameLib.API.Viewport.FromObjectViewport(objectViewport);
}
);
}
2017-01-10 17:04:30 +01:00
if (objectGame.entityManager) {
apiEntityManager = GameLib.API.Entity.FromObjectEntity(objectGame.entityManager);
}
if (objectGame.mouse) {
apiMouse = GameLib.API.Mouse.FromObjectMouse(objectGame.mouse);
}
return new GameLib.D3.API.Game(
objectGame.id,
objectGame.name,
objectGame.gameType,
objectGame.width,
objectGame.height,
apiScenes,
apiCameras,
apiRenderers,
apiComposers,
apiSystems,
2017-01-12 04:44:01 +01:00
apiViewports,
2017-01-10 17:04:30 +01:00
apiEntityManager,
apiMouse,
objectGame.parentEntity
);
};