.. | .. |
---|
72 | 72 | } |
---|
73 | 73 | } |
---|
74 | 74 | |
---|
| 75 | + public Composite CreateCameras() |
---|
| 76 | + { |
---|
| 77 | + Composite cams = new cTemplate(); |
---|
| 78 | + cams.name = "Cameras"; |
---|
| 79 | + copy.insertElementAt(cams, 0); |
---|
| 80 | + |
---|
| 81 | + cams.addChild(new Camera()); |
---|
| 82 | + cams.addChild(new Camera(1)); |
---|
| 83 | + cams.addChild(new Camera(2)); |
---|
| 84 | + cams.addChild(new Camera(3)); |
---|
| 85 | + cams.addChild(new Camera(4)); |
---|
| 86 | + |
---|
| 87 | + return cams; |
---|
| 88 | + } |
---|
| 89 | + |
---|
75 | 90 | public cGridBag GetSeparator() |
---|
76 | 91 | { |
---|
77 | 92 | cGridBag separator = new cGridBag(); |
---|
.. | .. |
---|
119 | 134 | |
---|
120 | 135 | try |
---|
121 | 136 | { |
---|
122 | | - BufferedImage image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name)); |
---|
123 | | - |
---|
| 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 | + |
---|
124 | 145 | // if (image.getWidth() > 48 && image.getHeight() > 48) |
---|
125 | 146 | // { |
---|
126 | 147 | // BufferedImage resized = new BufferedImage(48, 48, image.getType()); |
---|
.. | .. |
---|
445 | 466 | importOBJItem.addActionListener(this); |
---|
446 | 467 | import3DSItem = menu.add(new MenuItem("3DS file...")); |
---|
447 | 468 | import3DSItem.addActionListener(this); |
---|
| 469 | + if (Globals.ADVANCED) |
---|
| 470 | + { |
---|
448 | 471 | importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D file...")); |
---|
449 | 472 | importVRMLX3DItem.addActionListener(this); |
---|
| 473 | + } |
---|
450 | 474 | menu.add("-"); |
---|
451 | 475 | importGFDItem = menu.add(new MenuItem("Grafreed file...")); |
---|
452 | 476 | importGFDItem.addActionListener(this); |
---|
.. | .. |
---|
1550 | 1574 | |
---|
1551 | 1575 | if (cam == null || !(copy.get(0) instanceof cGroup)) |
---|
1552 | 1576 | { |
---|
1553 | | - if (Globals.DEBUG) |
---|
1554 | | - System.out.println("CREATE CAMERAS"); |
---|
1555 | | - cams = new cTemplate(); |
---|
1556 | | - cams.name = "Cameras"; |
---|
1557 | | - copy.insertElementAt(cams, 0); |
---|
1558 | | - //cams.parent = copy; |
---|
1559 | | - |
---|
1560 | | - cam = new Camera(); // LA.newVector(3, 2, 1)); |
---|
1561 | | - cams.addChild(cam); |
---|
1562 | | - cam = new Camera(1); |
---|
1563 | | - cams.addChild(cam); |
---|
1564 | | - cam = new Camera(2); |
---|
1565 | | - cams.addChild(cam); |
---|
1566 | | - cam = new Camera(3); |
---|
1567 | | - cams.addChild(cam); |
---|
1568 | | - cam = new Camera(4); // Light |
---|
1569 | | - cams.addChild(cam); |
---|
| 1577 | + if (Globals.DEBUG) |
---|
| 1578 | + System.out.println("CREATE CAMERAS"); |
---|
| 1579 | + cams = CreateCameras(); |
---|
1570 | 1580 | } else |
---|
1571 | 1581 | { |
---|
1572 | 1582 | cams = (cGroup) copy.get(0); |
---|
.. | .. |
---|
1718 | 1728 | |
---|
1719 | 1729 | //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); |
---|
1720 | 1730 | //tmp.setName("Edit"); |
---|
| 1731 | + objectPanel.add(skyboxPanel); |
---|
| 1732 | + objectPanel.setIconAt(0, GetIcon("icons/skybox.jpg")); |
---|
| 1733 | + objectPanel.setToolTipTextAt(0, "Backgrounds"); |
---|
| 1734 | + |
---|
1721 | 1735 | objectPanel.add(toolboxPanel); |
---|
1722 | | - objectPanel.setIconAt(0, GetIcon("icons/primitives.png")); |
---|
1723 | | - objectPanel.setToolTipTextAt(0, "Objects & textures"); |
---|
| 1736 | + objectPanel.setIconAt(1, GetIcon("icons/primitives.png")); |
---|
| 1737 | + objectPanel.setToolTipTextAt(1, "Objects & textures"); |
---|
1724 | 1738 | |
---|
1725 | 1739 | objectPanel.add(materialPanel); |
---|
1726 | | - objectPanel.setIconAt(1, GetIcon("icons/material.png")); |
---|
1727 | | - objectPanel.setToolTipTextAt(1, "Material"); |
---|
| 1740 | + objectPanel.setIconAt(2, GetIcon("icons/material.png")); |
---|
| 1741 | + objectPanel.setToolTipTextAt(2, "Material"); |
---|
1728 | 1742 | |
---|
1729 | | - objectPanel.add(skyboxPanel); |
---|
1730 | | - objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg")); |
---|
1731 | | - objectPanel.setToolTipTextAt(2, "Backgrounds"); |
---|
1732 | | - |
---|
1733 | 1743 | // JPanel north = new JPanel(new BorderLayout()); |
---|
1734 | 1744 | // north.setName("Edit"); |
---|
1735 | 1745 | // north.add(ctrlPanel, BorderLayout.NORTH); |
---|
1736 | 1746 | // objectPanel.add(north); |
---|
1737 | 1747 | objectPanel.add(editPanel); |
---|
1738 | | - objectPanel.setIconAt(3, GetIcon("icons/write.png")); |
---|
| 1748 | + objectPanel.setIconAt(3, GetIcon("icons/writewhite.png")); |
---|
1739 | 1749 | objectPanel.setToolTipTextAt(3, "Edit controls"); |
---|
1740 | 1750 | |
---|
1741 | 1751 | objectPanel.add(transformPanel); |
---|
.. | .. |
---|
1744 | 1754 | |
---|
1745 | 1755 | patchMaterial = true; |
---|
1746 | 1756 | cameraView.patchMaterial = this; |
---|
1747 | | - objectPanel.setSelectedIndex(1); |
---|
| 1757 | + objectPanel.setSelectedIndex(2); |
---|
1748 | 1758 | |
---|
1749 | 1759 | /* |
---|
1750 | 1760 | aConstraints.gridx = 0; |
---|
.. | .. |
---|
1785 | 1795 | cGridBag creditsPanel = new cGridBag().setVertical(true); |
---|
1786 | 1796 | creditsPanel.setName("Credits"); |
---|
1787 | 1797 | |
---|
1788 | | - cLabel ogaLabel = new cLabel(" Most Skyboxes courtesy of OpenGameArt!", !Globals.NIMBUSLAF); |
---|
| 1798 | + cLabel ogaLabel = new cLabel(" Skyboxes courtesy of OpenGameArt!", !Globals.NIMBUSLAF); |
---|
1789 | 1799 | creditsPanel.add(ogaLabel); |
---|
1790 | 1800 | |
---|
1791 | | - cButton opengameartButton; |
---|
1792 | | - creditsPanel.add(opengameartButton = GetButton("icons/sara-logo.png", !Globals.NIMBUSLAF)); |
---|
1793 | | - opengameartButton.setToolTipText("https://opengameart.org"); |
---|
| 1801 | + cButton creditButton; |
---|
| 1802 | + creditsPanel.add(creditButton = GetButton("icons/sara-logo.png", !Globals.NIMBUSLAF)); |
---|
| 1803 | + creditButton.setToolTipText("https://opengameart.org"); |
---|
1794 | 1804 | |
---|
1795 | | - opengameartButton.addMouseListener(new MouseAdapter() |
---|
| 1805 | + creditButton.addMouseListener(new MouseAdapter() |
---|
1796 | 1806 | { |
---|
1797 | 1807 | public void mouseClicked(MouseEvent e) |
---|
1798 | 1808 | { |
---|
.. | .. |
---|
1807 | 1817 | } |
---|
1808 | 1818 | }); |
---|
1809 | 1819 | |
---|
1810 | | - for (int i=10; --i>=0;) |
---|
| 1820 | + ogaLabel = new cLabel(" Download 3D models! (.3ds and .obj only)", !Globals.NIMBUSLAF); |
---|
| 1821 | + creditsPanel.add(ogaLabel); |
---|
| 1822 | + |
---|
| 1823 | + creditsPanel.add(creditButton = GetButton("icons/3delicious.png", !Globals.NIMBUSLAF)); |
---|
| 1824 | + creditButton.setToolTipText("https://3delicious.net"); |
---|
| 1825 | + |
---|
| 1826 | + creditButton.addMouseListener(new MouseAdapter() |
---|
| 1827 | + { |
---|
| 1828 | + public void mouseClicked(MouseEvent e) |
---|
| 1829 | + { |
---|
| 1830 | + try |
---|
| 1831 | + { |
---|
| 1832 | + Desktop.getDesktop().browse(new java.net.URI("https://3delicious.net")); |
---|
| 1833 | + } catch (Exception e1) |
---|
| 1834 | +// } catch (java.io.IOException | java.net.URISyntaxException e1) |
---|
| 1835 | + { |
---|
| 1836 | + e1.printStackTrace(); |
---|
| 1837 | + } |
---|
| 1838 | + } |
---|
| 1839 | + }); |
---|
| 1840 | + |
---|
| 1841 | + creditsPanel.add(creditButton = GetButton("icons/archive3d.png", !Globals.NIMBUSLAF)); |
---|
| 1842 | + creditButton.setToolTipText("https://archive3d.net"); |
---|
| 1843 | + |
---|
| 1844 | + creditButton.addMouseListener(new MouseAdapter() |
---|
| 1845 | + { |
---|
| 1846 | + public void mouseClicked(MouseEvent e) |
---|
| 1847 | + { |
---|
| 1848 | + try |
---|
| 1849 | + { |
---|
| 1850 | + Desktop.getDesktop().browse(new java.net.URI("https://archive3d.net")); |
---|
| 1851 | + } catch (Exception e1) |
---|
| 1852 | +// } catch (java.io.IOException | java.net.URISyntaxException e1) |
---|
| 1853 | + { |
---|
| 1854 | + e1.printStackTrace(); |
---|
| 1855 | + } |
---|
| 1856 | + } |
---|
| 1857 | + }); |
---|
| 1858 | + |
---|
| 1859 | + creditsPanel.add(creditButton = GetButton("icons/turbosquid.png", !Globals.NIMBUSLAF)); |
---|
| 1860 | + creditButton.setToolTipText("https://turbosquid.com"); |
---|
| 1861 | + |
---|
| 1862 | + creditButton.addMouseListener(new MouseAdapter() |
---|
| 1863 | + { |
---|
| 1864 | + public void mouseClicked(MouseEvent e) |
---|
| 1865 | + { |
---|
| 1866 | + try |
---|
| 1867 | + { |
---|
| 1868 | + Desktop.getDesktop().browse(new java.net.URI("https://www.turbosquid.com/Search/3D-Models/free")); |
---|
| 1869 | + } catch (Exception e1) |
---|
| 1870 | +// } catch (java.io.IOException | java.net.URISyntaxException e1) |
---|
| 1871 | + { |
---|
| 1872 | + e1.printStackTrace(); |
---|
| 1873 | + } |
---|
| 1874 | + } |
---|
| 1875 | + }); |
---|
| 1876 | + |
---|
| 1877 | + for (int i=6; --i>=0;) |
---|
1811 | 1878 | { |
---|
1812 | 1879 | creditsPanel.add(new cGridBag()); |
---|
1813 | 1880 | } |
---|
.. | .. |
---|
2370 | 2437 | }); |
---|
2371 | 2438 | presetpanel.add(shadowShader); |
---|
2372 | 2439 | |
---|
| 2440 | + cLabel para0 = GetLabel("icons/shadericons/parallax0.png", !Globals.NIMBUSLAF); |
---|
| 2441 | + para0.setToolTipText("No parallax"); |
---|
| 2442 | + para0.addMouseListener(new MouseAdapter() |
---|
| 2443 | + { |
---|
| 2444 | + public void mouseClicked(MouseEvent e) |
---|
| 2445 | + { |
---|
| 2446 | + parallaxField.setFloat(0.25); |
---|
| 2447 | + |
---|
| 2448 | + materialtouched = true; |
---|
| 2449 | + applySelf(); |
---|
| 2450 | + } |
---|
| 2451 | + }); |
---|
| 2452 | + presetpanel.add(para0); |
---|
| 2453 | + |
---|
| 2454 | + cLabel para1 = GetLabel("icons/shadericons/parallax1.png", !Globals.NIMBUSLAF); |
---|
| 2455 | + para1.setToolTipText("With parallax"); |
---|
| 2456 | + para1.addMouseListener(new MouseAdapter() |
---|
| 2457 | + { |
---|
| 2458 | + public void mouseClicked(MouseEvent e) |
---|
| 2459 | + { |
---|
| 2460 | + parallaxField.setFloat(0.255); |
---|
| 2461 | + |
---|
| 2462 | + materialtouched = true; |
---|
| 2463 | + applySelf(); |
---|
| 2464 | + } |
---|
| 2465 | + }); |
---|
| 2466 | + presetpanel.add(para1); |
---|
| 2467 | + |
---|
| 2468 | + cLabel para2 = GetLabel("icons/shadericons/parallax2.png", !Globals.NIMBUSLAF); |
---|
| 2469 | + para2.setToolTipText("Reset parallax"); |
---|
| 2470 | + para2.addMouseListener(new MouseAdapter() |
---|
| 2471 | + { |
---|
| 2472 | + public void mouseClicked(MouseEvent e) |
---|
| 2473 | + { |
---|
| 2474 | + parallaxField.setFloat(0.265); |
---|
| 2475 | + |
---|
| 2476 | + materialtouched = true; |
---|
| 2477 | + applySelf(); |
---|
| 2478 | + } |
---|
| 2479 | + }); |
---|
| 2480 | + presetpanel.add(para2); |
---|
| 2481 | + |
---|
2373 | 2482 | cGridBag panel = new cGridBag().setVertical(true); |
---|
2374 | 2483 | |
---|
2375 | 2484 | presetpanel.preferredWidth = 1; |
---|
.. | .. |
---|
2615 | 2724 | backlit.add(backlitField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints); |
---|
2616 | 2725 | colorSection.add(backlit); |
---|
2617 | 2726 | |
---|
| 2727 | + cGridBag parallax = new cGridBag(); |
---|
| 2728 | + parallax.add(parallaxLabel = new JLabel("Parallax")); // , aConstraints); |
---|
| 2729 | + parallaxLabel.setHorizontalAlignment(SwingConstants.TRAILING); |
---|
| 2730 | + parallax.add(parallaxField = new cNumberSlider(this, 0.001, 0.5, -0.25)); // , aConstraints); |
---|
| 2731 | + colorSection.add(parallax); |
---|
| 2732 | + |
---|
2618 | 2733 | //panel.add(new JSeparator()); |
---|
2619 | 2734 | |
---|
2620 | 2735 | //panel.add(globalSection); |
---|
.. | .. |
---|
3666 | 3781 | shadowField.setFloat(mat.shadow); |
---|
3667 | 3782 | textureField.setFloat(mat.texture); |
---|
3668 | 3783 | opacityField.setFloat(mat.opacity); |
---|
| 3784 | + parallaxField.setFloat(mat.parallax + 0.25f); |
---|
3669 | 3785 | fakedepthField.setFloat(mat.fakedepth); |
---|
3670 | 3786 | shadowbiasField.setFloat(mat.shadowbias); |
---|
3671 | 3787 | bumpField.setInteger(1); // dec 2013 |
---|
.. | .. |
---|
4206 | 4322 | |
---|
4207 | 4323 | copy.selection.clear(); |
---|
4208 | 4324 | |
---|
| 4325 | + if (copy == Grafreed.grafreed.universe) |
---|
| 4326 | + { |
---|
| 4327 | + CreateCameras(); |
---|
| 4328 | + cameraView.SetCamera(GetCamera(copy, 0)); |
---|
| 4329 | + } |
---|
4209 | 4330 | ResetModel(); |
---|
4210 | | - SetupViews(); |
---|
4211 | 4331 | objEditor.refreshContents(); |
---|
4212 | 4332 | } |
---|
4213 | 4333 | |
---|
.. | .. |
---|
4886 | 5006 | current.shadow = (float) shadowField.getFloat(); |
---|
4887 | 5007 | current.texture = (float) textureField.getFloat(); |
---|
4888 | 5008 | current.opacity = (float) opacityField.getFloat(); |
---|
| 5009 | + current.parallax = (float) parallaxField.getFloat() - 0.25f; |
---|
4889 | 5010 | current.fakedepth = (float) fakedepthField.getFloat(); |
---|
4890 | 5011 | current.shadowbias = (float) shadowbiasField.getFloat(); |
---|
4891 | 5012 | |
---|
.. | .. |
---|
4940 | 5061 | textureField.SetToolTipValue((mat.texture)); |
---|
4941 | 5062 | if (!Equal(opacityField.getFloat(), mat.opacity)) |
---|
4942 | 5063 | opacityField.SetToolTipValue((mat.opacity)); |
---|
| 5064 | + //if (!Equal(parallaxField.getFloat(), mat.parallax)) |
---|
| 5065 | + parallaxField.SetToolTipValue((mat.parallax)); |
---|
4943 | 5066 | if (!Equal(fakedepthField.getFloat(), mat.fakedepth)) |
---|
4944 | 5067 | fakedepthField.SetToolTipValue((mat.fakedepth)); |
---|
4945 | 5068 | if (!Equal(shadowbiasField.getFloat(), mat.shadowbias)) |
---|
.. | .. |
---|
6196 | 6319 | cNumberSlider textureField; |
---|
6197 | 6320 | JLabel opacityLabel; |
---|
6198 | 6321 | cNumberSlider opacityField; |
---|
| 6322 | + JLabel parallaxLabel; |
---|
| 6323 | + cNumberSlider parallaxField; |
---|
6199 | 6324 | JLabel fakedepthLabel; |
---|
6200 | 6325 | cNumberSlider fakedepthField; |
---|
6201 | 6326 | JLabel shadowbiasLabel; |
---|