Browse Source

Allow scene placements to be changed

Temdog007 6 years ago
parent
commit
9777fd5c4a
3 changed files with 58 additions and 4 deletions
  1. 27 1
      editor/js/Sidebar.Settings.Viewport.js
  2. 1 0
      editor/js/Strings.js
  3. 30 3
      editor/js/Viewport.js

+ 27 - 1
editor/js/Sidebar.Settings.Viewport.js

@@ -6,6 +6,7 @@ Sidebar.Settings.Viewport = function ( editor ) {
 
 	var signals = editor.signals;
 	var strings = editor.strings;
+	var config = editor.config;
 
 	var container = new UI.Div();
 	container.add( new UI.Break() );
@@ -13,7 +14,32 @@ Sidebar.Settings.Viewport = function ( editor ) {
 	container.add( new UI.Text( strings.getKey( 'sidebar/settings/viewport/grid' ) ).setWidth( '90px' ) );
 
 	var show = new UI.THREE.Boolean( true ).onChange( update );
-	container.add( show );
+	container.add( show, new UI.Break() );
+
+	container.add( new UI.Text( strings.getKey( 'sidebar/settings/viewport/view' ) ).setWidth( '90px' ) );
+
+	var sceneViewOptions = new UI.Select().setOptions({
+		left : 'left',
+		right : 'right',
+		top : 'top',
+		bottom : 'bottom'
+	});
+
+	if(config.getKey('sceneView') !== undefined)
+	{
+		sceneViewOptions.setValue(config.getKey('sceneView'));
+	}
+	else
+	{
+		sceneViewOptions.setValue('left');
+	}
+	
+	sceneViewOptions.onChange(function()
+	{
+		config.setKey('sceneView', sceneViewOptions.getValue());
+		signals.sceneGraphChanged.dispatch();
+	});
+	container.add(sceneViewOptions);
 
 	/*
 	var snapSize = new UI.Number( 25 ).setWidth( '40px' ).onChange( update );

+ 1 - 0
editor/js/Strings.js

@@ -253,6 +253,7 @@ var Strings = function ( config ) {
 			'sidebar/settings/shortcuts/focus': 'Focus',
 
 			'sidebar/settings/viewport/grid': 'Grid',
+			'sidebar/settings/viewport/view': 'Cameras',
 
 			'sidebar/history/history': 'HISTORY',
 			'sidebar/history/persistent': 'persistent',

+ 30 - 3
editor/js/Viewport.js

@@ -5,6 +5,7 @@
 var Viewport = function ( editor ) {
 
 	var signals = editor.signals;
+	var config = editor.config;
 
 	var sceneCameras = editor.sceneCameras;
 
@@ -559,9 +560,35 @@ var Viewport = function ( editor ) {
 		viewport.set(0, 0, width, height);
 		renderScene(camera, viewport, true);
 
-		for(var i = 0; i < sceneCameras.length; ++i) {
-			viewport.set(0, height * 0.25 * i, width * 0.25, height * 0.25);
-			renderScene(sceneCameras[i], viewport);
+		switch(config.getKey('sceneView'))
+		{
+			case 'left':
+				for(var i = 0; i < sceneCameras.length; ++i) {
+					viewport.set(0, height * 0.25 * i, width * 0.25, height * 0.25);
+					renderScene(sceneCameras[i], viewport);
+				}
+				break;
+			case 'right':
+				for(var i = 0; i < sceneCameras.length; ++i) {
+					viewport.set(width * 0.75, height * 0.25 * i, width * 0.25, height * 0.25);
+					renderScene(sceneCameras[i], viewport);
+				}
+				break;
+			case 'bottom':
+				for(var i = 0; i < sceneCameras.length; ++i) {
+					viewport.set(width * 0.25 * i, 0, width * 0.25, height * 0.25);
+					renderScene(sceneCameras[i], viewport);
+				}
+				break;
+			case 'top':
+				for(var i = 0; i < sceneCameras.length; ++i) {
+					viewport.set(width * 0.25 * i, height * 0.75, width * 0.25, height * 0.25);
+					renderScene(sceneCameras[i], viewport);
+				}
+				break;
+			default:
+				console.error("Unknown scene view type: " + config.getKey("sceneView"));
+				break;
 		}
 	}