Sidebar.Geometry.LatheGeometry.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /**
  2. * @author rfm1201
  3. */
  4. import * as THREE from '../../build/three.module.js';
  5. import { UIRow, UIText, UIInteger, UINumber } from './libs/ui.js';
  6. import { UIPoints2 } from './libs/ui.three.js';
  7. import { SetGeometryCommand } from './commands/SetGeometryCommand.js';
  8. var SidebarGeometryLatheGeometry = function ( editor, object ) {
  9. var strings = editor.strings;
  10. var container = new UIRow();
  11. var geometry = object.geometry;
  12. var parameters = geometry.parameters;
  13. // segments
  14. var segmentsRow = new UIRow();
  15. var segments = new UIInteger( parameters.segments ).onChange( update );
  16. segmentsRow.add( new UIText( strings.getKey( 'sidebar/geometry/lathe_geometry/segments' ) ).setWidth( '90px' ) );
  17. segmentsRow.add( segments );
  18. container.add( segmentsRow );
  19. // phiStart
  20. var phiStartRow = new UIRow();
  21. var phiStart = new UINumber( parameters.phiStart * 180 / Math.PI ).onChange( update );
  22. phiStartRow.add( new UIText( strings.getKey( 'sidebar/geometry/lathe_geometry/phistart' ) ).setWidth( '90px' ) );
  23. phiStartRow.add( phiStart );
  24. container.add( phiStartRow );
  25. // phiLength
  26. var phiLengthRow = new UIRow();
  27. var phiLength = new UINumber( parameters.phiLength * 180 / Math.PI ).onChange( update );
  28. phiLengthRow.add( new UIText( strings.getKey( 'sidebar/geometry/lathe_geometry/philength' ) ).setWidth( '90px' ) );
  29. phiLengthRow.add( phiLength );
  30. container.add( phiLengthRow );
  31. // points
  32. var pointsRow = new UIRow();
  33. pointsRow.add( new UIText( strings.getKey( 'sidebar/geometry/lathe_geometry/points' ) ).setWidth( '90px' ) );
  34. var points = new UIPoints2().setValue( parameters.points ).onChange( update );
  35. pointsRow.add( points );
  36. container.add( pointsRow );
  37. function update() {
  38. editor.execute( new SetGeometryCommand( editor, object, new THREE.LatheBufferGeometry(
  39. points.getValue(),
  40. segments.getValue(),
  41. phiStart.getValue() / 180 * Math.PI,
  42. phiLength.getValue() / 180 * Math.PI
  43. ) ) );
  44. }
  45. return container;
  46. };
  47. export { SidebarGeometryLatheGeometry };