diff --git a/src/game-lib-a-component-a.js b/src/game-lib-a-component-a.js index fd9c7fd..e875cd9 100644 --- a/src/game-lib-a-component-a.js +++ b/src/game-lib-a-component-a.js @@ -220,4 +220,16 @@ GameLib.Component.prototype.linkObjects = function(idToObject) { } } } +}; + +GameLib.Component.prototype.clone = function() { + + var apiObject = this.toApiObject(); + + apiObject.id = GameLib.Utils.RandomId(); + + apiObject.name = apiObject.name + ' Clone (' + apiObject.id + ')'; + + //TODO - create runtime object - add to parent entity - + //var object = apiObject. }; \ No newline at end of file diff --git a/src/game-lib-entity-manager.js b/src/game-lib-entity-manager.js index 672047e..ca38deb 100644 --- a/src/game-lib-entity-manager.js +++ b/src/game-lib-entity-manager.js @@ -380,15 +380,26 @@ GameLib.EntityManager.prototype.onParentSceneChange = function(data) { } }; + +GameLib.EntityManager.prototype.onParentEntityChange = function(data) { + data.originalEntity.removeComponent(data.object); + data.newEntity.addComponent(data.object); +}; + /** * */ GameLib.EntityManager.prototype.registerCallbacks = function() { - this.subscribe( + this.subscribe( GameLib.Event.PARENT_SCENE_CHANGE, this.onParentSceneChange - ) + ); + + this.subscribe( + GameLib.Event.PARENT_ENTITY_CHANGE, + this.onParentEntityChange + ); }; diff --git a/src/game-lib-gui.js b/src/game-lib-gui.js index 1575e22..e4fe2b7 100644 --- a/src/game-lib-gui.js +++ b/src/game-lib-gui.js @@ -843,7 +843,6 @@ GameLib.GUI.prototype.buildEntitySelectionControlFromArray = function( folder.add(object, property, options).name(property).listen().onChange( function(entityManager) { return function(value) { - GameLib.Event.Emit( GameLib.Event.PARENT_ENTITY_CHANGE, { @@ -852,7 +851,6 @@ GameLib.GUI.prototype.buildEntitySelectionControlFromArray = function( object : object } ); - }; }(entityManager) ); diff --git a/src/game-lib-system.js b/src/game-lib-system.js index 2f0fd08..4744254 100644 --- a/src/game-lib-system.js +++ b/src/game-lib-system.js @@ -229,16 +229,12 @@ GameLib.System.prototype.update = function(deltaTime) { var renderer = renderEntity.getFirstComponent(GameLib.D3.Renderer); var camera = renderEntity.getFirstComponent(GameLib.D3.Camera); - var viewport = renderEntity.getFirstComponent(GameLib.D3.Viewport); + var viewports = renderEntity.getComponents(GameLib.D3.Viewport); + var scenes = renderEntity.getComponents(GameLib.D3.Scene); - renderer.instance.setViewport( - viewport.x * renderer.width, - viewport.y * renderer.height, - viewport.width * renderer.width, - viewport.height * renderer.height - ); - - var scenes = renderEntity.getComponents(GameLib.D3.Scene); + if (viewports.length > 1) { + renderer.instance.autoClear = false; + } if (scenes.length > 1) { renderer.instance.autoClear = false; @@ -246,21 +242,34 @@ GameLib.System.prototype.update = function(deltaTime) { renderer.instance.clear(); - scenes.map(function(scene){ + viewports.map( + function(viewport){ - if (scene.activeCamera) { - renderer.instance.render( - scene.instance, - scene.activeCamera.instance - ); - } else { - renderer.instance.render( - scene.instance, - camera.instance - ); - } + renderer.instance.setViewport( + viewport.x * renderer.width, + viewport.y * renderer.height, + viewport.width * renderer.width, + viewport.height * renderer.height + ); + + scenes.map(function(scene){ + + if (scene.activeCamera) { + renderer.instance.render( + scene.instance, + scene.activeCamera.instance + ); + } else { + renderer.instance.render( + scene.instance, + camera.instance + ); + } + + }); + } + ); - }); stats.instance.end(); }