From d5d6485126da83b06645e90e3e4ce66659a56009 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sat, 17 Aug 2019 13:56:24 -0400 Subject: [PATCH] Reset transform, fix loop versioning. --- ObjEditor.java | 452 ++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 310 insertions(+), 142 deletions(-) diff --git a/ObjEditor.java b/ObjEditor.java index 4b4a90a..4b47343 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -43,6 +43,35 @@ static ObjEditor theFrame; + public void AllocProjectedVertices(Object3D object) + { + assert (object.projectedVertices != null); + + if (object.projectedVertices.length <= 2) + { + // Side effect... + Object3D.cVector2[] keep = object.projectedVertices; + object.projectedVertices = new Object3D.cVector2[3]; + for (int i = 0; i < 3; i++) + { + if (i < keep.length) + { + object.projectedVertices[i] = keep[i]; + } else + { + object.projectedVertices[i] = new Object3D.cVector2(); + } + /* + if(keep.length == 0) + object.projectedVertices[0] = new Object3D.cVector2(); + else + object.projectedVertices[0] = keep[0]; + object.projectedVertices[1] = new Object3D.cVector2(); + */ + } + } + } + public cGridBag GetSeparator() { cGridBag separator = new cGridBag(); @@ -54,7 +83,10 @@ cButton GetButton(String name, boolean border) { ImageIcon icon = GetIcon(name); - return new cButton(icon, border); + if (icon != null) + return new cButton(icon, border); + else + return new cButton(name, border); } cLabel GetLabel(String name, boolean border) @@ -75,11 +107,19 @@ return new cCheckBox(icon, border); } - ImageIcon GetIcon(String name) + static java.util.Hashtable<String, javax.swing.ImageIcon> icons = new java.util.Hashtable<String, javax.swing.ImageIcon>(); + + static ImageIcon GetIcon(String name) { + javax.swing.ImageIcon iconCache = icons.get(name); + if (iconCache != null) + { + return iconCache; + } + try { - BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name)); + BufferedImage image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name)); // if (image.getWidth() > 48 && image.getHeight() > 48) // { @@ -94,10 +134,14 @@ // } javax.swing.ImageIcon icon = new javax.swing.ImageIcon(image); + + icons.put(name, icon); + return icon; } catch (Exception e) { + //icons.put(name, null); return null; } } @@ -347,7 +391,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()) @@ -384,6 +429,9 @@ static java.util.Vector<Object3D> listUI = new java.util.Vector<Object3D>(); + // This is to refresh the UI of the material panel. + boolean patchMaterial; + void SetupMenu() { frame.setMenuBar(menuBar = new MenuBar()); @@ -433,7 +481,7 @@ ChangeListener changeListener = new ChangeListener() { - String name; + //String name; public void stateChanged(ChangeEvent changeEvent) { @@ -453,33 +501,34 @@ // EditSelection(false); // } - if (objectPanel.getSelectedIndex() == 4) - { - name = copy.skyboxname; - - if (name == null) - { - name = ""; - } - - copy.skyboxname = "cubemaps/default-skyboxes/rgb"; - copy.skyboxext = "jpg"; - } - else - { - if (name != null) - { - if (name.equals("")) - { - copy.skyboxname = null; - copy.skyboxext = null; - } - else - { - copy.skyboxname = name; - } - } - } +// if (objectPanel.getSelectedIndex() == 4) +// { +// name = copy.skyboxname; +// +// if (name == null) +// { +// name = ""; +// } +// +// copy.skyboxname = "cubemaps/default-skyboxes/rgb"; +// copy.skyboxext = "jpg"; +// } +// else +// { +// if (name != null) +// { +// if (name.equals("")) +// { +// copy.skyboxname = null; +// copy.skyboxext = null; +// } +// else +// { +// copy.skyboxname = name; +// } +// } +// } + cameraView.transformMode = objectPanel.getSelectedIndex() == 4; // refreshContents(false); // To refresh Info tab cameraView.repaint(); @@ -908,18 +957,29 @@ boolean temp = CameraPane.SWITCH; CameraPane.SWITCH = false; - object.ExtractBigData(versiontable); + if (Grafreed.grafreed.universe.versiontable == null) + Grafreed.grafreed.universe.versiontable = new java.util.Hashtable<java.util.UUID, Object3D>(); + + object.ExtractBigData(Grafreed.grafreed.universe.versiontable); // if (copy == client) Object3D versions[] = object.versionlist; + java.util.Hashtable<java.util.UUID, Object3D> versiontable = object.versiontable; // if Grafreed.grafreed.universe object.versionlist = null; + object.versiontable = null; + + Object3D parent = object.parent; + object.parent = null; //byte[] compress = Compress(copy); Object3D compress = (Object3D)Grafreed.clone(object); - object.versionlist = versions; + object.parent = parent; - object.RestoreBigData(versiontable); + object.versionlist = versions; + object.versiontable = versiontable; // if Grafreed.grafreed.universe + + object.RestoreBigData(Grafreed.grafreed.universe.versiontable); CameraPane.SWITCH = temp; @@ -1281,14 +1341,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); @@ -1490,6 +1550,7 @@ if (cam == null || !(copy.get(0) instanceof cGroup)) { + if (Globals.DEBUG) System.out.println("CREATE CAMERAS"); cams = new cTemplate(); cams.name = "Cameras"; @@ -1571,6 +1632,42 @@ //frontView.object = copy; //sideView.object = copy; + transformPanel = new cGridBag().setVertical(true); + + cGridBag resetTransformPanel = new cGridBag(); + + resetTransformPanel.preferredHeight = 2; + + cButton resetTransform = GetButton("Reset all", !Grafreed.NIMBUSLAF); + resetTransform.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + ResetTransform(); + } + }); + resetTransformPanel.add(resetTransform); + + resetTransform = GetButton("T only", !Grafreed.NIMBUSLAF); + resetTransform.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + ResetTransform(1); + } + }); + resetTransformPanel.add(resetTransform); + + resetTransform = GetButton("RS only", !Grafreed.NIMBUSLAF); + resetTransform.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + ResetTransform(2); + } + }); + resetTransformPanel.add(resetTransform); + XYZPanel = new cGridBag().setVertical(true); //XYZPanel.setLayout(new GridLayout(3, 1, 5, 5)); @@ -1580,6 +1677,9 @@ XYZPanel.addComponent(/*BorderLayout.NORTH,*/topView); // Scroll); //XYZPanel.setName("XYZ"); + transformPanel.add(resetTransformPanel); + transformPanel.add(XYZPanel); + /* gridPanel = new JPanel(); //new BorderLayout()); gridPanel.setLayout(new GridLayout(1, 2)); @@ -1587,12 +1687,12 @@ gridPanel.add(cameraView); gridPanel.add(XYZPanel); */ - gridPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, centralPanel, XYZPanel); //new BorderLayout()); - gridPanel.setContinuousLayout(true); - gridPanel.setOneTouchExpandable(true); - gridPanel.setDividerLocation(1.0); - gridPanel.setDividerSize(9); - gridPanel.setResizeWeight(0.85); +// gridPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, centralPanel, XYZPanel); //new BorderLayout()); +// gridPanel.setContinuousLayout(true); +// gridPanel.setOneTouchExpandable(true); +// gridPanel.setDividerLocation(1.0); +// gridPanel.setDividerSize(9); +// gridPanel.setResizeWeight(0.85); // aConstraints.weighty = 0; //System.out.println("THIS = " + this); @@ -1615,14 +1715,14 @@ //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); //tmp.setName("Edit"); - objectPanel.add(materialPanel); - objectPanel.setIconAt(0, GetIcon("icons/material.png")); - objectPanel.setToolTipTextAt(0, "Material"); - objectPanel.add(toolboxPanel); - objectPanel.setIconAt(1, GetIcon("icons/primitives.png")); - objectPanel.setToolTipTextAt(1, "Objects & textures"); + objectPanel.setIconAt(0, GetIcon("icons/primitives.png")); + objectPanel.setToolTipTextAt(0, "Objects & textures"); + objectPanel.add(materialPanel); + objectPanel.setIconAt(1, GetIcon("icons/material.png")); + objectPanel.setToolTipTextAt(1, "Material"); + objectPanel.add(skyboxPanel); objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg")); objectPanel.setToolTipTextAt(2, "Backgrounds"); @@ -1635,10 +1735,14 @@ objectPanel.setIconAt(3, GetIcon("icons/write.png")); objectPanel.setToolTipTextAt(3, "Edit controls"); - objectPanel.add(XYZPanel); + objectPanel.add(transformPanel); objectPanel.setIconAt(4, GetIcon("icons/XYZ.png")); - objectPanel.setToolTipTextAt(4, "XYZ/RGB transform"); + objectPanel.setToolTipTextAt(4, "TRS transform"); + patchMaterial = true; + cameraView.patchMaterial = this; + objectPanel.setSelectedIndex(1); + /* aConstraints.gridx = 0; aConstraints.gridwidth = 1; @@ -1658,7 +1762,7 @@ scrollpane.addMouseWheelListener(this); // Default not fast enough /*JTabbedPane*/ scenePanel = new cGridBag(); - scenePanel.preferredWidth = 5; + scenePanel.preferredWidth = 6; JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.add(scrollpane); @@ -1676,9 +1780,9 @@ scenePanel.add(tabbedPane); //if (Globals.ADVANCED) - tabbedPane.add(infoPanel); - tabbedPane.setIconAt(3, GetIcon("icons/info.png")); - tabbedPane.setToolTipTextAt(3, "Information"); +// tabbedPane.add(infoPanel); +// tabbedPane.setIconAt(3, GetIcon("icons/info.png")); +// tabbedPane.setToolTipTextAt(3, "Information"); /* cTree jTree = new cTree(null); @@ -1700,13 +1804,13 @@ jtp.add(tree); */ - bigPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scenePanel, gridPanel); - bigPanel.setContinuousLayout(true); - bigPanel.setOneTouchExpandable(true); - bigPanel.setDividerLocation(0.8); - bigPanel.setDividerSize(15); - bigPanel.setResizeWeight(0.15); - bigPanel.setName("Scene"); +// bigPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scenePanel, gridPanel); +// bigPanel.setContinuousLayout(true); +// bigPanel.setOneTouchExpandable(true); +// bigPanel.setDividerLocation(0.8); +// bigPanel.setDividerSize(15); +// bigPanel.setResizeWeight(0.15); +// bigPanel.setName("Scene"); //bigPanel.setLayout(new BorderLayout()); //bigPanel.setSize(new Dimension(10,10)); @@ -1776,7 +1880,7 @@ frame.getContentPane().setLayout(new BorderLayout()); /**/ - JTabbedPane worldPane = new JTabbedPane(); + //JTabbedPane worldPane = new JTabbedPane(); //worldPane.add(bigPanel); //worldPane.add(worldPanel); /**/ @@ -1790,7 +1894,7 @@ cameraView.requestFocusInWindow(); - gridPanel.setDividerLocation(1.0); +// gridPanel.setDividerLocation(1.0); frame.validate(); @@ -1836,7 +1940,15 @@ // Skin colorField.setFloat(material.color); - saturationField.setFloat(material.modulation); + float saturation = material.modulation; + + if (!cameraView.Skinshader) + { + saturation /= 1.5; + } + + saturationField.setFloat(saturation); + subsurfaceField.setFloat(material.subsurface); selfshadowField.setFloat(material.diffuseness); diffusenessField.setFloat(material.factor); @@ -2147,6 +2259,21 @@ }); presetpanel.add(bump0); + cLabel borderShader = GetLabel("icons/shadericons/borderfade.jpg", !Grafreed.NIMBUSLAF); + borderShader.setToolTipText("Border fade"); + borderShader.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + borderfadeField.setFloat(0.5); + opacityField.setFloat(0.75); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(borderShader); + cLabel halo = GetLabel("icons/shadericons/shadericon00017.png", !Grafreed.NIMBUSLAF); halo.setToolTipText("Halo"); halo.addMouseListener(new MouseAdapter() @@ -2254,9 +2381,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 @@ -3532,32 +3670,8 @@ if (multiplyToggle != null) multiplyToggle.setSelected(mat.multiply); - - assert (object.projectedVertices != null); - - if (object.projectedVertices.length <= 2) - { - // Side effect... - Object3D.cVector2[] keep = object.projectedVertices; - object.projectedVertices = new Object3D.cVector2[3]; - for (int i = 0; i < 3; i++) - { - if (i < keep.length) - { - object.projectedVertices[i] = keep[i]; - } else - { - object.projectedVertices[i] = new Object3D.cVector2(); - } - /* - if(keep.length == 0) - object.projectedVertices[0] = new Object3D.cVector2(); - else - object.projectedVertices[0] = keep[0]; - object.projectedVertices[1] = new Object3D.cVector2(); - */ - } - } + + AllocProjectedVertices(object); SetMaterial(mat, object.projectedVertices); } @@ -3867,7 +3981,7 @@ //System.out.println("ObjEditor " + event); applySelf0(true); //parent.applySelf(); - objEditor.refreshContents(); + // conflicts with requestFocus objEditor.refreshContents(); } else if (source == resetButton) { CameraPane.fullreset = true; @@ -4179,8 +4293,6 @@ return true; } - java.util.Hashtable<java.util.UUID, Object3D> versiontable = new java.util.Hashtable<java.util.UUID, Object3D>(); - void DeleteVersion() { for (int i = copy.versionindex; i < copy.versionlist.length-1; i++) @@ -4188,7 +4300,11 @@ copy.versionlist[i] = copy.versionlist[i+1]; } - CopyChanged(); + if (copy.versionlist[copy.versionindex] == null) + copy.versionindex -= 1; + + if (copy.versionindex != -1) + CopyChanged(); SetVersionStates(); } @@ -4301,7 +4417,7 @@ boolean temp = CameraPane.SWITCH; CameraPane.SWITCH = false; - copy.ExtractBigData(versiontable); + copy.ExtractBigData(Grafreed.grafreed.universe.versiontable); copy.clear(); @@ -4313,7 +4429,7 @@ copy.add(obj.get(i)); } - copy.RestoreBigData(versiontable); + copy.RestoreBigData(Grafreed.grafreed.universe.versiontable); CameraPane.SWITCH = temp; @@ -4363,6 +4479,8 @@ return count; } + public cGridBag versionSliderPane; + void SetVersionStates() { //if (true) @@ -4370,21 +4488,36 @@ //cRadio tab = GetCurrentTab(); - restoreButton.setEnabled(copy.versionindex != -1); - replaceButton.setEnabled(copy.versionindex != -1); - - previousVersionButton.setEnabled(copy.versionindex > 0); - nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null); - - deleteVersionButton.setEnabled(//copy.versionindex > 0 && - copy.versionlist[copy.versionindex + 1] != null); - - muteSlider = true; - versionSlider.setMinimum(0); - versionSlider.setMaximum(VersionCount() - 1); - versionSlider.setInteger(copy.versionindex); - versionSlider.setEnabled(copy.versionindex != -1); - muteSlider = false; + if (copy.versionlist == null) + { + saveVersionButton.setEnabled(false); + restoreButton.setEnabled(false); + replaceButton.setEnabled(false); + previousVersionButton.setEnabled(false); + nextVersionButton.setEnabled(false); + deleteVersionButton.setEnabled(false); + versionSliderPane.setVisible(false); + } + else + { + restoreButton.setEnabled(copy.versionindex != -1); + replaceButton.setEnabled(copy.versionindex != -1); + + previousVersionButton.setEnabled(copy.versionindex > 0); + nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null); + + deleteVersionButton.setEnabled(copy.versionindex != -1); + //copy.versionlist[copy.versionindex + 1] != null); + + muteSlider = true; + versionSlider.setMinimum(0); + versionSlider.setMaximum(VersionCount() - 1); + versionSlider.setInteger(copy.versionindex); + versionSlider.setEnabled(copy.versionindex != -1); + muteSlider = false; + + versionSliderPane.setVisible(true); + } } public boolean PreviousVersion() @@ -4442,7 +4575,7 @@ public boolean Replace() { - System.err.println("Replace"); + //System.err.println("Replace"); //cRadio tab = GetCurrentTab(); @@ -4669,6 +4802,12 @@ // else // applySelf(true); // } + + boolean Equal(double a, double b) + { + return Math.abs(a - b) < 0.001; + } + void applySelf0(boolean name) { if (name) @@ -4718,29 +4857,52 @@ { cMaterial mat = copy.material; - colorField.SetToolTipValue((mat.color)); - saturationField.SetToolTipValue((mat.modulation)); - metalnessField.SetToolTipValue((mat.metalness)); - diffuseField.SetToolTipValue((mat.diffuse)); - specularField.SetToolTipValue((mat.specular)); - shininessField.SetToolTipValue((mat.shininess)); - shiftField.SetToolTipValue((mat.shift)); - ambientField.SetToolTipValue((mat.ambient)); - lightareaField.SetToolTipValue((mat.lightarea)); - diffusenessField.SetToolTipValue((mat.factor)); - velvetField.SetToolTipValue((mat.velvet)); - sheenField.SetToolTipValue((mat.sheen)); - subsurfaceField.SetToolTipValue((mat.subsurface)); - backlitField.SetToolTipValue((mat.bump)); - anisoField.SetToolTipValue((mat.aniso)); - anisoVField.SetToolTipValue((mat.anisoV)); - cameraField.SetToolTipValue((mat.cameralight)); - selfshadowField.SetToolTipValue((mat.diffuseness)); - shadowField.SetToolTipValue((mat.shadow)); - textureField.SetToolTipValue((mat.texture)); - opacityField.SetToolTipValue((mat.opacity)); - fakedepthField.SetToolTipValue((mat.fakedepth)); - shadowbiasField.SetToolTipValue((mat.shadowbias)); + if (!Equal(colorField.getFloat(), mat.color)) + colorField.SetToolTipValue((mat.color)); + if (!Equal(saturationField.getFloat(), mat.modulation)) + saturationField.SetToolTipValue((mat.modulation)); + if (!Equal(metalnessField.getFloat(), mat.metalness)) + metalnessField.SetToolTipValue((mat.metalness)); + if (!Equal(diffuseField.getFloat(), mat.diffuse)) + diffuseField.SetToolTipValue((mat.diffuse)); + if (!Equal(specularField.getFloat(), mat.specular)) + specularField.SetToolTipValue((mat.specular)); + if (!Equal(shininessField.getFloat(), mat.shininess)) + shininessField.SetToolTipValue((mat.shininess)); + if (!Equal(shiftField.getFloat(), mat.shift)) + shiftField.SetToolTipValue((mat.shift)); + if (!Equal(ambientField.getFloat(), mat.ambient)) + ambientField.SetToolTipValue((mat.ambient)); + if (!Equal(lightareaField.getFloat(), mat.lightarea)) + lightareaField.SetToolTipValue((mat.lightarea)); + if (!Equal(diffusenessField.getFloat(), mat.factor)) + diffusenessField.SetToolTipValue((mat.factor)); + if (!Equal(velvetField.getFloat(), mat.velvet)) + velvetField.SetToolTipValue((mat.velvet)); + if (!Equal(sheenField.getFloat(), mat.sheen)) + sheenField.SetToolTipValue((mat.sheen)); + if (!Equal(subsurfaceField.getFloat(), mat.subsurface)) + subsurfaceField.SetToolTipValue((mat.subsurface)); + if (!Equal(backlitField.getFloat(), mat.bump)) + backlitField.SetToolTipValue((mat.bump)); + if (!Equal(anisoField.getFloat(), mat.aniso)) + anisoField.SetToolTipValue((mat.aniso)); + if (!Equal(anisoVField.getFloat(), mat.anisoV)) + anisoVField.SetToolTipValue((mat.anisoV)); + if (!Equal(cameraField.getFloat(), mat.cameralight)) + cameraField.SetToolTipValue((mat.cameralight)); + if (!Equal(selfshadowField.getFloat(), mat.diffuseness)) + selfshadowField.SetToolTipValue((mat.diffuseness)); + if (!Equal(shadowField.getFloat(), mat.shadow)) + shadowField.SetToolTipValue((mat.shadow)); + if (!Equal(textureField.getFloat(), mat.texture)) + textureField.SetToolTipValue((mat.texture)); + if (!Equal(opacityField.getFloat(), mat.opacity)) + opacityField.SetToolTipValue((mat.opacity)); + if (!Equal(fakedepthField.getFloat(), mat.fakedepth)) + fakedepthField.SetToolTipValue((mat.fakedepth)); + if (!Equal(shadowbiasField.getFloat(), mat.shadowbias)) + shadowbiasField.SetToolTipValue((mat.shadowbias)); } if (copy.material != null && copy.projectedVertices.length > 0 && copy.projectedVertices[0] != null) @@ -4775,11 +4937,13 @@ public void stateChanged(ChangeEvent e) { - // assert(false); + // assert(false); if (e.getSource() == versionSlider) { if (muteSlider) return; + + Replace(); int version = versionSlider.getInteger(); @@ -5143,6 +5307,8 @@ if (previousVersionButton != null && copy.versionlist != null) SetVersionStates(); + + cameraView.requestFocusInWindow(); } static TweenManager tweenManager = new TweenManager(); @@ -5174,7 +5340,7 @@ // group = (Composite) group.get(0); // } - System.out.println("makeSomething of " + thing); + //System.out.println("makeSomething of " + thing); /* if (deselect && jList != null) @@ -5528,6 +5694,7 @@ copy.versionlist = readobj.versionlist; copy.versionindex = readobj.versionindex; + copy.versiontable = readobj.versiontable; if (copy.versionlist == null) { @@ -5535,7 +5702,7 @@ copy.versionlist = new Object3D[100]; copy.versionindex = -1; - Save(true); + //Save(true); } //? SetUndoStates(); @@ -5883,6 +6050,7 @@ boolean materialFlushed; Object3D latestObject; + cGridBag transformPanel; cGridBag XYZPanel; JSplitPane gridPanel; -- Gitblit v1.6.2