From 64e20f390e4b8e58bd0006dde8fa10fba1dac1d5 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Fri, 16 Aug 2019 13:25:19 -0400
Subject: [PATCH] Fix box and VR keys.
---
ObjEditor.java | 31 +++++++--
cubemaps/default-skyboxes/rgb2/preview.jpg | 0
Box.java | 4
Camera.java | 2
Grid.java | 2
cubemaps/default-skyboxes/rgb2/negy.jpg | 0
cubemaps/default-skyboxes/rgb2/posy.jpg | 0
Grafreed.java | 3
BoundaryRep.java | 2
CameraPane.java | 66 +++++++++++++++++----
GroupEditor.java | 29 ++++++---
cubemaps/default-skyboxes/rgb2/negx.jpg | 0
cubemaps/default-skyboxes/rgb2/negz.jpg | 0
cubemaps/default-skyboxes/rgb2/posz.jpg | 0
Object3D.java | 23 +++++--
cubemaps/default-skyboxes/rgb2/posx.jpg | 0
icons/empty.png | 0
17 files changed, 117 insertions(+), 45 deletions(-)
diff --git a/BoundaryRep.java b/BoundaryRep.java
index 44b0ba9..5e5371f 100644
--- a/BoundaryRep.java
+++ b/BoundaryRep.java
@@ -2000,7 +2000,7 @@
// Warning: faster but dangerous
if (v.weights != null && v.weights[j]
// == 0)
- < 0.001 * v.totalweight)
+ < 0.0001 * v.totalweight)
{
//testweight += v.weights[j-1];
continue;
diff --git a/Box.java b/Box.java
index 3191b3e..b674d00 100644
--- a/Box.java
+++ b/Box.java
@@ -106,10 +106,10 @@
cVector minima;
cVector maxima;
static float umap[] = {
- 0, 1, 0, 1, 1, 0, 1, 0
+ 0, 1, 0, 1, 1, 0, 1, 0,
};
static float vmap[] = {
- 0, 0, 1, 1, 1, 1, 0, 0
+ 1, 1, 0, 0, 1, 1, 0, 0,
};
static int faces[][] = {
{
diff --git a/Camera.java b/Camera.java
index c2d8efa..b729918 100644
--- a/Camera.java
+++ b/Camera.java
@@ -319,7 +319,7 @@
location.set(lookAt);
lookAt.set(cStatic.point1);
- computeTransform();
+ //computeTransform();
}
//synchronized // june 2014
diff --git a/CameraPane.java b/CameraPane.java
index ebdca60..8acf68e 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -11088,7 +11088,7 @@
{
if (cubemaprgb == null)
{
- cubemaprgb = LoadSkybox("cubemaps/default-skyboxes/rgb" + "/", "jpg", false);
+ cubemaprgb = LoadSkybox("cubemaps/default-skyboxes/rgb2" + "/", "jpg", false);
}
cubemap = cubemaprgb;
@@ -13419,8 +13419,12 @@
program = programmin;
}
- System.out.print("Program #" + mode + "; instructions = " + program.split(";").length + "; length = " + program.length());
- System.out.println(" - " + (mode >> 3) + " lights; " + ((mode & 2) == 2 ? "anisoUV " : "") + ((mode & 4) == 4 ? "SoftShadow " : ""));
+ if (Globals.DEBUG)
+ {
+ System.out.print("Program #" + mode + "; instructions = " + program.split(";").length + "; length = " + program.length());
+ System.out.println(" - " + (mode >> 3) + " lights; " + ((mode & 2) == 2 ? "anisoUV " : "") + ((mode & 4) == 4 ? "SoftShadow " : ""));
+ }
+
loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program);
//gl.glNewList(displayListID, GL.GL_COMPILE);
@@ -13467,7 +13471,8 @@
"\n" +
"END\n";
- System.out.println("Program shadow #" + 0 + "; length = " + program.length());
+ if (Globals.DEBUG)
+ System.out.println("Program shadow #" + 0 + "; length = " + program.length());
loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program);
//gl.glNewList(displayListID, GL.GL_COMPILE);
@@ -14666,11 +14671,17 @@
void GoDown(int mod)
{
MODIFIERS |= COMMAND;
+ boolean isVR = (mouseMode&VR)!=0;
/**/
if((mod&SHIFT) == SHIFT)
- manipCamera.BackForth(0, -speed*delta, 0); // getWidth());
+ {
+ if (isVR)
+ manipCamera.RotateInterest(0, -speed);
+ else
+ manipCamera.RotatePosition(0, -speed);
+ }
else
- manipCamera.RotatePosition(0, -speed);
+ manipCamera.BackForth(0, -speed*delta, isVR?1000:0); // getWidth());
/**/
if ((mod & SHIFT) == SHIFT)
{
@@ -14680,6 +14691,8 @@
mouseMode |= BACKFORTH;
}
+ targetLookAt.set(manipCamera.lookAt);
+
//prevX = X = anchorX;
prevY = Y = anchorY - (int) (renderCamera.Distance());
}
@@ -14688,10 +14701,17 @@
{
MODIFIERS |= COMMAND;
/**/
+ boolean isVR = (mouseMode&VR)!=0;
+
if((mod&SHIFT) == SHIFT)
- manipCamera.BackForth(0, speed*delta, 0); // getWidth());
+ {
+ if (isVR)
+ manipCamera.RotateInterest(0, speed);
+ else
+ manipCamera.RotatePosition(0, speed);
+ }
else
- manipCamera.RotatePosition(0, speed);
+ manipCamera.BackForth(0, speed*delta, isVR?1000:0); // getWidth());
/**/
if ((mod & SHIFT) == SHIFT)
{
@@ -14701,6 +14721,8 @@
mouseMode |= BACKFORTH;
}
+ targetLookAt.set(manipCamera.lookAt);
+
//prevX = X = anchorX;
prevY = Y = anchorY + (int) (renderCamera.Distance());
}
@@ -14710,9 +14732,14 @@
MODIFIERS |= COMMAND;
/**/
if((mod&SHIFT) == SHIFT)
- manipCamera.Translate(speed*delta, 0, getWidth());
+ manipCamera.Translate(speed*delta, 0, getWidth());
else
- manipCamera.RotatePosition(speed, 0);
+ {
+ if ((mouseMode&VR)!=0)
+ manipCamera.RotateInterest(-speed, 0);
+ else
+ manipCamera.RotatePosition(speed, 0);
+ }
/**/
if ((mod & SHIFT) == SHIFT)
{
@@ -14722,6 +14749,8 @@
mouseMode |= ROTATE;
} // TRANSLATE;
+ targetLookAt.set(manipCamera.lookAt);
+
prevX = X = anchorX - 10; // (int)(10*renderCamera.Distance());
prevY = Y = anchorY;
}
@@ -14731,9 +14760,15 @@
MODIFIERS |= COMMAND;
/**/
if((mod&SHIFT) == SHIFT)
- manipCamera.Translate(-speed*delta, 0, getWidth());
+ manipCamera.Translate(-speed*delta, 0, getWidth());
else
- manipCamera.RotatePosition(-speed, 0);
+ {
+ if ((mouseMode&VR)!=0)
+ manipCamera.RotateInterest(speed, 0);
+ else
+ manipCamera.RotatePosition(-speed, 0);
+ }
+
/**/
if ((mod & SHIFT) == SHIFT)
{
@@ -14743,6 +14778,8 @@
mouseMode |= ROTATE;
} // TRANSLATE;
+ targetLookAt.set(manipCamera.lookAt);
+
prevX = X = anchorX + 10; // (int)(10*renderCamera.Distance());
prevY = Y = anchorY;
}
@@ -16127,7 +16164,7 @@
{
switch (hitSomething)
{
- case Object3D.hitCenter: gr.setColor(Color.pink);
+ case Object3D.hitCenter: gr.setColor(Color.white);
gr.drawLine(X, Y, info.bounds.width/2, info.bounds.height/2);
break;
case Object3D.hitRotate: gr.setColor(Color.yellow);
@@ -16153,7 +16190,7 @@
if (hasMarquee)
{
gr.setXORMode(Color.white);
- gr.setColor(Color.red);
+ gr.setColor(Color.white);
if (!firstime)
{
gr.drawRect(prevmarqX, prevmarqY, prevmarqW, prevmarqH);
@@ -17329,6 +17366,7 @@
public void init(GLAutoDrawable drawable)
{
+ if (Globals.DEBUG)
System.out.println("shadow buffer init");
GL gl = drawable.getGL();
diff --git a/Grafreed.java b/Grafreed.java
index 8896325..99344db 100644
--- a/Grafreed.java
+++ b/Grafreed.java
@@ -676,7 +676,8 @@
public static void main(String argv[])
{
- String osArch = System.getProperty("os.arch");
+ String osArch = System.getProperty("os.arch");
+ if (Globals.DEBUG)
System.out.println("os.arch = " + osArch);
if (argv.length == 0)
diff --git a/Grid.java b/Grid.java
index ab3815c..f4023e6 100644
--- a/Grid.java
+++ b/Grid.java
@@ -69,7 +69,7 @@
double vFlip(double v)
{
- return v;
+ return 1-v;
}
Vertex biparamFunction(double u, double v)
diff --git a/GroupEditor.java b/GroupEditor.java
index 03991c3..cff60a6 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -570,9 +570,6 @@
//menu.add("-");
oe.jTree.popup.addSeparator();
- deleteItem = oe.jTree.popup.add(new JMenuItem("Delete"));
- deleteItem.addActionListener(this);
-
if (Globals.ADVANCED)
{
// Deletes the cameras...
@@ -706,15 +703,17 @@
setMasterItem.addActionListener(this);
}
- oe.menuBar.add(menu = new Menu("Group"));
-// grabItem = menu.add(new MenuItem("Grab"));
-// grabItem.addActionListener(this);
+ oe.menuBar.add(menu = new Menu("Order"));
+
backItem = menu.add(new MenuItem("Back"));
backItem.addActionListener(this);
frontItem = menu.add(new MenuItem("Front"));
frontItem.addActionListener(this);
// compositeItem = menu.add(new MenuItem("Composite"));
// compositeItem.addActionListener(this);
+
+ grabItem = oe.jTree.popup.add(new JMenuItem("Group"));
+ grabItem.addActionListener(this);
if (Globals.ADVANCED)
{
@@ -723,6 +722,11 @@
}
ungroupItem = oe.jTree.popup.add(new JMenuItem("Ungroup"));
ungroupItem.addActionListener(this);
+
+ oe.jTree.popup.addSeparator();
+
+ deleteItem = oe.jTree.popup.add(new JMenuItem("Delete"));
+ deleteItem.addActionListener(this);
// menu.add("-");
//
@@ -1065,7 +1069,7 @@
collapseButton.setToolTipText("Collapse toolbar");
collapseButton.addActionListener(this);
- oe.toolbarPanel.add(maximize3DButton = GetButton("", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
+ oe.toolbarPanel.add(maximize3DButton = GetButton("icons/empty.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
maximize3DButton.setToolTipText("Maximize 3D view");
maximize3DButton.addActionListener(this);
@@ -1504,6 +1508,7 @@
oe.SetupViews();
+ if (Globals.DEBUG)
System.out.println("SetupViews");
DragSource.getDefaultDragSource().createDefaultDragGestureRecognizer(
oe.cameraView, DnDConstants.ACTION_COPY_OR_MOVE, this); // ACTION_LINK ??
@@ -4114,7 +4119,10 @@
copy.versionlist = new Object3D[100];
copy.versionindex = -1;
- Save(true);
+ // Cannot work with loops
+ // To fix this issue, first mark all nodes above the root,
+ // and check if any of these nodes are reachable below the root.
+ //Save(true);
}
SetVersionStates();
@@ -5359,7 +5367,8 @@
if (group.selection != null)
for (Enumeration e = group.selection.elements(); e.hasMoreElements();)
{
- if (!(e.nextElement() instanceof Composite))
+ Object next = e.nextElement();
+ if (!(next instanceof Composite)) // || (next instanceof GroupLeaf))
{
allComposites = false;
break;
@@ -6350,7 +6359,7 @@
private MenuItem transformGeometryItem;
private MenuItem transformChildrenItem;
private MenuItem hideItem;
- private MenuItem grabItem;
+ private JMenuItem grabItem;
private MenuItem backItem;
private MenuItem frontItem;
private MenuItem cameraItem;
diff --git a/ObjEditor.java b/ObjEditor.java
index d80b908..8e35dec 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -388,7 +388,8 @@
//parent = p;
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
- System.out.println("getFullScreenWindow? " + gd.getFullScreenWindow());
+ if (Globals.DEBUG)
+ System.out.println("getFullScreenWindow? " + gd.getFullScreenWindow());
//gd.setFullScreenWindow(this);
//setResizable(false);
//if (!isDisplayable())
@@ -1323,14 +1324,14 @@
liveCB = AddCheckBox(setupPanel, "Live", copy.live);
liveCB.setToolTipText("Animate object");
+ markCB = AddCheckBox(setupPanel, "Anim", copy.marked);
+ markCB.setToolTipText("Set target transform");
selectableCB = AddCheckBox(setupPanel, "Select", !copy.dontselect);
selectableCB.setToolTipText("Make object selectable");
// Return();
hideCB = AddCheckBox(setupPanel, "Hide", copy.hide);
hideCB.setToolTipText("Hide object");
- markCB = AddCheckBox(setupPanel, "Mark", copy.marked);
- markCB.setToolTipText("As animation target transform");
ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);
@@ -1532,6 +1533,7 @@
if (cam == null || !(copy.get(0) instanceof cGroup))
{
+ if (Globals.DEBUG)
System.out.println("CREATE CAMERAS");
cams = new cTemplate();
cams.name = "Cameras";
@@ -2196,7 +2198,7 @@
public void mouseClicked(MouseEvent e)
{
borderfadeField.setFloat(0.5);
- opacityField.setFloat(0.6);
+ opacityField.setFloat(0.75);
materialtouched = true;
applySelf();
@@ -2311,9 +2313,20 @@
cGridBag huepanel = new cGridBag();
cGridBag huelabel = new cGridBag();
- skin = GetLabel("icons/hue.png", false);
- skin.fit = true;
- huelabel.add(skin);
+ cLabel hue = GetLabel("icons/hue.png", false);
+ hue.fit = true;
+
+ hue.addMouseListener(new MouseAdapter()
+ {
+ public void mousePressed(MouseEvent e)
+ {
+ int x = e.getX();
+
+ colorField.setFloat((double)x / ((cLabel)e.getSource()).getWidth());
+ }
+ });
+
+ huelabel.add(hue);
huelabel.preferredWidth = 20;
huepanel.add(new cGridBag()); // Label
huepanel.add(huelabel); // Field/slider
@@ -5178,6 +5191,8 @@
if (previousVersionButton != null && copy.versionlist != null)
SetVersionStates();
+
+ cameraView.requestFocusInWindow();
}
static TweenManager tweenManager = new TweenManager();
@@ -5209,7 +5224,7 @@
// group = (Composite) group.get(0);
// }
- System.out.println("makeSomething of " + thing);
+ //System.out.println("makeSomething of " + thing);
/*
if (deselect && jList != null)
diff --git a/Object3D.java b/Object3D.java
index 3772174..054b3c1 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -7417,7 +7417,7 @@
boundary.y = spot.y - 30;
boundary.width = spot.width + 60;
boundary.height = spot.height + 60;
- clickInfo.g.setColor(Color.red);
+ clickInfo.g.setColor(Color.white);
int spotw = spot.x + spot.width;
int spoth = spot.y + spot.height;
clickInfo.g.fillRect(spot.x, spot.y, spot.width, spot.height);
@@ -7818,21 +7818,27 @@
case 3: // '\001'
if (modified || opposite)
{
+ if (modified && opposite)
+ LA.matScale(toParent, totalScale, totalScale, totalScale);
+ else
//LA.matScale(toParent, 1, hScale, vScale);
- LA.matScale(toParent, totalScale, 1, 1);
+ LA.matScale(toParent, totalScale, 1, 1);
} // vScale, 1);
else
{
// EXCEPTION!
- LA.matScale(toParent, totalScale, totalScale, totalScale);
+ LA.matScale(toParent, 1, totalScale, totalScale);
} // vScale, 1);
break;
case 2: // '\002'
if (modified || opposite)
{
- //LA.matScale(toParent, hScale, 1, vScale);
- LA.matScale(toParent, 1, totalScale, 1);
+ if (modified && opposite)
+ LA.matScale(toParent, totalScale, totalScale, totalScale);
+ else
+ //LA.matScale(toParent, hScale, 1, vScale);
+ LA.matScale(toParent, 1, totalScale, 1);
} else
{
LA.matScale(toParent, totalScale, 1, totalScale);
@@ -7842,8 +7848,11 @@
case 1: // '\003'
if (modified || opposite)
{
- //LA.matScale(toParent, hScale, vScale, 1);
- LA.matScale(toParent, 1, 1, totalScale);
+ if (modified && opposite)
+ LA.matScale(toParent, totalScale, totalScale, totalScale);
+ else
+ //LA.matScale(toParent, hScale, vScale, 1);
+ LA.matScale(toParent, 1, 1, totalScale);
} else
{
LA.matScale(toParent, totalScale, totalScale, 1);
diff --git a/cubemaps/default-skyboxes/rgb2/negx.jpg b/cubemaps/default-skyboxes/rgb2/negx.jpg
new file mode 100644
index 0000000..2b06e65
--- /dev/null
+++ b/cubemaps/default-skyboxes/rgb2/negx.jpg
Binary files differ
diff --git a/cubemaps/default-skyboxes/rgb2/negy.jpg b/cubemaps/default-skyboxes/rgb2/negy.jpg
new file mode 100644
index 0000000..b6aca27
--- /dev/null
+++ b/cubemaps/default-skyboxes/rgb2/negy.jpg
Binary files differ
diff --git a/cubemaps/default-skyboxes/rgb2/negz.jpg b/cubemaps/default-skyboxes/rgb2/negz.jpg
new file mode 100644
index 0000000..59352a5
--- /dev/null
+++ b/cubemaps/default-skyboxes/rgb2/negz.jpg
Binary files differ
diff --git a/cubemaps/default-skyboxes/rgb2/posx.jpg b/cubemaps/default-skyboxes/rgb2/posx.jpg
new file mode 100644
index 0000000..5de7aaf
--- /dev/null
+++ b/cubemaps/default-skyboxes/rgb2/posx.jpg
Binary files differ
diff --git a/cubemaps/default-skyboxes/rgb2/posy.jpg b/cubemaps/default-skyboxes/rgb2/posy.jpg
new file mode 100644
index 0000000..4bf1945
--- /dev/null
+++ b/cubemaps/default-skyboxes/rgb2/posy.jpg
Binary files differ
diff --git a/cubemaps/default-skyboxes/rgb2/posz.jpg b/cubemaps/default-skyboxes/rgb2/posz.jpg
new file mode 100644
index 0000000..e69cf77
--- /dev/null
+++ b/cubemaps/default-skyboxes/rgb2/posz.jpg
Binary files differ
diff --git a/cubemaps/default-skyboxes/rgb2/preview.jpg b/cubemaps/default-skyboxes/rgb2/preview.jpg
new file mode 100644
index 0000000..0d9b7c0
--- /dev/null
+++ b/cubemaps/default-skyboxes/rgb2/preview.jpg
Binary files differ
diff --git a/icons/empty.png b/icons/empty.png
new file mode 100644
index 0000000..0472888
--- /dev/null
+++ b/icons/empty.png
Binary files differ
--
Gitblit v1.6.2