sdk :
- Removed grey selection. Select tool now use the blue selection managed by the toolController. - Changed move plane gizmo to only appear when the move tool is activated - Optimized moveTool to not instanciate new vectors on every frame. - Changed particle emitter selection shape to bounding box git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7995 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
02c7ab94a0
commit
da55beac3d
@ -9,7 +9,6 @@ import com.jme3.gde.core.scene.SceneApplication;
|
|||||||
import com.jme3.gde.core.scene.controller.SceneToolController;
|
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.math.Vector2f;
|
import com.jme3.math.Vector2f;
|
||||||
import com.jme3.math.Vector3f;
|
|
||||||
import com.jme3.renderer.Camera;
|
import com.jme3.renderer.Camera;
|
||||||
import com.jme3.renderer.RenderManager;
|
import com.jme3.renderer.RenderManager;
|
||||||
import com.jme3.renderer.ViewPort;
|
import com.jme3.renderer.ViewPort;
|
||||||
@ -27,7 +26,6 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
private SceneEditTool editTool;
|
private SceneEditTool editTool;
|
||||||
private SceneEditorController editorController;
|
private SceneEditorController editorController;
|
||||||
private ComposerCameraController cameraController;
|
private ComposerCameraController cameraController;
|
||||||
private Camera overlayCam;
|
|
||||||
private ViewPort overlayView;
|
private ViewPort overlayView;
|
||||||
private Node onTopToolsNode;
|
private Node onTopToolsNode;
|
||||||
|
|
||||||
@ -51,7 +49,7 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
onTopToolsNode = new Node("OverlayNode");
|
onTopToolsNode = new Node("OverlayNode");
|
||||||
overlayView = SceneApplication.getApplication().getRenderManager().createMainView("Overlay", this.cameraController.getCamera());
|
overlayView = SceneApplication.getApplication().getRenderManager().createMainView("Overlay", this.cameraController.getCamera());
|
||||||
overlayView.setClearFlags(false, true, false);
|
overlayView.setClearFlags(false, true, false);
|
||||||
overlayView.attachScene( onTopToolsNode );
|
overlayView.attachScene(onTopToolsNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -70,8 +68,9 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
onTopToolsNode.updateLogicalState(tpf);
|
onTopToolsNode.updateLogicalState(tpf);
|
||||||
onTopToolsNode.updateGeometricState();
|
onTopToolsNode.updateGeometricState();
|
||||||
}
|
}
|
||||||
if (editTool != null)
|
if (editTool != null) {
|
||||||
editTool.updateToolsTransformation(selected);
|
editTool.updateToolsTransformation();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,11 +87,12 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
* If the current tool overrides camera zoom/pan controls
|
* If the current tool overrides camera zoom/pan controls
|
||||||
*/
|
*/
|
||||||
public boolean isOverrideCameraControl() {
|
public boolean isOverrideCameraControl() {
|
||||||
if (editTool != null)
|
if (editTool != null) {
|
||||||
return editTool.isOverrideCameraControl();
|
return editTool.isOverrideCameraControl();
|
||||||
else
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scene composer edit tool activated. Pass in null to remove tools.
|
* Scene composer edit tool activated. Pass in null to remove tools.
|
||||||
@ -101,6 +101,7 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
*/
|
*/
|
||||||
public void showEditTool(final SceneEditTool sceneEditTool) {
|
public void showEditTool(final SceneEditTool sceneEditTool) {
|
||||||
SceneApplication.getApplication().enqueue(new Callable<Object>() {
|
SceneApplication.getApplication().enqueue(new Callable<Object>() {
|
||||||
|
|
||||||
public Object call() throws Exception {
|
public Object call() throws Exception {
|
||||||
doEnableEditTool(sceneEditTool);
|
doEnableEditTool(sceneEditTool);
|
||||||
return null;
|
return null;
|
||||||
@ -109,8 +110,9 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void doEnableEditTool(SceneEditTool sceneEditTool) {
|
private void doEnableEditTool(SceneEditTool sceneEditTool) {
|
||||||
if (editTool != null)
|
if (editTool != null) {
|
||||||
editTool.hideMarker();
|
editTool.hideMarker();
|
||||||
|
}
|
||||||
editTool = sceneEditTool;
|
editTool = sceneEditTool;
|
||||||
editTool.activate(manager, toolsNode, onTopToolsNode, selected, this);
|
editTool.activate(manager, toolsNode, onTopToolsNode, selected, this);
|
||||||
}
|
}
|
||||||
@ -118,8 +120,9 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
public void selectedSpatialTransformed() {
|
public void selectedSpatialTransformed() {
|
||||||
if (editTool != null) {
|
if (editTool != null) {
|
||||||
SceneApplication.getApplication().enqueue(new Callable<Object>() {
|
SceneApplication.getApplication().enqueue(new Callable<Object>() {
|
||||||
|
|
||||||
public Object call() throws Exception {
|
public Object call() throws Exception {
|
||||||
editTool.updateToolsTransformation(selected);
|
editTool.updateToolsTransformation();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -139,7 +142,7 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
* for appropriate action.
|
* for appropriate action.
|
||||||
*/
|
*/
|
||||||
public void doEditToolActivatedPrimary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
public void doEditToolActivatedPrimary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
||||||
if (editTool != null){
|
if (editTool != null) {
|
||||||
editTool.setCamera(camera);
|
editTool.setCamera(camera);
|
||||||
editTool.actionPrimary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
editTool.actionPrimary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
}
|
}
|
||||||
@ -150,14 +153,14 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
* for appropriate action.
|
* for appropriate action.
|
||||||
*/
|
*/
|
||||||
public void doEditToolActivatedSecondary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
public void doEditToolActivatedSecondary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
||||||
if (editTool != null){
|
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){
|
if (editTool != null) {
|
||||||
editTool.setCamera(camera);
|
editTool.setCamera(camera);
|
||||||
editTool.mouseMoved(mouseLoc);
|
editTool.mouseMoved(mouseLoc);
|
||||||
}
|
}
|
||||||
@ -171,7 +174,7 @@ public class SceneComposerToolController extends SceneToolController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void doEditToolDraggedSecondary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
public void doEditToolDraggedSecondary(Vector2f mouseLoc, boolean pressed, Camera camera) {
|
||||||
if (editTool != null){
|
if (editTool != null) {
|
||||||
editTool.setCamera(camera);
|
editTool.setCamera(camera);
|
||||||
editTool.draggedSecondary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
editTool.draggedSecondary(mouseLoc, pressed, rootNode, editorController.getCurrentDataObject());
|
||||||
}
|
}
|
||||||
|
@ -321,6 +321,7 @@
|
|||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JToggleButton" name="showSelectionToggleButton">
|
<Component class="javax.swing.JToggleButton" name="showSelectionToggleButton">
|
||||||
<Properties>
|
<Properties>
|
||||||
|
<Property name="selected" type="boolean" value="true"/>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="com/jme3/gde/scenecomposer/Bundle.properties" key="SceneComposerTopComponent.showSelectionToggleButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="com/jme3/gde/scenecomposer/Bundle.properties" key="SceneComposerTopComponent.showSelectionToggleButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
|
@ -263,6 +263,7 @@ public final class SceneComposerTopComponent extends TopComponent implements Sce
|
|||||||
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(SceneComposerTopComponent.class, "SceneComposerTopComponent.jLabel3.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(SceneComposerTopComponent.class, "SceneComposerTopComponent.jLabel3.text")); // NOI18N
|
||||||
jToolBar1.add(jLabel3);
|
jToolBar1.add(jLabel3);
|
||||||
|
|
||||||
|
showSelectionToggleButton.setSelected(true);
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(showSelectionToggleButton, org.openide.util.NbBundle.getMessage(SceneComposerTopComponent.class, "SceneComposerTopComponent.showSelectionToggleButton.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(showSelectionToggleButton, org.openide.util.NbBundle.getMessage(SceneComposerTopComponent.class, "SceneComposerTopComponent.showSelectionToggleButton.text")); // NOI18N
|
||||||
showSelectionToggleButton.setToolTipText(org.openide.util.NbBundle.getMessage(SceneComposerTopComponent.class, "SceneComposerTopComponent.showSelectionToggleButton.toolTipText")); // NOI18N
|
showSelectionToggleButton.setToolTipText(org.openide.util.NbBundle.getMessage(SceneComposerTopComponent.class, "SceneComposerTopComponent.showSelectionToggleButton.toolTipText")); // NOI18N
|
||||||
showSelectionToggleButton.setFocusable(false);
|
showSelectionToggleButton.setFocusable(false);
|
||||||
@ -956,6 +957,7 @@ private void emitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
|
|||||||
toolController.cleanup();
|
toolController.cleanup();
|
||||||
}
|
}
|
||||||
toolController = new SceneComposerToolController(currentRequest.getToolNode(), currentRequest.getManager(), request.getJmeNode());
|
toolController = new SceneComposerToolController(currentRequest.getToolNode(), currentRequest.getManager(), request.getJmeNode());
|
||||||
|
|
||||||
camController = new ComposerCameraController(SceneApplication.getApplication().getCamera(), request.getJmeNode());
|
camController = new ComposerCameraController(SceneApplication.getApplication().getCamera(), request.getJmeNode());
|
||||||
toolController.setEditorController(editorController);
|
toolController.setEditorController(editorController);
|
||||||
camController.setToolController(toolController);
|
camController.setToolController(toolController);
|
||||||
@ -965,6 +967,7 @@ private void emitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
|
|||||||
toolController.setCameraController(camController);
|
toolController.setCameraController(camController);
|
||||||
SelectTool tool = new SelectTool();
|
SelectTool tool = new SelectTool();
|
||||||
toolController.showEditTool(tool);
|
toolController.showEditTool(tool);
|
||||||
|
toolController.setShowSelection(true);
|
||||||
}/* else {
|
}/* else {
|
||||||
SceneApplication.getApplication().removeSceneListener(this);
|
SceneApplication.getApplication().removeSceneListener(this);
|
||||||
currentRequest = null;
|
currentRequest = null;
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.jme3.gde.scenecomposer;
|
package com.jme3.gde.scenecomposer;
|
||||||
|
|
||||||
|
|
||||||
import com.jme3.asset.AssetManager;
|
import com.jme3.asset.AssetManager;
|
||||||
import com.jme3.bounding.BoundingBox;
|
import com.jme3.bounding.BoundingBox;
|
||||||
import com.jme3.bounding.BoundingVolume;
|
import com.jme3.bounding.BoundingVolume;
|
||||||
@ -50,26 +49,30 @@ import org.openide.util.Lookup;
|
|||||||
*/
|
*/
|
||||||
public abstract class SceneEditTool {
|
public abstract class SceneEditTool {
|
||||||
|
|
||||||
|
protected static Vector3f ARROW_X = new Vector3f(1, 0, 0);
|
||||||
|
protected static Vector3f ARROW_Y = new Vector3f(0, 1, 0);
|
||||||
|
protected static Vector3f ARROW_Z = new Vector3f(0, 0, 1);
|
||||||
|
protected static Vector3f QUAD_XY = new Vector3f(1, 1, 0);
|
||||||
|
protected static Vector3f QUAD_XZ = new Vector3f(1, 0, 1);
|
||||||
|
protected static Vector3f QUAD_YZ = new Vector3f(0, 1, 1);
|
||||||
protected SceneComposerToolController toolController;
|
protected SceneComposerToolController toolController;
|
||||||
protected AssetManager manager;
|
protected AssetManager manager;
|
||||||
protected Camera camera;
|
protected Camera camera;
|
||||||
private boolean overrideCameraControl = false; // if true, you cannot pan/zoom unless you hold SHIFT
|
private boolean overrideCameraControl = false; // if true, you cannot pan/zoom unless you hold SHIFT
|
||||||
|
|
||||||
// the key to load the tool hint text from the resource bundle
|
// the key to load the tool hint text from the resource bundle
|
||||||
protected String toolHintTextKey = "SceneComposerTopComponent.toolHint.default"; // not used yet
|
protected String toolHintTextKey = "SceneComposerTopComponent.toolHint.default"; // not used yet
|
||||||
|
|
||||||
protected Spatial selectedSpatial;
|
|
||||||
protected Spatial selectionShape;
|
|
||||||
protected Node toolNode;
|
protected Node toolNode;
|
||||||
protected Node onTopToolNode;
|
protected Node onTopToolNode;
|
||||||
|
|
||||||
protected Node axisMarker;
|
protected Node axisMarker;
|
||||||
protected Material redMat, blueMat, greenMat, yellowMat, cyanMat, magentaMat, orangeMat;
|
protected Material redMat, blueMat, greenMat, yellowMat, cyanMat, magentaMat, orangeMat;
|
||||||
|
protected Geometry quadXY, quadXZ, quadYZ;
|
||||||
|
|
||||||
protected enum AxisMarkerPickType {axisOnly, planeOnly, axisAndPlane};
|
protected enum AxisMarkerPickType {
|
||||||
|
|
||||||
|
axisOnly, planeOnly, axisAndPlane
|
||||||
|
};
|
||||||
protected AxisMarkerPickType axisPickType;
|
protected AxisMarkerPickType axisPickType;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The tool was selected, start showing the marker.
|
* The tool was selected, start showing the marker.
|
||||||
* @param manager
|
* @param manager
|
||||||
@ -78,7 +81,7 @@ public abstract class SceneEditTool {
|
|||||||
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) {
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
this.toolController = toolController;
|
this.toolController = toolController;
|
||||||
this.selectedSpatial = selectedSpatial;
|
//this.selectedSpatial = selectedSpatial;
|
||||||
addMarker(toolNode, onTopToolNode);
|
addMarker(toolNode, onTopToolNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,46 +96,20 @@ public abstract class SceneEditTool {
|
|||||||
this.onTopToolNode.attachChild(axisMarker);
|
this.onTopToolNode.attachChild(axisMarker);
|
||||||
setDefaultAxisMarkerColors();
|
setDefaultAxisMarkerColors();
|
||||||
|
|
||||||
// create and add the selection shape
|
|
||||||
if (selectionShape != null)
|
|
||||||
selectionShape.removeFromParent();
|
|
||||||
|
|
||||||
selectionShape = createSelectionShape(toolNode, selectedSpatial);
|
if (toolController.getSelectionShape() != null) {
|
||||||
|
axisMarker.setLocalTranslation(toolController.getSelectedSpatial().getWorldTranslation());
|
||||||
if (selectionShape != null) {
|
|
||||||
setDefaultSelectionShapeColors();
|
|
||||||
this.toolNode.attachChild(selectionShape);
|
|
||||||
axisMarker.setLocalTranslation(selectedSpatial.getWorldTranslation());
|
|
||||||
selectionShape.setLocalTranslation(selectedSpatial.getWorldTranslation());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void replaceSelectionShape(Spatial spatial) {
|
|
||||||
if (spatial != null) {
|
|
||||||
if (selectionShape != null)
|
|
||||||
selectionShape.removeFromParent();
|
|
||||||
selectedSpatial = spatial;
|
|
||||||
toolController.setSelected(spatial);
|
|
||||||
selectionShape = createSelectionShape(toolNode, selectedSpatial);
|
|
||||||
setDefaultSelectionShapeColors();
|
|
||||||
toolNode.attachChild(selectionShape);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (selectionShape != null)
|
|
||||||
selectionShape.removeFromParent();
|
|
||||||
selectionShape = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the marker from it's parent (the tools node)
|
* Remove the marker from it's parent (the tools node)
|
||||||
*/
|
*/
|
||||||
public void hideMarker() {
|
public void hideMarker() {
|
||||||
if (axisMarker != null)
|
if (axisMarker != null) {
|
||||||
axisMarker.removeFromParent();
|
axisMarker.removeFromParent();
|
||||||
if (selectionShape != null)
|
}
|
||||||
selectionShape.removeFromParent();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOverrideCameraControl() {
|
public boolean isOverrideCameraControl() {
|
||||||
@ -147,26 +124,18 @@ public abstract class SceneEditTool {
|
|||||||
* Called when the selected spatial has been modified
|
* Called when the selected spatial has been modified
|
||||||
* outside of the tool.
|
* outside of the tool.
|
||||||
*/
|
*/
|
||||||
public void updateToolsTransformation(final Spatial spatial) {
|
public void updateToolsTransformation() {
|
||||||
|
|
||||||
if (selectionShape == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// has anything changed?
|
|
||||||
if (!selectionShape.getLocalTranslation().equals(spatial.getWorldTranslation()) &&
|
|
||||||
!selectionShape.getLocalRotation().equals(spatial.getWorldRotation()) &&
|
|
||||||
!selectionShape.getLocalScale().equals(spatial.getWorldScale()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// something has updated, so update the tools
|
|
||||||
selectionShape.setLocalTranslation(spatial.getWorldTranslation());
|
|
||||||
selectionShape.setLocalRotation(spatial.getWorldRotation());
|
|
||||||
selectionShape.setLocalScale(selectedSpatial.getWorldScale());
|
|
||||||
|
|
||||||
SceneApplication.getApplication().enqueue(new Callable<Object>() {
|
SceneApplication.getApplication().enqueue(new Callable<Object>() {
|
||||||
|
|
||||||
public Object call() throws Exception {
|
public Object call() throws Exception {
|
||||||
axisMarker.setLocalTranslation(spatial.getWorldTranslation());
|
if (toolController.getSelectedSpatial() != null) {
|
||||||
axisMarker.setLocalRotation(selectedSpatial.getWorldRotation());
|
axisMarker.setLocalTranslation(toolController.getSelectedSpatial().getWorldTranslation());
|
||||||
|
axisMarker.setLocalRotation(toolController.getSelectedSpatial().getWorldRotation());
|
||||||
|
} else {
|
||||||
|
axisMarker.setLocalTranslation(Vector3f.ZERO);
|
||||||
|
axisMarker.setLocalRotation(Quaternion.IDENTITY);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -207,7 +176,6 @@ public abstract class SceneEditTool {
|
|||||||
toolController.setNeedsSave(true);
|
toolController.setNeedsSave(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given the mouse coordinates, pick the geometry that is closest to the camera.
|
* Given the mouse coordinates, pick the geometry that is closest to the camera.
|
||||||
* @param jmeRootNode to pick from
|
* @param jmeRootNode to pick from
|
||||||
@ -216,11 +184,12 @@ public abstract class SceneEditTool {
|
|||||||
protected Spatial pickWorldSpatial(Camera cam, Vector2f mouseLoc, JmeNode jmeRootNode) {
|
protected Spatial pickWorldSpatial(Camera cam, Vector2f mouseLoc, JmeNode jmeRootNode) {
|
||||||
Node rootNode = jmeRootNode.getLookup().lookup(Node.class);
|
Node rootNode = jmeRootNode.getLookup().lookup(Node.class);
|
||||||
CollisionResult cr = pick(cam, mouseLoc, rootNode);
|
CollisionResult cr = pick(cam, mouseLoc, rootNode);
|
||||||
if (cr != null)
|
if (cr != null) {
|
||||||
return cr.getGeometry();
|
return cr.getGeometry();
|
||||||
else
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given the mouse coordinate, pick the world location where the mouse intersects
|
* Given the mouse coordinate, pick the world location where the mouse intersects
|
||||||
@ -233,14 +202,14 @@ public abstract class SceneEditTool {
|
|||||||
return pickWorldLocation(cam, mouseLoc, rootNode);
|
return pickWorldLocation(cam, mouseLoc, rootNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected Vector3f pickWorldLocation(Camera cam, Vector2f mouseLoc, Node rootNode) {
|
protected Vector3f pickWorldLocation(Camera cam, Vector2f mouseLoc, Node rootNode) {
|
||||||
CollisionResult cr = pick(cam, mouseLoc, rootNode);
|
CollisionResult cr = pick(cam, mouseLoc, rootNode);
|
||||||
if (cr != null)
|
if (cr != null) {
|
||||||
return cr.getContactPoint();
|
return cr.getContactPoint();
|
||||||
else
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pick a part of the axis marker. The result is a Vector3f that represents
|
* Pick a part of the axis marker. The result is a Vector3f that represents
|
||||||
@ -251,43 +220,44 @@ public abstract class SceneEditTool {
|
|||||||
* @return null if it did not intersect the marker
|
* @return null if it did not intersect the marker
|
||||||
*/
|
*/
|
||||||
protected Vector3f pickAxisMarker(Camera cam, Vector2f mouseLoc, AxisMarkerPickType pickType) {
|
protected Vector3f pickAxisMarker(Camera cam, Vector2f mouseLoc, AxisMarkerPickType pickType) {
|
||||||
if (axisMarker == null)
|
if (axisMarker == null) {
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
CollisionResult cr = pick(cam, mouseLoc, axisMarker);
|
CollisionResult cr = pick(cam, mouseLoc, axisMarker);
|
||||||
if (cr == null || cr.getGeometry() == null)
|
if (cr == null || cr.getGeometry() == null) {
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (pickType == AxisMarkerPickType.planeOnly) {
|
if (pickType == AxisMarkerPickType.planeOnly) {
|
||||||
if ("quadXY".equals(cr.getGeometry().getName()) ) {
|
if ("quadXY".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(1,1,0);
|
return QUAD_XY;
|
||||||
} else if ("quadXZ".equals(cr.getGeometry().getName()) ) {
|
} else if ("quadXZ".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(1,0,1);
|
return QUAD_XZ;
|
||||||
} else if ("quadYZ".equals(cr.getGeometry().getName()) ) {
|
} else if ("quadYZ".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(0,1,1);
|
return QUAD_YZ;
|
||||||
}
|
}
|
||||||
}
|
} else if (pickType == AxisMarkerPickType.axisOnly) {
|
||||||
else if (pickType == AxisMarkerPickType.axisOnly) {
|
if ("arrowX".equals(cr.getGeometry().getName())) {
|
||||||
if ("arrowX".equals(cr.getGeometry().getName()) ) {
|
return ARROW_X;
|
||||||
return new Vector3f(1,0,0);
|
} else if ("arrowY".equals(cr.getGeometry().getName())) {
|
||||||
} else if ("arrowY".equals(cr.getGeometry().getName()) ) {
|
return ARROW_Y;
|
||||||
return new Vector3f(0,1,0);
|
} else if ("arrowZ".equals(cr.getGeometry().getName())) {
|
||||||
} else if ("arrowZ".equals(cr.getGeometry().getName()) ) {
|
return ARROW_Z;
|
||||||
return new Vector3f(0,1,0);
|
|
||||||
}
|
}
|
||||||
} else if (pickType == AxisMarkerPickType.axisAndPlane) {
|
} else if (pickType == AxisMarkerPickType.axisAndPlane) {
|
||||||
if ("arrowX".equals(cr.getGeometry().getName()) ) {
|
if ("arrowX".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(1,0,0);
|
return ARROW_X;
|
||||||
} else if ("arrowY".equals(cr.getGeometry().getName()) ) {
|
} else if ("arrowY".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(0,1,0);
|
return ARROW_Y;
|
||||||
} else if ("arrowZ".equals(cr.getGeometry().getName()) ) {
|
} else if ("arrowZ".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(0,1,0);
|
return ARROW_Z;
|
||||||
} else if ("quadXY".equals(cr.getGeometry().getName()) ) {
|
} else if ("quadXY".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(1,1,0);
|
return QUAD_XY;
|
||||||
} else if ("quadXZ".equals(cr.getGeometry().getName()) ) {
|
} else if ("quadXZ".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(1,0,1);
|
return QUAD_XZ;
|
||||||
} else if ("quadYZ".equals(cr.getGeometry().getName()) ) {
|
} else if ("quadYZ".equals(cr.getGeometry().getName())) {
|
||||||
return new Vector3f(0,1,1);
|
return QUAD_YZ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -313,22 +283,24 @@ public abstract class SceneEditTool {
|
|||||||
protected void highlightAxisMarker(Camera camera, Vector2f screenCoord, AxisMarkerPickType axisMarkerPickType) {
|
protected void highlightAxisMarker(Camera camera, Vector2f screenCoord, AxisMarkerPickType axisMarkerPickType) {
|
||||||
setDefaultAxisMarkerColors();
|
setDefaultAxisMarkerColors();
|
||||||
Vector3f picked = pickAxisMarker(camera, screenCoord, axisPickType);
|
Vector3f picked = pickAxisMarker(camera, screenCoord, axisPickType);
|
||||||
if (picked == null)
|
if (picked == null) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (picked.equals(new Vector3f(1,0,0)))
|
if (picked == ARROW_X) {
|
||||||
axisMarker.getChild("arrowX").setMaterial(orangeMat);
|
axisMarker.getChild("arrowX").setMaterial(orangeMat);
|
||||||
else if (picked.equals(new Vector3f(0,1,0)))
|
} else if (picked == ARROW_Y) {
|
||||||
axisMarker.getChild("arrowY").setMaterial(orangeMat);
|
axisMarker.getChild("arrowY").setMaterial(orangeMat);
|
||||||
else if (picked.equals(new Vector3f(0,0,1)))
|
} else if (picked == ARROW_Z) {
|
||||||
axisMarker.getChild("arrowZ").setMaterial(orangeMat);
|
axisMarker.getChild("arrowZ").setMaterial(orangeMat);
|
||||||
else if (picked.equals(new Vector3f(1,1,0)))
|
} else if (picked == QUAD_XY) {
|
||||||
axisMarker.getChild("quadXY").setMaterial(orangeMat);
|
axisMarker.getChild("quadXY").setMaterial(orangeMat);
|
||||||
else if (picked.equals(new Vector3f(1,0,1)))
|
} else if (picked == QUAD_XZ) {
|
||||||
axisMarker.getChild("quadXZ").setMaterial(orangeMat);
|
axisMarker.getChild("quadXZ").setMaterial(orangeMat);
|
||||||
else if (picked.equals(new Vector3f(0,1,1)))
|
} else if (picked == QUAD_YZ) {
|
||||||
axisMarker.getChild("quadYZ").setMaterial(orangeMat);
|
axisMarker.getChild("quadYZ").setMaterial(orangeMat);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the axis marker that is selectable
|
* Create the axis marker that is selectable
|
||||||
@ -336,10 +308,10 @@ public abstract class SceneEditTool {
|
|||||||
protected Node createAxisMarker() {
|
protected Node createAxisMarker() {
|
||||||
float size = 2;
|
float size = 2;
|
||||||
float arrowSize = size;
|
float arrowSize = size;
|
||||||
float planeSize = size*0.7f;
|
float planeSize = size * 0.7f;
|
||||||
|
|
||||||
Quaternion YAW090 = new Quaternion().fromAngleAxis(-FastMath.PI/2, new Vector3f(0,1,0));
|
Quaternion YAW090 = new Quaternion().fromAngleAxis(-FastMath.PI / 2, new Vector3f(0, 1, 0));
|
||||||
Quaternion PITCH090 = new Quaternion().fromAngleAxis(FastMath.PI/2, new Vector3f(1,0,0));
|
Quaternion PITCH090 = new Quaternion().fromAngleAxis(FastMath.PI / 2, new Vector3f(1, 0, 0));
|
||||||
|
|
||||||
redMat = new Material(manager, "Common/MatDefs/Misc/Unshaded.j3md");
|
redMat = new Material(manager, "Common/MatDefs/Misc/Unshaded.j3md");
|
||||||
redMat.getAdditionalRenderState().setWireframe(true);
|
redMat.getAdditionalRenderState().setWireframe(true);
|
||||||
@ -374,124 +346,54 @@ public abstract class SceneEditTool {
|
|||||||
|
|
||||||
orangeMat = new Material(manager, "Common/MatDefs/Misc/Unshaded.j3md");
|
orangeMat = new Material(manager, "Common/MatDefs/Misc/Unshaded.j3md");
|
||||||
orangeMat.getAdditionalRenderState().setWireframe(false);
|
orangeMat.getAdditionalRenderState().setWireframe(false);
|
||||||
orangeMat.setColor("Color", new ColorRGBA(251f/255f, 130f/255f, 0f, 0.4f));
|
orangeMat.setColor("Color", new ColorRGBA(251f / 255f, 130f / 255f, 0f, 0.4f));
|
||||||
orangeMat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
|
orangeMat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
|
||||||
orangeMat.getAdditionalRenderState().setFaceCullMode(FaceCullMode.Off);
|
orangeMat.getAdditionalRenderState().setFaceCullMode(FaceCullMode.Off);
|
||||||
|
|
||||||
Node axis = new Node();
|
Node axis = new Node();
|
||||||
|
|
||||||
// create arrows
|
// create arrows
|
||||||
Geometry arrowX = new Geometry("arrowX", new Arrow(new Vector3f(arrowSize,0,0)));
|
Geometry arrowX = new Geometry("arrowX", new Arrow(new Vector3f(arrowSize, 0, 0)));
|
||||||
Geometry arrowY = new Geometry("arrowY", new Arrow(new Vector3f(0,arrowSize,0)));
|
Geometry arrowY = new Geometry("arrowY", new Arrow(new Vector3f(0, arrowSize, 0)));
|
||||||
Geometry arrowZ = new Geometry("arrowZ", new Arrow(new Vector3f(0,0,arrowSize)));
|
Geometry arrowZ = new Geometry("arrowZ", new Arrow(new Vector3f(0, 0, arrowSize)));
|
||||||
axis.attachChild(arrowX);
|
axis.attachChild(arrowX);
|
||||||
axis.attachChild(arrowY);
|
axis.attachChild(arrowY);
|
||||||
axis.attachChild(arrowZ);
|
axis.attachChild(arrowZ);
|
||||||
|
|
||||||
// create planes
|
// create planes
|
||||||
Geometry quadXY = new Geometry("quadXY", new Quad(planeSize, planeSize) );
|
quadXY = new Geometry("quadXY", new Quad(planeSize, planeSize));
|
||||||
Geometry quadXZ = new Geometry("quadXZ", new Quad(planeSize, planeSize) );
|
quadXZ = new Geometry("quadXZ", new Quad(planeSize, planeSize));
|
||||||
quadXZ.setLocalRotation(PITCH090);
|
quadXZ.setLocalRotation(PITCH090);
|
||||||
Geometry quadYZ = new Geometry("quadYZ", new Quad(planeSize, planeSize) );
|
quadYZ = new Geometry("quadYZ", new Quad(planeSize, planeSize));
|
||||||
quadYZ.setLocalRotation(YAW090);
|
quadYZ.setLocalRotation(YAW090);
|
||||||
axis.attachChild(quadXY);
|
// axis.attachChild(quadXY);
|
||||||
axis.attachChild(quadXZ);
|
// axis.attachChild(quadXZ);
|
||||||
axis.attachChild(quadYZ);
|
// axis.attachChild(quadYZ);
|
||||||
|
|
||||||
axis.setModelBound(new BoundingBox());
|
axis.setModelBound(new BoundingBox());
|
||||||
return axis;
|
return axis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void displayPlanes() {
|
||||||
|
axisMarker.attachChild(quadXY);
|
||||||
|
axisMarker.attachChild(quadXZ);
|
||||||
|
axisMarker.attachChild(quadYZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void hidePlanes() {
|
||||||
|
quadXY.removeFromParent();
|
||||||
|
quadXZ.removeFromParent();
|
||||||
|
quadYZ.removeFromParent();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
protected void setDefaultAxisMarkerColors() {
|
protected void setDefaultAxisMarkerColors() {
|
||||||
axisMarker.getChild("arrowX").setMaterial(redMat);
|
axisMarker.getChild("arrowX").setMaterial(redMat);
|
||||||
axisMarker.getChild("arrowY").setMaterial(blueMat);
|
axisMarker.getChild("arrowY").setMaterial(blueMat);
|
||||||
axisMarker.getChild("arrowZ").setMaterial(greenMat);
|
axisMarker.getChild("arrowZ").setMaterial(greenMat);
|
||||||
axisMarker.getChild("quadXY").setMaterial(yellowMat);
|
quadXY.setMaterial(yellowMat);
|
||||||
axisMarker.getChild("quadXZ").setMaterial(magentaMat);
|
quadXZ.setMaterial(magentaMat);
|
||||||
axisMarker.getChild("quadYZ").setMaterial(cyanMat);
|
quadYZ.setMaterial(cyanMat);
|
||||||
}
|
|
||||||
|
|
||||||
protected void setDefaultSelectionShapeColors() {
|
|
||||||
if (selectionShape != null) {
|
|
||||||
Material mat = new Material(SceneApplication.getApplication().getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
|
||||||
mat.getAdditionalRenderState().setWireframe(true);
|
|
||||||
mat.setColor("Color", new ColorRGBA(0.8f,0.8f,0.8f,0.3f));
|
|
||||||
mat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
|
|
||||||
selectionShape.setMaterial(mat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Spatial createSelectionShape(Node toolNode, Spatial spat) {
|
|
||||||
if (spat == null)
|
|
||||||
return null;
|
|
||||||
if (selectionShape != null) {
|
|
||||||
selectionShape.removeFromParent();
|
|
||||||
selectionShape = null;
|
|
||||||
}
|
|
||||||
if (spat instanceof Geometry) {
|
|
||||||
return getGeometrySelection(toolNode, (Geometry) spat);
|
|
||||||
} else if (spat.getControl(PhysicsControl.class) != null) {
|
|
||||||
return getPhysicsSelection(toolNode, spat);
|
|
||||||
} else {
|
|
||||||
return getBoxSelection(toolNode, spat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Geometry getGeometrySelection(Node toolNode, Geometry geom) {
|
|
||||||
Mesh mesh = geom.getMesh();
|
|
||||||
if (mesh == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Geometry selectionGeometry = new Geometry("selection_geometry_sceneviewer", mesh);
|
|
||||||
selectionGeometry.setLocalTransform(geom.getWorldTransform());
|
|
||||||
toolNode.attachChild(selectionGeometry);
|
|
||||||
return selectionGeometry;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Geometry getBoxSelection(Node toolNode, Spatial geom) {
|
|
||||||
BoundingVolume bound = geom.getWorldBound();
|
|
||||||
if (bound instanceof BoundingBox) {
|
|
||||||
BoundingBox bbox = (BoundingBox) bound;
|
|
||||||
Vector3f extent = new Vector3f();
|
|
||||||
bbox.getExtent(extent);
|
|
||||||
WireBox wireBox=new WireBox();
|
|
||||||
wireBox.fromBoundingBox(bbox);
|
|
||||||
Geometry selectionGeometry = new Geometry("selection_geometry_sceneviewer", wireBox);
|
|
||||||
selectionGeometry.setLocalTransform(geom.getWorldTransform());
|
|
||||||
toolNode.attachChild(selectionGeometry);
|
|
||||||
return selectionGeometry;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Spatial getPhysicsSelection(Node toolNode, Spatial geom) {
|
|
||||||
PhysicsCollisionObject control = geom.getControl(RigidBodyControl.class);
|
|
||||||
if (control == null) {
|
|
||||||
control = geom.getControl(VehicleControl.class);
|
|
||||||
}
|
|
||||||
if (control == null) {
|
|
||||||
control = geom.getControl(GhostControl.class);
|
|
||||||
}
|
|
||||||
if (control == null) {
|
|
||||||
control = geom.getControl(CharacterControl.class);
|
|
||||||
}
|
|
||||||
if (control == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Spatial selectionGeometry = DebugShapeFactory.getDebugShape(control.getCollisionShape());
|
|
||||||
if (selectionGeometry != null) {
|
|
||||||
selectionGeometry.setLocalTransform(geom.getWorldTransform());
|
|
||||||
toolNode.attachChild(selectionGeometry);
|
|
||||||
return selectionGeometry;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void detachSelectionShape() {
|
|
||||||
if (selectionShape != null) {
|
|
||||||
selectionShape.removeFromParent();
|
|
||||||
selectionShape = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -502,7 +404,4 @@ public abstract class SceneEditTool {
|
|||||||
public void setCamera(Camera camera) {
|
public void setCamera(Camera camera) {
|
||||||
this.camera = camera;
|
this.camera = camera;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,10 @@
|
|||||||
*/
|
*/
|
||||||
package com.jme3.gde.scenecomposer.tools;
|
package com.jme3.gde.scenecomposer.tools;
|
||||||
|
|
||||||
|
import com.jme3.asset.AssetManager;
|
||||||
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode;
|
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode;
|
||||||
import com.jme3.gde.core.undoredo.AbstractUndoableSceneEdit;
|
import com.jme3.gde.core.undoredo.AbstractUndoableSceneEdit;
|
||||||
|
import com.jme3.gde.scenecomposer.SceneComposerToolController;
|
||||||
import com.jme3.gde.scenecomposer.SceneEditTool;
|
import com.jme3.gde.scenecomposer.SceneEditTool;
|
||||||
import com.jme3.material.Material;
|
import com.jme3.material.Material;
|
||||||
import com.jme3.math.FastMath;
|
import com.jme3.math.FastMath;
|
||||||
@ -42,7 +44,7 @@ public class MoveTool extends SceneEditTool {
|
|||||||
|
|
||||||
|
|
||||||
public MoveTool() {
|
public MoveTool() {
|
||||||
axisPickType = AxisMarkerPickType.planeOnly;
|
axisPickType = AxisMarkerPickType.axisAndPlane;
|
||||||
setOverrideCameraControl(true);
|
setOverrideCameraControl(true);
|
||||||
|
|
||||||
float size = 1000;
|
float size = 1000;
|
||||||
@ -50,8 +52,18 @@ public class MoveTool extends SceneEditTool {
|
|||||||
g.setLocalTranslation(-size/2, -size/2, 0);
|
g.setLocalTranslation(-size/2, -size/2, 0);
|
||||||
plane = new Node();
|
plane = new Node();
|
||||||
plane.attachChild(g);
|
plane.attachChild(g);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void activate(AssetManager manager, Node toolNode, Node onTopToolNode, Spatial selectedSpatial, SceneComposerToolController toolController) {
|
||||||
|
super.activate(manager, toolNode, onTopToolNode, selectedSpatial, toolController);
|
||||||
|
displayPlanes();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -61,7 +73,7 @@ public class MoveTool extends SceneEditTool {
|
|||||||
pickedPlane = null; // mouse released, reset selection
|
pickedPlane = null; // mouse released, reset selection
|
||||||
offset = null;
|
offset = null;
|
||||||
if (wasDragging) {
|
if (wasDragging) {
|
||||||
actionPerformed(new MoveUndo(selectedSpatial, startLoc, lastLoc));
|
actionPerformed(new MoveUndo(toolController.getSelectedSpatial(), startLoc, lastLoc));
|
||||||
wasDragging = false;
|
wasDragging = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -90,19 +102,19 @@ public class MoveTool extends SceneEditTool {
|
|||||||
pickedPlane = null; // mouse released, reset selection
|
pickedPlane = null; // mouse released, reset selection
|
||||||
offset = null;
|
offset = null;
|
||||||
if (wasDragging) {
|
if (wasDragging) {
|
||||||
actionPerformed(new MoveUndo(selectedSpatial, startLoc, lastLoc));
|
actionPerformed(new MoveUndo(toolController.getSelectedSpatial(), startLoc, lastLoc));
|
||||||
wasDragging = false;
|
wasDragging = false;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedSpatial == null)
|
if (toolController.getSelectedSpatial() == null)
|
||||||
return;
|
return;
|
||||||
if (pickedPlane == null) {
|
if (pickedPlane == null) {
|
||||||
pickedPlane = pickAxisMarker(camera, screenCoord, axisPickType);
|
pickedPlane = pickAxisMarker(camera, screenCoord, axisPickType);
|
||||||
if (pickedPlane == null)
|
if (pickedPlane == null)
|
||||||
return;
|
return;
|
||||||
startLoc = selectedSpatial.getLocalTranslation().clone();
|
startLoc = toolController.getSelectedSpatial().getLocalTranslation().clone();
|
||||||
|
|
||||||
if (pickedPlane.equals(new Vector3f(1,1,0)))
|
if (pickedPlane.equals(new Vector3f(1,1,0)))
|
||||||
plane.setLocalRotation(XY);
|
plane.setLocalRotation(XY);
|
||||||
@ -122,8 +134,8 @@ public class MoveTool extends SceneEditTool {
|
|||||||
|
|
||||||
Vector3f newPos = planeHit.subtract(offset);
|
Vector3f newPos = planeHit.subtract(offset);
|
||||||
lastLoc = newPos;
|
lastLoc = newPos;
|
||||||
selectedSpatial.setLocalTranslation(newPos);
|
toolController.getSelectedSpatial().setLocalTranslation(newPos);
|
||||||
updateToolsTransformation(selectedSpatial);
|
updateToolsTransformation();
|
||||||
|
|
||||||
wasDragging = true;
|
wasDragging = true;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
package com.jme3.gde.scenecomposer.tools;
|
package com.jme3.gde.scenecomposer.tools;
|
||||||
|
|
||||||
import com.jme3.gde.core.scene.SceneApplication;
|
import com.jme3.gde.core.scene.SceneApplication;
|
||||||
|
import com.jme3.gde.core.sceneexplorer.SceneExplorerTopComponent;
|
||||||
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode;
|
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode;
|
||||||
import com.jme3.gde.scenecomposer.SceneEditTool;
|
import com.jme3.gde.scenecomposer.SceneEditTool;
|
||||||
import com.jme3.math.Vector2f;
|
import com.jme3.math.Vector2f;
|
||||||
@ -31,16 +32,19 @@ public class SelectTool extends SceneEditTool {
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
|
// System.out.println(rootNode.getChild(result).getName());
|
||||||
|
// SceneExplorerTopComponent.findInstance().setActivatedNodes(new org.openide.nodes.Node[]{rootNode.getChild(result)});
|
||||||
SceneApplication.getApplication().setCurrentFileNode(rootNode.getChild(result));
|
SceneApplication.getApplication().setCurrentFileNode(rootNode.getChild(result));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
// SceneExplorerTopComponent.findInstance().setActivatedNodes(new org.openide.nodes.Node[]{rootNode});
|
||||||
SceneApplication.getApplication().setCurrentFileNode(rootNode);
|
SceneApplication.getApplication().setCurrentFileNode(rootNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
replaceSelectionShape(result);
|
updateToolsTransformation();
|
||||||
updateToolsTransformation(selectedSpatial);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user