@@ -47,9 +47,7 @@ renderer.addActor(actor);
4747const widgetManager = vtkWidgetManager . newInstance ( ) ;
4848widgetManager . setRenderer ( renderer ) ;
4949
50- let widget = null ;
51- let widgetHandle = null ;
52-
50+ let previousWidgetHandle = null ;
5351renderer . resetCamera ( ) ;
5452
5553// -----------------------------------------------------------
@@ -59,10 +57,10 @@ renderer.resetCamera();
5957const gui = new GUI ( ) ;
6058const params = {
6159 AddWidget : ( eventOrCenter = null ) => {
62- if ( widgetHandle ) {
63- widgetHandle . endInteract ( ) ;
60+ if ( previousWidgetHandle ) {
61+ previousWidgetHandle . endInteract ( ) ;
6462 }
65- widget = vtkSeedWidget . newInstance ( ) ;
63+ const widget = vtkSeedWidget . newInstance ( ) ;
6664
6765 // Important: set the manipulator of the widget to constrain movement to the actor
6866 widget . setManipulator ( manipulator ) ;
@@ -78,17 +76,24 @@ const params = {
7876
7977 // Start placement interaction
8078 widget . placeWidget ( cone . getOutputData ( ) . getBounds ( ) ) ;
81- widgetHandle = widgetManager . addWidget ( widget ) ;
79+ const widgetHandle = widgetManager . addWidget ( widget ) ;
8280 if ( Array . isArray ( eventOrCenter ) ) {
8381 widgetHandle . setCenter ( eventOrCenter ) ;
8482 } else {
8583 widgetHandle . startInteract ( ) ;
8684 }
85+ global . widget = widget ;
86+ global . widgetHandle = widgetHandle ;
87+ previousWidgetHandle = widgetHandle ;
8788 } ,
8889 RemoveWidget : ( ) => {
90+ if ( previousWidgetHandle ) {
91+ previousWidgetHandle . endInteract ( ) ;
92+ }
8993 const widgets = widgetManager . getWidgets ( ) ;
9094 if ( ! widgets . length ) return ;
9195 widgetManager . removeWidget ( widgets [ widgets . length - 1 ] ) ;
96+ previousWidgetHandle = null ;
9297 renderWindow . render ( ) ;
9398 } ,
9499} ;
@@ -102,9 +107,7 @@ params.AddWidget([0.5, 0, 0]);
102107// globals
103108// -----------------------------------------------------------
104109
105- global . widget = widget ;
106110global . renderer = renderer ;
107111global . fullScreenRenderer = fullScreenRenderer ;
108112global . renderWindow = renderWindow ;
109113global . widgetManager = widgetManager ;
110- global . widgetHandle = widgetHandle ;
0 commit comments