From c5b599b48b333b34e554b464aefbca0b9bc66275 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 09 Jun 2019 02:04:44 -0400 Subject: [PATCH] Menu cleanup + transform feedback. --- GroupEditor.java | 301 ++++++++++++++++++++++++++++++------------------- 1 files changed, 184 insertions(+), 117 deletions(-) diff --git a/GroupEditor.java b/GroupEditor.java index 7fcc3f7..acdf1fc 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -74,7 +74,7 @@ this.copy = this.group = copy; //selectees = this.group.selectees; - SetupMenu2(objEditor); + SetupMenu2(this); //objEditor); SetupUI2(objEditor); objEditor.SetupUI(true); SetupViews(objEditor); @@ -148,23 +148,8 @@ //JTextField nameField; - void SetupMenu2(ObjEditor oe) + void SetupMenu2(GroupEditor oe) { - if (Globals.ADVANCED) - { - oe.cameraMenu.add(lookAtItem = new MenuItem("Set Interest")); - //cameraMenu.add(lookFromItem = new MenuItem("Look From Selection")); - //cameraMenu.add(switchItem = new MenuItem("Reverse View")); - editLeafItem = oe.cameraMenu.add(new MenuItem("Edit Leaf")); - oe.cameraMenu.add("-"); - openWindowItem = oe.cameraMenu.add(new MenuItem("Edit copy...")); - openWindowItem.addActionListener(this); - editLeafItem.addActionListener(this); - lookAtItem.addActionListener(this); - //lookFromItem.addActinoListener(this); - //switchItem.addActionListener(this); - } - Menu menu; oe.menuBar.add(menu = new Menu("Edit")); //editItem = menu.add(new MenuItem("Edit")); @@ -206,14 +191,97 @@ clearAllItem = menu.add(new MenuItem("Clear All")); clearAllItem.addActionListener(this); } + + menuBar.add(cameraMenu = new Menu("View")); + //cameraMenu.add(zBufferItem = new CheckboxMenuItem("Z Buffer")); + //zBufferItem.addActionListener(this); + //cameraMenu.add(normalLensItem = new MenuItem("Normal Lens")); + //normalLensItem.addActionListener(this); + cameraMenu.add(revertCameraItem = new MenuItem("Revert Camera")); + revertCameraItem.addActionListener(this); + + cameraMenu.add(toggleFullScreenItem = new CheckboxMenuItem("Full Screen")); + toggleFullScreenItem.addItemListener(this); + toggleFullScreenItem.setState(CameraPane.FULLSCREEN); + cameraMenu.add("-"); + + cameraMenu.add(toggleTextureItem = new CheckboxMenuItem("Texture")); + toggleTextureItem.addItemListener(this); + toggleTextureItem.setState(CameraPane.textureon); + + cameraMenu.add(toggleSwitchItem = new CheckboxMenuItem("Switch")); + toggleSwitchItem.addItemListener(this); + toggleSwitchItem.setState(CameraPane.SWITCH); + + cameraMenu.add(toggleHandleItem = new CheckboxMenuItem("Handles")); + toggleHandleItem.addItemListener(this); + toggleHandleItem.setState(CameraPane.HANDLES); + + cameraMenu.add(togglePaintItem = new CheckboxMenuItem("Paint mode")); + togglePaintItem.addItemListener(this); + togglePaintItem.setState(CameraPane.PAINTMODE); + + if (Globals.ADVANCED) + { + cameraMenu.add("-"); + cameraMenu.add(toggleLiveItem = new CheckboxMenuItem("Live")); + toggleLiveItem.addItemListener(this); + toggleLiveItem.setState(Globals.isLIVE()); + cameraMenu.add(stepItem = new MenuItem("Step")); + stepItem.addActionListener(this); + // cameraMenu.add(toggleDLItem = new CheckboxMenuItem("Display List")); + // toggleDLItem.addItemListener(this); + // toggleDLItem.setState(false); + + cameraMenu.add(toggleRenderItem = new CheckboxMenuItem("Render")); + toggleRenderItem.addItemListener(this); + toggleRenderItem.setState(!CameraPane.frozen); + + cameraMenu.add(toggleDebugItem = new CheckboxMenuItem("Debug")); + toggleDebugItem.addItemListener(this); + toggleDebugItem.setState(CameraPane.DEBUG); + + cameraMenu.add(toggleFrustumItem = new CheckboxMenuItem("Frustum")); + toggleFrustumItem.addItemListener(this); + toggleFrustumItem.setState(CameraPane.FRUSTUM); + + cameraMenu.add(toggleFootContactItem = new CheckboxMenuItem("Foot contact")); + toggleFootContactItem.addItemListener(this); + toggleFootContactItem.setState(CameraPane.FOOTCONTACT); + + cameraMenu.add(toggleTimelineItem = new CheckboxMenuItem("Timeline")); + toggleTimelineItem.addItemListener(this); + } + +// cameraMenu.add(toggleRootItem = new CheckboxMenuItem("Alternate Root")); +// toggleRootItem.addItemListener(this); +// toggleRootItem.setState(false); +// cameraMenu.add(animationItem = new CheckboxMenuItem("Animation")); +// animationItem.addItemListener(this); +// animationItem.setState(CameraPane.ANIMATION); + cameraMenu.add("-"); + cameraMenu.add(editCameraItem = new MenuItem("Freeze Camera")); + editCameraItem.addActionListener(this); + + if (Globals.ADVANCED) + { + oe.cameraMenu.add(lookAtItem = new MenuItem("Set Interest")); + //cameraMenu.add(lookFromItem = new MenuItem("Look From Selection")); + //cameraMenu.add(switchItem = new MenuItem("Reverse View")); + editLeafItem = oe.cameraMenu.add(new MenuItem("Edit Leaf")); + oe.cameraMenu.add("-"); + openWindowItem = oe.cameraMenu.add(new MenuItem("Edit copy...")); + openWindowItem.addActionListener(this); + editLeafItem.addActionListener(this); + lookAtItem.addActionListener(this); + //lookFromItem.addActinoListener(this); + //switchItem.addActionListener(this); + } + oe.menuBar.add(menu = new Menu("Setting")); if (Globals.ADVANCED) { - resetMeshItem = menu.add(new MenuItem("Reset All")); - resetMeshItem.addActionListener(this); - stepAllItem = menu.add(new MenuItem("Step All")); - stepAllItem.addActionListener(this); revertMeshItem = menu.add(new MenuItem("Revert Meshes")); revertMeshItem.addActionListener(this); resetreferencesItem = menu.add(new MenuItem("Reset Mesh References")); @@ -318,8 +386,12 @@ resetTransformItem.addActionListener(this); resetCentroidItem = menu.add(new MenuItem("Reset Centroid")); resetCentroidItem.addActionListener(this); - transformgeometryItem = menu.add(new MenuItem("Transform Geometry")); - transformgeometryItem.addActionListener(this); + resetCentroidXZItem = menu.add(new MenuItem("Reset Centroid XY")); + resetCentroidXZItem.addActionListener(this); + transformGeometryItem = menu.add(new MenuItem("Transform Geometry")); + transformGeometryItem.addActionListener(this); + transformChildrenItem = menu.add(new MenuItem("Transform Children")); + transformChildrenItem.addActionListener(this); oe.menuBar.add(menu = new Menu("Geometry")); genUVItem = menu.add(new MenuItem("Generate UV")); @@ -368,6 +440,10 @@ oe.menuBar.add(menu = new Menu("Attributes")); clearMaterialsItem = menu.add(new MenuItem("Clear Materials")); clearMaterialsItem.addActionListener(this); + resetAllItem = menu.add(new MenuItem("Reset All")); + resetAllItem.addActionListener(this); + stepAllItem = menu.add(new MenuItem("Step All")); + stepAllItem.addActionListener(this); menu.add("-"); liveleavesItem = menu.add(new MenuItem("Live Leaves")); liveleavesItem.addActionListener(this); @@ -422,35 +498,23 @@ sortbysizeItem.addActionListener(this); sortbynameItem = menu.add(new MenuItem("Sort by name")); sortbynameItem.addActionListener(this); + menu.add("-"); + shareGeometriesItem = menu.add(new MenuItem("Share Geometries")); + shareGeometriesItem.addActionListener(this); + mergeGeometriesItem = menu.add(new MenuItem("Merge Geometries")); + mergeGeometriesItem.addActionListener(this); if (Globals.ADVANCED) { - menu.add("-"); + // Pretty much the same as duplicate and clone. extractGeometriesItem = menu.add(new MenuItem("Link Geometry")); extractGeometriesItem.addActionListener(this); cloneGeometriesItem = menu.add(new MenuItem("Clone Geometry")); cloneGeometriesItem.addActionListener(this); - shareGeometriesItem = menu.add(new MenuItem("Share Geometry")); - shareGeometriesItem.addActionListener(this); - mergeGeometriesItem = menu.add(new MenuItem("Merge Geometry")); - mergeGeometriesItem.addActionListener(this); } oe.menuBar.add(menu = new Menu("Insert")); buildCreateMenu(menu); - oe.menuBar.add(menu = new Menu("Include")); - importOBJItem = menu.add(new MenuItem("OBJ file...")); - importOBJItem.addActionListener(this); - menu.add("-"); - import3DSItem = menu.add(new MenuItem("3DS file...")); - import3DSItem.addActionListener(this); - menu.add("-"); - importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D file...")); - importVRMLX3DItem.addActionListener(this); - menu.add("-"); - importGFDItem = menu.add(new MenuItem("GrafreeD file...")); - importGFDItem.addActionListener(this); - oe.menuBar.add(menu = new Menu("Tools")); buildToolsMenu(menu); } @@ -488,7 +552,7 @@ //this.AddOptions(oe.toolbarPanel, oe.aConstraints); oe.toolbarPanel.add(liveCB = new cCheckBox("Live", Globals.isLIVE())); //, oe.aConstraints); - liveCB.setToolTipText("Enabled animation"); + liveCB.setToolTipText("Enable animation"); liveCB.addItemListener(this); oe.toolbarPanel.add(oneStepButton = new cButton("Step", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); @@ -651,7 +715,7 @@ zoomBoxCB.setToolTipText("Display bounding boxes when moving the wheel"); zoomBoxCB.addItemListener(this); - if (Globals.ADVANCED) + if (true) // Globals.ADVANCED) { panel.add(supportCB = new cCheckBox("Support", CameraPane.SUPPORT)); //, constraints); supportCB.setToolTipText("Enable rigging"); @@ -724,6 +788,7 @@ buttonGroup.add(radioButton); radioButton.doClick(); } + void SetupViews(ObjEditor oe) { oe.SetupViews(); @@ -1849,31 +1914,6 @@ csg.addChild(child); child.addChild(csg); } else - - if (source == importGFDItem) - { - ImportGFD(); - } else - if (source == importVRMLX3DItem) - { - ImportVRMLX3D(); - } else - if (source == import3DSItem) - { - objEditor.ImportJME(new com.jmex.model.converters.MaxToJme(), "3ds", "Import 3DS"); - } else - if (source == importOBJItem) - { - //objEditor.ImportJME(new com.jmex.model.converters.ObjToJme(), "obj", "Import OBJ"); - FileDialog browser = new FileDialog(frame, "Import OBJ", FileDialog.LOAD); - browser.setVisible(true); - String filename = browser.getFile(); - if (filename != null && filename.length() > 0) - { - String fullname = browser.getDirectory() + filename; - makeSomething(ReadOBJ(fullname), true); - } - } else if (source == computeAOItem) { Globals.drawMode = CameraPane.OCCLUSION; @@ -2276,7 +2316,7 @@ { RevertMeshes(); } else - if (source == resetMeshItem) + if (source == resetAllItem) { ResetAll(); } else @@ -2614,9 +2654,13 @@ { SmoothMesh(); } else - if (source == transformgeometryItem) + if (source == transformGeometryItem) { TransformGeometry(); + } else + if (source == transformChildrenItem) + { + TransformChildren(); } else if (source == resetTransformItem) { @@ -2624,7 +2668,11 @@ } else if (source == resetCentroidItem) { - ResetCentroid(); + ResetCentroid(true); + } else + if (source == resetCentroidXZItem) + { + ResetCentroid(false); } else if (source == resetParentItem) { @@ -3066,7 +3114,9 @@ frontView.object = group; sideView.object = group; } - group.editWindow = this; + +// fix "+" issue group.editWindow = this; + /* currentLayout = radio.layout; if (currentLayout == null) @@ -3079,7 +3129,20 @@ //group.attributes = -1; ResetModel(); refreshContents(true); - } + } else if (event.getSource() == editCameraItem) + { + cameraView.ProtectCamera(); + cameraView.repaint(); + return; + } else if (event.getSource() == revertCameraItem) + { + cameraView.RevertCamera(); + cameraView.repaint(); + return; + // } else if (event.getSource() == textureButton) + // { + // return; // true; + } else { //return super.action(event, arg); @@ -3140,6 +3203,28 @@ refreshContents(); } + void TransformChildren() + { + Object3D obj; + for (Enumeration e = group.selection.elements(); e.hasMoreElements();) + { + obj = (Object3D)e.nextElement(); + obj.KeepTextureMatrices(); + obj.TransformChildren(); + obj.RestoreTextureMatrices(); + +// if (obj.parent == null) +// { +// System.out.println("NULL PARENT!"); +// new Exception().printStackTrace(); +// } +// else +// TouchTransform(obj); +// //obj.parent.Touch(); + } + + refreshContents(); + } void ResetTransform() { @@ -3252,7 +3337,7 @@ refreshContents(); } - void ResetCentroid() + void ResetCentroid(boolean full) { Object3D obj; for (Enumeration e = group.selection.elements(); e.hasMoreElements();) @@ -3267,12 +3352,16 @@ LA.matIdentity(Object3D.mat); obj.getBounds(minima, maxima, false); Object3D.mat[3][0] = -(minima.x + maxima.x)/2; - Object3D.mat[3][1] = -(minima.y + maxima.y)/2; + if (full) + Object3D.mat[3][1] = -(minima.y + maxima.y)/2; Object3D.mat[3][2] = -(minima.z + maxima.z)/2; obj.TransformMesh(Object3D.mat); + Object3D.mat[3][0] = (minima.x + maxima.x)/2; - Object3D.mat[3][1] = (minima.y + maxima.y)/2; + if (full) + Object3D.mat[3][1] = (minima.y + maxima.y)/2; Object3D.mat[3][2] = (minima.z + maxima.z)/2; + LA.matConcat(Object3D.mat, obj.toParent, obj.toParent); //Object3D.mat[3][0] = -Object3D.mat[3][0]; //Object3D.mat[3][1] = -Object3D.mat[3][1]; @@ -3613,7 +3702,16 @@ String pigment = Object3D.GetPigment(tex); //String bump = Object3D.GetBump(tex); - com.sun.opengl.util.texture.TextureData texturedata = Globals.theRenderer.GetTextureData(pigment, false, node.texres); + com.sun.opengl.util.texture.TextureData texturedata = null; + + try + { + texturedata = Globals.theRenderer.GetTextureData(pigment, false, node.texres); + } + catch (Exception e) + { + System.err.println("FAIL: " + node); + } double s = v.s; @@ -4085,7 +4183,7 @@ objectPanel.setSelectedIndex(objectPanel.indexOfTab("Edit")); Object3D elem = (Object3D)group.selection.elementAt(i); - if(elem != group) + if(elem != group || !newWindow) { // if (!(elem instanceof Composite)) // newWindow = false; @@ -4922,21 +5020,6 @@ } */ - void ImportGFD() - { - FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD); - browser.show(); - String filename = browser.getFile(); - if (filename != null && filename.length() > 0) - { - String fullname = browser.getDirectory() + filename; - - //Object3D readobj = - objEditor.ReadGFD(fullname, objEditor); - //makeSomething(readobj); - } - } - /* public void Callback(Object obj) { @@ -4960,23 +5043,6 @@ } */ - void ImportVRMLX3D() - { - if (Grafreed.standAlone) - { - /**/ - FileDialog browser = new FileDialog(objEditor.frame, "Import VRML/X3D", FileDialog.LOAD); - browser.show(); - String filename = browser.getFile(); - if (filename != null && filename.length() > 0) - { - String fullname = browser.getDirectory() + filename; - LoadVRMLX3D(fullname); - } - /**/ - } - } - String GetFile(String dialogName) { if (Grafreed.standAlone) @@ -5092,7 +5158,7 @@ private MenuItem linkverticesItem; private MenuItem relinkverticesItem; private MenuItem setMasterItem; - private MenuItem resetMeshItem; + private MenuItem resetAllItem; private MenuItem stepAllItem; private MenuItem revertMeshItem; private MenuItem poseMeshItem; @@ -5153,8 +5219,10 @@ private MenuItem panoTexturesItem; private MenuItem resetCentroidItem; - private MenuItem transformgeometryItem; + private MenuItem resetCentroidXZItem; private MenuItem resetTransformItem; + private MenuItem transformGeometryItem; + private MenuItem transformChildrenItem; private MenuItem hideItem; private MenuItem grabItem; private MenuItem backItem; @@ -5223,11 +5291,6 @@ private MenuItem doubleItem; private MenuItem tripleItem; - private MenuItem importGFDItem; - private MenuItem importVRMLX3DItem; - private MenuItem import3DSItem; - private MenuItem importOBJItem; - private MenuItem computeAOItem; private MenuItem recompileItem; private MenuItem editScriptItem; @@ -5237,4 +5300,8 @@ private MenuItem analyzeItem; private MenuItem dumpItem; //boolean freezemodel = false; + + Menu cameraMenu; + MenuItem editCameraItem; + MenuItem revertCameraItem; } -- Gitblit v1.6.2