From 60cec91731a350fe67e9b5ffe7a00d70e9026314 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Thu, 22 Aug 2019 22:45:00 -0400 Subject: [PATCH] Min shader. --- ObjEditor.java | 162 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 139 insertions(+), 23 deletions(-) diff --git a/ObjEditor.java b/ObjEditor.java index 098f83d..63acad8 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -134,8 +134,14 @@ try { - BufferedImage image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name)); - + BufferedImage image; + + if (name.endsWith("jpg")) + // Much faster! + image = new sun.awt.image.codec.JPEGImageDecoderImpl(ObjEditor.class.getClassLoader().getResourceAsStream(name)).decodeAsBufferedImage(); + else + image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name)); + // if (image.getWidth() > 48 && image.getHeight() > 48) // { // BufferedImage resized = new BufferedImage(48, 48, image.getType()); @@ -377,14 +383,6 @@ client = inClient; copy = client; - if (copy.versionlist == null) - { - copy.versionlist = new Object3D[100]; - copy.versionindex = -1; - -// Save(true); - } - SetupUI2(callee.GetEditor()); } @@ -460,8 +458,11 @@ importOBJItem.addActionListener(this); import3DSItem = menu.add(new MenuItem("3DS file...")); import3DSItem.addActionListener(this); + if (Globals.ADVANCED) + { importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D file...")); importVRMLX3DItem.addActionListener(this); + } menu.add("-"); importGFDItem = menu.add(new MenuItem("Grafreed file...")); importGFDItem.addActionListener(this); @@ -1766,7 +1767,7 @@ scrollpane.addMouseWheelListener(this); // Default not fast enough /*JTabbedPane*/ scenePanel = new cGridBag(); - scenePanel.preferredWidth = 6; + scenePanel.preferredWidth = 5; JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.add(scrollpane); @@ -1786,14 +1787,14 @@ cGridBag creditsPanel = new cGridBag().setVertical(true); creditsPanel.setName("Credits"); - cLabel ogaLabel = new cLabel(" Most Skyboxes courtesy of OpenGameArt!", !Globals.NIMBUSLAF); + cLabel ogaLabel = new cLabel(" Skyboxes courtesy of OpenGameArt!", !Globals.NIMBUSLAF); creditsPanel.add(ogaLabel); - cButton opengameartButton; - creditsPanel.add(opengameartButton = GetButton("icons/sara-logo.png", !Globals.NIMBUSLAF)); - opengameartButton.setToolTipText("https://opengameart.org"); + cButton creditButton; + creditsPanel.add(creditButton = GetButton("icons/sara-logo.png", !Globals.NIMBUSLAF)); + creditButton.setToolTipText("https://opengameart.org"); - opengameartButton.addMouseListener(new MouseAdapter() + creditButton.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { @@ -1808,7 +1809,64 @@ } }); - for (int i=10; --i>=0;) + ogaLabel = new cLabel(" Download 3D models! (.3ds and .obj only)", !Globals.NIMBUSLAF); + creditsPanel.add(ogaLabel); + + creditsPanel.add(creditButton = GetButton("icons/3delicious.png", !Globals.NIMBUSLAF)); + creditButton.setToolTipText("https://3delicious.net"); + + creditButton.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + try + { + Desktop.getDesktop().browse(new java.net.URI("https://3delicious.net")); + } catch (Exception e1) +// } catch (java.io.IOException | java.net.URISyntaxException e1) + { + e1.printStackTrace(); + } + } + }); + + creditsPanel.add(creditButton = GetButton("icons/archive3d.png", !Globals.NIMBUSLAF)); + creditButton.setToolTipText("https://archive3d.net"); + + creditButton.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + try + { + Desktop.getDesktop().browse(new java.net.URI("https://archive3d.net")); + } catch (Exception e1) +// } catch (java.io.IOException | java.net.URISyntaxException e1) + { + e1.printStackTrace(); + } + } + }); + + creditsPanel.add(creditButton = GetButton("icons/turbosquid.png", !Globals.NIMBUSLAF)); + creditButton.setToolTipText("https://turbosquid.com"); + + creditButton.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + try + { + Desktop.getDesktop().browse(new java.net.URI("https://www.turbosquid.com/Search/3D-Models/free")); + } catch (Exception e1) +// } catch (java.io.IOException | java.net.URISyntaxException e1) + { + e1.printStackTrace(); + } + } + }); + + for (int i=6; --i>=0;) { creditsPanel.add(new cGridBag()); } @@ -1818,9 +1876,9 @@ if (Globals.ADVANCED) { - tabbedPane.add(infoPanel); - tabbedPane.setIconAt(4, GetIcon("icons/info.png")); - tabbedPane.setToolTipTextAt(4, "Information"); + objectPanel.add(infoPanel); + objectPanel.setIconAt(5, GetIcon("icons/info.png")); + objectPanel.setToolTipTextAt(4, "Information"); } /* @@ -2304,7 +2362,7 @@ { public void mouseClicked(MouseEvent e) { - borderfadeField.setFloat(0.5); + borderfadeField.setFloat(0.4); opacityField.setFloat(0.75); materialtouched = true; @@ -2370,6 +2428,48 @@ } }); presetpanel.add(shadowShader); + + cLabel para0 = GetLabel("icons/shadericons/parallax0.png", !Globals.NIMBUSLAF); + para0.setToolTipText("No parallax"); + para0.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + parallaxField.setFloat(0.125); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(para0); + + cLabel para1 = GetLabel("icons/shadericons/parallax1.png", !Globals.NIMBUSLAF); + para1.setToolTipText("With parallax"); + para1.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + parallaxField.setFloat(0.13); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(para1); + + cLabel para2 = GetLabel("icons/shadericons/parallax2.png", !Globals.NIMBUSLAF); + para2.setToolTipText("Reset parallax"); + para2.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + parallaxField.setFloat(0.14); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(para2); cGridBag panel = new cGridBag().setVertical(true); @@ -2616,6 +2716,12 @@ backlit.add(backlitField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints); colorSection.add(backlit); + cGridBag parallax = new cGridBag(); + parallax.add(parallaxLabel = new JLabel("Parallax")); // , aConstraints); + parallaxLabel.setHorizontalAlignment(SwingConstants.TRAILING); + parallax.add(parallaxField = new cNumberSlider(this, 0.001, 0.25, -0.125)); // , aConstraints); + colorSection.add(parallax); + //panel.add(new JSeparator()); //panel.add(globalSection); @@ -3667,6 +3773,7 @@ shadowField.setFloat(mat.shadow); textureField.setFloat(mat.texture); opacityField.setFloat(mat.opacity); + parallaxField.setFloat(mat.parallax + 0.125f); fakedepthField.setFloat(mat.fakedepth); shadowbiasField.setFloat(mat.shadowbias); bumpField.setInteger(1); // dec 2013 @@ -4360,7 +4467,11 @@ System.err.println("Save"); Replace(); - //cRadio tab = GetCurrentTab(); + if (copy.versionlist == null) + { + copy.versionlist = new Object3D[100]; + copy.versionindex = -1; + } Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"? @@ -4534,7 +4645,7 @@ //cRadio tab = GetCurrentTab(); - if (copy.versionlist == null) + if (copy.versionindex == -2) { saveVersionButton.setEnabled(false); restoreButton.setEnabled(false); @@ -4891,6 +5002,7 @@ current.shadow = (float) shadowField.getFloat(); current.texture = (float) textureField.getFloat(); current.opacity = (float) opacityField.getFloat(); + current.parallax = (float) parallaxField.getFloat() - 0.125f; current.fakedepth = (float) fakedepthField.getFloat(); current.shadowbias = (float) shadowbiasField.getFloat(); @@ -4945,6 +5057,8 @@ textureField.SetToolTipValue((mat.texture)); if (!Equal(opacityField.getFloat(), mat.opacity)) opacityField.SetToolTipValue((mat.opacity)); + //if (!Equal(parallaxField.getFloat(), mat.parallax)) + parallaxField.SetToolTipValue((mat.parallax)); if (!Equal(fakedepthField.getFloat(), mat.fakedepth)) fakedepthField.SetToolTipValue((mat.fakedepth)); if (!Equal(shadowbiasField.getFloat(), mat.shadowbias)) @@ -6201,6 +6315,8 @@ cNumberSlider textureField; JLabel opacityLabel; cNumberSlider opacityField; + JLabel parallaxLabel; + cNumberSlider parallaxField; JLabel fakedepthLabel; cNumberSlider fakedepthField; JLabel shadowbiasLabel; -- Gitblit v1.6.2