Menubar.Edit.js 2.3 KB

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