diff --git a/craft3data/src/com/hiveworkshop/wc3/gui/modelviewer/camera/CameraManager.java b/craft3data/src/com/hiveworkshop/wc3/gui/modelviewer/camera/CameraManager.java index 09b01c650..99965e81f 100644 --- a/craft3data/src/com/hiveworkshop/wc3/gui/modelviewer/camera/CameraManager.java +++ b/craft3data/src/com/hiveworkshop/wc3/gui/modelviewer/camera/CameraManager.java @@ -32,6 +32,7 @@ public abstract class CameraManager { protected Vector3f position; public Vector3f target; protected Vector3f worldUp; + protected Vector3f worldDown; protected Vector3f vecHeap; protected Vector4f vec4Heap; protected Quaternion quatHeap; @@ -51,6 +52,7 @@ public void setupCamera(final ViewerCamera camera/* final Scene scene */) { this.position = new Vector3f(); this.target = new Vector3f(0, 0, 0); this.worldUp = new Vector3f(0, 0, 1); + this.worldDown = new Vector3f(0, 0, -1); this.vecHeap = new Vector3f(); this.vec4Heap = new Vector4f(); this.quatHeap = new Quaternion(); diff --git a/craft3data/src/com/hiveworkshop/wc3/gui/modelviewer/camera/PortraitCameraManager.java b/craft3data/src/com/hiveworkshop/wc3/gui/modelviewer/camera/PortraitCameraManager.java index fc1855f8a..89bc41cbf 100644 --- a/craft3data/src/com/hiveworkshop/wc3/gui/modelviewer/camera/PortraitCameraManager.java +++ b/craft3data/src/com/hiveworkshop/wc3/gui/modelviewer/camera/PortraitCameraManager.java @@ -60,7 +60,8 @@ public void updateCamera() { } this.camera.perspective(fieldOfView, this.camera.getAspect(), nearClip, farClip); - this.camera.moveToAndFace(this.position, this.target, this.worldUp); + this.camera.moveToAndFace(this.position, this.target, + (this.horizontalAngle < 0) || (this.horizontalAngle > Math.PI) ? this.worldDown : this.worldUp); } public void setModelInstance(final RenderModel modelInstance, final Camera camera) { @@ -68,7 +69,8 @@ public void setModelInstance(final RenderModel modelInstance, final Camera camer if (modelInstance == null) { this.modelCamera = null; reset(); - } else if (camera != null) { + } + else if (camera != null) { this.modelCamera = camera; fieldOfView = (float) this.modelCamera.getFieldOfView() * 0.75f; nearClip = (float) this.modelCamera.getNearClip();