SDK SceneComposer : added abstract ShortcutTool class that extends SceneEditTool
- added a shortcutManager that provide some usefull methodes for ShortcutTools. Also handle activation of shortcuts. - wip : implementation of the MoveShortcut (based on the same shortcut provided by the selectTool) using ShortcutTool and the ShortcutManager. - modified the SceneComposerToolController to work with the ShortcutManager & ShortcutTool
This commit is contained in:
parent
82f031cdff
commit
f6b7c3819a
@ -11,6 +11,7 @@ import com.jme3.gde.core.scene.controller.SceneToolController;
|
|||||||
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode;
|
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode;
|
||||||
import com.jme3.gde.core.sceneexplorer.nodes.JmeSpatial;
|
import com.jme3.gde.core.sceneexplorer.nodes.JmeSpatial;
|
||||||
import com.jme3.gde.scenecomposer.tools.PickManager;
|
import com.jme3.gde.scenecomposer.tools.PickManager;
|
||||||
|
import com.jme3.gde.scenecomposer.tools.shortcuts.ShortcutManager;
|
||||||
import com.jme3.input.event.KeyInputEvent;
|
import com.jme3.input.event.KeyInputEvent;
|
||||||
import com.jme3.light.Light;
|
import com.jme3.light.Light;
|
||||||
import com.jme3.light.PointLight;
|
import com.jme3.light.PointLight;
|
||||||
@ -31,6 +32,7 @@ import com.jme3.scene.control.Control;
|
|||||||
import com.jme3.scene.shape.Quad;
|
import com.jme3.scene.shape.Quad;
|
||||||
import com.jme3.texture.Texture;
|
import com.jme3.texture.Texture;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
import org.openide.util.Lookup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -184,7 +186,11 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
* @param camera
|
* @param camera
|
||||||
*/
|
*/
|
||||||
public void doEditToolActivatedPrimary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
public void doEditToolActivatedPrimary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
||||||
if (editTool != null) {
|
ShortcutManager scm = Lookup.getDefault().lookup(ShortcutManager.class);
|
||||||
|
|
||||||
|
if (scm.isActive()) {
|
||||||
|
scm.getActiveShortcut().actionPrimary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
|
} else if (editTool != null) {
|
||||||
editTool.setCamera(camera);
|
editTool.setCamera(camera);
|
||||||
editTool.actionPrimary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
editTool.actionPrimary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
}
|
}
|
||||||
@ -198,38 +204,64 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
* @param camera
|
* @param camera
|
||||||
*/
|
*/
|
||||||
public void doEditToolActivatedSecondary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
public void doEditToolActivatedSecondary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
||||||
if (editTool != null) {
|
ShortcutManager scm = Lookup.getDefault().lookup(ShortcutManager.class);
|
||||||
|
|
||||||
|
if (scm.isActive()) {
|
||||||
|
scm.getActiveShortcut().actionSecondary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
|
} else if (editTool != null) {
|
||||||
editTool.setCamera(camera);
|
editTool.setCamera(camera);
|
||||||
editTool.actionSecondary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
editTool.actionSecondary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doEditToolMoved(Vector2f mouseLoc, Camera camera) {
|
public void doEditToolMoved(Vector2f mouseLoc, Camera camera) {
|
||||||
if (editTool != null) {
|
ShortcutManager scm = Lookup.getDefault().lookup(ShortcutManager.class);
|
||||||
|
|
||||||
|
if (scm.isActive()) {
|
||||||
|
scm.getActiveShortcut().mouseMoved(mouseLoc, rootNode, editorController.getCurrentDataObject(), selectedSpatial);
|
||||||
|
} else if (editTool != null) {
|
||||||
editTool.setCamera(camera);
|
editTool.setCamera(camera);
|
||||||
editTool.mouseMoved(mouseLoc, rootNode, editorController.getCurrentDataObject(), selectedSpatial);
|
editTool.mouseMoved(mouseLoc, rootNode, editorController.getCurrentDataObject(), selectedSpatial);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doEditToolDraggedPrimary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
public void doEditToolDraggedPrimary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
||||||
if (editTool != null) {
|
ShortcutManager scm = Lookup.getDefault().lookup(ShortcutManager.class);
|
||||||
|
|
||||||
|
if (scm.isActive()) {
|
||||||
|
scm.getActiveShortcut().draggedPrimary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
|
} else if (editTool != null) {
|
||||||
editTool.setCamera(camera);
|
editTool.setCamera(camera);
|
||||||
editTool.draggedPrimary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
editTool.draggedPrimary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doEditToolDraggedSecondary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
public void doEditToolDraggedSecondary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
||||||
if (editTool != null) {
|
ShortcutManager scm = Lookup.getDefault().lookup(ShortcutManager.class);
|
||||||
|
|
||||||
|
if (scm.isActive()) {
|
||||||
|
scm.getActiveShortcut().draggedSecondary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
|
} else if (editTool != null) {
|
||||||
editTool.setCamera(camera);
|
editTool.setCamera(camera);
|
||||||
editTool.draggedSecondary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
editTool.draggedSecondary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void doKeyPressed(KeyInputEvent kie) {
|
public void doKeyPressed(KeyInputEvent kie) {
|
||||||
|
ShortcutManager scm = Lookup.getDefault().lookup(ShortcutManager.class);
|
||||||
|
|
||||||
|
if (scm.isActive()) {
|
||||||
|
scm.doKeyPressed(kie);
|
||||||
|
} else {
|
||||||
|
if (scm.activateShortcut(kie)) {
|
||||||
|
scm.getActiveShortcut().activate(manager, toolsNode, onTopToolsNode, selected, this);
|
||||||
|
} else {
|
||||||
if (editTool != null) {
|
if (editTool != null) {
|
||||||
editTool.keyPressed(kie);
|
editTool.keyPressed(kie);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a marker for the light to the scene if it does not exist yet
|
* Adds a marker for the light to the scene if it does not exist yet
|
||||||
|
@ -0,0 +1,137 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.jme3.gde.scenecomposer.tools.shortcuts;
|
||||||
|
|
||||||
|
import com.jme3.asset.AssetManager;
|
||||||
|
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode;
|
||||||
|
import com.jme3.gde.core.sceneexplorer.nodes.JmeSpatial;
|
||||||
|
import com.jme3.gde.scenecomposer.SceneComposerToolController;
|
||||||
|
import com.jme3.gde.scenecomposer.tools.PickManager;
|
||||||
|
import com.jme3.input.KeyInput;
|
||||||
|
import com.jme3.input.event.KeyInputEvent;
|
||||||
|
import com.jme3.math.Vector2f;
|
||||||
|
import com.jme3.math.Vector3f;
|
||||||
|
import com.jme3.scene.Node;
|
||||||
|
import com.jme3.scene.Spatial;
|
||||||
|
import org.openide.loaders.DataObject;
|
||||||
|
import org.openide.util.Lookup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author dokthar
|
||||||
|
*/
|
||||||
|
public class MoveShortcut extends ShortcutTool {
|
||||||
|
|
||||||
|
private Vector3f currentAxis;
|
||||||
|
private StringBuilder numberBuilder;
|
||||||
|
private Spatial spatial;
|
||||||
|
private Vector3f initalLocation;
|
||||||
|
private Vector3f finalLocation;
|
||||||
|
private PickManager pickManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isActivableBy(KeyInputEvent kie) {
|
||||||
|
return kie.getKeyCode() == KeyInput.KEY_G;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cancel() {
|
||||||
|
spatial.setLocalTranslation(initalLocation);
|
||||||
|
terminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void apply() {
|
||||||
|
// TODO creat UNDO/REDO
|
||||||
|
terminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void activate(AssetManager manager, Node toolNode, Node onTopToolNode, Spatial selectedSpatial, SceneComposerToolController toolController) {
|
||||||
|
super.activate(manager, toolNode, onTopToolNode, selectedSpatial, toolController); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
hideMarker();
|
||||||
|
numberBuilder = new StringBuilder();
|
||||||
|
if (selectedSpatial == null) {
|
||||||
|
terminate();
|
||||||
|
} else {
|
||||||
|
spatial = selectedSpatial;
|
||||||
|
initalLocation = spatial.getLocalTranslation();
|
||||||
|
currentAxis = new Vector3f().set(Vector3f.UNIT_XYZ);
|
||||||
|
|
||||||
|
pickManager = Lookup.getDefault().lookup(PickManager.class);
|
||||||
|
///pickManager.initiatePick(toolController.getSelectedSpatial(), PickManager.PLANE_YZ, getTransformType(), camera, screenCoord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyPressed(KeyInputEvent kie) {
|
||||||
|
if (kie.isPressed()) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
ShortcutTool otherShortcut = Lookup.getDefault().lookup(ShortcutManager.class).getActivableShortcut(kie);
|
||||||
|
if(otherShortcut != null){
|
||||||
|
Lookup.getDefault().lookup(ShortcutManager.class).setShortCut(otherShortcut);
|
||||||
|
}*/
|
||||||
|
Lookup.getDefault().lookup(ShortcutManager.class).activateShortcut(kie);
|
||||||
|
|
||||||
|
boolean axisChanged = ShortcutManager.checkAxisKey(kie, currentAxis);
|
||||||
|
boolean numberChanged = ShortcutManager.checkNumberKey(kie, numberBuilder);
|
||||||
|
boolean enterHit = ShortcutManager.checkEnterHit(kie);
|
||||||
|
boolean escHit = ShortcutManager.checkEscHit(kie);
|
||||||
|
|
||||||
|
if (escHit) {
|
||||||
|
cancel();
|
||||||
|
} else if (enterHit) {
|
||||||
|
apply();
|
||||||
|
} else if (axisChanged || numberChanged) {
|
||||||
|
//update transformation
|
||||||
|
float number = ShortcutManager.getNumberkey(numberBuilder);
|
||||||
|
Vector3f translation = currentAxis.mult(number);
|
||||||
|
finalLocation = initalLocation.add(translation);
|
||||||
|
spatial.setLocalTranslation(finalLocation);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPrimary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject dataObject) {
|
||||||
|
if (!pressed) {
|
||||||
|
apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject dataObject) {
|
||||||
|
if (pressed) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseMoved(Vector2f screenCoord, JmeNode rootNode, DataObject dataObject, JmeSpatial selectedSpatial) {
|
||||||
|
pickManager.updatePick(camera, screenCoord);
|
||||||
|
/* PickManager pickManager = Lookup.getDefault().lookup(PickManager.class);
|
||||||
|
if (toolController.isSnapToScene()) {
|
||||||
|
moveManager.setAlternativePickTarget(rootNode.getLookup().lookup(Node.class));
|
||||||
|
}
|
||||||
|
// free form translation
|
||||||
|
moveManager.move(camera, screenCoord, axis, toolController.isSnapToGrid());*/
|
||||||
|
}
|
||||||
|
|
||||||
|
@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.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) {
|
||||||
|
if (pressed) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,197 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.jme3.gde.scenecomposer.tools.shortcuts;
|
||||||
|
|
||||||
|
import com.jme3.gde.scenecomposer.SceneEditTool;
|
||||||
|
import com.jme3.input.KeyInput;
|
||||||
|
import com.jme3.input.event.KeyInputEvent;
|
||||||
|
import com.jme3.math.Vector3f;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import org.openide.util.Lookup;
|
||||||
|
import org.openide.util.lookup.ServiceProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author dokthar
|
||||||
|
*/
|
||||||
|
@ServiceProvider(service = ShortcutManager.class)
|
||||||
|
public class ShortcutManager {
|
||||||
|
|
||||||
|
private ShortcutTool currentShortcut;
|
||||||
|
private ArrayList<ShortcutTool> shortcutList;
|
||||||
|
|
||||||
|
public ShortcutManager() {
|
||||||
|
shortcutList = new ArrayList<ShortcutTool>();
|
||||||
|
shortcutList.add(new MoveShortcut());
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Methodes
|
||||||
|
*/
|
||||||
|
public void terminate() {
|
||||||
|
currentShortcut = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isActive() {
|
||||||
|
return currentShortcut != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortCut(ShortcutTool shortcut) {
|
||||||
|
if (isActive()) {
|
||||||
|
currentShortcut.cancel();
|
||||||
|
}
|
||||||
|
currentShortcut = shortcut;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShortcutTool getActivableShortcut(KeyInputEvent kie) {
|
||||||
|
for (ShortcutTool s : shortcutList) {
|
||||||
|
if (s != currentShortcut) {
|
||||||
|
if (s.isActivableBy(kie)) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShortcutTool getActiveShortcut() {
|
||||||
|
return currentShortcut;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canActivateShortcut(KeyInputEvent kie) {
|
||||||
|
return getActivableShortcut(kie) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean activateShortcut(KeyInputEvent kie) {
|
||||||
|
currentShortcut = getActivableShortcut(kie);
|
||||||
|
return isActive();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void doKeyPressed(KeyInputEvent kie) {
|
||||||
|
///todo check commande key
|
||||||
|
if (isActive()) {
|
||||||
|
currentShortcut.keyPressed(kie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
STATIC
|
||||||
|
*/
|
||||||
|
public static boolean checkEnterHit(KeyInputEvent kie) {
|
||||||
|
if (kie.getKeyCode() == KeyInput.KEY_RETURN) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean checkEscHit(KeyInputEvent kie) {
|
||||||
|
if (kie.getKeyCode() == KeyInput.KEY_ESCAPE) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean checkCtrlHit(KeyInputEvent kie) {
|
||||||
|
if (kie.getKeyCode() == KeyInput.KEY_LCONTROL || kie.getKeyCode() == KeyInput.KEY_RCONTROL) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean checkShiftHit(KeyInputEvent kie) {
|
||||||
|
if (kie.getKeyCode() == KeyInput.KEY_LSHIFT || kie.getKeyCode() == KeyInput.KEY_RSHIFT) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean checkAltHit(KeyInputEvent kie) {
|
||||||
|
if (kie.getKeyCode() == KeyInput.KEY_LMENU || kie.getKeyCode() == KeyInput.KEY_RMENU) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean checkNumberKey(KeyInputEvent kie, StringBuilder numberBuilder) {
|
||||||
|
if (kie.getKeyCode() == KeyInput.KEY_MINUS) {
|
||||||
|
if (numberBuilder.length() > 0) {
|
||||||
|
if (numberBuilder.charAt(0) == '-') {
|
||||||
|
numberBuilder.replace(0, 1, "");
|
||||||
|
} else {
|
||||||
|
numberBuilder.insert(0, '-');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
numberBuilder.append('-');
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_0 || kie.getKeyCode() == KeyInput.KEY_NUMPAD0) {
|
||||||
|
numberBuilder.append('0');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_1 || kie.getKeyCode() == KeyInput.KEY_NUMPAD1) {
|
||||||
|
numberBuilder.append('1');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_2 || kie.getKeyCode() == KeyInput.KEY_NUMPAD2) {
|
||||||
|
numberBuilder.append('2');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_3 || kie.getKeyCode() == KeyInput.KEY_NUMPAD3) {
|
||||||
|
numberBuilder.append('3');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_4 || kie.getKeyCode() == KeyInput.KEY_NUMPAD4) {
|
||||||
|
numberBuilder.append('4');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_5 || kie.getKeyCode() == KeyInput.KEY_NUMPAD5) {
|
||||||
|
numberBuilder.append('5');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_6 || kie.getKeyCode() == KeyInput.KEY_NUMPAD6) {
|
||||||
|
numberBuilder.append('6');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_7 || kie.getKeyCode() == KeyInput.KEY_NUMPAD7) {
|
||||||
|
numberBuilder.append('7');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_8 || kie.getKeyCode() == KeyInput.KEY_NUMPAD8) {
|
||||||
|
numberBuilder.append('8');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_9 || kie.getKeyCode() == KeyInput.KEY_NUMPAD9) {
|
||||||
|
numberBuilder.append('9');
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_PERIOD) {
|
||||||
|
if (numberBuilder.indexOf(".") == -1) { // if it doesn't exist yet
|
||||||
|
if (numberBuilder.length() == 0
|
||||||
|
|| (numberBuilder.length() == 1 && numberBuilder.charAt(0) == '-')) {
|
||||||
|
numberBuilder.append("0.");
|
||||||
|
} else {
|
||||||
|
numberBuilder.append(".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float getNumberkey(StringBuilder numberBuilder) {
|
||||||
|
if (numberBuilder.length() == 0) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return new Float(numberBuilder.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean checkAxisKey(KeyInputEvent kie, Vector3f axisStore) {
|
||||||
|
if (kie.getKeyCode() == KeyInput.KEY_X) {
|
||||||
|
axisStore = Vector3f.UNIT_X;
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_Y) {
|
||||||
|
axisStore = Vector3f.UNIT_Y;
|
||||||
|
return true;
|
||||||
|
} else if (kie.getKeyCode() == KeyInput.KEY_Z) {
|
||||||
|
axisStore = Vector3f.UNIT_Z;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package com.jme3.gde.scenecomposer.tools.shortcuts;
|
||||||
|
|
||||||
|
import com.jme3.gde.scenecomposer.SceneEditTool;
|
||||||
|
import com.jme3.input.event.KeyInputEvent;
|
||||||
|
import org.openide.util.Lookup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author dokthar
|
||||||
|
*/
|
||||||
|
public abstract class ShortcutTool extends SceneEditTool {
|
||||||
|
|
||||||
|
public abstract boolean isActivableBy(KeyInputEvent kie);
|
||||||
|
|
||||||
|
public abstract void cancel();
|
||||||
|
|
||||||
|
protected final void terminate() {
|
||||||
|
Lookup.getDefault().lookup(ShortcutManager.class).terminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public abstract void keyPressed(KeyInputEvent kie);
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user