Normand Briere
2019-08-22 0c7b833be7d86598a6813cd1c6db0ca9e1b17966
ObjEditor.java
....@@ -134,8 +134,14 @@
134134
135135 try
136136 {
137
- BufferedImage image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name));
138
-
137
+ BufferedImage image;
138
+
139
+ if (name.endsWith("jpg"))
140
+ // Much faster!
141
+ image = new sun.awt.image.codec.JPEGImageDecoderImpl(ObjEditor.class.getClassLoader().getResourceAsStream(name)).decodeAsBufferedImage();
142
+ else
143
+ image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name));
144
+
139145 // if (image.getWidth() > 48 && image.getHeight() > 48)
140146 // {
141147 // BufferedImage resized = new BufferedImage(48, 48, image.getType());
....@@ -377,14 +383,6 @@
377383 client = inClient;
378384 copy = client;
379385
380
- if (copy.versionlist == null)
381
- {
382
- copy.versionlist = new Object3D[100];
383
- copy.versionindex = -1;
384
-
385
-// Save(true);
386
- }
387
-
388386 SetupUI2(callee.GetEditor());
389387 }
390388
....@@ -460,8 +458,11 @@
460458 importOBJItem.addActionListener(this);
461459 import3DSItem = menu.add(new MenuItem("3DS file..."));
462460 import3DSItem.addActionListener(this);
461
+ if (Globals.ADVANCED)
462
+ {
463463 importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D file..."));
464464 importVRMLX3DItem.addActionListener(this);
465
+ }
465466 menu.add("-");
466467 importGFDItem = menu.add(new MenuItem("Grafreed file..."));
467468 importGFDItem.addActionListener(this);
....@@ -1786,14 +1787,14 @@
17861787 cGridBag creditsPanel = new cGridBag().setVertical(true);
17871788 creditsPanel.setName("Credits");
17881789
1789
- cLabel ogaLabel = new cLabel(" Most Skyboxes courtesy of OpenGameArt!", !Globals.NIMBUSLAF);
1790
+ cLabel ogaLabel = new cLabel(" Skyboxes courtesy of OpenGameArt!", !Globals.NIMBUSLAF);
17901791 creditsPanel.add(ogaLabel);
17911792
1792
- cButton opengameartButton;
1793
- creditsPanel.add(opengameartButton = GetButton("icons/sara-logo.png", !Globals.NIMBUSLAF));
1794
- opengameartButton.setToolTipText("https://opengameart.org");
1793
+ cButton creditButton;
1794
+ creditsPanel.add(creditButton = GetButton("icons/sara-logo.png", !Globals.NIMBUSLAF));
1795
+ creditButton.setToolTipText("https://opengameart.org");
17951796
1796
- opengameartButton.addMouseListener(new MouseAdapter()
1797
+ creditButton.addMouseListener(new MouseAdapter()
17971798 {
17981799 public void mouseClicked(MouseEvent e)
17991800 {
....@@ -1808,7 +1809,64 @@
18081809 }
18091810 });
18101811
1811
- for (int i=10; --i>=0;)
1812
+ ogaLabel = new cLabel(" Download 3D models! (.3ds and .obj only)", !Globals.NIMBUSLAF);
1813
+ creditsPanel.add(ogaLabel);
1814
+
1815
+ creditsPanel.add(creditButton = GetButton("icons/3delicious.png", !Globals.NIMBUSLAF));
1816
+ creditButton.setToolTipText("https://3delicious.net");
1817
+
1818
+ creditButton.addMouseListener(new MouseAdapter()
1819
+ {
1820
+ public void mouseClicked(MouseEvent e)
1821
+ {
1822
+ try
1823
+ {
1824
+ Desktop.getDesktop().browse(new java.net.URI("https://3delicious.net"));
1825
+ } catch (Exception e1)
1826
+// } catch (java.io.IOException | java.net.URISyntaxException e1)
1827
+ {
1828
+ e1.printStackTrace();
1829
+ }
1830
+ }
1831
+ });
1832
+
1833
+ creditsPanel.add(creditButton = GetButton("icons/archive3d.png", !Globals.NIMBUSLAF));
1834
+ creditButton.setToolTipText("https://archive3d.net");
1835
+
1836
+ creditButton.addMouseListener(new MouseAdapter()
1837
+ {
1838
+ public void mouseClicked(MouseEvent e)
1839
+ {
1840
+ try
1841
+ {
1842
+ Desktop.getDesktop().browse(new java.net.URI("https://archive3d.net"));
1843
+ } catch (Exception e1)
1844
+// } catch (java.io.IOException | java.net.URISyntaxException e1)
1845
+ {
1846
+ e1.printStackTrace();
1847
+ }
1848
+ }
1849
+ });
1850
+
1851
+ creditsPanel.add(creditButton = GetButton("icons/turbosquid.png", !Globals.NIMBUSLAF));
1852
+ creditButton.setToolTipText("https://turbosquid.com");
1853
+
1854
+ creditButton.addMouseListener(new MouseAdapter()
1855
+ {
1856
+ public void mouseClicked(MouseEvent e)
1857
+ {
1858
+ try
1859
+ {
1860
+ Desktop.getDesktop().browse(new java.net.URI("https://www.turbosquid.com/Search/3D-Models/free"));
1861
+ } catch (Exception e1)
1862
+// } catch (java.io.IOException | java.net.URISyntaxException e1)
1863
+ {
1864
+ e1.printStackTrace();
1865
+ }
1866
+ }
1867
+ });
1868
+
1869
+ for (int i=6; --i>=0;)
18121870 {
18131871 creditsPanel.add(new cGridBag());
18141872 }
....@@ -1818,9 +1876,9 @@
18181876
18191877 if (Globals.ADVANCED)
18201878 {
1821
- tabbedPane.add(infoPanel);
1822
- tabbedPane.setIconAt(4, GetIcon("icons/info.png"));
1823
- tabbedPane.setToolTipTextAt(4, "Information");
1879
+ objectPanel.add(infoPanel);
1880
+ objectPanel.setIconAt(5, GetIcon("icons/info.png"));
1881
+ objectPanel.setToolTipTextAt(4, "Information");
18241882 }
18251883
18261884 /*
....@@ -2304,7 +2362,7 @@
23042362 {
23052363 public void mouseClicked(MouseEvent e)
23062364 {
2307
- borderfadeField.setFloat(0.5);
2365
+ borderfadeField.setFloat(0.4);
23082366 opacityField.setFloat(0.75);
23092367
23102368 materialtouched = true;
....@@ -2370,6 +2428,48 @@
23702428 }
23712429 });
23722430 presetpanel.add(shadowShader);
2431
+
2432
+ cLabel para0 = GetLabel("icons/shadericons/parallax0.png", !Globals.NIMBUSLAF);
2433
+ para0.setToolTipText("No parallax");
2434
+ para0.addMouseListener(new MouseAdapter()
2435
+ {
2436
+ public void mouseClicked(MouseEvent e)
2437
+ {
2438
+ parallaxField.setFloat(0.125);
2439
+
2440
+ materialtouched = true;
2441
+ applySelf();
2442
+ }
2443
+ });
2444
+ presetpanel.add(para0);
2445
+
2446
+ cLabel para1 = GetLabel("icons/shadericons/parallax1.png", !Globals.NIMBUSLAF);
2447
+ para1.setToolTipText("With parallax");
2448
+ para1.addMouseListener(new MouseAdapter()
2449
+ {
2450
+ public void mouseClicked(MouseEvent e)
2451
+ {
2452
+ parallaxField.setFloat(0.13);
2453
+
2454
+ materialtouched = true;
2455
+ applySelf();
2456
+ }
2457
+ });
2458
+ presetpanel.add(para1);
2459
+
2460
+ cLabel para2 = GetLabel("icons/shadericons/parallax2.png", !Globals.NIMBUSLAF);
2461
+ para2.setToolTipText("Reset parallax");
2462
+ para2.addMouseListener(new MouseAdapter()
2463
+ {
2464
+ public void mouseClicked(MouseEvent e)
2465
+ {
2466
+ parallaxField.setFloat(0.14);
2467
+
2468
+ materialtouched = true;
2469
+ applySelf();
2470
+ }
2471
+ });
2472
+ presetpanel.add(para2);
23732473
23742474 cGridBag panel = new cGridBag().setVertical(true);
23752475
....@@ -2616,6 +2716,12 @@
26162716 backlit.add(backlitField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints);
26172717 colorSection.add(backlit);
26182718
2719
+ cGridBag parallax = new cGridBag();
2720
+ parallax.add(parallaxLabel = new JLabel("Parallax")); // , aConstraints);
2721
+ parallaxLabel.setHorizontalAlignment(SwingConstants.TRAILING);
2722
+ parallax.add(parallaxField = new cNumberSlider(this, 0.001, 0.25, -0.125)); // , aConstraints);
2723
+ colorSection.add(parallax);
2724
+
26192725 //panel.add(new JSeparator());
26202726
26212727 //panel.add(globalSection);
....@@ -3667,6 +3773,7 @@
36673773 shadowField.setFloat(mat.shadow);
36683774 textureField.setFloat(mat.texture);
36693775 opacityField.setFloat(mat.opacity);
3776
+ parallaxField.setFloat(mat.parallax + 0.125f);
36703777 fakedepthField.setFloat(mat.fakedepth);
36713778 shadowbiasField.setFloat(mat.shadowbias);
36723779 bumpField.setInteger(1); // dec 2013
....@@ -4360,7 +4467,11 @@
43604467 System.err.println("Save");
43614468 Replace();
43624469
4363
- //cRadio tab = GetCurrentTab();
4470
+ if (copy.versionlist == null)
4471
+ {
4472
+ copy.versionlist = new Object3D[100];
4473
+ copy.versionindex = -1;
4474
+ }
43644475
43654476 Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"?
43664477
....@@ -4534,7 +4645,7 @@
45344645
45354646 //cRadio tab = GetCurrentTab();
45364647
4537
- if (copy.versionlist == null)
4648
+ if (copy.versionindex == -2)
45384649 {
45394650 saveVersionButton.setEnabled(false);
45404651 restoreButton.setEnabled(false);
....@@ -4891,6 +5002,7 @@
48915002 current.shadow = (float) shadowField.getFloat();
48925003 current.texture = (float) textureField.getFloat();
48935004 current.opacity = (float) opacityField.getFloat();
5005
+ current.parallax = (float) parallaxField.getFloat() - 0.125f;
48945006 current.fakedepth = (float) fakedepthField.getFloat();
48955007 current.shadowbias = (float) shadowbiasField.getFloat();
48965008
....@@ -4945,6 +5057,8 @@
49455057 textureField.SetToolTipValue((mat.texture));
49465058 if (!Equal(opacityField.getFloat(), mat.opacity))
49475059 opacityField.SetToolTipValue((mat.opacity));
5060
+ //if (!Equal(parallaxField.getFloat(), mat.parallax))
5061
+ parallaxField.SetToolTipValue((mat.parallax));
49485062 if (!Equal(fakedepthField.getFloat(), mat.fakedepth))
49495063 fakedepthField.SetToolTipValue((mat.fakedepth));
49505064 if (!Equal(shadowbiasField.getFloat(), mat.shadowbias))
....@@ -6201,6 +6315,8 @@
62016315 cNumberSlider textureField;
62026316 JLabel opacityLabel;
62036317 cNumberSlider opacityField;
6318
+ JLabel parallaxLabel;
6319
+ cNumberSlider parallaxField;
62046320 JLabel fakedepthLabel;
62056321 cNumberSlider fakedepthField;
62066322 JLabel shadowbiasLabel;