Sidebar.Geometry.LatheGeometry.js 1.9 KB

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