1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /**
- * @author mrdoob / http://mrdoob.com/
- */
- Sidebar.Script = function ( editor ) {
- var signals = editor.signals;
- var container = new UI.CollapsiblePanel();
- container.setCollapsed( editor.config.getKey( 'ui/sidebar/script/collapsed' ) );
- container.onCollapsedChange( function ( boolean ) {
- editor.config.setKey( 'ui/sidebar/script/collapsed', boolean );
- } );
- container.setDisplay( 'none' );
- container.addStatic( new UI.Text( 'Script' ).setTextTransform( 'uppercase' ) );
- container.add( new UI.Break() );
- var scriptsRow = new UI.Panel();
- container.add( scriptsRow );
- // source
- var timeout;
- var scriptSourceRow = new UI.Panel();
- var scriptSource = new UI.TextArea( 'javascript' ).setWidth( '240px' ).setHeight( '180px' ).setFontSize( '12px' );
- scriptSource.onKeyUp( function () {
- clearTimeout( timeout );
- timeout = setTimeout( function () {
- var object = editor.selected;
- var source = scriptSource.getValue();
- try {
- var script = new Function( 'scene', 'time', source ).bind( object.clone() );
- script( new THREE.Scene(), 0 );
- scriptSource.dom.classList.add( 'success' );
- scriptSource.dom.classList.remove( 'fail' );
- } catch ( error ) {
- scriptSource.dom.classList.remove( 'success' );
- scriptSource.dom.classList.add( 'fail' );
- return;
- }
- editor.scripts[ object.uuid ] = [ source ];
- editor.signals.objectChanged.dispatch( object );
- }, 500 );
- } );
- scriptSourceRow.add( scriptSource );
- container.add( scriptSourceRow );
- //
- signals.objectSelected.add( function ( object ) {
- if ( object !== null ) {
- container.setDisplay( 'block' );
-
- var scripts = editor.scripts[ object.uuid ];
- if ( scripts !== undefined ) {
- scriptSource.setValue( scripts[ 0 ] );
- } else {
- scriptSource.setValue( '' );
- }
- } else {
- container.setDisplay( 'none' );
- }
- } );
- return container;
- }
|