From 879a0e25e793df3fa6bca6c875d9b0d9523cfde9 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Mon, 27 Jun 2005 18:44:36 +0000 Subject: [PATCH] Bound the camera into the pan limits on every operation that changes its location. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3626 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../threerings/jme/input/GodViewHandler.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/java/com/threerings/jme/input/GodViewHandler.java b/src/java/com/threerings/jme/input/GodViewHandler.java index 706b9ddd9..35e541dc7 100644 --- a/src/java/com/threerings/jme/input/GodViewHandler.java +++ b/src/java/com/threerings/jme/input/GodViewHandler.java @@ -150,8 +150,7 @@ public class GodViewHandler extends InputHandler public void performAction (InputActionEvent evt) { Vector3f loc = _camera.getLocation(); loc.addLocal(_rydir.mult(speed * evt.getTime(), _temp)); - boundPan(loc); - _camera.setLocation(loc); + _camera.setLocation(boundPan(loc)); _camera.update(); } }; @@ -162,8 +161,7 @@ public class GodViewHandler extends InputHandler public void performAction (InputActionEvent evt) { Vector3f loc = _camera.getLocation(); loc.subtractLocal(_rydir.mult(speed * evt.getTime(), _temp)); - boundPan(loc); - _camera.setLocation(loc); + _camera.setLocation(boundPan(loc)); _camera.update(); } }; @@ -174,8 +172,7 @@ public class GodViewHandler extends InputHandler public void performAction (InputActionEvent evt) { Vector3f loc = _camera.getLocation(); loc.subtractLocal(_rxdir.mult(speed * evt.getTime(), _temp)); - boundPan(loc); - _camera.setLocation(loc); + _camera.setLocation(boundPan(loc)); _camera.update(); } }; @@ -186,8 +183,7 @@ public class GodViewHandler extends InputHandler public void performAction (InputActionEvent evt) { Vector3f loc = _camera.getLocation(); loc.addLocal(_rxdir.mult(speed * evt.getTime(), _temp)); - boundPan(loc); - _camera.setLocation(loc); + _camera.setLocation(boundPan(loc)); _camera.update(); } }; @@ -206,7 +202,7 @@ public class GodViewHandler extends InputHandler if (loc.z > _minZ) { _camera.getDirection().mult(speed * evt.getTime(), _temp); loc.addLocal(_temp); - _camera.setLocation(loc); + _camera.setLocation(boundPan(loc)); _camera.update(); } } @@ -220,7 +216,7 @@ public class GodViewHandler extends InputHandler if (loc.z < _maxZ) { _camera.getDirection().mult(speed * evt.getTime(), _temp); loc.subtractLocal(_temp); - _camera.setLocation(loc); + _camera.setLocation(boundPan(loc)); _camera.update(); } } @@ -287,7 +283,7 @@ public class GodViewHandler extends InputHandler } // and move the camera to its new location - _camera.setLocation(center.add(direction)); + _camera.setLocation(boundPan(center.add(direction))); _camera.update(); } @@ -299,10 +295,11 @@ public class GodViewHandler extends InputHandler return camera.getLocation().add(camera.getDirection().mult(dist)); } - protected void boundPan (Vector3f loc) + protected Vector3f boundPan (Vector3f loc) { loc.x = Math.max(Math.min(loc.x, _maxX), _minX); loc.y = Math.max(Math.min(loc.y, _maxY), _minY); + return loc; } protected abstract class CameraAction extends KeyInputAction