Menubar.Edit.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. Menubar.Edit = function ( editor ) {
  2. var menuConfig,
  3. optionsPanel,
  4. createOption,
  5. createDivider;
  6. // event handlers
  7. // function onUndoOptionClick () {
  8. // console.log( 'UNDO not implemented yet' );
  9. // }
  10. // function onRedoOptionClick () {
  11. // console.log( 'REDO not implemented yet' );
  12. // }
  13. function onCloneOptionClick () {
  14. var object = editor.selected;
  15. if ( object.parent === undefined ) return; // avoid cloning the camera or scene
  16. object = object.clone();
  17. editor.addObject( object );
  18. editor.select( object );
  19. }
  20. function onDeleteOptionClick () {
  21. editor.removeObject( editor.selected );
  22. editor.deselect();
  23. }
  24. function onConvertOptionClick () {
  25. // convert to BufferGeometry
  26. var object = editor.selected;
  27. if ( object.geometry instanceof THREE.Geometry ) {
  28. if ( object.parent === undefined ) return; // avoid flattening the camera or scene
  29. if ( confirm( 'Convert ' + object.name + ' to BufferGeometry?' ) === false ) return;
  30. delete object.__webglInit; // TODO: Remove hack (WebGLRenderer refactoring)
  31. object.geometry = THREE.BufferGeometryUtils.fromGeometry( object.geometry );
  32. editor.signals.objectChanged.dispatch( object );
  33. }
  34. }
  35. function onFlattenOptionClick () {
  36. var object = editor.selected;
  37. if ( object.parent === undefined ) return; // avoid flattening the camera or scene
  38. if ( confirm( 'Flatten ' + object.name + '?' ) === false ) return;
  39. delete object.__webglInit; // TODO: Remove hack (WebGLRenderer refactoring)
  40. var geometry = object.geometry.clone();
  41. geometry.applyMatrix( object.matrix );
  42. object.geometry = geometry;
  43. object.position.set( 0, 0, 0 );
  44. object.rotation.set( 0, 0, 0 );
  45. object.scale.set( 1, 1, 1 );
  46. editor.signals.objectChanged.dispatch( object );
  47. }
  48. // configure menu contents
  49. createOption = UI.MenubarHelper.createOption;
  50. createDivider = UI.MenubarHelper.createDivider;
  51. menuConfig = [
  52. // createOption( 'Undo', onUndoOptionClick ),
  53. // createOption( 'Redo', onRedoOptionClick ),
  54. // createDivider(),
  55. createOption( 'Clone', onCloneOptionClick ),
  56. createOption( 'Delete', onDeleteOptionClick ),
  57. createDivider(),
  58. createOption( 'Convert', onConvertOptionClick ),
  59. createOption( 'Flatten', onFlattenOptionClick )
  60. ];
  61. optionsPanel = UI.MenubarHelper.createOptionsPanel( menuConfig );
  62. return UI.MenubarHelper.createMenuContainer( 'Edit', optionsPanel );
  63. }