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