multiple viewports (finally) - start with clone

beta.r3js.org
-=yb4f310 2017-06-05 12:00:54 +02:00
parent 8d481843fd
commit a676543121
4 changed files with 56 additions and 26 deletions

View File

@ -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.
}; };

View File

@ -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() { GameLib.EntityManager.prototype.registerCallbacks = function() {
this.subscribe( this.subscribe(
GameLib.Event.PARENT_SCENE_CHANGE, GameLib.Event.PARENT_SCENE_CHANGE,
this.onParentSceneChange this.onParentSceneChange
) );
this.subscribe(
GameLib.Event.PARENT_ENTITY_CHANGE,
this.onParentEntityChange
);
}; };

View File

@ -843,7 +843,6 @@ GameLib.GUI.prototype.buildEntitySelectionControlFromArray = function(
folder.add(object, property, options).name(property).listen().onChange( folder.add(object, property, options).name(property).listen().onChange(
function(entityManager) { function(entityManager) {
return function(value) { return function(value) {
GameLib.Event.Emit( GameLib.Event.Emit(
GameLib.Event.PARENT_ENTITY_CHANGE, GameLib.Event.PARENT_ENTITY_CHANGE,
{ {
@ -852,7 +851,6 @@ GameLib.GUI.prototype.buildEntitySelectionControlFromArray = function(
object : object object : object
} }
); );
}; };
}(entityManager) }(entityManager)
); );

View File

@ -229,16 +229,12 @@ GameLib.System.prototype.update = function(deltaTime) {
var renderer = renderEntity.getFirstComponent(GameLib.D3.Renderer); var renderer = renderEntity.getFirstComponent(GameLib.D3.Renderer);
var camera = renderEntity.getFirstComponent(GameLib.D3.Camera); 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( if (viewports.length > 1) {
viewport.x * renderer.width, renderer.instance.autoClear = false;
viewport.y * renderer.height, }
viewport.width * renderer.width,
viewport.height * renderer.height
);
var scenes = renderEntity.getComponents(GameLib.D3.Scene);
if (scenes.length > 1) { if (scenes.length > 1) {
renderer.instance.autoClear = false; renderer.instance.autoClear = false;
@ -246,21 +242,34 @@ GameLib.System.prototype.update = function(deltaTime) {
renderer.instance.clear(); renderer.instance.clear();
scenes.map(function(scene){ viewports.map(
function(viewport){
if (scene.activeCamera) { renderer.instance.setViewport(
renderer.instance.render( viewport.x * renderer.width,
scene.instance, viewport.y * renderer.height,
scene.activeCamera.instance viewport.width * renderer.width,
); viewport.height * renderer.height
} else { );
renderer.instance.render(
scene.instance, scenes.map(function(scene){
camera.instance
); if (scene.activeCamera) {
} renderer.instance.render(
scene.instance,
scene.activeCamera.instance
);
} else {
renderer.instance.render(
scene.instance,
camera.instance
);
}
});
}
);
});
stats.instance.end(); stats.instance.end();
} }