提交 1297e21b 编写于 作者: M Mr.doob

Editor: Moved exporting stuff out of Viewport.

上级 e600bcf1
......@@ -135,8 +135,6 @@
cloneSelectedObject: new SIGNALS.Signal(),
removeSelectedObject: new SIGNALS.Signal(),
exportGeometry: new SIGNALS.Signal(),
exportScene: new SIGNALS.Signal(),
// notifications
......
......@@ -11,6 +11,9 @@ Menubar.File = function ( signals ) {
//
var selectedObject;
var scene;
var options = new UI.Panel();
options.setClass( 'options' );
container.add( options );
......@@ -52,7 +55,11 @@ Menubar.File = function ( signals ) {
var option = new UI.Panel();
option.setClass( 'option' );
option.setTextContent( 'Export Geometry' );
option.onClick( function () { signals.exportGeometry.dispatch( { exporter: THREE.GeometryExporter } ); } );
option.onClick( function () {
exportGeometry( THREE.GeometryExporter );
} );
options.add( option );
/*
......@@ -62,7 +69,11 @@ Menubar.File = function ( signals ) {
var option = new UI.Panel();
option.setClass( 'option' );
option.setTextContent( 'Export Scene' );
option.onClick( function () { signals.exportScene.dispatch( { exporter: THREE.SceneExporter } ); } );
option.onClick( function () {
exportScene( THREE.SceneExporter );
} );
options.add( option );
*/
......@@ -72,7 +83,11 @@ Menubar.File = function ( signals ) {
var option = new UI.Panel();
option.setClass( 'option' );
option.setTextContent( 'Export Scene 2' );
option.onClick( function () { signals.exportScene.dispatch( { exporter: THREE.SceneExporter2 } ); } );
option.onClick( function () {
exportScene( THREE.SceneExporter2 );
} );
options.add( option );
// export OBJ
......@@ -80,10 +95,73 @@ Menubar.File = function ( signals ) {
var option = new UI.Panel();
option.setClass( 'option' );
option.setTextContent( 'Export OBJ' );
option.onClick( function () { signals.exportGeometry.dispatch( { exporter: THREE.OBJExporter } ); } );
option.onClick( function () {
exportGeometry( THREE.OBJExporter );
} );
options.add( option );
//
var exportGeometry = function ( exporterClass ) {
if ( selectedObject.geometry === undefined ) {
alert( "Selected object doesn't have any geometry" );
return;
}
var exporter = new exporterClass();
var output;
if ( exporter instanceof THREE.GeometryExporter ) {
output = JSON.stringify( exporter.parse( selectedObject.geometry ), null, '\t' );
output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
} else {
output = exporter.parse( selectedObject.geometry );
}
var blob = new Blob( [ output ], { type: 'text/plain' } );
var objectURL = URL.createObjectURL( blob );
window.open( objectURL, '_blank' );
window.focus();
};
var exportScene = function ( exporterClass ) {
var exporter = new exporterClass();
var output = JSON.stringify( exporter.parse( scene ), null, '\t' );
output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
var blob = new Blob( [ output ], { type: 'text/plain' } );
var objectURL = URL.createObjectURL( blob );
window.open( objectURL, '_blank' );
window.focus();
};
// signals
signals.objectSelected.add( function ( object ) {
selectedObject = object;
} );
signals.sceneChanged.add( function ( object ) {
scene = object;
} );
return container;
......
......@@ -508,53 +508,6 @@ var Viewport = function ( signals ) {
} );
signals.exportGeometry.add( function ( object ) {
if ( selected.geometry === undefined ) {
alert( "Selected object doesn't have any geometry" );
return;
}
var exporter = new object.exporter();
var output;
if ( exporter instanceof THREE.GeometryExporter ) {
output = JSON.stringify( exporter.parse( selected.geometry ), null, '\t' );
output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
} else {
output = exporter.parse( selected.geometry );
}
var blob = new Blob( [ output ], { type: 'text/plain' } );
var objectURL = URL.createObjectURL( blob );
window.open( objectURL, '_blank' );
window.focus();
} );
signals.exportScene.add( function ( object ) {
var exporter = new object.exporter();
var output = JSON.stringify( exporter.parse( scene ), null, '\t' );
output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
var blob = new Blob( [ output ], { type: 'text/plain' } );
var objectURL = URL.createObjectURL( blob );
window.open( objectURL, '_blank' );
window.focus();
} );
//
var renderer = new THREE.WebGLRenderer( { antialias: true, alpha: false } );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册