From dce400da7c65d659129abf9bc6e8f38b360a63d2 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Mon, 26 Aug 2019 20:13:01 -0400
Subject: [PATCH] Fix camera version + VR using spacebar.
---
ObjEditor.java | 29 +++++++++++++-
CameraPane.java | 36 +++++++++++++-----
Globals.java | 2 +
GroupEditor.java | 4 +-
cMaterial.java | 1
Object3D.java | 21 +++++++---
6 files changed, 71 insertions(+), 22 deletions(-)
diff --git a/CameraPane.java b/CameraPane.java
index b983dd6..68bd5e4 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -9840,7 +9840,10 @@
DrawSkyBox(gl, (float)rati);
gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB);
gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB);
- accPerspective(gl, renderCamera.shaper_fovy / ratio,
+
+ boolean vr = capsLocked && !lightMode;
+
+ accPerspective(gl, renderCamera.shaper_fovy / ratio * (vr ? 2 : 1),
ratio,
//near_plane, far_plane,
renderCamera.shaper_zNear * renderCamera.Distance(), renderCamera.shaper_zFar * renderCamera.Distance(),
@@ -11397,7 +11400,9 @@
//gl.glOrtho(-BOOST, BOOST, -BOOST, BOOST, 0.001, 1000);
} else
{
- glu.gluPerspective(cam.shaper_fovy / ratio, ratio, cam.shaper_zNear * cam.Distance(), cam.shaper_zFar * cam.Distance());
+ boolean vr = capsLocked && !lightMode;
+
+ glu.gluPerspective(cam.shaper_fovy / ratio * (vr ? 2 : 1), ratio, cam.shaper_zNear * cam.Distance(), cam.shaper_zFar * cam.Distance());
}
}
@@ -14250,10 +14255,12 @@
return;
}
- boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
+ //boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
+
+ boolean vr = capsLocked && !lightMode;
// TIMER
- if (ZOOMBOXMODE && !wheeltimer.isRunning() && e.getModifiersEx() == 0 && !capsLocked) // VR
+ if (ZOOMBOXMODE && !wheeltimer.isRunning() && e.getModifiersEx() == 0 && !vr) // VR
{
keepboxmode = BOXMODE;
keepsupport = SUPPORT;
@@ -15239,8 +15246,10 @@
mouseMode |= ZOOM;
}
- boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
- if (capsLocked) // || (modifiers & META) == META)
+ //boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
+ boolean vr = capsLocked && !lightMode;
+
+ if (vr) // || (modifiers & META) == META)
{
mouseMode |= VR; // BACKFORTH;
}
@@ -15456,8 +15465,8 @@
RevertCamera();
repaint();
break;
- case 'l':
- //case 'L':
+ //case 'l':
+ case 'L':
if (lightMode)
{
lightMode = false;
@@ -15515,8 +15524,8 @@
break;
case 'O':
// Too dangerous. Use menu. Globals.drawMode = OCCLUSION; // WARNING
- repaint();
- break;
+ //repaint();
+ //break;
case 'o':
OCCLUSION_CULLING ^= true;
System.out.println("OCCLUSION CULLING = " + OCCLUSION_CULLING);
@@ -15608,6 +15617,10 @@
// kompactbit = 6;
// break;
case ' ':
+ capsLocked ^= true;
+ repaint();
+ break;
+ case 'l':
lightMode ^= true;
Globals.lighttouched = true;
manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera;
@@ -17911,6 +17924,9 @@
static boolean DEBUG_SELECTION = false;
boolean OCCLUSION_CULLING = false; //true;
public boolean lightMode = false;
+
+ public boolean capsLocked = false; // VR
+
static public int indexcount = 0;
/*static*/ cColor vertexOcclusion = new cColor();
//private int selection_view = -1;
diff --git a/Globals.java b/Globals.java
index 7832547..17bae5d 100644
--- a/Globals.java
+++ b/Globals.java
@@ -1,6 +1,8 @@
public class Globals
{
+ static boolean SHOWINFO = true;
+
static boolean ADVANCED = false; // false;
static boolean NIMBUSLAF = false; // false;
diff --git a/GroupEditor.java b/GroupEditor.java
index c1f3bea..2e6edb6 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -5374,7 +5374,7 @@
if (tps != null && tps.length > 0 && tps[0].getLastPathComponent() instanceof Camera)
// a camera
{
- if (tps[0].getLastPathComponent() != Globals.theRenderer.LightCamera()) // Crash the camera because of invalid lightspace
+ if (tps[0].getLastPathComponent() != Globals.theRenderer.LightCamera()) // Crashes the camera because of invalid lightspace
{
CameraPane.camerachangeframe = 0; // don't refuse it
Globals.theRenderer.SetCamera((Camera) tps[0].getLastPathComponent());
@@ -5426,7 +5426,7 @@
void refreshContents(boolean cp)
{
- if (Globals.ADVANCED)
+ if (Globals.SHOWINFO)
//if (objectPanel.getSelectedIndex() == 2) // objectPanel.indexOfTab("Info"))
if (!Globals.MOUSEDRAGGED && group.selection != null) // && !Globals.TIMERRUNNING)
{
diff --git a/ObjEditor.java b/ObjEditor.java
index fd5504d..68657fd 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -1882,7 +1882,7 @@
tabbedPane.add(creditsPanel);
tabbedPane.setToolTipTextAt(3, "Credits");
- if (Globals.ADVANCED)
+ if (Globals.SHOWINFO)
{
objectPanel.add(infoPanel);
objectPanel.setIconAt(5, GetIcon("icons/info.png"));
@@ -4469,6 +4469,8 @@
CopyChanged(copy);
SetVersionStates();
+
+ SetCameras();
}
public boolean Save(boolean user)
@@ -4547,6 +4549,11 @@
void RefreshSelection()
{
Object3D selection = new Object3D();
+
+ if (objEditor.copy.selection == null)
+ {
+ objEditor.copy.selection = new Object3D();
+ }
for (int i = 0; i < objEditor.copy.selection.size(); i++)
{
@@ -4682,7 +4689,7 @@
// Option?
Replace();
- System.err.println("Undo");
+ //System.err.println("Previous");
//cRadio tab = GetCurrentTab();
@@ -4711,6 +4718,8 @@
SetVersionStates();
+ SetCameras();
+
return true;
}
@@ -4730,6 +4739,8 @@
CopyChanged(copy);
SetVersionStates();
+
+ SetCameras();
return true;
}
@@ -4771,9 +4782,20 @@
//if (!tab.user[tab.versionindex])
// tab.graphs[tab.versionindex] = null;
- SetVersionStates();
+ SetVersionStates();
+
+ SetCameras();
}
+ void SetCameras()
+ {
+ Camera neweye = (Camera)copy.GetObject(cameraView.cameras[0].GetUUID());
+ Camera newlight = (Camera)copy.GetObject(cameraView.LightCamera().GetUUID());
+
+ cameraView.SetCamera(neweye);
+ cameraView.SetLight(newlight);
+ }
+
void ImportGFD()
{
FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD);
@@ -5119,6 +5141,7 @@
copy.versionindex = version;
CopyChanged(copy);
SetVersionStates();
+ SetCameras();
}
return;
diff --git a/Object3D.java b/Object3D.java
index 9d52cb0..b8c4bc0 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -194,6 +194,8 @@
{
Object3D o;
+ boolean isnew = false;
+
if (hashtable.containsKey(GetUUID()))
{
o = hashtable.get(GetUUID());
@@ -206,6 +208,8 @@
}
else
{
+ isnew = true;
+
o = new Object3D("copy of " + this.name);
hashtable.put(GetUUID(), o);
@@ -222,12 +226,15 @@
blockloop = false;
}
-
- ExtractBigData(o);
+
+ if (isnew)
+ ExtractBigData(o);
}
void ExtractBigData(Object3D o)
{
+ //System.err.println("ExtractBigData : " + this + " --> " + o);
+
if (o.bRep != null)
Grafreed.Assert(o.bRep == this.bRep);
@@ -238,8 +245,8 @@
// o.bRep.support = null;
// }
o.selection = this.selection;
- o.versionlist = this.versionlist;
- o.versionindex = this.versionindex;
+ //o.versionlist = this.versionlist;
+ //o.versionindex = this.versionindex;
if (this.support != null)
{
@@ -355,6 +362,8 @@
void RestoreBigData(Object3D o)
{
+ //System.err.println("RestoreBigData : " + this + " <-- " + o);
+
this.bRep = o.bRep;
if (this.support != null && o.transientrep != null)
{
@@ -363,8 +372,8 @@
this.selection = o.selection;
- this.versionlist = o.versionlist;
- this.versionindex = o.versionindex;
+ //this.versionlist = o.versionlist;
+ //this.versionindex = o.versionindex;
// July 2019 if (this.bRep != null)
// this.bRep.support = o.transientrep;
// this.support = o.support;
diff --git a/cMaterial.java b/cMaterial.java
index c84b510..0d302bd 100644
--- a/cMaterial.java
+++ b/cMaterial.java
@@ -41,7 +41,6 @@
public cMaterial(cMaterial mat)
{
- this();
if (mat != null)
{
Set(mat);
--
Gitblit v1.6.2