Normand Briere
2019-08-12 8f1afe25ea8fc8801aab66331c32a50859a758c2
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
....@@ -444,7 +451,7 @@
444451 // EditSelection(false);
445452 // }
446453
447
- refreshContents(false); // To refresh Info tab
454
+// refreshContents(false); // To refresh Info tab
448455 }
449456 };
450457 objectPanel.addChangeListener(changeListener);
....@@ -466,6 +473,8 @@
466473
467474 toolboxPanel = new cGridBag().setVertical(true);
468475 //toolboxPanel.setName("Toolbox");
476
+
477
+ skyboxPanel = new cGridBag().setVertical(true);
469478
470479 materialPanel = new cGridBag().setVertical(false);
471480 //materialPanel.setName("Material");
....@@ -751,6 +760,7 @@
751760 boolean maximized;
752761
753762 cButton fullscreenLayout;
763
+ cButton expandedLayout;
754764
755765 void Minimize()
756766 {
....@@ -790,10 +800,12 @@
790800 cButton minButton;
791801 cButton maxButton;
792802 cButton fullButton;
803
+ cButton collapseButton;
804
+ cButton maximize3DButton;
793805
794806 void ToggleFullScreen()
795807 {
796
-GraphicsDevice device = frame.getGraphicsConfiguration().getDevice();
808
+ GraphicsDevice device = frame.getGraphicsConfiguration().getDevice();
797809
798810 cameraView.ToggleFullScreen();
799811
....@@ -814,13 +826,13 @@
814826 // X frame.getContentPane().remove(/*"Center",*/bigThree);
815827 // X framePanel.add(bigThree);
816828 // X frame.getContentPane().add(/*"Center",*/framePanel);
817
- framePanel.setDividerLocation(46);
829
+// framePanel.setDividerLocation(46); // icons are 24x24
818830
819831 //frame.setVisible(true);
820
- radio.layout = keepButton;
832
+// radio.layout = keepButton;
821833 //theFrame = null;
822834 keepButton = null;
823
- radio.layout.doClick();
835
+// radio.layout.doClick();
824836
825837 } else
826838 {
....@@ -841,10 +853,10 @@
841853 // X frame.getContentPane().remove(/*"Center",*/framePanel);
842854 // X framePanel.remove(bigThree);
843855 // X frame.getContentPane().add(/*"Center",*/bigThree);
844
- framePanel.setDividerLocation(0);
856
+// framePanel.setDividerLocation(0);
845857
846
- radio.layout = fullscreenLayout;
847
- radio.layout.doClick();
858
+// radio.layout = fullscreenLayout;
859
+// radio.layout.doClick();
848860 //frame.setVisible(true);
849861 }
850862 frame.validate();
....@@ -852,23 +864,31 @@
852864 cameraView.requestFocusInWindow();
853865 }
854866
855
- private Object3D CompressCopy()
867
+ void CollapseToolbar()
868
+ {
869
+ framePanel.setDividerLocation(0);
870
+ //frame.validate();
871
+
872
+ cameraView.requestFocusInWindow();
873
+ }
874
+
875
+ private Object3D Duplicate(Object3D object)
856876 {
857877 boolean temp = CameraPane.SWITCH;
858878 CameraPane.SWITCH = false;
859879
860
- copy.ExtractBigData(versiontable);
880
+ object.ExtractBigData(versiontable);
861881 // if (copy == client)
862882
863
- Object3D versions[] = copy.versionlist;
864
- copy.versionlist = null;
883
+ Object3D versions[] = object.versionlist;
884
+ object.versionlist = null;
865885
866886 //byte[] compress = Compress(copy);
867
- Object3D compress = (Object3D)Grafreed.clone(copy);
887
+ Object3D compress = (Object3D)Grafreed.clone(object);
868888
869
- copy.versionlist = versions;
889
+ object.versionlist = versions;
870890
871
- copy.RestoreBigData(versiontable);
891
+ object.RestoreBigData(versiontable);
872892
873893 CameraPane.SWITCH = temp;
874894
....@@ -1205,6 +1225,18 @@
12051225
12061226 namePanel = new cGridBag();
12071227
1228
+ //if (copy.pinned)
1229
+ {
1230
+ pinButton = GetToggleButton("icons/pin.png", !Grafreed.NIMBUSLAF);
1231
+ pinButton.setSelected(copy.pinned);
1232
+ cGridBag t = new cGridBag();
1233
+ t.preferredWidth = 2;
1234
+ t.add(pinButton);
1235
+ namePanel.add(t);
1236
+
1237
+ pinButton.addItemListener(this);
1238
+ }
1239
+
12081240 nameField = AddText(namePanel, copy.GetName());
12091241 namePanel.add(new JScrollPane(nameField, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));
12101242 oe.ctrlPanel.add(namePanel);
....@@ -1556,27 +1588,26 @@
15561588 objectPanel.setIconAt(0, GetIcon("icons/material.png"));
15571589 objectPanel.setToolTipTextAt(0, "Material");
15581590
1591
+ objectPanel.add(toolboxPanel);
1592
+ objectPanel.setIconAt(1, GetIcon("icons/primitives.png"));
1593
+ objectPanel.setToolTipTextAt(1, "Objects & textures");
1594
+
1595
+ objectPanel.add(skyboxPanel);
1596
+ objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg"));
1597
+ objectPanel.setToolTipTextAt(2, "Backgrounds");
1598
+
15591599 // JPanel north = new JPanel(new BorderLayout());
15601600 // north.setName("Edit");
15611601 // north.add(ctrlPanel, BorderLayout.NORTH);
15621602 // objectPanel.add(north);
15631603 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");
1604
+ objectPanel.setIconAt(3, GetIcon("icons/write.png"));
1605
+ objectPanel.setToolTipTextAt(3, "Edit controls");
15711606
15721607 objectPanel.add(XYZPanel);
1573
- objectPanel.setIconAt(3, GetIcon("icons/XYZ.png"));
1574
- objectPanel.setToolTipTextAt(3, "XYZ/RGB transform");
1608
+ objectPanel.setIconAt(4, GetIcon("icons/XYZ.png"));
1609
+ objectPanel.setToolTipTextAt(4, "XYZ/RGB transform");
15751610
1576
- objectPanel.add(toolboxPanel);
1577
- objectPanel.setIconAt(4, GetIcon("icons/primitives.png"));
1578
- objectPanel.setToolTipTextAt(4, "Objects & backgrounds");
1579
-
15801611 /*
15811612 aConstraints.gridx = 0;
15821613 aConstraints.gridwidth = 1;
....@@ -1613,6 +1644,11 @@
16131644
16141645 scenePanel.add(tabbedPane);
16151646
1647
+ //if (Globals.ADVANCED)
1648
+ tabbedPane.add(infoPanel);
1649
+ tabbedPane.setIconAt(3, GetIcon("icons/info.png"));
1650
+ tabbedPane.setToolTipTextAt(3, "Information");
1651
+
16161652 /*
16171653 cTree jTree = new cTree(null);
16181654 ToolTipManager.sharedInstance().registerComponent(jTree);
....@@ -1683,6 +1719,23 @@
16831719 // aConstraints.gridheight = 1;
16841720
16851721 framePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, toolbarPanel, bigThree);
1722
+
1723
+ framePanel.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY,
1724
+ new java.beans.PropertyChangeListener()
1725
+ {
1726
+ public void propertyChange(java.beans.PropertyChangeEvent pce)
1727
+ {
1728
+ if ((Integer)pce.getOldValue() == 1)
1729
+ {
1730
+ if (radio.layout != expandedLayout)
1731
+ {
1732
+ radio.layout = expandedLayout;
1733
+ radio.layout.doClick();
1734
+ }
1735
+ }
1736
+ }
1737
+ });
1738
+
16861739 framePanel.setContinuousLayout(false);
16871740 framePanel.setOneTouchExpandable(false);
16881741 //.setDividerLocation(0.8);
....@@ -2101,6 +2154,25 @@
21012154 }
21022155 });
21032156 presetpanel.add(candle);
2157
+
2158
+ cLabel shadowShader = GetLabel("icons/shadericons/shadow.png", !Grafreed.NIMBUSLAF);
2159
+ shadowShader.setToolTipText("Shadow");
2160
+ shadowShader.addMouseListener(new MouseAdapter()
2161
+ {
2162
+ public void mouseClicked(MouseEvent e)
2163
+ {
2164
+ diffuseField.setFloat(0.001);
2165
+ ambientField.setFloat(0.001);
2166
+ cameraField.setFloat(0.001);
2167
+ specularField.setFloat(0.001);
2168
+ fakedepthField.setFloat(0.001);
2169
+ opacityField.setFloat(0.6);
2170
+
2171
+ materialtouched = true;
2172
+ applySelf();
2173
+ }
2174
+ });
2175
+ presetpanel.add(shadowShader);
21042176
21052177 cGridBag panel = new cGridBag().setVertical(true);
21062178
....@@ -3574,6 +3646,17 @@
35743646 public void itemStateChanged(ItemEvent event)
35753647 {
35763648 // System.out.println("Propagate = " + propagate);
3649
+ if (event.getSource() == pinButton)
3650
+ {
3651
+ copy.pinned ^= true;
3652
+ if (!copy.pinned && !copy.editWindow.copy.selection.contains(copy))
3653
+ {
3654
+ ((GroupEditor)copy.editWindow).listUI.remove(copy);
3655
+ copy.CloseUI();
3656
+ //copy.editWindow.refreshContents();
3657
+ }
3658
+ }
3659
+ else
35773660 if (event.getSource() == propagateToggle)
35783661 {
35793662 propagate ^= true;
....@@ -4082,11 +4165,11 @@
40824165 public boolean Save(boolean user)
40834166 {
40844167 System.err.println("Save");
4085
- //Replace();
4168
+ Replace();
40864169
4087
- cRadio tab = GetCurrentTab();
4170
+ //cRadio tab = GetCurrentTab();
40884171
4089
- Object3D compress = CompressCopy(); // Saved version. No need for "Replace"?
4172
+ Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"?
40904173
40914174 boolean thesame = false;
40924175
....@@ -4180,7 +4263,7 @@
41804263
41814264 void CopyChanged()
41824265 {
4183
- Object3D obj = copy.versionlist[copy.versionindex];
4266
+ Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]);
41844267
41854268 SetUndoStates();
41864269
....@@ -4251,10 +4334,13 @@
42514334
42524335 void SetUndoStates()
42534336 {
4254
- cRadio tab = GetCurrentTab();
4337
+ //if (true)
4338
+ // return;
4339
+
4340
+ //cRadio tab = GetCurrentTab();
42554341
4256
- restoreButton.setEnabled(true); // copy.versionindex != -1);
4257
- replaceButton.setEnabled(true); // copy.versionindex != -1);
4342
+ restoreButton.setEnabled(copy.versionindex != -1);
4343
+ replaceButton.setEnabled(copy.versionindex != -1);
42584344
42594345 previousVersionButton.setEnabled(copy.versionindex > 0);
42604346 nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null);
....@@ -4263,8 +4349,10 @@
42634349 copy.versionlist[copy.versionindex + 1] != null);
42644350
42654351 muteSlider = true;
4352
+ versionSlider.setMinimum(0);
42664353 versionSlider.setMaximum(VersionCount() - 1);
42674354 versionSlider.setInteger(copy.versionindex);
4355
+ versionSlider.setEnabled(copy.versionindex != -1);
42684356 muteSlider = false;
42694357 }
42704358
....@@ -4275,7 +4363,7 @@
42754363
42764364 System.err.println("Undo");
42774365
4278
- cRadio tab = GetCurrentTab();
4366
+ //cRadio tab = GetCurrentTab();
42794367
42804368 if (copy.versionindex == 0)
42814369 {
....@@ -4307,7 +4395,7 @@
43074395 {
43084396 System.err.println("Restore");
43094397
4310
- cRadio tab = GetCurrentTab();
4398
+ //cRadio tab = GetCurrentTab();
43114399
43124400 if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null)
43134401 {
....@@ -4325,7 +4413,7 @@
43254413 {
43264414 System.err.println("Replace");
43274415
4328
- cRadio tab = GetCurrentTab();
4416
+ //cRadio tab = GetCurrentTab();
43294417
43304418 if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null)
43314419 {
....@@ -4333,7 +4421,7 @@
43334421 return false;
43344422 }
43354423
4336
- copy.versionlist[copy.versionindex] = CompressCopy();
4424
+ copy.versionlist[copy.versionindex] = Duplicate(copy);
43374425
43384426 return true;
43394427 }
....@@ -4343,7 +4431,7 @@
43434431 // Option?
43444432 Replace();
43454433
4346
- cRadio tab = GetCurrentTab();
4434
+ //cRadio tab = GetCurrentTab();
43474435
43484436 if (copy.versionlist[copy.versionindex + 1] == null)
43494437 {
....@@ -4664,7 +4752,7 @@
46644752
46654753 int version = versionSlider.getInteger();
46664754
4667
- if (copy.versionlist[version] != null)
4755
+ if (version != -1 && copy.versionlist[version] != null)
46684756 {
46694757 copy.versionindex = version;
46704758 CopyChanged();
....@@ -4708,7 +4796,7 @@
47084796 //System.out.println("stateChanged = " + this);
47094797 materialtouched = true;
47104798
4711
- if (e.getSource() == colorField && saturationField.getFloat() == 0.001)
4799
+ if (Globals.AUTOSATURATE && e.getSource() == colorField && saturationField.getFloat() == 0.001)
47124800 {
47134801 saturationField.setFloat(1);
47144802 }
....@@ -5412,8 +5500,11 @@
54125500
54135501 if (copy.versionlist == null)
54145502 {
5503
+ // Backward compatibility
54155504 copy.versionlist = new Object3D[100];
54165505 copy.versionindex = -1;
5506
+
5507
+ Save(true);
54175508 }
54185509
54195510 //? SetUndoStates();
....@@ -5747,6 +5838,7 @@
57475838 ButtonGroup buttonGroup;
57485839
57495840 cGridBag toolboxPanel;
5841
+ cGridBag skyboxPanel;
57505842 cGridBag materialPanel;
57515843 cGridBag ctrlPanel;
57525844
....@@ -5851,6 +5943,7 @@
58515943 cNumberSlider anisoField;
58525944 JLabel anisoVLabel;
58535945 cNumberSlider anisoVField;
5946
+
58545947 JLabel cameraLabel;
58555948 cNumberSlider cameraField;
58565949 JLabel selfshadowLabel;
....@@ -5865,6 +5958,7 @@
58655958 cNumberSlider fakedepthField;
58665959 JLabel shadowbiasLabel;
58675960 cNumberSlider shadowbiasField;
5961
+
58685962 JLabel bumpLabel;
58695963 cNumberSlider bumpField;
58705964 JLabel noiseLabel;