|
|
|
@ -6,8 +6,11 @@ |
|
|
|
|
package com.jme3.gde.scenecomposer.tools.shortcuts; |
|
|
|
|
|
|
|
|
|
import com.jme3.asset.AssetManager; |
|
|
|
|
import com.jme3.bullet.control.CharacterControl; |
|
|
|
|
import com.jme3.bullet.control.RigidBodyControl; |
|
|
|
|
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode; |
|
|
|
|
import com.jme3.gde.core.sceneexplorer.nodes.JmeSpatial; |
|
|
|
|
import com.jme3.gde.core.undoredo.AbstractUndoableSceneEdit; |
|
|
|
|
import com.jme3.gde.scenecomposer.SceneComposerToolController; |
|
|
|
|
import com.jme3.gde.scenecomposer.tools.PickManager; |
|
|
|
|
import com.jme3.input.KeyInput; |
|
|
|
@ -29,7 +32,6 @@ public class MoveShortcut extends ShortcutTool { |
|
|
|
|
private Vector3f currentAxis; |
|
|
|
|
private StringBuilder numberBuilder; |
|
|
|
|
private Spatial spatial; |
|
|
|
|
private Vector3f finalLocation; |
|
|
|
|
private PickManager pickManager; |
|
|
|
|
private boolean pickEnabled; |
|
|
|
|
private Vector3f startPosition; |
|
|
|
@ -48,7 +50,7 @@ public class MoveShortcut extends ShortcutTool { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void apply() { |
|
|
|
|
// TODO creat UNDO/REDO
|
|
|
|
|
actionPerformed(new MoveUndo(toolController.getSelectedSpatial(), startPosition, finalPosition)); |
|
|
|
|
terminate(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -110,8 +112,8 @@ public class MoveShortcut extends ShortcutTool { |
|
|
|
|
//update transformation
|
|
|
|
|
float number = ShortcutManager.getNumberkey(numberBuilder); |
|
|
|
|
Vector3f translation = currentAxis.mult(number); |
|
|
|
|
finalLocation = startPosition.add(translation); |
|
|
|
|
spatial.setLocalTranslation(finalLocation); |
|
|
|
|
finalPosition = startPosition.add(translation); |
|
|
|
|
spatial.setLocalTranslation(finalPosition); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -171,7 +173,9 @@ public class MoveShortcut extends ShortcutTool { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void draggedPrimary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) { |
|
|
|
|
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
|
|
|
|
if (pressed) { |
|
|
|
|
apply(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@ -180,5 +184,51 @@ public class MoveShortcut extends ShortcutTool { |
|
|
|
|
cancel(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private class MoveUndo extends AbstractUndoableSceneEdit { |
|
|
|
|
|
|
|
|
|
private Spatial spatial; |
|
|
|
|
private Vector3f before = new Vector3f(), after = new Vector3f(); |
|
|
|
|
|
|
|
|
|
MoveUndo(Spatial spatial, Vector3f before, Vector3f after) { |
|
|
|
|
this.spatial = spatial; |
|
|
|
|
this.before.set(before); |
|
|
|
|
if (after != null) { |
|
|
|
|
this.after.set(after); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void sceneUndo() { |
|
|
|
|
spatial.setLocalTranslation(before); |
|
|
|
|
RigidBodyControl control = spatial.getControl(RigidBodyControl.class); |
|
|
|
|
if (control != null) { |
|
|
|
|
control.setPhysicsLocation(spatial.getWorldTranslation()); |
|
|
|
|
} |
|
|
|
|
CharacterControl character = spatial.getControl(CharacterControl.class); |
|
|
|
|
if (character != null) { |
|
|
|
|
character.setPhysicsLocation(spatial.getWorldTranslation()); |
|
|
|
|
} |
|
|
|
|
// toolController.selectedSpatialTransformed();
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void sceneRedo() { |
|
|
|
|
spatial.setLocalTranslation(after); |
|
|
|
|
RigidBodyControl control = spatial.getControl(RigidBodyControl.class); |
|
|
|
|
if (control != null) { |
|
|
|
|
control.setPhysicsLocation(spatial.getWorldTranslation()); |
|
|
|
|
} |
|
|
|
|
CharacterControl character = spatial.getControl(CharacterControl.class); |
|
|
|
|
if (character != null) { |
|
|
|
|
character.setPhysicsLocation(spatial.getWorldTranslation()); |
|
|
|
|
} |
|
|
|
|
//toolController.selectedSpatialTransformed();
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setAfter(Vector3f after) { |
|
|
|
|
this.after.set(after); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|