/** * Raw Editor API object - should always correspond with the Editor Schema * @param id * @param name * @param baseUrl * @param path * @param imageFactory * @param games [GameLib.API.D3.Game] * @param scenes * @param cameras * @param composers * @param viewports * @param renderers * @param renderTargets * @param systems * @param entityManager * @param allSelected * @param selectedObjects * @param parentEntity * @constructor */ GameLib.D3.API.Editor = function( id, name, baseUrl, path, imageFactory, games, scenes, cameras, composers, viewports, renderers, renderTargets, systems, entityManager, allSelected, selectedObjects, parentEntity ) { GameLib.Component.call( this, GameLib.Component.COMPONENT_EDITOR, { 'imageFactory' : GameLib.D3.ImageFactory, 'games' : [GameLib.D3.Game], 'scenes' : [GameLib.D3.Scene], 'cameras' : [GameLib.D3.Camera], 'composers' : [GameLib.D3.Composer], 'viewports' : [GameLib.D3.Viewport], 'renderers' : [GameLib.D3.Renderer], 'renderTargets' : [GameLib.D3.RenderTarget], 'systems' : [GameLib.System], 'entityManager' : GameLib.EntityManager }, null, parentEntity ); if (GameLib.Utils.UndefinedOrNull(id)) { id = GameLib.Utils.RandomId(); } this.id = id; if (GameLib.Utils.UndefinedOrNull(name)) { name = 'Editor (' + this.id + ')'; } this.name = name; if (GameLib.Utils.UndefinedOrNull(baseUrl)) { baseUrl = ''; } this.baseUrl = baseUrl; if (GameLib.Utils.UndefinedOrNull(path)) { path = ''; } this.path = path; if (GameLib.Utils.UndefinedOrNull(imageFactory)) { imageFactory = null; } this.imageFactory = imageFactory; if (GameLib.Utils.UndefinedOrNull(games)) { games = []; } this.games = games; if (GameLib.Utils.UndefinedOrNull(scenes)) { scenes = []; } this.scenes = scenes; if (GameLib.Utils.UndefinedOrNull(cameras)) { cameras = []; } this.cameras = cameras; if (GameLib.Utils.UndefinedOrNull(composers)) { composers = []; } this.composers = composers; if (GameLib.Utils.UndefinedOrNull(viewports)) { viewports = []; } this.viewports = viewports; if (GameLib.Utils.UndefinedOrNull(renderers)) { renderers = []; } this.renderers = renderers; if (GameLib.Utils.UndefinedOrNull(renderTargets)) { renderTargets = []; } this.renderTargets = renderTargets; if (GameLib.Utils.UndefinedOrNull(systems)) { systems = []; } this.systems = systems; if (GameLib.Utils.UndefinedOrNull(entityManager)) { entityManager = new GameLib.API.EntityManager(); } this.entityManager = entityManager; if (GameLib.Utils.UndefinedOrNull(allSelected)) { allSelected = false; } this.allSelected = allSelected; if (GameLib.Utils.UndefinedOrNull(selectedObjects)) { selectedObjects = []; } this.selectedObjects = selectedObjects; }; GameLib.D3.API.Editor.prototype = Object.create(GameLib.Component.prototype); GameLib.D3.API.Editor.prototype.constructor = GameLib.D3.API.Editor; /** * Creates an API Editor from an Object Editor * @param objectEditor * @constructor */ GameLib.D3.API.Editor.FromObjectEditor = function(objectEditor) { var apiImageFactory = null; var apiGames = []; var apiScenes = []; var apiCameras = []; var apiComposers = []; var apiViewports = []; var apiRenderers = []; var apiRenderTargets = []; var apiSystems = []; var apiEntityManager = null; if (objectEditor.imageFactory) { apiImageFactory = GameLib.D3.API.ImageFactory.FromObjectImageFactory(objectEditor.imageFactory); } if (objectEditor.games) { apiGames = objectEditor.games.map( function(objectGame){ return GameLib.D3.API.Game.FromObjectGame(objectGame); } ); } if (objectEditor.scenes) { apiScenes = objectEditor.scenes.map( function(objectScene){ return GameLib.D3.API.Scene.FromObjectScene(objectScene); } ); } if (objectEditor.cameras) { apiCameras = objectEditor.cameras.map( function(objectCamera){ return GameLib.D3.API.Camera.FromObjectCamera(objectCamera); } ); } if (objectEditor.composers) { apiComposers = objectEditor.composers.map( function(objectComposer){ return GameLib.D3.API.Composer.FromObjectComponent(objectComposer); } ); } if (objectEditor.viewports) { apiViewports = objectEditor.viewports.map( function(objectViewport){ return GameLib.D3.API.Viewport.FromObjectViewport(objectViewport); } ); } if (objectEditor.renderers) { apiRenderers = objectEditor.renderers.map( function(objectRenderer){ return GameLib.D3.API.Renderer.FromObjectComponent(objectRenderer); } ); } if (objectEditor.renderTargets) { apiRenderTargets = objectEditor.renderTargets.map( function(objectRenderTarget){ return GameLib.D3.API.RenderTarget.FromObjectComponent(objectRenderTarget); } ); } if (objectEditor.systems) { apiSystems = objectEditor.systems.map( function(objectSystem){ return GameLib.API.System.FromObjectComponent(objectSystem); } ); } if (objectEditor.entityManager) { apiEntityManager = GameLib.API.EntityManager.FromObjectEntityManager(objectEditor.entityManager); } return new GameLib.D3.API.Editor( objectEditor.id, objectEditor.name, objectEditor.baseUrl, objectEditor.path, apiImageFactory, apiGames, apiScenes, apiCameras, apiComposers, apiViewports, apiRenderers, apiRenderTargets, apiSystems, apiEntityManager, objectEditor.allSelected, objectEditor.selectedObjects, objectEditor.parentEntity ); };