Normand Briere
2019-08-12 b1d79b74514041a059b454a9f6fc3970773c0cb8
ObjEditor.java
....@@ -34,6 +34,7 @@
3434 iSendInfo
3535 //KeyListener
3636 {
37
+ public cToggleButton pinButton;
3738 boolean timeline;
3839 boolean wasFullScreen;
3940
....@@ -467,6 +468,8 @@
467468 toolboxPanel = new cGridBag().setVertical(true);
468469 //toolboxPanel.setName("Toolbox");
469470
471
+ skyboxPanel = new cGridBag().setVertical(true);
472
+
470473 materialPanel = new cGridBag().setVertical(false);
471474 //materialPanel.setName("Material");
472475
....@@ -751,6 +754,7 @@
751754 boolean maximized;
752755
753756 cButton fullscreenLayout;
757
+ cButton expandedLayout;
754758
755759 void Minimize()
756760 {
....@@ -790,10 +794,12 @@
790794 cButton minButton;
791795 cButton maxButton;
792796 cButton fullButton;
797
+ cButton collapseButton;
798
+ cButton maximize3DButton;
793799
794800 void ToggleFullScreen()
795801 {
796
-GraphicsDevice device = frame.getGraphicsConfiguration().getDevice();
802
+ GraphicsDevice device = frame.getGraphicsConfiguration().getDevice();
797803
798804 cameraView.ToggleFullScreen();
799805
....@@ -814,13 +820,13 @@
814820 // X frame.getContentPane().remove(/*"Center",*/bigThree);
815821 // X framePanel.add(bigThree);
816822 // X frame.getContentPane().add(/*"Center",*/framePanel);
817
- framePanel.setDividerLocation(46);
823
+// framePanel.setDividerLocation(46); // icons are 24x24
818824
819825 //frame.setVisible(true);
820
- radio.layout = keepButton;
826
+// radio.layout = keepButton;
821827 //theFrame = null;
822828 keepButton = null;
823
- radio.layout.doClick();
829
+// radio.layout.doClick();
824830
825831 } else
826832 {
....@@ -841,10 +847,10 @@
841847 // X frame.getContentPane().remove(/*"Center",*/framePanel);
842848 // X framePanel.remove(bigThree);
843849 // X frame.getContentPane().add(/*"Center",*/bigThree);
844
- framePanel.setDividerLocation(0);
850
+// framePanel.setDividerLocation(0);
845851
846
- radio.layout = fullscreenLayout;
847
- radio.layout.doClick();
852
+// radio.layout = fullscreenLayout;
853
+// radio.layout.doClick();
848854 //frame.setVisible(true);
849855 }
850856 frame.validate();
....@@ -852,23 +858,31 @@
852858 cameraView.requestFocusInWindow();
853859 }
854860
855
- private Object3D CompressCopy()
861
+ void CollapseToolbar()
862
+ {
863
+ framePanel.setDividerLocation(0);
864
+ //frame.validate();
865
+
866
+ cameraView.requestFocusInWindow();
867
+ }
868
+
869
+ private Object3D Duplicate(Object3D object)
856870 {
857871 boolean temp = CameraPane.SWITCH;
858872 CameraPane.SWITCH = false;
859873
860
- copy.ExtractBigData(versiontable);
874
+ object.ExtractBigData(versiontable);
861875 // if (copy == client)
862876
863
- Object3D versions[] = copy.versionlist;
864
- copy.versionlist = null;
877
+ Object3D versions[] = object.versionlist;
878
+ object.versionlist = null;
865879
866880 //byte[] compress = Compress(copy);
867
- Object3D compress = (Object3D)Grafreed.clone(copy);
881
+ Object3D compress = (Object3D)Grafreed.clone(object);
868882
869
- copy.versionlist = versions;
883
+ object.versionlist = versions;
870884
871
- copy.RestoreBigData(versiontable);
885
+ object.RestoreBigData(versiontable);
872886
873887 CameraPane.SWITCH = temp;
874888
....@@ -1205,6 +1219,18 @@
12051219
12061220 namePanel = new cGridBag();
12071221
1222
+ //if (copy.pinned)
1223
+ {
1224
+ pinButton = GetToggleButton("icons/pin.png", !Grafreed.NIMBUSLAF);
1225
+ pinButton.setSelected(copy.pinned);
1226
+ cGridBag t = new cGridBag();
1227
+ t.preferredWidth = 2;
1228
+ t.add(pinButton);
1229
+ namePanel.add(t);
1230
+
1231
+ pinButton.addItemListener(this);
1232
+ }
1233
+
12081234 nameField = AddText(namePanel, copy.GetName());
12091235 namePanel.add(new JScrollPane(nameField, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));
12101236 oe.ctrlPanel.add(namePanel);
....@@ -1558,20 +1584,19 @@
15581584
15591585 objectPanel.add(toolboxPanel);
15601586 objectPanel.setIconAt(1, GetIcon("icons/primitives.png"));
1561
- objectPanel.setToolTipTextAt(1, "Objects & backgrounds");
1587
+ objectPanel.setToolTipTextAt(1, "Objects & textures");
15621588
1589
+ objectPanel.add(skyboxPanel);
1590
+ objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg"));
1591
+ objectPanel.setToolTipTextAt(2, "Backgrounds");
1592
+
15631593 // JPanel north = new JPanel(new BorderLayout());
15641594 // north.setName("Edit");
15651595 // north.add(ctrlPanel, BorderLayout.NORTH);
15661596 // objectPanel.add(north);
15671597 objectPanel.add(editPanel);
1568
- objectPanel.setIconAt(2, GetIcon("icons/write.png"));
1569
- objectPanel.setToolTipTextAt(2, "Edit controls");
1570
-
1571
- //if (Globals.ADVANCED)
1572
- objectPanel.add(infoPanel);
1573
- objectPanel.setIconAt(3, GetIcon("icons/info.png"));
1574
- objectPanel.setToolTipTextAt(3, "Information");
1598
+ objectPanel.setIconAt(3, GetIcon("icons/write.png"));
1599
+ objectPanel.setToolTipTextAt(3, "Edit controls");
15751600
15761601 objectPanel.add(XYZPanel);
15771602 objectPanel.setIconAt(4, GetIcon("icons/XYZ.png"));
....@@ -1613,6 +1638,11 @@
16131638
16141639 scenePanel.add(tabbedPane);
16151640
1641
+ //if (Globals.ADVANCED)
1642
+ tabbedPane.add(infoPanel);
1643
+ tabbedPane.setIconAt(3, GetIcon("icons/info.png"));
1644
+ tabbedPane.setToolTipTextAt(3, "Information");
1645
+
16161646 /*
16171647 cTree jTree = new cTree(null);
16181648 ToolTipManager.sharedInstance().registerComponent(jTree);
....@@ -1683,6 +1713,23 @@
16831713 // aConstraints.gridheight = 1;
16841714
16851715 framePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, toolbarPanel, bigThree);
1716
+
1717
+ framePanel.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY,
1718
+ new java.beans.PropertyChangeListener()
1719
+ {
1720
+ public void propertyChange(java.beans.PropertyChangeEvent pce)
1721
+ {
1722
+ if ((Integer)pce.getOldValue() == 1)
1723
+ {
1724
+ if (radio.layout != expandedLayout)
1725
+ {
1726
+ radio.layout = expandedLayout;
1727
+ radio.layout.doClick();
1728
+ }
1729
+ }
1730
+ }
1731
+ });
1732
+
16861733 framePanel.setContinuousLayout(false);
16871734 framePanel.setOneTouchExpandable(false);
16881735 //.setDividerLocation(0.8);
....@@ -2101,6 +2148,25 @@
21012148 }
21022149 });
21032150 presetpanel.add(candle);
2151
+
2152
+ cLabel shadowShader = GetLabel("icons/shadericons/shadow.png", !Grafreed.NIMBUSLAF);
2153
+ shadowShader.setToolTipText("Shadow");
2154
+ shadowShader.addMouseListener(new MouseAdapter()
2155
+ {
2156
+ public void mouseClicked(MouseEvent e)
2157
+ {
2158
+ diffuseField.setFloat(0.001);
2159
+ ambientField.setFloat(0.001);
2160
+ cameraField.setFloat(0.001);
2161
+ specularField.setFloat(0.001);
2162
+ fakedepthField.setFloat(0.001);
2163
+ opacityField.setFloat(0.6);
2164
+
2165
+ materialtouched = true;
2166
+ applySelf();
2167
+ }
2168
+ });
2169
+ presetpanel.add(shadowShader);
21042170
21052171 cGridBag panel = new cGridBag().setVertical(true);
21062172
....@@ -3574,6 +3640,17 @@
35743640 public void itemStateChanged(ItemEvent event)
35753641 {
35763642 // System.out.println("Propagate = " + propagate);
3643
+ if (event.getSource() == pinButton)
3644
+ {
3645
+ copy.pinned ^= true;
3646
+ if (!copy.pinned && !copy.editWindow.copy.selection.contains(copy))
3647
+ {
3648
+ ((GroupEditor)copy.editWindow).listUI.remove(copy);
3649
+ copy.CloseUI();
3650
+ //copy.editWindow.refreshContents();
3651
+ }
3652
+ }
3653
+ else
35773654 if (event.getSource() == propagateToggle)
35783655 {
35793656 propagate ^= true;
....@@ -4082,11 +4159,11 @@
40824159 public boolean Save(boolean user)
40834160 {
40844161 System.err.println("Save");
4085
- //Replace();
4162
+ Replace();
40864163
40874164 cRadio tab = GetCurrentTab();
40884165
4089
- Object3D compress = CompressCopy(); // Saved version. No need for "Replace"?
4166
+ Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"?
40904167
40914168 boolean thesame = false;
40924169
....@@ -4180,7 +4257,7 @@
41804257
41814258 void CopyChanged()
41824259 {
4183
- Object3D obj = copy.versionlist[copy.versionindex];
4260
+ Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]);
41844261
41854262 SetUndoStates();
41864263
....@@ -4333,7 +4410,7 @@
43334410 return false;
43344411 }
43354412
4336
- copy.versionlist[copy.versionindex] = CompressCopy();
4413
+ copy.versionlist[copy.versionindex] = Duplicate(copy);
43374414
43384415 return true;
43394416 }
....@@ -4708,7 +4785,7 @@
47084785 //System.out.println("stateChanged = " + this);
47094786 materialtouched = true;
47104787
4711
- if (e.getSource() == colorField && saturationField.getFloat() == 0.001)
4788
+ if (Globals.AUTOSATURATE && e.getSource() == colorField && saturationField.getFloat() == 0.001)
47124789 {
47134790 saturationField.setFloat(1);
47144791 }
....@@ -5747,6 +5824,7 @@
57475824 ButtonGroup buttonGroup;
57485825
57495826 cGridBag toolboxPanel;
5827
+ cGridBag skyboxPanel;
57505828 cGridBag materialPanel;
57515829 cGridBag ctrlPanel;
57525830
....@@ -5851,6 +5929,7 @@
58515929 cNumberSlider anisoField;
58525930 JLabel anisoVLabel;
58535931 cNumberSlider anisoVField;
5932
+
58545933 JLabel cameraLabel;
58555934 cNumberSlider cameraField;
58565935 JLabel selfshadowLabel;
....@@ -5865,6 +5944,7 @@
58655944 cNumberSlider fakedepthField;
58665945 JLabel shadowbiasLabel;
58675946 cNumberSlider shadowbiasField;
5947
+
58685948 JLabel bumpLabel;
58695949 cNumberSlider bumpField;
58705950 JLabel noiseLabel;