Browse Source

Let rendererChanged signal provide the new renderer.

tschw 10 years ago
parent
commit
04de696ba9
2 changed files with 34 additions and 25 deletions
  1. 24 1
      editor/js/Sidebar.Project.js
  2. 10 24
      editor/js/Viewport.js

+ 24 - 1
editor/js/Sidebar.Project.js

@@ -92,10 +92,33 @@ Sidebar.Project = function ( editor ) {
 
 	function updateRenderer() {
 
-		signals.rendererChanged.dispatch( rendererType.getValue(), rendererAntialias.getValue() );
+		createRenderer( rendererType.getValue(), rendererAntialias.getValue() );
 
 	}
 
+	function createRenderer( type, antialias ) {
+
+		if ( type === 'WebGLRenderer' && System.support.webgl === false ) {
+
+			type = 'CanvasRenderer';
+
+		}
+
+		var ctor = rendererTypes[ type ];
+		renderer = new ctor( { antialias: antialias } );
+
+		//renderer.setClearColor( clearColor );
+		renderer.setPixelRatio( window.devicePixelRatio );
+		renderer.autoClear = false;
+		renderer.autoUpdateScene = false;
+
+		signals.rendererChanged.dispatch( renderer );
+
+	}
+
+	var renderer = createRenderer( editor.config.getKey( 'project/renderer' ), editor.config.getKey( 'project/renderer/antialias' ) );
+
+
 	return container;
 
 }

+ 10 - 24
editor/js/Viewport.js

@@ -234,6 +234,8 @@ var Viewport = function ( editor ) {
 
 	signals.themeChanged.add( function ( value ) {
 
+		var clearColor;
+
 		switch ( value ) {
 
 			case 'css/light.css':
@@ -271,11 +273,15 @@ var Viewport = function ( editor ) {
 
 	} );
 
-	signals.rendererChanged.add( function ( type, antialias ) {
+	signals.rendererChanged.add( function ( newRenderer ) {
+
+		if ( renderer !== null ) {
 
-		container.dom.removeChild( renderer.domElement );
+			container.dom.removeChild( renderer.domElement );
+
+		}
 
-		renderer = createRenderer( type, antialias );
+		renderer = newRenderer;
 		renderer.setSize( container.dom.offsetWidth, container.dom.offsetHeight );
 
 		container.dom.appendChild( renderer.domElement );
@@ -510,27 +516,7 @@ var Viewport = function ( editor ) {
 
 	//
 
-	var createRenderer = function ( type, antialias ) {
-
-		if ( type === 'WebGLRenderer' && System.support.webgl === false ) {
-
-			type = 'CanvasRenderer';
-
-		}
-
-		var renderer = new THREE[ type ]( { antialias: antialias } );
-		renderer.setClearColor( clearColor );
-		renderer.setPixelRatio( window.devicePixelRatio );
-		renderer.autoClear = false;
-		renderer.autoUpdateScene = false;
-
-		return renderer;
-
-	};
-
-	var clearColor;
-	var renderer = createRenderer( editor.config.getKey( 'project/renderer' ), editor.config.getKey( 'project/renderer/antialias' ) );
-	container.dom.appendChild( renderer.domElement );
+	var renderer = null;
 
 	animate();