SDK Scenecomposer : now right clicking will cancel current transformation for the Scale, Rotate and Move Tool, looks like the selectTools shortcut
- improved these tool feedback, its easier to begin the tranformation as its start on the first click instead of the first dragg
This commit is contained in:
parent
986950fb1d
commit
a913d8e0c2
@ -60,11 +60,44 @@ public class MoveTool extends SceneEditTool {
|
|||||||
wasDragging = false;
|
wasDragging = false;
|
||||||
}
|
}
|
||||||
pickManager.reset();
|
pickManager.reset();
|
||||||
|
} else {
|
||||||
|
if (toolController.getSelectedSpatial() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pickedMarker == null) {
|
||||||
|
pickedMarker = pickAxisMarker(camera, screenCoord, axisPickType);
|
||||||
|
if (pickedMarker == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pickedMarker.equals(QUAD_XY)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XY, getTransformType(), camera, screenCoord);
|
||||||
|
} else if (pickedMarker.equals(QUAD_XZ)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XZ, getTransformType(), camera, screenCoord);
|
||||||
|
} else if (pickedMarker.equals(QUAD_YZ)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
||||||
|
} else if (pickedMarker.equals(ARROW_X)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XY, getTransformType(), camera, screenCoord);
|
||||||
|
constraintAxis = Vector3f.UNIT_X; // move only X
|
||||||
|
} else if (pickedMarker.equals(ARROW_Y)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
||||||
|
constraintAxis = Vector3f.UNIT_Y; // move only Y
|
||||||
|
} else if (pickedMarker.equals(ARROW_Z)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XZ, getTransformType(), camera, screenCoord);
|
||||||
|
constraintAxis = Vector3f.UNIT_Z; // move only Z
|
||||||
|
}
|
||||||
|
startPosition = toolController.getSelectedSpatial().getLocalTranslation().clone();
|
||||||
|
wasDragging = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject dataObject) {
|
public void actionSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject dataObject) {
|
||||||
|
if (pressed) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -89,58 +122,40 @@ public class MoveTool extends SceneEditTool {
|
|||||||
wasDragging = false;
|
wasDragging = false;
|
||||||
}
|
}
|
||||||
pickManager.reset();
|
pickManager.reset();
|
||||||
return;
|
} else if (wasDragging == true) {
|
||||||
}
|
if (!pickManager.updatePick(camera, screenCoord)) {
|
||||||
|
|
||||||
if (toolController.getSelectedSpatial() == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pickedMarker == null) {
|
|
||||||
pickedMarker = pickAxisMarker(camera, screenCoord, axisPickType);
|
|
||||||
if (pickedMarker == null) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Vector3f diff = Vector3f.ZERO;
|
||||||
|
if (pickedMarker.equals(QUAD_XY) || pickedMarker.equals(QUAD_XZ) || pickedMarker.equals(QUAD_YZ)) {
|
||||||
|
diff = pickManager.getTranslation();
|
||||||
|
|
||||||
if (pickedMarker.equals(QUAD_XY)) {
|
} else if (pickedMarker.equals(ARROW_X) || pickedMarker.equals(ARROW_Y) || pickedMarker.equals(ARROW_Z)) {
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XY, getTransformType(), camera, screenCoord);
|
diff = pickManager.getTranslation(constraintAxis);
|
||||||
} else if (pickedMarker.equals(QUAD_XZ)) {
|
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XZ, getTransformType(), camera, screenCoord);
|
|
||||||
} else if (pickedMarker.equals(QUAD_YZ)) {
|
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
|
||||||
} else if (pickedMarker.equals(ARROW_X)) {
|
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XY, getTransformType(), camera, screenCoord);
|
|
||||||
constraintAxis = Vector3f.UNIT_X; // move only X
|
|
||||||
} else if (pickedMarker.equals(ARROW_Y)) {
|
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
|
||||||
constraintAxis = Vector3f.UNIT_Y; // move only Y
|
|
||||||
} else if (pickedMarker.equals(ARROW_Z)) {
|
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XZ, getTransformType(), camera, screenCoord);
|
|
||||||
constraintAxis = Vector3f.UNIT_Z; // move only Z
|
|
||||||
}
|
}
|
||||||
startPosition = toolController.getSelectedSpatial().getLocalTranslation().clone();
|
Vector3f position = startPosition.add(diff);
|
||||||
|
lastPosition = position;
|
||||||
|
toolController.getSelectedSpatial().setLocalTranslation(position);
|
||||||
|
updateToolsTransformation();
|
||||||
}
|
}
|
||||||
if (!pickManager.updatePick(camera, screenCoord)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Vector3f diff = Vector3f.ZERO;
|
|
||||||
if (pickedMarker.equals(QUAD_XY) || pickedMarker.equals(QUAD_XZ) || pickedMarker.equals(QUAD_YZ)) {
|
|
||||||
diff = pickManager.getTranslation();
|
|
||||||
|
|
||||||
} else if (pickedMarker.equals(ARROW_X) || pickedMarker.equals(ARROW_Y) || pickedMarker.equals(ARROW_Z)) {
|
|
||||||
diff = pickManager.getTranslation(constraintAxis);
|
|
||||||
}
|
|
||||||
Vector3f position = startPosition.add(diff);
|
|
||||||
lastPosition = position;
|
|
||||||
toolController.getSelectedSpatial().setLocalTranslation(position);
|
|
||||||
updateToolsTransformation();
|
|
||||||
|
|
||||||
wasDragging = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
public void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
||||||
|
if (pressed) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cancel() {
|
||||||
|
if (wasDragging) {
|
||||||
|
wasDragging = false;
|
||||||
|
toolController.getSelectedSpatial().setLocalTranslation(startPosition);
|
||||||
|
setDefaultAxisMarkerColors();
|
||||||
|
pickedMarker = null; // mouse released, reset selection
|
||||||
|
constraintAxis = Vector3f.UNIT_XYZ; // no constraint
|
||||||
|
pickManager.reset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected class MoveUndo extends AbstractUndoableSceneEdit {
|
protected class MoveUndo extends AbstractUndoableSceneEdit {
|
||||||
|
@ -53,12 +53,36 @@ public class RotateTool extends SceneEditTool {
|
|||||||
actionPerformed(new ScaleUndo(toolController.getSelectedSpatial(), startRotate, lastRotate));
|
actionPerformed(new ScaleUndo(toolController.getSelectedSpatial(), startRotate, lastRotate));
|
||||||
wasDragging = false;
|
wasDragging = false;
|
||||||
}
|
}
|
||||||
|
pickManager.reset();
|
||||||
|
} else {
|
||||||
|
if (toolController.getSelectedSpatial() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pickedMarker == null) {
|
||||||
|
pickedMarker = pickAxisMarker(camera, screenCoord, axisPickType);
|
||||||
|
if (pickedMarker == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pickedMarker.equals(QUAD_XY)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XY, getTransformType(), camera, screenCoord);
|
||||||
|
} else if (pickedMarker.equals(QUAD_XZ)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XZ, getTransformType(), camera, screenCoord);
|
||||||
|
} else if (pickedMarker.equals(QUAD_YZ)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
||||||
|
}
|
||||||
|
startRotate = toolController.getSelectedSpatial().getLocalRotation().clone();
|
||||||
|
wasDragging = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject dataObject) {
|
public void actionSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject dataObject) {
|
||||||
|
if (pressed) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -67,12 +91,12 @@ public class RotateTool extends SceneEditTool {
|
|||||||
highlightAxisMarker(camera, screenCoord, axisPickType);
|
highlightAxisMarker(camera, screenCoord, axisPickType);
|
||||||
} else {
|
} else {
|
||||||
pickedMarker = null;
|
pickedMarker = null;
|
||||||
|
pickManager.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draggedPrimary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
public void draggedPrimary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
||||||
|
|
||||||
if (!pressed) {
|
if (!pressed) {
|
||||||
setDefaultAxisMarkerColors();
|
setDefaultAxisMarkerColors();
|
||||||
pickedMarker = null; // mouse released, reset selection
|
pickedMarker = null; // mouse released, reset selection
|
||||||
@ -82,45 +106,36 @@ public class RotateTool extends SceneEditTool {
|
|||||||
actionPerformed(new ScaleUndo(toolController.getSelectedSpatial(), startRotate, lastRotate));
|
actionPerformed(new ScaleUndo(toolController.getSelectedSpatial(), startRotate, lastRotate));
|
||||||
wasDragging = false;
|
wasDragging = false;
|
||||||
}
|
}
|
||||||
return;
|
pickManager.reset();
|
||||||
}
|
} else if (wasDragging) {
|
||||||
|
if (!pickManager.updatePick(camera, screenCoord)) {
|
||||||
if (toolController.getSelectedSpatial() == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pickedMarker == null) {
|
|
||||||
pickedMarker = pickAxisMarker(camera, screenCoord, axisPickType);
|
|
||||||
if (pickedMarker == null) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pickedMarker.equals(QUAD_XY)) {
|
if (pickedMarker.equals(QUAD_XY) || pickedMarker.equals(QUAD_XZ) || pickedMarker.equals(QUAD_YZ)) {
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XY, getTransformType(), camera, screenCoord);
|
Quaternion rotation = startRotate.mult(pickManager.getLocalRotation());
|
||||||
} else if (pickedMarker.equals(QUAD_XZ)) {
|
toolController.getSelectedSpatial().setLocalRotation(rotation);
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XZ, getTransformType(), camera, screenCoord);
|
lastRotate = rotation;
|
||||||
} else if (pickedMarker.equals(QUAD_YZ)) {
|
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
|
||||||
}
|
}
|
||||||
startRotate = toolController.getSelectedSpatial().getLocalRotation().clone();
|
updateToolsTransformation();
|
||||||
}
|
}
|
||||||
if (!pickManager.updatePick(camera, screenCoord)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pickedMarker.equals(QUAD_XY) || pickedMarker.equals(QUAD_XZ) || pickedMarker.equals(QUAD_YZ)) {
|
|
||||||
Quaternion rotation = startRotate.mult(pickManager.getLocalRotation());
|
|
||||||
toolController.getSelectedSpatial().setLocalRotation(rotation);
|
|
||||||
lastRotate = rotation;
|
|
||||||
}
|
|
||||||
updateToolsTransformation();
|
|
||||||
wasDragging = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public
|
public void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
||||||
void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
if (pressed) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cancel() {
|
||||||
|
if (wasDragging) {
|
||||||
|
wasDragging = false;
|
||||||
|
toolController.getSelectedSpatial().setLocalRotation(startRotate);
|
||||||
|
setDefaultAxisMarkerColors();
|
||||||
|
pickedMarker = null; // mouse released, reset selection
|
||||||
|
pickManager.reset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ScaleUndo extends AbstractUndoableSceneEdit {
|
private class ScaleUndo extends AbstractUndoableSceneEdit {
|
||||||
|
@ -39,7 +39,7 @@ public class ScaleTool extends SceneEditTool {
|
|||||||
@Override
|
@Override
|
||||||
public void activate(AssetManager manager, Node toolNode, Node onTopToolNode, Spatial selectedSpatial, SceneComposerToolController toolController) {
|
public void activate(AssetManager manager, Node toolNode, Node onTopToolNode, Spatial selectedSpatial, SceneComposerToolController toolController) {
|
||||||
super.activate(manager, toolNode, onTopToolNode, selectedSpatial, toolController);
|
super.activate(manager, toolNode, onTopToolNode, selectedSpatial, toolController);
|
||||||
pickManager = Lookup.getDefault().lookup(PickManager.class);
|
pickManager = Lookup.getDefault().lookup(PickManager.class);
|
||||||
displayPlanes();
|
displayPlanes();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,12 +54,40 @@ public class ScaleTool extends SceneEditTool {
|
|||||||
wasDragging = false;
|
wasDragging = false;
|
||||||
}
|
}
|
||||||
pickManager.reset();
|
pickManager.reset();
|
||||||
|
} else {
|
||||||
|
if (toolController.getSelectedSpatial() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (pickedMarker == null) {
|
||||||
|
pickedMarker = pickAxisMarker(camera, screenCoord, axisPickType);
|
||||||
|
if (pickedMarker == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pickedMarker.equals(QUAD_XY) || pickedMarker.equals(QUAD_XZ) || pickedMarker.equals(QUAD_YZ)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), camera.getRotation(),
|
||||||
|
SceneComposerToolController.TransformationType.camera, camera, screenCoord);
|
||||||
|
} else if (pickedMarker.equals(ARROW_X)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XY, getTransformType(), camera, screenCoord);
|
||||||
|
constraintAxis = Vector3f.UNIT_X; // scale only X
|
||||||
|
} else if (pickedMarker.equals(ARROW_Y)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
||||||
|
constraintAxis = Vector3f.UNIT_Y; // scale only Y
|
||||||
|
} else if (pickedMarker.equals(ARROW_Z)) {
|
||||||
|
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XZ, getTransformType(), camera, screenCoord);
|
||||||
|
constraintAxis = Vector3f.UNIT_Z; // scale only Z
|
||||||
|
}
|
||||||
|
startScale = toolController.getSelectedSpatial().getLocalScale().clone();
|
||||||
|
wasDragging = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject dataObject) {
|
public void actionSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject dataObject) {
|
||||||
|
if (pressed) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -83,61 +111,45 @@ public class ScaleTool extends SceneEditTool {
|
|||||||
wasDragging = false;
|
wasDragging = false;
|
||||||
}
|
}
|
||||||
pickManager.reset();
|
pickManager.reset();
|
||||||
return;
|
} else if (wasDragging) {
|
||||||
}
|
if (!pickManager.updatePick(camera, screenCoord)) {
|
||||||
|
|
||||||
if (toolController.getSelectedSpatial() == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (pickedMarker == null) {
|
|
||||||
pickedMarker = pickAxisMarker(camera, screenCoord, axisPickType);
|
|
||||||
if (pickedMarker == null) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pickedMarker.equals(QUAD_XY) || pickedMarker.equals(QUAD_XZ) || pickedMarker.equals(QUAD_YZ)) {
|
if (pickedMarker.equals(QUAD_XY) || pickedMarker.equals(QUAD_XZ) || pickedMarker.equals(QUAD_YZ)) {
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), camera.getRotation(),
|
constraintAxis = pickManager.getStartOffset().normalize();
|
||||||
SceneComposerToolController.TransformationType.camera, camera, screenCoord);
|
float diff = pickManager.getTranslation(constraintAxis).dot(constraintAxis);
|
||||||
} else if (pickedMarker.equals(ARROW_X)) {
|
diff *= 0.5f;
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XY, getTransformType(), camera, screenCoord);
|
Vector3f scale = startScale.add(new Vector3f(diff, diff, diff));
|
||||||
constraintAxis = Vector3f.UNIT_X; // scale only X
|
lastScale = scale;
|
||||||
} else if (pickedMarker.equals(ARROW_Y)) {
|
toolController.getSelectedSpatial().setLocalScale(scale);
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
} else if (pickedMarker.equals(ARROW_X) || pickedMarker.equals(ARROW_Y) || pickedMarker.equals(ARROW_Z)) {
|
||||||
constraintAxis = Vector3f.UNIT_Y; // scale only Y
|
// Get the translation in the spatial Space
|
||||||
} else if (pickedMarker.equals(ARROW_Z)) {
|
Quaternion worldToSpatial = toolController.getSelectedSpatial().getWorldRotation().inverse();
|
||||||
pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_XZ, getTransformType(), camera, screenCoord);
|
Vector3f diff = pickManager.getTranslation(worldToSpatial.mult(constraintAxis));
|
||||||
constraintAxis = Vector3f.UNIT_Z; // scale only Z
|
diff.multLocal(0.5f);
|
||||||
|
Vector3f scale = startScale.add(diff);
|
||||||
|
lastScale = scale;
|
||||||
|
toolController.getSelectedSpatial().setLocalScale(scale);
|
||||||
}
|
}
|
||||||
startScale = toolController.getSelectedSpatial().getLocalScale().clone();
|
updateToolsTransformation();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pickManager.updatePick(camera, screenCoord)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (pickedMarker.equals(QUAD_XY) || pickedMarker.equals(QUAD_XZ) || pickedMarker.equals(QUAD_YZ)) {
|
|
||||||
constraintAxis = pickManager.getStartOffset().normalize();
|
|
||||||
float diff = pickManager.getTranslation(constraintAxis).dot(constraintAxis);
|
|
||||||
diff *= 0.5f;
|
|
||||||
Vector3f scale = startScale.add(new Vector3f(diff, diff, diff));
|
|
||||||
lastScale = scale;
|
|
||||||
toolController.getSelectedSpatial().setLocalScale(scale);
|
|
||||||
} else if (pickedMarker.equals(ARROW_X) || pickedMarker.equals(ARROW_Y) || pickedMarker.equals(ARROW_Z)) {
|
|
||||||
// Get the translation in the spatial Space
|
|
||||||
Quaternion worldToSpatial = toolController.getSelectedSpatial().getWorldRotation().inverse();
|
|
||||||
Vector3f diff = pickManager.getTranslation(worldToSpatial.mult(constraintAxis));
|
|
||||||
diff.multLocal(0.5f);
|
|
||||||
Vector3f scale = startScale.add(diff);
|
|
||||||
lastScale = scale;
|
|
||||||
toolController.getSelectedSpatial().setLocalScale(scale);
|
|
||||||
}
|
|
||||||
updateToolsTransformation();
|
|
||||||
|
|
||||||
wasDragging = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
public void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
||||||
|
if (pressed) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cancel() {
|
||||||
|
if (wasDragging) {
|
||||||
|
wasDragging = false;
|
||||||
|
toolController.getSelectedSpatial().setLocalScale(startScale);
|
||||||
|
setDefaultAxisMarkerColors();
|
||||||
|
pickedMarker = null; // mouse released, reset selection
|
||||||
|
pickManager.reset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ScaleUndo extends AbstractUndoableSceneEdit {
|
private class ScaleUndo extends AbstractUndoableSceneEdit {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user