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

GUI: Added support for dropping .js files

Remembered that @alteredq managed to get this working on a viewer for ro.me. So I just copied the code :)
上级 7891f2b3
......@@ -45,6 +45,9 @@
<script>
var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
var URL = window.URL || window.webkitURL || window.mozURL;
var Signal = signals.Signal;
var signals = {
......@@ -121,33 +124,61 @@
event.preventDefault();
var file = event.dataTransfer.files[ 0 ];
var extension = file.fileName.split( '.' )[1].toLowerCase();
var reader = new FileReader();
reader.onload = function ( event ) {
var parser = new DOMParser();
var xml = parser.parseFromString( event.target.result, 'text/xml' );
var contents = event.target.result;
switch ( extension ) {
case 'dae':
var parser = new DOMParser();
var xml = parser.parseFromString( contents, 'text/xml' );
var loader = new THREE.ColladaLoader();
loader.parse( xml, function ( collada ) {
// console.log( collada );
signals.added.dispatch( collada.scene );
} );
break;
case 'js':
var blob = new BlobBuilder();
blob.append( contents );
var url = window.URL.createObjectURL( blob.getBlob() );
var loader = new THREE.JSONLoader();
loader.load( { model: url, callback: function ( geometry ) {
var loader = new THREE.ColladaLoader();
loader.parse( xml, function ( collada ) {
geometry.gui = {
paremeters: {
},
getCode: function () {
console.log( collada );
return 'new THREE.JSONLoader( TODO )';
signals.added.dispatch( collada.scene );
}
};
} );
var material = new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true } );
var mesh = new THREE.Mesh( geometry, material );
/*
var loader = new THREE.JSONLoader();
loader.createModel( event.target.result, function ( geometry ) {
signals.added.dispatch( mesh );
var material = new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true } );
var mesh = new THREE.Mesh( geometry, material );
} } );
signals.added.dispatch( mesh );
break;
} );
*/
}
};
......
......@@ -14,16 +14,15 @@ var Code = function () {
_checkbox.style.margin = '20px 6px 0px 20px';
_checkbox.addEventListener( 'click', function () { _html = !_html; _update(); }, false );
_domElement.appendChild( _checkbox );
var _preview = document.createElement( 'a' );
_preview.href = '#';
_preview.innerHTML = 'preview';
_preview.style.margin = '20px 6px 0px 20px';
_preview.addEventListener( 'click',
function () {
_preview.addEventListener( 'click', function () {
// Get unescaped code gen
var temp=document.createElement("pre");
temp.innerHTML = _codegen( true );
temp = temp.firstChild.nodeValue;
......@@ -31,7 +30,7 @@ var Code = function () {
temp = temp.replace("js/RequestAnimationFrame.js", "../examples/js/RequestAnimationFrame.js");
aaa = temp;
console.log('test', temp);
var opener = window.open('','myconsole',
'width=800,height=400'
+',menubar=1'
......@@ -39,15 +38,14 @@ var Code = function () {
+',status=1'
+',scrollbars=1'
+',resizable=1');
opener.document.writeln( temp );
opener.document.close();
}, false
);
_domElement.appendChild( _preview );
/*
var _checkboxText = document.createElement( 'span' );
......@@ -68,7 +66,7 @@ var Code = function () {
//
var _list = [];
var _codegen = function (html) {
var string = '';
......@@ -113,7 +111,7 @@ var Code = function () {
'function render() {',
'',
'\trenderer.render( scene, camera );',
'\trenderer.setSize( window.innerWidth, window.innerHeight );',
'\trenderer.setSize( window.innerWidth, window.innerHeight );',
'',
'}'
......@@ -144,6 +142,13 @@ var Code = function () {
var object = scene.objects[ i ];
if ( object.geometry == undefined || object.geometry.gui == undefined ) {
_list.push( 'TODO' );
continue;
}
if ( object instanceof THREE.Mesh ) {
var string = '';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册