@@ -47,16 +47,32 @@ function widgetBehavior(publicAPI, model) {
47
47
return macro . VOID ;
48
48
}
49
49
50
- model . lineManipulator . setWidgetOrigin ( model . widgetState . getOrigin ( ) ) ;
51
- model . planeManipulator . setWidgetOrigin ( model . widgetState . getOrigin ( ) ) ;
50
+ model . lineManipulator . setWidgetOrigin ( model . activeState . getOrigin ( ) ) ;
51
+ model . lineManipulator . setWidgetNormal ( model . activeState . getNormal ( ) ) ;
52
+ model . planeManipulator . setWidgetOrigin ( model . activeState . getOrigin ( ) ) ;
53
+ model . planeManipulator . setWidgetNormal ( model . activeManipulator . getNormal ( ) ) ;
52
54
model . trackballManipulator . reset ( callData ) ; // setup trackball delta
55
+ model . trackballManipulator . setWidgetNormal ( model . activeState . getNormal ( ) ) ;
53
56
54
- // updates worldDelta
55
- model . lineManipulator . handleEvent ( callData , model . _apiSpecificRenderWindow ) ;
56
- model . planeManipulator . handleEvent (
57
- callData ,
58
- model . _apiSpecificRenderWindow
59
- ) ;
57
+ // update worldDelta with the proper manipulator
58
+ let activeManipulator = null ;
59
+ switch ( model . activeState . getUpdateMethodName ( ) ) {
60
+ case 'updateFromOrigin' :
61
+ activeManipulator = model . planeManipulator ;
62
+ break ;
63
+ case 'updateFromPlane' :
64
+ activeManipulator = model . lineManipulator ;
65
+ break ;
66
+ case 'updateFromNormal' :
67
+ activeManipulator = model . trackballManipulator ;
68
+ break ;
69
+ default :
70
+ // skip
71
+ }
72
+
73
+ if ( activeManipulator ) {
74
+ activeManipulator . handleEvent ( callData , model . _apiSpecificRenderWindow ) ;
75
+ }
60
76
61
77
if ( model . dragable ) {
62
78
model . _draggingWidgetOrigin = model . widgetState . getOrigin ( ) ;
0 commit comments