|
@@ -45,99 +45,18 @@ Sidebar.Geometry.LatheGeometry = function( editor, object ) {
|
|
|
|
|
|
// points
|
|
|
|
|
|
- var lastPointIdx = 0;
|
|
|
- var pointsUI = [];
|
|
|
-
|
|
|
var pointsRow = new UI.Row();
|
|
|
pointsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/lathe_geometry/points' ) ).setWidth( '90px' ) );
|
|
|
|
|
|
- var points = new UI.Span().setDisplay( 'inline-block' );
|
|
|
- pointsRow.add( points );
|
|
|
-
|
|
|
- var pointsList = new UI.Div();
|
|
|
- points.add( pointsList );
|
|
|
-
|
|
|
- for ( var i = 0; i < parameters.points.length; i ++ ) {
|
|
|
-
|
|
|
- var point = parameters.points[ i ];
|
|
|
- pointsList.add( createPointRow( point.x, point.y ) );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- var addPointButton = new UI.Button( '+' ).onClick( function() {
|
|
|
-
|
|
|
- if( pointsUI.length === 0 ){
|
|
|
-
|
|
|
- pointsList.add( createPointRow( 0, 0 ) );
|
|
|
-
|
|
|
- } else {
|
|
|
-
|
|
|
- var point = pointsUI[ pointsUI.length - 1 ];
|
|
|
-
|
|
|
- pointsList.add( createPointRow( point.x.getValue(), point.y.getValue() ) );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- update();
|
|
|
-
|
|
|
- } );
|
|
|
- points.add( addPointButton );
|
|
|
+ var points = new UI.Points2().setValue(parameters.points).onChange(update);
|
|
|
+ pointsRow.add(points);
|
|
|
|
|
|
container.add( pointsRow );
|
|
|
|
|
|
- //
|
|
|
-
|
|
|
- function createPointRow( x, y ) {
|
|
|
-
|
|
|
- var pointRow = new UI.Div();
|
|
|
- var lbl = new UI.Text( lastPointIdx + 1 ).setWidth( '20px' );
|
|
|
- var txtX = new UI.Number( x ).setRange( 0, Infinity ).setWidth( '40px' ).onChange( update );
|
|
|
- var txtY = new UI.Number( y ).setWidth( '40px' ).onChange( update );
|
|
|
- var idx = lastPointIdx;
|
|
|
- var btn = new UI.Button( '-' ).onClick( function() {
|
|
|
-
|
|
|
- deletePointRow( idx );
|
|
|
-
|
|
|
- } );
|
|
|
-
|
|
|
- pointsUI.push( { row: pointRow, lbl: lbl, x: txtX, y: txtY } );
|
|
|
- lastPointIdx ++;
|
|
|
- pointRow.add( lbl, txtX, txtY, btn );
|
|
|
-
|
|
|
- return pointRow;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- function deletePointRow( idx ) {
|
|
|
-
|
|
|
- if ( ! pointsUI[ idx ] ) return;
|
|
|
-
|
|
|
- pointsList.remove( pointsUI[ idx ].row );
|
|
|
- pointsUI[ idx ] = null;
|
|
|
-
|
|
|
- update();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
function update() {
|
|
|
|
|
|
- var points = [];
|
|
|
- var count = 0;
|
|
|
-
|
|
|
- for ( var i = 0; i < pointsUI.length; i ++ ) {
|
|
|
-
|
|
|
- var pointUI = pointsUI[ i ];
|
|
|
-
|
|
|
- if ( ! pointUI ) continue;
|
|
|
-
|
|
|
- points.push( new THREE.Vector2( pointUI.x.getValue(), pointUI.y.getValue() ) );
|
|
|
- count ++;
|
|
|
- pointUI.lbl.setValue( count );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
editor.execute( new SetGeometryCommand( object, new THREE[ geometry.type ](
|
|
|
- points,
|
|
|
+ points.getValue(),
|
|
|
segments.getValue(),
|
|
|
phiStart.getValue() / 180 * Math.PI,
|
|
|
phiLength.getValue() / 180 * Math.PI
|