Normand Briere
2019-08-13 c67de8aca04d988179191ccb52461af00125920e
ObjEditor.java
....@@ -34,6 +34,7 @@
3434 iSendInfo
3535 //KeyListener
3636 {
37
+ public cToggleButton pinButton;
3738 boolean timeline;
3839 boolean wasFullScreen;
3940
....@@ -296,11 +297,13 @@
296297 client = inClient;
297298 copy = client;
298299
299
- if (copy.versionlist == null)
300
- {
301
- copy.versionlist = new Object3D[100];
302
- copy.versionindex = -1;
303
- }
300
+// if (copy.versionlist == null)
301
+// {
302
+// copy.versionlist = new Object3D[100];
303
+// copy.versionindex = -1;
304
+//
305
+// callee.Save(true);
306
+// }
304307
305308 // "this" is not called: SetupUI2(objEditor);
306309 }
....@@ -319,6 +322,8 @@
319322 {
320323 copy.versionlist = new Object3D[100];
321324 copy.versionindex = -1;
325
+
326
+// Save(true);
322327 }
323328
324329 SetupUI2(callee.GetEditor());
....@@ -353,11 +358,13 @@
353358 copy = localCopy;
354359 copy.editWindow = this;
355360
356
- if (copy.versionlist == null)
357
- {
358
-// copy.versions = new byte[100][];
361
+// if (copy.versionlist == null)
362
+// {
363
+// copy.versionlist = new Object3D[100];
359364 // copy.versionindex = -1;
360
- }
365
+//
366
+// Save(true);
367
+// }
361368
362369 SetupMenu();
363370
....@@ -426,6 +433,8 @@
426433
427434 ChangeListener changeListener = new ChangeListener()
428435 {
436
+ String name;
437
+
429438 public void stateChanged(ChangeEvent changeEvent)
430439 {
431440 // if (objectPanel.getSelectedIndex() == objectPanel.indexOfTab("Material") && !materialFlushed)
....@@ -444,7 +453,36 @@
444453 // EditSelection(false);
445454 // }
446455
447
- refreshContents(false); // To refresh Info tab
456
+ if (objectPanel.getSelectedIndex() == 4)
457
+ {
458
+ name = copy.skyboxname;
459
+
460
+ if (name == null)
461
+ {
462
+ name = "";
463
+ }
464
+
465
+ copy.skyboxname = "cubemaps/default-skyboxes/rgb";
466
+ copy.skyboxext = "jpg";
467
+ }
468
+ else
469
+ {
470
+ if (name != null)
471
+ {
472
+ if (name.equals(""))
473
+ {
474
+ copy.skyboxname = null;
475
+ copy.skyboxext = null;
476
+ }
477
+ else
478
+ {
479
+ copy.skyboxname = name;
480
+ }
481
+ }
482
+ }
483
+
484
+// refreshContents(false); // To refresh Info tab
485
+ cameraView.repaint();
448486 }
449487 };
450488 objectPanel.addChangeListener(changeListener);
....@@ -466,6 +504,8 @@
466504
467505 toolboxPanel = new cGridBag().setVertical(true);
468506 //toolboxPanel.setName("Toolbox");
507
+
508
+ skyboxPanel = new cGridBag().setVertical(true);
469509
470510 materialPanel = new cGridBag().setVertical(false);
471511 //materialPanel.setName("Material");
....@@ -751,6 +791,7 @@
751791 boolean maximized;
752792
753793 cButton fullscreenLayout;
794
+ cButton expandedLayout;
754795
755796 void Minimize()
756797 {
....@@ -790,10 +831,12 @@
790831 cButton minButton;
791832 cButton maxButton;
792833 cButton fullButton;
834
+ cButton collapseButton;
835
+ cButton maximize3DButton;
793836
794837 void ToggleFullScreen()
795838 {
796
-GraphicsDevice device = frame.getGraphicsConfiguration().getDevice();
839
+ GraphicsDevice device = frame.getGraphicsConfiguration().getDevice();
797840
798841 cameraView.ToggleFullScreen();
799842
....@@ -814,13 +857,13 @@
814857 // X frame.getContentPane().remove(/*"Center",*/bigThree);
815858 // X framePanel.add(bigThree);
816859 // X frame.getContentPane().add(/*"Center",*/framePanel);
817
- framePanel.setDividerLocation(46);
860
+// framePanel.setDividerLocation(46); // icons are 24x24
818861
819862 //frame.setVisible(true);
820
- radio.layout = keepButton;
863
+// radio.layout = keepButton;
821864 //theFrame = null;
822865 keepButton = null;
823
- radio.layout.doClick();
866
+// radio.layout.doClick();
824867
825868 } else
826869 {
....@@ -841,10 +884,10 @@
841884 // X frame.getContentPane().remove(/*"Center",*/framePanel);
842885 // X framePanel.remove(bigThree);
843886 // X frame.getContentPane().add(/*"Center",*/bigThree);
844
- framePanel.setDividerLocation(0);
887
+// framePanel.setDividerLocation(0);
845888
846
- radio.layout = fullscreenLayout;
847
- radio.layout.doClick();
889
+// radio.layout = fullscreenLayout;
890
+// radio.layout.doClick();
848891 //frame.setVisible(true);
849892 }
850893 frame.validate();
....@@ -852,23 +895,31 @@
852895 cameraView.requestFocusInWindow();
853896 }
854897
855
- private Object3D CompressCopy()
898
+ void CollapseToolbar()
899
+ {
900
+ framePanel.setDividerLocation(0);
901
+ //frame.validate();
902
+
903
+ cameraView.requestFocusInWindow();
904
+ }
905
+
906
+ private Object3D Duplicate(Object3D object)
856907 {
857908 boolean temp = CameraPane.SWITCH;
858909 CameraPane.SWITCH = false;
859910
860
- copy.ExtractBigData(versiontable);
911
+ object.ExtractBigData(versiontable);
861912 // if (copy == client)
862913
863
- Object3D versions[] = copy.versionlist;
864
- copy.versionlist = null;
914
+ Object3D versions[] = object.versionlist;
915
+ object.versionlist = null;
865916
866917 //byte[] compress = Compress(copy);
867
- Object3D compress = (Object3D)Grafreed.clone(copy);
918
+ Object3D compress = (Object3D)Grafreed.clone(object);
868919
869
- copy.versionlist = versions;
920
+ object.versionlist = versions;
870921
871
- copy.RestoreBigData(versiontable);
922
+ object.RestoreBigData(versiontable);
872923
873924 CameraPane.SWITCH = temp;
874925
....@@ -1205,6 +1256,18 @@
12051256
12061257 namePanel = new cGridBag();
12071258
1259
+ //if (copy.pinned)
1260
+ {
1261
+ pinButton = GetToggleButton("icons/pin.png", !Grafreed.NIMBUSLAF);
1262
+ pinButton.setSelected(copy.pinned);
1263
+ cGridBag t = new cGridBag();
1264
+ t.preferredWidth = 2;
1265
+ t.add(pinButton);
1266
+ namePanel.add(t);
1267
+
1268
+ pinButton.addItemListener(this);
1269
+ }
1270
+
12081271 nameField = AddText(namePanel, copy.GetName());
12091272 namePanel.add(new JScrollPane(nameField, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));
12101273 oe.ctrlPanel.add(namePanel);
....@@ -1556,27 +1619,26 @@
15561619 objectPanel.setIconAt(0, GetIcon("icons/material.png"));
15571620 objectPanel.setToolTipTextAt(0, "Material");
15581621
1622
+ objectPanel.add(toolboxPanel);
1623
+ objectPanel.setIconAt(1, GetIcon("icons/primitives.png"));
1624
+ objectPanel.setToolTipTextAt(1, "Objects & textures");
1625
+
1626
+ objectPanel.add(skyboxPanel);
1627
+ objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg"));
1628
+ objectPanel.setToolTipTextAt(2, "Backgrounds");
1629
+
15591630 // JPanel north = new JPanel(new BorderLayout());
15601631 // north.setName("Edit");
15611632 // north.add(ctrlPanel, BorderLayout.NORTH);
15621633 // objectPanel.add(north);
15631634 objectPanel.add(editPanel);
1564
- objectPanel.setIconAt(1, GetIcon("icons/write.png"));
1565
- objectPanel.setToolTipTextAt(1, "Edit controls");
1566
-
1567
- //if (Globals.ADVANCED)
1568
- objectPanel.add(infoPanel);
1569
- objectPanel.setIconAt(2, GetIcon("icons/info.png"));
1570
- objectPanel.setToolTipTextAt(2, "Information");
1635
+ objectPanel.setIconAt(3, GetIcon("icons/write.png"));
1636
+ objectPanel.setToolTipTextAt(3, "Edit controls");
15711637
15721638 objectPanel.add(XYZPanel);
1573
- objectPanel.setIconAt(3, GetIcon("icons/XYZ.png"));
1574
- objectPanel.setToolTipTextAt(3, "XYZ/RGB transform");
1639
+ objectPanel.setIconAt(4, GetIcon("icons/XYZ.png"));
1640
+ objectPanel.setToolTipTextAt(4, "XYZ/RGB transform");
15751641
1576
- objectPanel.add(toolboxPanel);
1577
- objectPanel.setIconAt(4, GetIcon("icons/primitives.png"));
1578
- objectPanel.setToolTipTextAt(4, "Objects & backgrounds");
1579
-
15801642 /*
15811643 aConstraints.gridx = 0;
15821644 aConstraints.gridwidth = 1;
....@@ -1613,6 +1675,11 @@
16131675
16141676 scenePanel.add(tabbedPane);
16151677
1678
+ //if (Globals.ADVANCED)
1679
+ tabbedPane.add(infoPanel);
1680
+ tabbedPane.setIconAt(3, GetIcon("icons/info.png"));
1681
+ tabbedPane.setToolTipTextAt(3, "Information");
1682
+
16161683 /*
16171684 cTree jTree = new cTree(null);
16181685 ToolTipManager.sharedInstance().registerComponent(jTree);
....@@ -1683,6 +1750,23 @@
16831750 // aConstraints.gridheight = 1;
16841751
16851752 framePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, toolbarPanel, bigThree);
1753
+
1754
+ framePanel.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY,
1755
+ new java.beans.PropertyChangeListener()
1756
+ {
1757
+ public void propertyChange(java.beans.PropertyChangeEvent pce)
1758
+ {
1759
+ if ((Integer)pce.getOldValue() == 1)
1760
+ {
1761
+ if (radio.layout != expandedLayout)
1762
+ {
1763
+ radio.layout = expandedLayout;
1764
+ radio.layout.doClick();
1765
+ }
1766
+ }
1767
+ }
1768
+ });
1769
+
16861770 framePanel.setContinuousLayout(false);
16871771 framePanel.setOneTouchExpandable(false);
16881772 //.setDividerLocation(0.8);
....@@ -1740,7 +1824,9 @@
17401824 void SetupMaterial(cGridBag materialpanel)
17411825 {
17421826 cGridBag presetpanel = new cGridBag().setVertical(true);
1827
+
17431828 cLabel skin = GetLabel("icons/shadericons/shadericon00000.png", !Grafreed.NIMBUSLAF);
1829
+ skin.setToolTipText("Skin");
17441830 skin.addMouseListener(new MouseAdapter()
17451831 {
17461832 public void mouseClicked(MouseEvent e)
....@@ -1769,8 +1855,116 @@
17691855 });
17701856 presetpanel.add(skin);
17711857
1772
- cLabel rough2 = GetLabel("icons/shadericons/shadericon00001.png", !Grafreed.NIMBUSLAF);
1773
- rough2.addMouseListener(new MouseAdapter()
1858
+ cLabel lambert = GetLabel("icons/shadericons/shadericon00002.png", !Grafreed.NIMBUSLAF);
1859
+ lambert.setToolTipText("Diffuse");
1860
+ lambert.addMouseListener(new MouseAdapter()
1861
+ {
1862
+ public void mouseClicked(MouseEvent e)
1863
+ {
1864
+ Object3D object = Grafreed.materials.versionlist[2].get(0);
1865
+ cMaterial material = object.material;
1866
+
1867
+ diffusenessField.setFloat(material.factor);
1868
+ selfshadowField.setFloat(material.diffuseness);
1869
+
1870
+ materialtouched = true;
1871
+ applySelf();
1872
+ }
1873
+ });
1874
+ presetpanel.add(lambert);
1875
+
1876
+ cLabel diffuse2 = GetLabel("icons/shadericons/shadericon00003.png", !Grafreed.NIMBUSLAF);
1877
+ diffuse2.setToolTipText("Diffuse2");
1878
+ diffuse2.addMouseListener(new MouseAdapter()
1879
+ {
1880
+ public void mouseClicked(MouseEvent e)
1881
+ {
1882
+ Object3D object = Grafreed.materials.versionlist[3].get(0);
1883
+ cMaterial material = object.material;
1884
+
1885
+ diffusenessField.setFloat(material.factor);
1886
+ selfshadowField.setFloat(material.diffuseness);
1887
+
1888
+ materialtouched = true;
1889
+ applySelf();
1890
+ }
1891
+ });
1892
+ presetpanel.add(diffuse2);
1893
+
1894
+ cLabel diffusemoon = GetLabel("icons/shadericons/shadericon00004.png", !Grafreed.NIMBUSLAF);
1895
+ diffusemoon.setToolTipText("Moon");
1896
+ diffusemoon.addMouseListener(new MouseAdapter()
1897
+ {
1898
+ public void mouseClicked(MouseEvent e)
1899
+ {
1900
+ Object3D object = Grafreed.materials.versionlist[4].get(0);
1901
+ cMaterial material = object.material;
1902
+
1903
+ diffusenessField.setFloat(material.factor);
1904
+ selfshadowField.setFloat(material.diffuseness);
1905
+
1906
+ materialtouched = true;
1907
+ applySelf();
1908
+ }
1909
+ });
1910
+ presetpanel.add(diffusemoon);
1911
+
1912
+ cLabel diffusemoon2 = GetLabel("icons/shadericons/shadericon00005.png", !Grafreed.NIMBUSLAF);
1913
+ diffusemoon2.setToolTipText("Moon2");
1914
+ diffusemoon2.addMouseListener(new MouseAdapter()
1915
+ {
1916
+ public void mouseClicked(MouseEvent e)
1917
+ {
1918
+ Object3D object = Grafreed.materials.versionlist[5].get(0);
1919
+ cMaterial material = object.material;
1920
+
1921
+ diffusenessField.setFloat(material.factor);
1922
+ selfshadowField.setFloat(material.diffuseness);
1923
+
1924
+ materialtouched = true;
1925
+ applySelf();
1926
+ }
1927
+ });
1928
+ presetpanel.add(diffusemoon2);
1929
+
1930
+ cLabel diffusemoon3 = GetLabel("icons/shadericons/shadericon00006.png", !Grafreed.NIMBUSLAF);
1931
+ diffusemoon3.setToolTipText("Moon3");
1932
+ diffusemoon3.addMouseListener(new MouseAdapter()
1933
+ {
1934
+ public void mouseClicked(MouseEvent e)
1935
+ {
1936
+ Object3D object = Grafreed.materials.versionlist[6].get(0);
1937
+ cMaterial material = object.material;
1938
+
1939
+ diffusenessField.setFloat(material.factor);
1940
+ selfshadowField.setFloat(material.diffuseness);
1941
+
1942
+ materialtouched = true;
1943
+ applySelf();
1944
+ }
1945
+ });
1946
+ presetpanel.add(diffusemoon3);
1947
+
1948
+ cLabel diffusesheen = GetLabel("icons/shadericons/shadericon00007.png", !Grafreed.NIMBUSLAF);
1949
+ diffusesheen.setToolTipText("Sheen");
1950
+ diffusesheen.addMouseListener(new MouseAdapter()
1951
+ {
1952
+ public void mouseClicked(MouseEvent e)
1953
+ {
1954
+ Object3D object = Grafreed.materials.versionlist[7].get(0);
1955
+ cMaterial material = object.material;
1956
+
1957
+ sheenField.setFloat(material.sheen);
1958
+
1959
+ materialtouched = true;
1960
+ applySelf();
1961
+ }
1962
+ });
1963
+ presetpanel.add(diffusesheen);
1964
+
1965
+ cLabel rough = GetLabel("icons/shadericons/shadericon00001.png", !Grafreed.NIMBUSLAF);
1966
+ rough.setToolTipText("Rough metal");
1967
+ rough.addMouseListener(new MouseAdapter()
17741968 {
17751969 public void mouseClicked(MouseEvent e)
17761970 {
....@@ -1784,31 +1978,239 @@
17841978 applySelf();
17851979 }
17861980 });
1981
+ presetpanel.add(rough);
1982
+
1983
+ cLabel rough2 = GetLabel("icons/shadericons/shadericon00013.png", !Grafreed.NIMBUSLAF);
1984
+ rough2.setToolTipText("Medium metal");
1985
+ rough2.addMouseListener(new MouseAdapter()
1986
+ {
1987
+ public void mouseClicked(MouseEvent e)
1988
+ {
1989
+ Object3D object = Grafreed.materials.versionlist[13].get(0);
1990
+ cMaterial material = object.material;
1991
+
1992
+ shininessField.setFloat(material.shininess);
1993
+ lightareaField.setFloat(material.lightarea);
1994
+
1995
+ materialtouched = true;
1996
+ applySelf();
1997
+ }
1998
+ });
17871999 presetpanel.add(rough2);
17882000
1789
- presetpanel.add(GetLabel("icons/shadericons/shadericon00002.png", !Grafreed.NIMBUSLAF));
1790
- presetpanel.add(GetLabel("icons/shadericons/shadericon00003.png", !Grafreed.NIMBUSLAF));
1791
- presetpanel.add(GetLabel("icons/shadericons/shadericon00004.png", !Grafreed.NIMBUSLAF));
1792
- presetpanel.add(GetLabel("icons/shadericons/shadericon00005.png", !Grafreed.NIMBUSLAF));
1793
- presetpanel.add(GetLabel("icons/shadericons/shadericon00006.png", !Grafreed.NIMBUSLAF));
1794
- presetpanel.add(GetLabel("icons/shadericons/shadericon00007.png", !Grafreed.NIMBUSLAF));
1795
- presetpanel.add(GetLabel("icons/shadericons/shadericon00008.png", !Grafreed.NIMBUSLAF));
1796
- presetpanel.add(GetLabel("icons/shadericons/shadericon00009.png", !Grafreed.NIMBUSLAF));
1797
- presetpanel.add(GetLabel("icons/shadericons/shadericon00010.png", !Grafreed.NIMBUSLAF));
1798
- presetpanel.add(GetLabel("icons/shadericons/shadericon00011.png", !Grafreed.NIMBUSLAF));
1799
- presetpanel.add(GetLabel("icons/shadericons/shadericon00012.png", !Grafreed.NIMBUSLAF));
1800
- presetpanel.add(GetLabel("icons/shadericons/shadericon00013.png", !Grafreed.NIMBUSLAF));
1801
- presetpanel.add(GetLabel("icons/shadericons/shadericon00014.png", !Grafreed.NIMBUSLAF));
1802
- presetpanel.add(GetLabel("icons/shadericons/shadericon00015.png", !Grafreed.NIMBUSLAF));
1803
- presetpanel.add(GetLabel("icons/shadericons/shadericon00016.png", !Grafreed.NIMBUSLAF));
1804
- presetpanel.add(GetLabel("icons/shadericons/shadericon00017.png", !Grafreed.NIMBUSLAF));
2001
+ cLabel shini0 = GetLabel("icons/shadericons/shadericon00014.png", !Grafreed.NIMBUSLAF);
2002
+ shini0.setToolTipText("Shiny");
2003
+ shini0.addMouseListener(new MouseAdapter()
2004
+ {
2005
+ public void mouseClicked(MouseEvent e)
2006
+ {
2007
+ Object3D object = Grafreed.materials.versionlist[14].get(0);
2008
+ cMaterial material = object.material;
2009
+
2010
+ shininessField.setFloat(material.shininess);
2011
+ lightareaField.setFloat(material.lightarea);
2012
+
2013
+ materialtouched = true;
2014
+ applySelf();
2015
+ }
2016
+ });
2017
+ presetpanel.add(shini0);
2018
+
2019
+ cLabel shini1 = GetLabel("icons/shadericons/shadericon00011.png", !Grafreed.NIMBUSLAF);
2020
+ shini1.setToolTipText("Shiny2");
2021
+ shini1.addMouseListener(new MouseAdapter()
2022
+ {
2023
+ public void mouseClicked(MouseEvent e)
2024
+ {
2025
+ Object3D object = Grafreed.materials.versionlist[11].get(0);
2026
+ cMaterial material = object.material;
2027
+
2028
+ shininessField.setFloat(material.shininess);
2029
+ lightareaField.setFloat(material.lightarea);
2030
+
2031
+ materialtouched = true;
2032
+ applySelf();
2033
+ }
2034
+ });
2035
+ presetpanel.add(shini1);
2036
+
2037
+ cLabel shini2 = GetLabel("icons/shadericons/shadericon00012.png", !Grafreed.NIMBUSLAF);
2038
+ shini2.setToolTipText("Shiny3");
2039
+ shini2.addMouseListener(new MouseAdapter()
2040
+ {
2041
+ public void mouseClicked(MouseEvent e)
2042
+ {
2043
+ Object3D object = Grafreed.materials.versionlist[12].get(0);
2044
+ cMaterial material = object.material;
2045
+
2046
+ shininessField.setFloat(material.shininess);
2047
+ lightareaField.setFloat(material.lightarea);
2048
+
2049
+ materialtouched = true;
2050
+ applySelf();
2051
+ }
2052
+ });
2053
+ presetpanel.add(shini2);
2054
+
2055
+ cLabel aniso = GetLabel("icons/shadericons/shadericon00008.png", !Grafreed.NIMBUSLAF);
2056
+ aniso.setToolTipText("AnisoU");
2057
+ aniso.addMouseListener(new MouseAdapter()
2058
+ {
2059
+ public void mouseClicked(MouseEvent e)
2060
+ {
2061
+ Object3D object = Grafreed.materials.versionlist[8].get(0);
2062
+ cMaterial material = object.material;
2063
+
2064
+ anisoField.setFloat(material.aniso);
2065
+ anisoVField.setFloat(material.anisoV);
2066
+
2067
+ materialtouched = true;
2068
+ applySelf();
2069
+ }
2070
+ });
2071
+ presetpanel.add(aniso);
2072
+
2073
+ cLabel aniso2 = GetLabel("icons/shadericons/shadericon00009.png", !Grafreed.NIMBUSLAF);
2074
+ aniso2.setToolTipText("AnisoV");
2075
+ aniso2.addMouseListener(new MouseAdapter()
2076
+ {
2077
+ public void mouseClicked(MouseEvent e)
2078
+ {
2079
+ Object3D object = Grafreed.materials.versionlist[9].get(0);
2080
+ cMaterial material = object.material;
2081
+
2082
+ anisoField.setFloat(material.aniso);
2083
+ anisoVField.setFloat(material.anisoV);
2084
+
2085
+ materialtouched = true;
2086
+ applySelf();
2087
+ }
2088
+ });
2089
+ presetpanel.add(aniso2);
2090
+
2091
+ cLabel aniso3 = GetLabel("icons/shadericons/shadericon00010.png", !Grafreed.NIMBUSLAF);
2092
+ aniso3.setToolTipText("AnisoUV");
2093
+ aniso3.addMouseListener(new MouseAdapter()
2094
+ {
2095
+ public void mouseClicked(MouseEvent e)
2096
+ {
2097
+ Object3D object = Grafreed.materials.versionlist[10].get(0);
2098
+ cMaterial material = object.material;
2099
+
2100
+ anisoField.setFloat(material.aniso);
2101
+ anisoVField.setFloat(material.anisoV);
2102
+
2103
+ materialtouched = true;
2104
+ applySelf();
2105
+ }
2106
+ });
2107
+ presetpanel.add(aniso3);
2108
+
2109
+ cLabel velvet0 = GetLabel("icons/shadericons/shadericon00015.png", !Grafreed.NIMBUSLAF);
2110
+ velvet0.setToolTipText("Velvet");
2111
+ velvet0.addMouseListener(new MouseAdapter()
2112
+ {
2113
+ public void mouseClicked(MouseEvent e)
2114
+ {
2115
+ Object3D object = Grafreed.materials.versionlist[15].get(0);
2116
+ cMaterial material = object.material;
2117
+
2118
+ diffusenessField.setFloat(material.factor);
2119
+ selfshadowField.setFloat(material.diffuseness);
2120
+ sheenField.setFloat(material.sheen);
2121
+ shininessField.setFloat(material.shininess);
2122
+ velvetField.setFloat(material.velvet);
2123
+ shiftField.setFloat(material.shift);
2124
+
2125
+ materialtouched = true;
2126
+ applySelf();
2127
+ }
2128
+ });
2129
+ presetpanel.add(velvet0);
2130
+
2131
+ cLabel bump0 = GetLabel("icons/shadericons/shadericon00016.png", !Grafreed.NIMBUSLAF);
2132
+ bump0.setToolTipText("Bump texture");
2133
+ bump0.addMouseListener(new MouseAdapter()
2134
+ {
2135
+ public void mouseClicked(MouseEvent e)
2136
+ {
2137
+ Object3D object = Grafreed.materials.versionlist[16].get(0);
2138
+ cMaterial material = object.material;
2139
+
2140
+ bumpField.setFloat(object.projectedVertices[0].x / 1000.0);
2141
+ noiseField.setFloat(object.projectedVertices[0].y / 1000.0);
2142
+ powerField.setFloat(object.projectedVertices[2].x / 1000.0);
2143
+
2144
+ materialtouched = true;
2145
+ applySelf();
2146
+ }
2147
+ });
2148
+ presetpanel.add(bump0);
2149
+
2150
+ cLabel halo = GetLabel("icons/shadericons/shadericon00017.png", !Grafreed.NIMBUSLAF);
2151
+ halo.setToolTipText("Halo");
2152
+ halo.addMouseListener(new MouseAdapter()
2153
+ {
2154
+ public void mouseClicked(MouseEvent e)
2155
+ {
2156
+ Object3D object = Grafreed.materials.versionlist[17].get(0);
2157
+ cMaterial material = object.material;
2158
+
2159
+ opacityPowerField.setFloat(object.projectedVertices[2].y / 1000.0);
2160
+
2161
+ materialtouched = true;
2162
+ applySelf();
2163
+ }
2164
+ });
2165
+ presetpanel.add(halo);
2166
+
2167
+ cLabel candle = GetLabel("icons/shadericons/shadericon00018.png", !Grafreed.NIMBUSLAF);
2168
+ candle.setToolTipText("Candle");
2169
+ candle.addMouseListener(new MouseAdapter()
2170
+ {
2171
+ public void mouseClicked(MouseEvent e)
2172
+ {
2173
+ Object3D object = Grafreed.materials.versionlist[18].get(0);
2174
+ cMaterial material = object.material;
2175
+
2176
+ subsurfaceField.setFloat(material.subsurface);
2177
+ shadowbiasField.setFloat(material.shadowbias);
2178
+ ambientField.setFloat(material.ambient);
2179
+ specularField.setFloat(material.specular);
2180
+ lightareaField.setFloat(material.lightarea);
2181
+ shininessField.setFloat(material.shininess);
2182
+
2183
+ materialtouched = true;
2184
+ applySelf();
2185
+ }
2186
+ });
2187
+ presetpanel.add(candle);
2188
+
2189
+ cLabel shadowShader = GetLabel("icons/shadericons/shadow.png", !Grafreed.NIMBUSLAF);
2190
+ shadowShader.setToolTipText("Shadow");
2191
+ shadowShader.addMouseListener(new MouseAdapter()
2192
+ {
2193
+ public void mouseClicked(MouseEvent e)
2194
+ {
2195
+ diffuseField.setFloat(0.001);
2196
+ ambientField.setFloat(0.001);
2197
+ cameraField.setFloat(0.001);
2198
+ specularField.setFloat(0.001);
2199
+ fakedepthField.setFloat(0.001);
2200
+ opacityField.setFloat(0.6);
2201
+
2202
+ materialtouched = true;
2203
+ applySelf();
2204
+ }
2205
+ });
2206
+ presetpanel.add(shadowShader);
18052207
18062208 cGridBag panel = new cGridBag().setVertical(true);
18072209
18082210 presetpanel.preferredWidth = 1;
18092211
1810
- materialpanel.add(panel);
18112212 materialpanel.add(presetpanel);
2213
+ materialpanel.add(panel);
18122214
18132215 panel.preferredWidth = 8;
18142216
....@@ -3275,6 +3677,17 @@
32753677 public void itemStateChanged(ItemEvent event)
32763678 {
32773679 // System.out.println("Propagate = " + propagate);
3680
+ if (event.getSource() == pinButton)
3681
+ {
3682
+ copy.pinned ^= true;
3683
+ if (!copy.pinned && !copy.editWindow.copy.selection.contains(copy))
3684
+ {
3685
+ ((GroupEditor)copy.editWindow).listUI.remove(copy);
3686
+ copy.CloseUI();
3687
+ //copy.editWindow.refreshContents();
3688
+ }
3689
+ }
3690
+ else
32783691 if (event.getSource() == propagateToggle)
32793692 {
32803693 propagate ^= true;
....@@ -3747,7 +4160,7 @@
37474160 {
37484161 //Save(true);
37494162 Replace();
3750
- SetUndoStates();
4163
+ SetVersionStates();
37514164 }
37524165
37534166 private boolean Equal(byte[] compress, byte[] name)
....@@ -3777,17 +4190,17 @@
37774190
37784191 CopyChanged();
37794192
3780
- SetUndoStates();
4193
+ SetVersionStates();
37814194 }
37824195
37834196 public boolean Save(boolean user)
37844197 {
37854198 System.err.println("Save");
3786
- //Replace();
4199
+ Replace();
37874200
3788
- cRadio tab = GetCurrentTab();
4201
+ //cRadio tab = GetCurrentTab();
37894202
3790
- Object3D compress = CompressCopy(); // Saved version. No need for "Replace"?
4203
+ Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"?
37914204
37924205 boolean thesame = false;
37934206
....@@ -3823,7 +4236,7 @@
38234236 // copy.versionlist[i] = null;
38244237 // }
38254238
3826
- SetUndoStates();
4239
+ SetVersionStates();
38274240
38284241 // test save
38294242 if (false)
....@@ -3881,9 +4294,9 @@
38814294
38824295 void CopyChanged()
38834296 {
3884
- Object3D obj = copy.versionlist[copy.versionindex];
4297
+ Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]);
38854298
3886
- SetUndoStates();
4299
+ SetVersionStates();
38874300
38884301 boolean temp = CameraPane.SWITCH;
38894302 CameraPane.SWITCH = false;
....@@ -3950,12 +4363,15 @@
39504363 return count;
39514364 }
39524365
3953
- void SetUndoStates()
4366
+ void SetVersionStates()
39544367 {
3955
- cRadio tab = GetCurrentTab();
4368
+ //if (true)
4369
+ // return;
4370
+
4371
+ //cRadio tab = GetCurrentTab();
39564372
3957
- restoreButton.setEnabled(true); // copy.versionindex != -1);
3958
- replaceButton.setEnabled(true); // copy.versionindex != -1);
4373
+ restoreButton.setEnabled(copy.versionindex != -1);
4374
+ replaceButton.setEnabled(copy.versionindex != -1);
39594375
39604376 previousVersionButton.setEnabled(copy.versionindex > 0);
39614377 nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null);
....@@ -3964,8 +4380,10 @@
39644380 copy.versionlist[copy.versionindex + 1] != null);
39654381
39664382 muteSlider = true;
4383
+ versionSlider.setMinimum(0);
39674384 versionSlider.setMaximum(VersionCount() - 1);
39684385 versionSlider.setInteger(copy.versionindex);
4386
+ versionSlider.setEnabled(copy.versionindex != -1);
39694387 muteSlider = false;
39704388 }
39714389
....@@ -3976,7 +4394,7 @@
39764394
39774395 System.err.println("Undo");
39784396
3979
- cRadio tab = GetCurrentTab();
4397
+ //cRadio tab = GetCurrentTab();
39804398
39814399 if (copy.versionindex == 0)
39824400 {
....@@ -4008,7 +4426,7 @@
40084426 {
40094427 System.err.println("Restore");
40104428
4011
- cRadio tab = GetCurrentTab();
4429
+ //cRadio tab = GetCurrentTab();
40124430
40134431 if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null)
40144432 {
....@@ -4026,7 +4444,7 @@
40264444 {
40274445 System.err.println("Replace");
40284446
4029
- cRadio tab = GetCurrentTab();
4447
+ //cRadio tab = GetCurrentTab();
40304448
40314449 if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null)
40324450 {
....@@ -4034,7 +4452,7 @@
40344452 return false;
40354453 }
40364454
4037
- copy.versionlist[copy.versionindex] = CompressCopy();
4455
+ copy.versionlist[copy.versionindex] = Duplicate(copy);
40384456
40394457 return true;
40404458 }
....@@ -4044,7 +4462,7 @@
40444462 // Option?
40454463 Replace();
40464464
4047
- cRadio tab = GetCurrentTab();
4465
+ //cRadio tab = GetCurrentTab();
40484466
40494467 if (copy.versionlist[copy.versionindex + 1] == null)
40504468 {
....@@ -4365,7 +4783,7 @@
43654783
43664784 int version = versionSlider.getInteger();
43674785
4368
- if (copy.versionlist[version] != null)
4786
+ if (version != -1 && copy.versionlist[version] != null)
43694787 {
43704788 copy.versionindex = version;
43714789 CopyChanged();
....@@ -4409,7 +4827,7 @@
44094827 //System.out.println("stateChanged = " + this);
44104828 materialtouched = true;
44114829
4412
- if (e.getSource() == colorField && saturationField.getFloat() == 0.001)
4830
+ if (Globals.AUTOSATURATE && e.getSource() == colorField && saturationField.getFloat() == 0.001)
44134831 {
44144832 saturationField.setFloat(1);
44154833 }
....@@ -4724,7 +5142,7 @@
47245142 }
47255143
47265144 if (previousVersionButton != null && copy.versionlist != null)
4727
- SetUndoStates();
5145
+ SetVersionStates();
47285146 }
47295147
47305148 static TweenManager tweenManager = new TweenManager();
....@@ -5113,8 +5531,11 @@
51135531
51145532 if (copy.versionlist == null)
51155533 {
5534
+ // Backward compatibility
51165535 copy.versionlist = new Object3D[100];
51175536 copy.versionindex = -1;
5537
+
5538
+ Save(true);
51185539 }
51195540
51205541 //? SetUndoStates();
....@@ -5206,6 +5627,8 @@
52065627
52075628 void save()
52085629 {
5630
+ Replace();
5631
+
52095632 if (lastname == null)
52105633 {
52115634 return;
....@@ -5448,6 +5871,7 @@
54485871 ButtonGroup buttonGroup;
54495872
54505873 cGridBag toolboxPanel;
5874
+ cGridBag skyboxPanel;
54515875 cGridBag materialPanel;
54525876 cGridBag ctrlPanel;
54535877
....@@ -5552,6 +5976,7 @@
55525976 cNumberSlider anisoField;
55535977 JLabel anisoVLabel;
55545978 cNumberSlider anisoVField;
5979
+
55555980 JLabel cameraLabel;
55565981 cNumberSlider cameraField;
55575982 JLabel selfshadowLabel;
....@@ -5566,6 +5991,7 @@
55665991 cNumberSlider fakedepthField;
55675992 JLabel shadowbiasLabel;
55685993 cNumberSlider shadowbiasField;
5994
+
55695995 JLabel bumpLabel;
55705996 cNumberSlider bumpField;
55715997 JLabel noiseLabel;