Menubar.Edit.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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) This is not yet fixed for buffergeometry
  28. object.geometry = new THREE.BufferGeometry().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. object.geometry.buffersNeedUpdate = true;
  44. editor.signals.objectChanged.dispatch( object );
  45. }
  46. // configure menu contents
  47. var createOption = UI.MenubarHelper.createOption;
  48. var createDivider = UI.MenubarHelper.createDivider;
  49. var menuConfig = [
  50. // createOption( 'Undo', onUndoOptionClick ),
  51. // createOption( 'Redo', onRedoOptionClick ),
  52. // createDivider(),
  53. createOption( 'Clone', onCloneOptionClick ),
  54. createOption( 'Delete', onDeleteOptionClick ),
  55. createDivider(),
  56. createOption( 'Convert', onConvertOptionClick ),
  57. createOption( 'Flatten', onFlattenOptionClick )
  58. ];
  59. var optionsPanel = UI.MenubarHelper.createOptionsPanel( menuConfig );
  60. return UI.MenubarHelper.createMenuContainer( 'Edit', optionsPanel );
  61. }