|
@@ -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
|
|
|
*/
|