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