Skip to content

Commit 6fde259

Browse files
committed
fix(ImplicitPlaneWidget): jumpy behavior
Manipulators need to have their normals set prior to handleEvent.
1 parent c41f48f commit 6fde259

File tree

1 file changed

+24
-8
lines changed
  • Sources/Widgets/Widgets3D/ImplicitPlaneWidget

1 file changed

+24
-8
lines changed

Diff for: Sources/Widgets/Widgets3D/ImplicitPlaneWidget/index.js

+24-8
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,32 @@ function widgetBehavior(publicAPI, model) {
4747
return macro.VOID;
4848
}
4949

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());
5254
model.trackballManipulator.reset(callData); // setup trackball delta
55+
model.trackballManipulator.setWidgetNormal(model.activeState.getNormal());
5356

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+
}
6076

6177
if (model.dragable) {
6278
model._draggingWidgetOrigin = model.widgetState.getOrigin();

0 commit comments

Comments
 (0)