Sidebar.Outliner.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. Sidebar.Outliner = function ( signals ) {
  2. var selected = null;
  3. var container = new UI.Panel();
  4. container.setPadding( '8px' );
  5. container.setBorderTop( '1px solid #ccc' );
  6. container.add( new UI.Text().setValue( 'SCENE' ).setColor( '#666' ) );
  7. container.add( new UI.Break(), new UI.Break() );
  8. var sceneGraph = new UI.Select().setMultiple( true ).setWidth( '100%' ).setHeight('140px').setColor( '#444' ).setFontSize( '12px' ).onChange( update );
  9. container.add( sceneGraph );
  10. container.add( new UI.Break(), new UI.Break() );
  11. var scene = null;
  12. function update() {
  13. var id = parseInt( sceneGraph.getValue() );
  14. for ( var i in scene.children ) {
  15. var object = scene.children[ i ];
  16. if ( object.id === id ) {
  17. signals.objectSelected.dispatch( object );
  18. return;
  19. }
  20. }
  21. }
  22. signals.sceneChanged.add( function ( object ) {
  23. scene = object;
  24. var options = {};
  25. for ( var i in scene.children ) {
  26. var object = scene.children[ i ];
  27. options[ object.id ] = ' - ' + object.name;
  28. }
  29. sceneGraph.setOptions( options );
  30. } );
  31. signals.objectSelected.add( function ( object ) {
  32. sceneGraph.setValue( object !== null ? object.id: null );
  33. } );
  34. return container;
  35. }