From 24a2a946b35279605e645349bd6b82e9e60aac88 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Wed, 14 Aug 2019 23:35:34 -0400 Subject: [PATCH] Fix textures in jar. --- ObjEditor.java | 700 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 600 insertions(+), 100 deletions(-) diff --git a/ObjEditor.java b/ObjEditor.java index 4f2f437..9f18912 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -34,6 +34,7 @@ iSendInfo //KeyListener { + public cToggleButton pinButton; boolean timeline; boolean wasFullScreen; @@ -74,8 +75,16 @@ return new cCheckBox(icon, border); } + static java.util.Hashtable<String, javax.swing.ImageIcon> icons = new java.util.Hashtable<String, javax.swing.ImageIcon>(); + 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)); @@ -93,10 +102,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; } } @@ -296,11 +309,13 @@ client = inClient; copy = client; - if (copy.versionlist == null) - { - copy.versionlist = new Object3D[100]; - copy.versionindex = -1; - } +// if (copy.versionlist == null) +// { +// copy.versionlist = new Object3D[100]; +// copy.versionindex = -1; +// +// callee.Save(true); +// } // "this" is not called: SetupUI2(objEditor); } @@ -319,6 +334,8 @@ { copy.versionlist = new Object3D[100]; copy.versionindex = -1; + +// Save(true); } SetupUI2(callee.GetEditor()); @@ -353,11 +370,13 @@ copy = localCopy; copy.editWindow = this; - if (copy.versionlist == null) - { -// copy.versions = new byte[100][]; +// if (copy.versionlist == null) +// { +// copy.versionlist = new Object3D[100]; // copy.versionindex = -1; - } +// +// Save(true); +// } SetupMenu(); @@ -426,6 +445,8 @@ ChangeListener changeListener = new ChangeListener() { + //String name; + public void stateChanged(ChangeEvent changeEvent) { // if (objectPanel.getSelectedIndex() == objectPanel.indexOfTab("Material") && !materialFlushed) @@ -444,7 +465,37 @@ // EditSelection(false); // } - refreshContents(false); // To refresh Info tab +// 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(); } }; objectPanel.addChangeListener(changeListener); @@ -466,6 +517,8 @@ toolboxPanel = new cGridBag().setVertical(true); //toolboxPanel.setName("Toolbox"); + + skyboxPanel = new cGridBag().setVertical(true); materialPanel = new cGridBag().setVertical(false); //materialPanel.setName("Material"); @@ -751,6 +804,7 @@ boolean maximized; cButton fullscreenLayout; + cButton expandedLayout; void Minimize() { @@ -790,10 +844,12 @@ cButton minButton; cButton maxButton; cButton fullButton; + cButton collapseButton; + cButton maximize3DButton; void ToggleFullScreen() { -GraphicsDevice device = frame.getGraphicsConfiguration().getDevice(); + GraphicsDevice device = frame.getGraphicsConfiguration().getDevice(); cameraView.ToggleFullScreen(); @@ -814,13 +870,13 @@ // X frame.getContentPane().remove(/*"Center",*/bigThree); // X framePanel.add(bigThree); // X frame.getContentPane().add(/*"Center",*/framePanel); - framePanel.setDividerLocation(46); +// framePanel.setDividerLocation(46); // icons are 24x24 //frame.setVisible(true); - radio.layout = keepButton; +// radio.layout = keepButton; //theFrame = null; keepButton = null; - radio.layout.doClick(); +// radio.layout.doClick(); } else { @@ -841,32 +897,42 @@ // X frame.getContentPane().remove(/*"Center",*/framePanel); // X framePanel.remove(bigThree); // X frame.getContentPane().add(/*"Center",*/bigThree); - framePanel.setDividerLocation(0); +// framePanel.setDividerLocation(0); - radio.layout = fullscreenLayout; - radio.layout.doClick(); +// radio.layout = fullscreenLayout; +// radio.layout.doClick(); //frame.setVisible(true); } frame.validate(); + + cameraView.requestFocusInWindow(); } - private Object3D CompressCopy() + void CollapseToolbar() + { + framePanel.setDividerLocation(0); + //frame.validate(); + + cameraView.requestFocusInWindow(); + } + + private Object3D Duplicate(Object3D object) { boolean temp = CameraPane.SWITCH; CameraPane.SWITCH = false; - copy.ExtractBigData(versiontable); + object.ExtractBigData(versiontable); // if (copy == client) - Object3D versions[] = copy.versionlist; - copy.versionlist = null; + Object3D versions[] = object.versionlist; + object.versionlist = null; //byte[] compress = Compress(copy); - Object3D compress = (Object3D)Grafreed.clone(copy); + Object3D compress = (Object3D)Grafreed.clone(object); - copy.versionlist = versions; + object.versionlist = versions; - copy.RestoreBigData(versiontable); + object.RestoreBigData(versiontable); CameraPane.SWITCH = temp; @@ -1203,6 +1269,18 @@ namePanel = new cGridBag(); + //if (copy.pinned) + { + pinButton = GetToggleButton("icons/pin.png", !Grafreed.NIMBUSLAF); + pinButton.setSelected(copy.pinned); + cGridBag t = new cGridBag(); + t.preferredWidth = 2; + t.add(pinButton); + namePanel.add(t); + + pinButton.addItemListener(this); + } + nameField = AddText(namePanel, copy.GetName()); namePanel.add(new JScrollPane(nameField, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER)); oe.ctrlPanel.add(namePanel); @@ -1554,27 +1632,26 @@ 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.add(skyboxPanel); + objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg")); + objectPanel.setToolTipTextAt(2, "Backgrounds"); + // JPanel north = new JPanel(new BorderLayout()); // north.setName("Edit"); // north.add(ctrlPanel, BorderLayout.NORTH); // objectPanel.add(north); objectPanel.add(editPanel); - objectPanel.setIconAt(1, GetIcon("icons/write.png")); - objectPanel.setToolTipTextAt(1, "Edit controls"); - - //if (Globals.ADVANCED) - objectPanel.add(infoPanel); - objectPanel.setIconAt(2, GetIcon("icons/info.png")); - objectPanel.setToolTipTextAt(2, "Information"); + objectPanel.setIconAt(3, GetIcon("icons/write.png")); + objectPanel.setToolTipTextAt(3, "Edit controls"); objectPanel.add(XYZPanel); - objectPanel.setIconAt(3, GetIcon("icons/XYZ.png")); - objectPanel.setToolTipTextAt(3, "XYZ/RGB transform"); + objectPanel.setIconAt(4, GetIcon("icons/XYZ.png")); + objectPanel.setToolTipTextAt(4, "XYZ/RGB transform"); - objectPanel.add(toolboxPanel); - objectPanel.setIconAt(4, GetIcon("icons/primitives.png")); - objectPanel.setToolTipTextAt(4, "Objects & backgrounds"); - /* aConstraints.gridx = 0; aConstraints.gridwidth = 1; @@ -1611,6 +1688,11 @@ scenePanel.add(tabbedPane); + //if (Globals.ADVANCED) +// tabbedPane.add(infoPanel); +// tabbedPane.setIconAt(3, GetIcon("icons/info.png")); +// tabbedPane.setToolTipTextAt(3, "Information"); + /* cTree jTree = new cTree(null); ToolTipManager.sharedInstance().registerComponent(jTree); @@ -1681,6 +1763,23 @@ // aConstraints.gridheight = 1; framePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, toolbarPanel, bigThree); + + framePanel.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, + new java.beans.PropertyChangeListener() + { + public void propertyChange(java.beans.PropertyChangeEvent pce) + { + if ((Integer)pce.getOldValue() == 1) + { + if (radio.layout != expandedLayout) + { + radio.layout = expandedLayout; + radio.layout.doClick(); + } + } + } + }); + framePanel.setContinuousLayout(false); framePanel.setOneTouchExpandable(false); //.setDividerLocation(0.8); @@ -1690,7 +1789,7 @@ frame.getContentPane().setLayout(new BorderLayout()); /**/ - JTabbedPane worldPane = new JTabbedPane(); + //JTabbedPane worldPane = new JTabbedPane(); //worldPane.add(bigPanel); //worldPane.add(worldPanel); /**/ @@ -1738,46 +1837,393 @@ void SetupMaterial(cGridBag materialpanel) { cGridBag presetpanel = new cGridBag().setVertical(true); - cLabel label = GetLabel("icons/shadericons/shadericon00000.png", !Grafreed.NIMBUSLAF); - label.addMouseListener(new MouseAdapter() + + cLabel skin = GetLabel("icons/shadericons/shadericon00000.png", !Grafreed.NIMBUSLAF); + skin.setToolTipText("Skin"); + skin.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { - colorField.setFloat(0); - saturationField.setFloat(1); + Object3D object = Grafreed.materials.versionlist[0].get(0); + cMaterial material = object.material; + + // Skin + colorField.setFloat(material.color); + saturationField.setFloat(material.modulation); + subsurfaceField.setFloat(material.subsurface); + selfshadowField.setFloat(material.diffuseness); + diffusenessField.setFloat(material.factor); + shininessField.setFloat(material.shininess); + shadowbiasField.setFloat(material.shadowbias); + diffuseField.setFloat(material.diffuse); + specularField.setFloat(material.specular); + + bumpField.setFloat(object.projectedVertices[0].x / 1000.0); + noiseField.setFloat(object.projectedVertices[0].y / 1000.0); + powerField.setFloat(object.projectedVertices[2].x / 1000.0); + materialtouched = true; applySelf(); } }); - presetpanel.add(label); + presetpanel.add(skin); - presetpanel.add(GetLabel("icons/shadericons/shadericon00001.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00002.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00003.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00004.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00005.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00006.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00007.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00008.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00009.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00010.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00011.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00012.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00013.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00014.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00015.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00016.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00017.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00018.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00019.png", !Grafreed.NIMBUSLAF)); - presetpanel.add(GetLabel("icons/shadericons/shadericon00020.png", !Grafreed.NIMBUSLAF)); + cLabel lambert = GetLabel("icons/shadericons/shadericon00002.png", !Grafreed.NIMBUSLAF); + lambert.setToolTipText("Diffuse"); + lambert.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[2].get(0); + cMaterial material = object.material; + + diffusenessField.setFloat(material.factor); + selfshadowField.setFloat(material.diffuseness); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(lambert); + + cLabel diffuse2 = GetLabel("icons/shadericons/shadericon00003.png", !Grafreed.NIMBUSLAF); + diffuse2.setToolTipText("Diffuse2"); + diffuse2.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[3].get(0); + cMaterial material = object.material; + + diffusenessField.setFloat(material.factor); + selfshadowField.setFloat(material.diffuseness); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(diffuse2); + + cLabel diffusemoon = GetLabel("icons/shadericons/shadericon00004.png", !Grafreed.NIMBUSLAF); + diffusemoon.setToolTipText("Moon"); + diffusemoon.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[4].get(0); + cMaterial material = object.material; + + diffusenessField.setFloat(material.factor); + selfshadowField.setFloat(material.diffuseness); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(diffusemoon); + + cLabel diffusemoon2 = GetLabel("icons/shadericons/shadericon00005.png", !Grafreed.NIMBUSLAF); + diffusemoon2.setToolTipText("Moon2"); + diffusemoon2.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[5].get(0); + cMaterial material = object.material; + + diffusenessField.setFloat(material.factor); + selfshadowField.setFloat(material.diffuseness); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(diffusemoon2); + + cLabel diffusemoon3 = GetLabel("icons/shadericons/shadericon00006.png", !Grafreed.NIMBUSLAF); + diffusemoon3.setToolTipText("Moon3"); + diffusemoon3.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[6].get(0); + cMaterial material = object.material; + + diffusenessField.setFloat(material.factor); + selfshadowField.setFloat(material.diffuseness); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(diffusemoon3); + + cLabel diffusesheen = GetLabel("icons/shadericons/shadericon00007.png", !Grafreed.NIMBUSLAF); + diffusesheen.setToolTipText("Sheen"); + diffusesheen.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[7].get(0); + cMaterial material = object.material; + + sheenField.setFloat(material.sheen); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(diffusesheen); + + cLabel rough = GetLabel("icons/shadericons/shadericon00001.png", !Grafreed.NIMBUSLAF); + rough.setToolTipText("Rough metal"); + rough.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[1].get(0); + cMaterial material = object.material; + + shininessField.setFloat(material.shininess); + velvetField.setFloat(material.velvet); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(rough); + + cLabel rough2 = GetLabel("icons/shadericons/shadericon00013.png", !Grafreed.NIMBUSLAF); + rough2.setToolTipText("Medium metal"); + rough2.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[13].get(0); + cMaterial material = object.material; + + shininessField.setFloat(material.shininess); + lightareaField.setFloat(material.lightarea); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(rough2); + + cLabel shini0 = GetLabel("icons/shadericons/shadericon00014.png", !Grafreed.NIMBUSLAF); + shini0.setToolTipText("Shiny"); + shini0.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[14].get(0); + cMaterial material = object.material; + + shininessField.setFloat(material.shininess); + lightareaField.setFloat(material.lightarea); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(shini0); + + cLabel shini1 = GetLabel("icons/shadericons/shadericon00011.png", !Grafreed.NIMBUSLAF); + shini1.setToolTipText("Shiny2"); + shini1.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[11].get(0); + cMaterial material = object.material; + + shininessField.setFloat(material.shininess); + lightareaField.setFloat(material.lightarea); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(shini1); + + cLabel shini2 = GetLabel("icons/shadericons/shadericon00012.png", !Grafreed.NIMBUSLAF); + shini2.setToolTipText("Shiny3"); + shini2.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[12].get(0); + cMaterial material = object.material; + + shininessField.setFloat(material.shininess); + lightareaField.setFloat(material.lightarea); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(shini2); + + cLabel aniso = GetLabel("icons/shadericons/shadericon00008.png", !Grafreed.NIMBUSLAF); + aniso.setToolTipText("AnisoU"); + aniso.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[8].get(0); + cMaterial material = object.material; + + anisoField.setFloat(material.aniso); + anisoVField.setFloat(material.anisoV); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(aniso); + + cLabel aniso2 = GetLabel("icons/shadericons/shadericon00009.png", !Grafreed.NIMBUSLAF); + aniso2.setToolTipText("AnisoV"); + aniso2.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[9].get(0); + cMaterial material = object.material; + + anisoField.setFloat(material.aniso); + anisoVField.setFloat(material.anisoV); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(aniso2); + + cLabel aniso3 = GetLabel("icons/shadericons/shadericon00010.png", !Grafreed.NIMBUSLAF); + aniso3.setToolTipText("AnisoUV"); + aniso3.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[10].get(0); + cMaterial material = object.material; + + anisoField.setFloat(material.aniso); + anisoVField.setFloat(material.anisoV); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(aniso3); + + cLabel velvet0 = GetLabel("icons/shadericons/shadericon00015.png", !Grafreed.NIMBUSLAF); + velvet0.setToolTipText("Velvet"); + velvet0.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[15].get(0); + cMaterial material = object.material; + + diffusenessField.setFloat(material.factor); + selfshadowField.setFloat(material.diffuseness); + sheenField.setFloat(material.sheen); + shininessField.setFloat(material.shininess); + velvetField.setFloat(material.velvet); + shiftField.setFloat(material.shift); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(velvet0); + + cLabel bump0 = GetLabel("icons/shadericons/shadericon00016.png", !Grafreed.NIMBUSLAF); + bump0.setToolTipText("Bump texture"); + bump0.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[16].get(0); + cMaterial material = object.material; + + bumpField.setFloat(object.projectedVertices[0].x / 1000.0); + noiseField.setFloat(object.projectedVertices[0].y / 1000.0); + powerField.setFloat(object.projectedVertices[2].x / 1000.0); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(bump0); + + cLabel halo = GetLabel("icons/shadericons/shadericon00017.png", !Grafreed.NIMBUSLAF); + halo.setToolTipText("Halo"); + halo.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[17].get(0); + cMaterial material = object.material; + + opacityPowerField.setFloat(object.projectedVertices[2].y / 1000.0); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(halo); + + cLabel candle = GetLabel("icons/shadericons/shadericon00018.png", !Grafreed.NIMBUSLAF); + candle.setToolTipText("Candle"); + candle.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + Object3D object = Grafreed.materials.versionlist[18].get(0); + cMaterial material = object.material; + + subsurfaceField.setFloat(material.subsurface); + shadowbiasField.setFloat(material.shadowbias); + ambientField.setFloat(material.ambient); + specularField.setFloat(material.specular); + lightareaField.setFloat(material.lightarea); + shininessField.setFloat(material.shininess); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(candle); + + cLabel shadowShader = GetLabel("icons/shadericons/shadow.png", !Grafreed.NIMBUSLAF); + shadowShader.setToolTipText("Shadow"); + shadowShader.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + diffuseField.setFloat(0.001); + ambientField.setFloat(0.001); + cameraField.setFloat(0.001); + specularField.setFloat(0.001); + fakedepthField.setFloat(0.001); + opacityField.setFloat(0.6); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(shadowShader); cGridBag panel = new cGridBag().setVertical(true); presetpanel.preferredWidth = 1; - materialpanel.add(panel); materialpanel.add(presetpanel); + materialpanel.add(panel); panel.preferredWidth = 8; @@ -1821,9 +2267,9 @@ cGridBag huepanel = new cGridBag(); cGridBag huelabel = new cGridBag(); - label = GetLabel("icons/hue.png", false); - label.fit = true; - huelabel.add(label); + skin = GetLabel("icons/hue.png", false); + skin.fit = true; + huelabel.add(skin); huelabel.preferredWidth = 20; huepanel.add(new cGridBag()); // Label huepanel.add(huelabel); // Field/slider @@ -3244,6 +3690,17 @@ public void itemStateChanged(ItemEvent event) { // System.out.println("Propagate = " + propagate); + if (event.getSource() == pinButton) + { + copy.pinned ^= true; + if (!copy.pinned && !copy.editWindow.copy.selection.contains(copy)) + { + ((GroupEditor)copy.editWindow).listUI.remove(copy); + copy.CloseUI(); + //copy.editWindow.refreshContents(); + } + } + else if (event.getSource() == propagateToggle) { propagate ^= true; @@ -3716,7 +4173,7 @@ { //Save(true); Replace(); - SetUndoStates(); + SetVersionStates(); } private boolean Equal(byte[] compress, byte[] name) @@ -3737,14 +4194,26 @@ 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++) + { + copy.versionlist[i] = copy.versionlist[i+1]; + } + + CopyChanged(); + + SetVersionStates(); + } + public boolean Save(boolean user) { System.err.println("Save"); Replace(); - cRadio tab = GetCurrentTab(); + //cRadio tab = GetCurrentTab(); - Object3D compress = CompressCopy(); // Saved version. No need for "Replace". + Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"? boolean thesame = false; @@ -3756,6 +4225,11 @@ //EditorFrame.m_MainFrame.requestFocusInWindow(); if (!thesame) { + for (int i = copy.versionlist.length; --i > copy.versionindex+1;) + { + copy.versionlist[i] = copy.versionlist[i-1]; + } + //tab.user[tab.versionindex] = user; //boolean increment = true; // tab.graphs[tab.versionindex] == null; @@ -3769,13 +4243,13 @@ //assert(hashtable.isEmpty()); - for (int i = copy.versionindex+1; i < copy.versionlist.length; i++) - { - //tab.user[i] = false; - copy.versionlist[i] = null; - } +// for (int i = copy.versionindex+1; i < copy.versionlist.length; i++) +// { +// //tab.user[i] = false; +// copy.versionlist[i] = null; +// } - SetUndoStates(); + SetVersionStates(); // test save if (false) @@ -3828,12 +4302,14 @@ GetTree().addSelectionPath(selection.elementAt(i).GetTreePath().GetTreePath()); flashIt = true; - refreshContents(false); + //refreshContents(false); } - void CopyChanged(Object3D obj) + void CopyChanged() { - SetUndoStates(); + Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]); + + SetVersionStates(); boolean temp = CameraPane.SWITCH; CameraPane.SWITCH = false; @@ -3875,13 +4351,15 @@ } } - refreshContents(); + refreshContents(true); } - cButton undoButton; + cButton previousVersionButton; cButton restoreButton; cButton replaceButton; - cButton redoButton; + cButton nextVersionButton; + cButton saveVersionButton; + cButton deleteVersionButton; boolean muteSlider; @@ -3898,30 +4376,38 @@ return count; } - void SetUndoStates() + void SetVersionStates() { - cRadio tab = GetCurrentTab(); + //if (true) + // return; + + //cRadio tab = GetCurrentTab(); restoreButton.setEnabled(copy.versionindex != -1); replaceButton.setEnabled(copy.versionindex != -1); - undoButton.setEnabled(copy.versionindex > 0); - redoButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null); + 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; } - public boolean Undo() + public boolean PreviousVersion() { // Option? Replace(); System.err.println("Undo"); - cRadio tab = GetCurrentTab(); + //cRadio tab = GetCurrentTab(); if (copy.versionindex == 0) { @@ -3944,7 +4430,7 @@ copy.versionindex -= 1; - CopyChanged((Object3D)copy.versionlist[copy.versionindex]); + CopyChanged(); return true; } @@ -3953,7 +4439,7 @@ { System.err.println("Restore"); - cRadio tab = GetCurrentTab(); + //cRadio tab = GetCurrentTab(); if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null) { @@ -3962,7 +4448,7 @@ } //CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex])); - CopyChanged(copy.versionlist[copy.versionindex]); + CopyChanged(); return true; } @@ -3971,7 +4457,7 @@ { System.err.println("Replace"); - cRadio tab = GetCurrentTab(); + //cRadio tab = GetCurrentTab(); if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null) { @@ -3979,17 +4465,17 @@ return false; } - copy.versionlist[copy.versionindex] = CompressCopy(); + copy.versionlist[copy.versionindex] = Duplicate(copy); return true; } - public void Redo() + public void NextVersion() { // Option? Replace(); - cRadio tab = GetCurrentTab(); + //cRadio tab = GetCurrentTab(); if (copy.versionlist[copy.versionindex + 1] == null) { @@ -3999,7 +4485,7 @@ copy.versionindex += 1; - CopyChanged(copy.versionlist[copy.versionindex]); + CopyChanged(); //if (!tab.user[tab.versionindex]) // tab.graphs[tab.versionindex] = null; @@ -4308,11 +4794,14 @@ if (muteSlider) return; + Replace(); + int version = versionSlider.getInteger(); - if (copy.versionlist[version] != null) + if (version != -1 && copy.versionlist[version] != null) { - CopyChanged(copy.versionlist[copy.versionindex = version]); + copy.versionindex = version; + CopyChanged(); } return; @@ -4353,7 +4842,7 @@ //System.out.println("stateChanged = " + this); materialtouched = true; - if (e.getSource() == colorField && saturationField.getFloat() == 0.001) + if (Globals.AUTOSATURATE && e.getSource() == colorField && saturationField.getFloat() == 0.001) { saturationField.setFloat(1); } @@ -4666,6 +5155,9 @@ ctrlPanel.validate(); // ? new ctrlPanel.repaint(); } + + if (previousVersionButton != null && copy.versionlist != null) + SetVersionStates(); } static TweenManager tweenManager = new TweenManager(); @@ -5054,8 +5546,11 @@ if (copy.versionlist == null) { + // Backward compatibility copy.versionlist = new Object3D[100]; copy.versionindex = -1; + + //Save(true); } //? SetUndoStates(); @@ -5070,7 +5565,7 @@ { if (Grafreed.standAlone) { - FileDialog browser = new FileDialog(frame, "Load", FileDialog.LOAD); + FileDialog browser = new FileDialog(frame, "Open", FileDialog.LOAD); browser.show(); String filename = browser.getFile(); if (filename != null && filename.length() > 0) @@ -5147,6 +5642,8 @@ void save() { + Replace(); + if (lastname == null) { return; @@ -5389,6 +5886,7 @@ ButtonGroup buttonGroup; cGridBag toolboxPanel; + cGridBag skyboxPanel; cGridBag materialPanel; cGridBag ctrlPanel; @@ -5493,6 +5991,7 @@ cNumberSlider anisoField; JLabel anisoVLabel; cNumberSlider anisoVField; + JLabel cameraLabel; cNumberSlider cameraField; JLabel selfshadowLabel; @@ -5507,6 +6006,7 @@ cNumberSlider fakedepthField; JLabel shadowbiasLabel; cNumberSlider shadowbiasField; + JLabel bumpLabel; cNumberSlider bumpField; JLabel noiseLabel; -- Gitblit v1.6.2