From f1e9e94b17cc44020918b430f4dc82ed9a336d94 Mon Sep 17 00:00:00 2001 From: "bre..ns" Date: Thu, 1 Sep 2011 00:14:31 +0000 Subject: [PATCH] scene edit axis marker now scales with size of selected spatial so it can be easily seen git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8140 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../jme3/gde/scenecomposer/SceneEditTool.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/SceneEditTool.java b/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/SceneEditTool.java index 77c79195b..8fff2dcf9 100644 --- a/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/SceneEditTool.java +++ b/sdk/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/SceneEditTool.java @@ -132,6 +132,7 @@ public abstract class SceneEditTool { if (toolController.getSelectedSpatial() != null) { axisMarker.setLocalTranslation(toolController.getSelectedSpatial().getWorldTranslation()); axisMarker.setLocalRotation(toolController.getSelectedSpatial().getWorldRotation()); + setAxisMarkerScale(toolController.getSelectedSpatial()); } else { axisMarker.setLocalTranslation(Vector3f.ZERO); axisMarker.setLocalRotation(Quaternion.IDENTITY); @@ -141,6 +142,23 @@ public abstract class SceneEditTool { }); } + /** + * Adjust the scale of the marker so it is relative to the size of the + * selected spatial. It will have a minimum scale of 2. + */ + private void setAxisMarkerScale(Spatial selected) { + if (selected != null) { + if (selected.getWorldBound() instanceof BoundingBox) { + BoundingBox bbox = (BoundingBox) selected.getWorldBound(); + float smallest = Math.min(Math.min(bbox.getXExtent(), bbox.getYExtent()), bbox.getZExtent()); + float scale = Math.max(1, smallest/2f); + axisMarker.setLocalScale(new Vector3f(scale,scale,scale)); + } + } else { + axisMarker.setLocalScale(new Vector3f(2,2,2)); + } + } + /** * The primary action for the tool gets activated */