Commit 2f438900 authored by Nico Mack's avatar Nico Mack

Minor fixes required for handling rotation

parent ff60923e
...@@ -24,6 +24,7 @@ import lu.list.itis.dkd.tui.utility.CoordinateState; ...@@ -24,6 +24,7 @@ import lu.list.itis.dkd.tui.utility.CoordinateState;
import lu.list.itis.dkd.tui.utility.Point; import lu.list.itis.dkd.tui.utility.Point;
import lu.list.itis.dkd.tui.widget.builder.BasePositionWidgetBuilder; import lu.list.itis.dkd.tui.widget.builder.BasePositionWidgetBuilder;
import lu.list.itis.dkd.tui.widget.state.StateManager; import lu.list.itis.dkd.tui.widget.state.StateManager;
import lu.list.itis.dkd.tui.widget.state.StateManager.Direction;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -87,7 +88,22 @@ public class PositionWidget extends PointingWidget implements InformationProvide ...@@ -87,7 +88,22 @@ public class PositionWidget extends PointingWidget implements InformationProvide
// *************************************************************************** // ***************************************************************************
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
private void updateFromMove(Point newPosition, boolean continuous) { private float convertDirection(Direction direction) {
switch (direction) {
case UNKNOWN:
return 0;
case CLOCKWISE:
return 1f;
case ANTICLOCKWISE:
return -1f;
default:
return 0;
}
}
// ---------------------------------------------------------------------------
private void updateFromMove(Point newPosition, boolean continuous, Direction direction) {
if (this.variable != null) { if (this.variable != null) {
Point position = this.variable.getValue(); Point position = this.variable.getValue();
...@@ -97,16 +113,16 @@ public class PositionWidget extends PointingWidget implements InformationProvide ...@@ -97,16 +113,16 @@ public class PositionWidget extends PointingWidget implements InformationProvide
boolean doUpdate = false; boolean doUpdate = false;
if (modifyValueOnRotation && (!continuous || trackRotationContinuously)) { if (modifyValueOnRotation && (!continuous || trackRotationContinuously)) {
position.setAngle(newPosition.getAngle()); newPosition.setRotationDirection(convertDirection(direction));
doUpdate = true; doUpdate |= true;
} }
if (modifyValueOnTranslation && (!continuous || trackTranslationContinuously)) { if (modifyValueOnTranslation && (!continuous || trackTranslationContinuously)) {
if (!Double.isNaN(this.stepSize)) { if (!Double.isNaN(this.stepSize)) {
double distance = position.distance(newPosition); double distance = position.distance(newPosition);
doUpdate = distance >= this.stepSize; doUpdate |= (distance >= this.stepSize);
} else { } else {
doUpdate = true; doUpdate |= true;
} }
} }
if (doUpdate) { if (doUpdate) {
...@@ -131,7 +147,7 @@ public class PositionWidget extends PointingWidget implements InformationProvide ...@@ -131,7 +147,7 @@ public class PositionWidget extends PointingWidget implements InformationProvide
public void actionDrop(TangibleObject tuioObject) { public void actionDrop(TangibleObject tuioObject) {
super.actionDrop(tuioObject); super.actionDrop(tuioObject);
Point position = this.getPointingLocation(tuioObject.getPosition()); Point position = this.getPointingLocation(tuioObject.getPosition());
this.updateFromMove(position, SINGLE); this.updateFromMove(position, SINGLE, Direction.UNKNOWN);
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -143,7 +159,7 @@ public class PositionWidget extends PointingWidget implements InformationProvide ...@@ -143,7 +159,7 @@ public class PositionWidget extends PointingWidget implements InformationProvide
if (this.trackRotationContinuously || this.trackTranslationContinuously) { if (this.trackRotationContinuously || this.trackTranslationContinuously) {
StateManager manager = objectStates.get(tuioObject.getObjectId()); StateManager manager = objectStates.get(tuioObject.getObjectId());
if (manager.isMoving() || manager.isRotating()) { if (manager.isMoving() || manager.isRotating()) {
this.updateFromMove(this.getPointingLocation(tuioObject.getPosition()), CONTINUOUS); this.updateFromMove(this.getPointingLocation(tuioObject.getPosition()), CONTINUOUS, manager.getDirectionOfRotation());
} }
} }
} }
...@@ -219,9 +235,10 @@ public class PositionWidget extends PointingWidget implements InformationProvide ...@@ -219,9 +235,10 @@ public class PositionWidget extends PointingWidget implements InformationProvide
if (!this.modifyValueOnTranslation) if (!this.modifyValueOnTranslation)
return; return;
Point position = ((StateManager) event.getSource()).getLastPosition(); StateManager manager = (StateManager) event.getSource();
Point position = manager.getLastPosition();
Point pointer = this.getPointingLocation(position); Point pointer = this.getPointingLocation(position);
this.updateFromMove(pointer, SINGLE); this.updateFromMove(pointer, SINGLE, Direction.UNKNOWN);
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -233,9 +250,10 @@ public class PositionWidget extends PointingWidget implements InformationProvide ...@@ -233,9 +250,10 @@ public class PositionWidget extends PointingWidget implements InformationProvide
if (!this.modifyValueOnRotation) if (!this.modifyValueOnRotation)
return; return;
Point position = ((StateManager) event.getSource()).getLastPosition(); StateManager manager = (StateManager) event.getSource();
Point position = manager.getLastPosition();
Point pointer = this.getPointingLocation(position); Point pointer = this.getPointingLocation(position);
this.updateFromMove(pointer, SINGLE); this.updateFromMove(pointer, SINGLE, manager.getDirectionOfRotation());
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment