|
@@ -195,7 +195,8 @@ public class Camera implements Savable, Cloneable {
|
|
|
* store the value for field parallelProjection
|
|
|
*/
|
|
|
private boolean parallelProjection = true;
|
|
|
- protected Matrix4f projectionMatrixOverride;
|
|
|
+ protected Matrix4f projectionMatrixOverride = new Matrix4f();
|
|
|
+ private boolean overrideProjection;
|
|
|
protected Matrix4f viewMatrix = new Matrix4f();
|
|
|
protected Matrix4f projectionMatrix = new Matrix4f();
|
|
|
protected Matrix4f viewProjectionMatrix = new Matrix4f();
|
|
@@ -328,15 +329,9 @@ public class Camera implements Savable, Cloneable {
|
|
|
}
|
|
|
|
|
|
this.parallelProjection = cam.parallelProjection;
|
|
|
- if (cam.projectionMatrixOverride != null) {
|
|
|
- if (this.projectionMatrixOverride == null) {
|
|
|
- this.projectionMatrixOverride = cam.projectionMatrixOverride.clone();
|
|
|
- } else {
|
|
|
- this.projectionMatrixOverride.set(cam.projectionMatrixOverride);
|
|
|
- }
|
|
|
- } else {
|
|
|
- this.projectionMatrixOverride = null;
|
|
|
- }
|
|
|
+ this.overrideProjection = cam.overrideProjection;
|
|
|
+ this.projectionMatrixOverride.set(cam.projectionMatrixOverride);
|
|
|
+
|
|
|
this.viewMatrix.set(cam.viewMatrix);
|
|
|
this.projectionMatrix.set(cam.projectionMatrix);
|
|
|
this.viewProjectionMatrix.set(cam.viewProjectionMatrix);
|
|
@@ -395,7 +390,7 @@ public class Camera implements Savable, Cloneable {
|
|
|
|
|
|
TempVars vars = TempVars.get();
|
|
|
try {
|
|
|
- Matrix4f p = projectionMatrix.clone();
|
|
|
+ Matrix4f p = projectionMatrixOverride.set(projectionMatrix);
|
|
|
|
|
|
Matrix4f ivm = viewMatrix;
|
|
|
|
|
@@ -1091,7 +1086,13 @@ public class Camera implements Savable, Cloneable {
|
|
|
* @param projMatrix
|
|
|
*/
|
|
|
public void setProjectionMatrix(Matrix4f projMatrix) {
|
|
|
- projectionMatrixOverride = projMatrix;
|
|
|
+ if (projMatrix == null) {
|
|
|
+ overrideProjection = false;
|
|
|
+ projectionMatrixOverride.loadIdentity();
|
|
|
+ } else {
|
|
|
+ overrideProjection = true;
|
|
|
+ projectionMatrixOverride.set(projMatrix);
|
|
|
+ }
|
|
|
updateViewProjection();
|
|
|
}
|
|
|
|
|
@@ -1102,7 +1103,7 @@ public class Camera implements Savable, Cloneable {
|
|
|
* of the camera.
|
|
|
*/
|
|
|
public Matrix4f getProjectionMatrix() {
|
|
|
- if (projectionMatrixOverride != null) {
|
|
|
+ if (overrideProjection) {
|
|
|
return projectionMatrixOverride;
|
|
|
}
|
|
|
|
|
@@ -1113,7 +1114,7 @@ public class Camera implements Savable, Cloneable {
|
|
|
* Updates the view projection matrix.
|
|
|
*/
|
|
|
public void updateViewProjection() {
|
|
|
- if (projectionMatrixOverride != null) {
|
|
|
+ if (overrideProjection) {
|
|
|
viewProjectionMatrix.set(projectionMatrixOverride).multLocal(viewMatrix);
|
|
|
} else {
|
|
|
//viewProjectionMatrix.set(viewMatrix).multLocal(projectionMatrix);
|