Sidebar.Geometry.TextGeometry.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import { TextGeometry } from 'three/addons/geometries/TextGeometry.js';
  2. import { UIDiv, UIRow, UIText, UINumber, UIInteger, UIInput, UICheckbox } from './libs/ui.js';
  3. import { SetGeometryCommand } from './commands/SetGeometryCommand.js';
  4. function GeometryParametersPanel( editor, object ) {
  5. const strings = editor.strings;
  6. const container = new UIDiv();
  7. const geometry = object.geometry;
  8. const parameters = geometry.parameters.options;
  9. // text
  10. const textRow = new UIRow();
  11. const text = new UIInput().setValue( parameters.text ).onChange( update );
  12. textRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/text' ) ).setClass( 'Label' ) );
  13. textRow.add( text );
  14. container.add( textRow );
  15. // size
  16. const sizeRow = new UIRow();
  17. const size = new UINumber().setPrecision( 3 ).setValue( parameters.size ).onChange( update );
  18. sizeRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/size' ) ).setClass( 'Label' ) );
  19. sizeRow.add( size );
  20. container.add( sizeRow );
  21. // depth
  22. const depthRow = new UIRow();
  23. const depth = new UINumber().setPrecision( 3 ).setValue( parameters.depth ).onChange( update );
  24. depthRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/depth' ) ).setClass( 'Label' ) );
  25. depthRow.add( depth );
  26. container.add( depthRow );
  27. // curveSegments
  28. const curveSegmentsRow = new UIRow();
  29. const curveSegments = new UIInteger( parameters.curveSegments ).setRange( 1, Infinity ).onChange( update );
  30. curveSegmentsRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/curveseg' ) ).setClass( 'Label' ) );
  31. curveSegmentsRow.add( curveSegments );
  32. container.add( curveSegmentsRow );
  33. // bevelEnabled
  34. const bevelEnabledRow = new UIRow();
  35. const bevelEnabled = new UICheckbox( parameters.bevelEnabled ).onChange( update );
  36. bevelEnabledRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/bevelenabled' ) ).setClass( 'Label' ) );
  37. bevelEnabledRow.add( bevelEnabled );
  38. container.add( bevelEnabledRow );
  39. // bevelThickness
  40. const bevelThicknessRow = new UIRow();
  41. const bevelThickness = new UINumber( parameters.bevelThickness ).setPrecision( 3 ).setRange( 0, Infinity ).onChange( update );
  42. bevelThicknessRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/bevelthickness' ) ).setClass( 'Label' ) );
  43. bevelThicknessRow.add( bevelThickness );
  44. container.add( bevelThicknessRow );
  45. // bevelSize
  46. const bevelSizeRow = new UIRow();
  47. const bevelSize = new UINumber( parameters.bevelSize ).setRange( 0, Infinity ).onChange( update );
  48. bevelSizeRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/bevelsize' ) ).setClass( 'Label' ) );
  49. bevelSizeRow.add( bevelSize );
  50. container.add( bevelSizeRow );
  51. // bevelOffset
  52. const bevelOffsetRow = new UIRow();
  53. const bevelOffset = new UINumber( parameters.bevelOffset ).setRange( 0, Infinity ).onChange( update );
  54. bevelOffsetRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/bevelOffset' ) ).setClass( 'Label' ) );
  55. bevelOffsetRow.add( bevelOffset );
  56. container.add( bevelOffsetRow );
  57. // bevelSegments
  58. const bevelSegmentsRow = new UIRow();
  59. const bevelSegments = new UIInteger( parameters.bevelSegments ).setRange( 0, Infinity ).onChange( update );
  60. bevelSegmentsRow.add( new UIText( strings.getKey( 'sidebar/geometry/text_geometry/bevelseg' ) ).setClass( 'Label' ) );
  61. bevelSegmentsRow.add( bevelSegments );
  62. container.add( bevelSegmentsRow );
  63. function update() {
  64. const options = {
  65. text: text.getValue(),
  66. font: parameters.font,
  67. size: size.getValue(),
  68. depth: depth.getValue(),
  69. curveSegments: curveSegments.getValue(),
  70. bevelEnabled: bevelEnabled.getValue(),
  71. bevelThickness: bevelThickness.getValue(),
  72. bevelSize: bevelSize.getValue(),
  73. bevelOffset: bevelOffset.getValue(),
  74. bevelSegments: bevelSegments.getValue()
  75. };
  76. const geometry = new TextGeometry( options.text, options );
  77. editor.execute( new SetGeometryCommand( editor, object, geometry ) );
  78. }
  79. return container;
  80. }
  81. export { GeometryParametersPanel };
粤ICP备19079148号