Sidebar.Geometry.TeapotBufferGeometry.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. * @author tschw
  3. */
  4. import { UIRow, UIText, UIInteger, UICheckbox, UINumber } from './libs/ui.js';
  5. import { TeapotBufferGeometry } from '../../examples/jsm/geometries/TeapotBufferGeometry.js';
  6. var SidebarGeometryTeapotBufferGeometry = function ( signals, object ) {
  7. var container = new UIRow();
  8. var parameters = object.geometry.parameters;
  9. // size
  10. var sizeRow = new UIRow();
  11. var size = new UINumber( parameters.size ).onChange( update );
  12. sizeRow.add( new UIText( 'Size' ).setWidth( '90px' ) );
  13. sizeRow.add( size );
  14. container.add( sizeRow );
  15. // segments
  16. var segmentsRow = new UIRow();
  17. var segments = new UIInteger( parameters.segments ).setRange( 1, Infinity ).onChange( update );
  18. segmentsRow.add( new UIText( 'Segments' ).setWidth( '90px' ) );
  19. segmentsRow.add( segments );
  20. container.add( segmentsRow );
  21. // bottom
  22. var bottomRow = new UIRow();
  23. var bottom = new UICheckbox( parameters.bottom ).onChange( update );
  24. bottomRow.add( new UIText( 'Bottom' ).setWidth( '90px' ) );
  25. bottomRow.add( bottom );
  26. container.add( bottomRow );
  27. // lid
  28. var lidRow = new UIRow();
  29. var lid = new UICheckbox( parameters.lid ).onChange( update );
  30. lidRow.add( new UIText( 'Lid' ).setWidth( '90px' ) );
  31. lidRow.add( lid );
  32. container.add( lidRow );
  33. // body
  34. var bodyRow = new UIRow();
  35. var body = new UICheckbox( parameters.body ).onChange( update );
  36. bodyRow.add( new UIText( 'Body' ).setWidth( '90px' ) );
  37. bodyRow.add( body );
  38. container.add( bodyRow );
  39. // fitted lid
  40. var fitLidRow = new UIRow();
  41. var fitLid = new UICheckbox( parameters.fitLid ).onChange( update );
  42. fitLidRow.add( new UIText( 'Fitted Lid' ).setWidth( '90px' ) );
  43. fitLidRow.add( fitLid );
  44. container.add( fitLidRow );
  45. // blinn-sized
  46. var blinnRow = new UIRow();
  47. var blinn = new UICheckbox( parameters.blinn ).onChange( update );
  48. blinnRow.add( new UIText( 'Blinn-scaled' ).setWidth( '90px' ) );
  49. blinnRow.add( blinn );
  50. container.add( blinnRow );
  51. function update() {
  52. object.geometry.dispose();
  53. object.geometry = new TeapotBufferGeometry(
  54. size.getValue(),
  55. segments.getValue(),
  56. bottom.getValue(),
  57. lid.getValue(),
  58. body.getValue(),
  59. fitLid.getValue(),
  60. blinn.getValue()
  61. );
  62. object.geometry.computeBoundingSphere();
  63. signals.geometryChanged.dispatch( object );
  64. }
  65. return container;
  66. };
  67. export { SidebarGeometryTeapotBufferGeometry };