diff --git a/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/ComposerCameraController.java b/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/ComposerCameraController.java index 7a889827d..a4a7f3eb4 100644 --- a/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/ComposerCameraController.java +++ b/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/ComposerCameraController.java @@ -1,44 +1,35 @@ /* - * Copyright (c) 2009-2010 jMonkeyEngine - * All rights reserved. + * Copyright (c) 2009-2010 jMonkeyEngine All rights reserved.

+ * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of 'jMonkeyEngine' nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer.

* Redistributions + * in binary form must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution.

* Neither the name of + * 'jMonkeyEngine' nor the names of its contributors may be used to endorse or + * promote products derived from this software without specific prior written + * permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT + * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.jme3.gde.scenecomposer; -import com.jme3.collision.CollisionResult; -import com.jme3.collision.CollisionResults; import com.jme3.gde.core.scene.SceneApplication; import com.jme3.gde.core.scene.controller.AbstractCameraController; import com.jme3.gde.core.sceneexplorer.nodes.JmeNode; +import com.jme3.gde.core.sceneviewer.SceneViewerTopComponent; import com.jme3.input.KeyInput; import com.jme3.input.event.KeyInputEvent; -import com.jme3.math.Ray; import com.jme3.math.Vector2f; import com.jme3.math.Vector3f; import com.jme3.renderer.Camera; @@ -68,55 +59,60 @@ public class ComposerCameraController extends AbstractCameraController { public void setToolController(SceneComposerToolController toolController) { this.toolController = toolController; } - + public boolean isToolUsesCameraControls() { return !toolController.isOverrideCameraControl(); } - + public Camera getCamera() { return cam; } - + @Override public void onKeyEvent(KeyInputEvent kie) { + //don't forget the super call + super.onKeyEvent(kie); if (kie.isPressed()) { - if ( KeyInput.KEY_LSHIFT == kie.getKeyCode() ) { + if (KeyInput.KEY_LSHIFT == kie.getKeyCode()) { forceCameraControls = true; } - } else if (kie.isReleased()){ - if ( KeyInput.KEY_LSHIFT == kie.getKeyCode() ) { + } else if (kie.isReleased()) { + if (KeyInput.KEY_LSHIFT == kie.getKeyCode()) { forceCameraControls = false; } } } - + @Override public void checkClick(int button, boolean pressed) { if (button == 0) { if (isEditButtonEnabled() && !forceCameraControls) { - toolController.doEditToolActivatedPrimary(new Vector2f(mouseX,mouseY), pressed, cam); + toolController.doEditToolActivatedPrimary(new Vector2f(mouseX, mouseY), pressed, cam); } } if (button == 1) { if (isEditButtonEnabled() && !forceCameraControls) { - toolController.doEditToolActivatedSecondary(new Vector2f(mouseX,mouseY), pressed, cam); + toolController.doEditToolActivatedSecondary(new Vector2f(mouseX, mouseY), pressed, cam); } } + + } - + @Override protected void checkDragged(int button, boolean pressed) { - if (button == 0) + if (button == 0) { toolController.doEditToolDraggedPrimary(new Vector2f(mouseX, mouseY), pressed, cam); - else if (button == 1) + } else if (button == 1) { toolController.doEditToolDraggedSecondary(new Vector2f(mouseX, mouseY), pressed, cam); + } } - + @Override protected void checkMoved() { toolController.doEditToolMoved(new Vector2f(mouseX, mouseY), cam); } - + @Override public void onAnalog(String string, float f1, float f) { if ("MouseAxisX".equals(string)) { @@ -169,6 +165,4 @@ public class ComposerCameraController extends AbstractCameraController { zoomCamera(-.1f); } } - - } diff --git a/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/SelectTool.java b/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/SelectTool.java index 299900d86..d4aa1bbbe 100644 --- a/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/SelectTool.java +++ b/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/tools/SelectTool.java @@ -1,17 +1,15 @@ /* - * To change this template, choose Tools | Templates - * and open the template in the editor. + * To change this template, choose Tools | Templates and open the template in + * the editor. */ package com.jme3.gde.scenecomposer.tools; import com.jme3.gde.core.scene.SceneApplication; import com.jme3.gde.core.sceneexplorer.nodes.JmeNode; import com.jme3.gde.scenecomposer.SceneEditTool; -import com.jme3.math.Quaternion; import com.jme3.math.Vector2f; import com.jme3.math.Vector3f; import com.jme3.scene.Spatial; -import java.util.concurrent.Callable; import org.openide.loaders.DataObject; /** @@ -22,15 +20,15 @@ public class SelectTool extends SceneEditTool { protected Spatial selected; private boolean wasDragging = false; - - + @Override public void actionPrimary(Vector2f screenCoord, boolean pressed, final JmeNode rootNode, DataObject dataObject) { - if (!pressed && !wasDragging) { + if (!pressed && !wasDragging) { // mouse released and wasn't dragging, select a new spatial final Spatial result = pickWorldSpatial(getCamera(), screenCoord, rootNode); - + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { if (result != null) { SceneApplication.getApplication().setCurrentFileNode(rootNode.getChild(result)); @@ -44,9 +42,8 @@ public class SelectTool extends SceneEditTool { replaceSelectionShape(result); updateToolsTransformation(selectedSpatial); } - } - + if (!pressed) { wasDragging = false; } @@ -56,7 +53,9 @@ public class SelectTool extends SceneEditTool { public void actionSecondary(final Vector2f screenCoord, boolean pressed, final JmeNode rootNode, DataObject dataObject) { if (!pressed && !wasDragging) { final Vector3f result = pickWorldLocation(getCamera(), screenCoord, rootNode); - toolController.doSetCursorLocation(result); + if (result != null) { + toolController.doSetCursorLocation(result); + } } if (!pressed) { wasDragging = false; @@ -65,7 +64,6 @@ public class SelectTool extends SceneEditTool { @Override public void mouseMoved(Vector2f screenCoord) { - } @Override @@ -77,5 +75,4 @@ public class SelectTool extends SceneEditTool { public void draggedSecondary(Vector2f screenCoord, boolean pressed, JmeNode rootNode, DataObject currentDataObject) { wasDragging = pressed; } - }