Normand Briere
2019-08-16 83d0c2fa0bd2e96448f776144e1a89cdb1bb6998
ObjEditor.java
....@@ -43,6 +43,35 @@
4343
4444 static ObjEditor theFrame;
4545
46
+ public void AllocProjectedVertices(Object3D object)
47
+ {
48
+ assert (object.projectedVertices != null);
49
+
50
+ if (object.projectedVertices.length <= 2)
51
+ {
52
+ // Side effect...
53
+ Object3D.cVector2[] keep = object.projectedVertices;
54
+ object.projectedVertices = new Object3D.cVector2[3];
55
+ for (int i = 0; i < 3; i++)
56
+ {
57
+ if (i < keep.length)
58
+ {
59
+ object.projectedVertices[i] = keep[i];
60
+ } else
61
+ {
62
+ object.projectedVertices[i] = new Object3D.cVector2();
63
+ }
64
+ /*
65
+ if(keep.length == 0)
66
+ object.projectedVertices[0] = new Object3D.cVector2();
67
+ else
68
+ object.projectedVertices[0] = keep[0];
69
+ object.projectedVertices[1] = new Object3D.cVector2();
70
+ */
71
+ }
72
+ }
73
+ }
74
+
4675 public cGridBag GetSeparator()
4776 {
4877 cGridBag separator = new cGridBag();
....@@ -75,8 +104,16 @@
75104 return new cCheckBox(icon, border);
76105 }
77106
107
+ static java.util.Hashtable<String, javax.swing.ImageIcon> icons = new java.util.Hashtable<String, javax.swing.ImageIcon>();
108
+
78109 ImageIcon GetIcon(String name)
79110 {
111
+ javax.swing.ImageIcon iconCache = icons.get(name);
112
+ if (iconCache != null)
113
+ {
114
+ return iconCache;
115
+ }
116
+
80117 try
81118 {
82119 BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name));
....@@ -94,10 +131,14 @@
94131 // }
95132
96133 javax.swing.ImageIcon icon = new javax.swing.ImageIcon(image);
134
+
135
+ icons.put(name, icon);
136
+
97137 return icon;
98138 }
99139 catch (Exception e)
100140 {
141
+ //icons.put(name, null);
101142 return null;
102143 }
103144 }
....@@ -297,11 +338,13 @@
297338 client = inClient;
298339 copy = client;
299340
300
- if (copy.versionlist == null)
301
- {
302
- copy.versionlist = new Object3D[100];
303
- copy.versionindex = -1;
304
- }
341
+// if (copy.versionlist == null)
342
+// {
343
+// copy.versionlist = new Object3D[100];
344
+// copy.versionindex = -1;
345
+//
346
+// callee.Save(true);
347
+// }
305348
306349 // "this" is not called: SetupUI2(objEditor);
307350 }
....@@ -320,6 +363,8 @@
320363 {
321364 copy.versionlist = new Object3D[100];
322365 copy.versionindex = -1;
366
+
367
+// Save(true);
323368 }
324369
325370 SetupUI2(callee.GetEditor());
....@@ -343,7 +388,8 @@
343388 //parent = p;
344389
345390 GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
346
- System.out.println("getFullScreenWindow? " + gd.getFullScreenWindow());
391
+ if (Globals.DEBUG)
392
+ System.out.println("getFullScreenWindow? " + gd.getFullScreenWindow());
347393 //gd.setFullScreenWindow(this);
348394 //setResizable(false);
349395 //if (!isDisplayable())
....@@ -354,11 +400,13 @@
354400 copy = localCopy;
355401 copy.editWindow = this;
356402
357
- if (copy.versionlist == null)
358
- {
359
-// copy.versions = new byte[100][];
403
+// if (copy.versionlist == null)
404
+// {
405
+// copy.versionlist = new Object3D[100];
360406 // copy.versionindex = -1;
361
- }
407
+//
408
+// Save(true);
409
+// }
362410
363411 SetupMenu();
364412
....@@ -427,6 +475,8 @@
427475
428476 ChangeListener changeListener = new ChangeListener()
429477 {
478
+ //String name;
479
+
430480 public void stateChanged(ChangeEvent changeEvent)
431481 {
432482 // if (objectPanel.getSelectedIndex() == objectPanel.indexOfTab("Material") && !materialFlushed)
....@@ -445,7 +495,37 @@
445495 // EditSelection(false);
446496 // }
447497
448
- refreshContents(false); // To refresh Info tab
498
+// if (objectPanel.getSelectedIndex() == 4)
499
+// {
500
+// name = copy.skyboxname;
501
+//
502
+// if (name == null)
503
+// {
504
+// name = "";
505
+// }
506
+//
507
+// copy.skyboxname = "cubemaps/default-skyboxes/rgb";
508
+// copy.skyboxext = "jpg";
509
+// }
510
+// else
511
+// {
512
+// if (name != null)
513
+// {
514
+// if (name.equals(""))
515
+// {
516
+// copy.skyboxname = null;
517
+// copy.skyboxext = null;
518
+// }
519
+// else
520
+// {
521
+// copy.skyboxname = name;
522
+// }
523
+// }
524
+// }
525
+ cameraView.transformMode = objectPanel.getSelectedIndex() == 4;
526
+
527
+// refreshContents(false); // To refresh Info tab
528
+ cameraView.repaint();
449529 }
450530 };
451531 objectPanel.addChangeListener(changeListener);
....@@ -871,18 +951,24 @@
871951 boolean temp = CameraPane.SWITCH;
872952 CameraPane.SWITCH = false;
873953
874
- object.ExtractBigData(versiontable);
954
+ if (Grafreed.grafreed.universe.versiontable == null)
955
+ Grafreed.grafreed.universe.versiontable = new java.util.Hashtable<java.util.UUID, Object3D>();
956
+
957
+ object.ExtractBigData(Grafreed.grafreed.universe.versiontable);
875958 // if (copy == client)
876959
877960 Object3D versions[] = object.versionlist;
961
+ java.util.Hashtable<java.util.UUID, Object3D> versiontable = object.versiontable; // if Grafreed.grafreed.universe
878962 object.versionlist = null;
963
+ object.versiontable = null;
879964
880965 //byte[] compress = Compress(copy);
881966 Object3D compress = (Object3D)Grafreed.clone(object);
882967
883968 object.versionlist = versions;
969
+ object.versiontable = versiontable; // if Grafreed.grafreed.universe
884970
885
- object.RestoreBigData(versiontable);
971
+ object.RestoreBigData(Grafreed.grafreed.universe.versiontable);
886972
887973 CameraPane.SWITCH = temp;
888974
....@@ -1244,14 +1330,14 @@
12441330
12451331 liveCB = AddCheckBox(setupPanel, "Live", copy.live);
12461332 liveCB.setToolTipText("Animate object");
1333
+ markCB = AddCheckBox(setupPanel, "Anim", copy.marked);
1334
+ markCB.setToolTipText("Set target transform");
12471335 selectableCB = AddCheckBox(setupPanel, "Select", !copy.dontselect);
12481336 selectableCB.setToolTipText("Make object selectable");
12491337 // Return();
12501338
12511339 hideCB = AddCheckBox(setupPanel, "Hide", copy.hide);
12521340 hideCB.setToolTipText("Hide object");
1253
- markCB = AddCheckBox(setupPanel, "Mark", copy.marked);
1254
- markCB.setToolTipText("As animation target transform");
12551341
12561342 ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);
12571343
....@@ -1453,6 +1539,7 @@
14531539
14541540 if (cam == null || !(copy.get(0) instanceof cGroup))
14551541 {
1542
+ if (Globals.DEBUG)
14561543 System.out.println("CREATE CAMERAS");
14571544 cams = new cTemplate();
14581545 cams.name = "Cameras";
....@@ -1578,14 +1665,14 @@
15781665
15791666 //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
15801667 //tmp.setName("Edit");
1581
- objectPanel.add(materialPanel);
1582
- objectPanel.setIconAt(0, GetIcon("icons/material.png"));
1583
- objectPanel.setToolTipTextAt(0, "Material");
1584
-
15851668 objectPanel.add(toolboxPanel);
1586
- objectPanel.setIconAt(1, GetIcon("icons/primitives.png"));
1587
- objectPanel.setToolTipTextAt(1, "Objects & textures");
1669
+ objectPanel.setIconAt(0, GetIcon("icons/primitives.png"));
1670
+ objectPanel.setToolTipTextAt(0, "Objects & textures");
15881671
1672
+ objectPanel.add(materialPanel);
1673
+ objectPanel.setIconAt(1, GetIcon("icons/material.png"));
1674
+ objectPanel.setToolTipTextAt(1, "Material");
1675
+
15891676 objectPanel.add(skyboxPanel);
15901677 objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg"));
15911678 objectPanel.setToolTipTextAt(2, "Backgrounds");
....@@ -1639,9 +1726,9 @@
16391726 scenePanel.add(tabbedPane);
16401727
16411728 //if (Globals.ADVANCED)
1642
- tabbedPane.add(infoPanel);
1643
- tabbedPane.setIconAt(3, GetIcon("icons/info.png"));
1644
- tabbedPane.setToolTipTextAt(3, "Information");
1729
+// tabbedPane.add(infoPanel);
1730
+// tabbedPane.setIconAt(3, GetIcon("icons/info.png"));
1731
+// tabbedPane.setToolTipTextAt(3, "Information");
16451732
16461733 /*
16471734 cTree jTree = new cTree(null);
....@@ -1739,7 +1826,7 @@
17391826
17401827 frame.getContentPane().setLayout(new BorderLayout());
17411828 /**/
1742
- JTabbedPane worldPane = new JTabbedPane();
1829
+ //JTabbedPane worldPane = new JTabbedPane();
17431830 //worldPane.add(bigPanel);
17441831 //worldPane.add(worldPanel);
17451832 /**/
....@@ -2110,6 +2197,21 @@
21102197 });
21112198 presetpanel.add(bump0);
21122199
2200
+ cLabel borderShader = GetLabel("icons/shadericons/borderfade.jpg", !Grafreed.NIMBUSLAF);
2201
+ borderShader.setToolTipText("Border fade");
2202
+ borderShader.addMouseListener(new MouseAdapter()
2203
+ {
2204
+ public void mouseClicked(MouseEvent e)
2205
+ {
2206
+ borderfadeField.setFloat(0.5);
2207
+ opacityField.setFloat(0.75);
2208
+
2209
+ materialtouched = true;
2210
+ applySelf();
2211
+ }
2212
+ });
2213
+ presetpanel.add(borderShader);
2214
+
21132215 cLabel halo = GetLabel("icons/shadericons/shadericon00017.png", !Grafreed.NIMBUSLAF);
21142216 halo.setToolTipText("Halo");
21152217 halo.addMouseListener(new MouseAdapter()
....@@ -2217,9 +2319,20 @@
22172319
22182320 cGridBag huepanel = new cGridBag();
22192321 cGridBag huelabel = new cGridBag();
2220
- skin = GetLabel("icons/hue.png", false);
2221
- skin.fit = true;
2222
- huelabel.add(skin);
2322
+ cLabel hue = GetLabel("icons/hue.png", false);
2323
+ hue.fit = true;
2324
+
2325
+ hue.addMouseListener(new MouseAdapter()
2326
+ {
2327
+ public void mousePressed(MouseEvent e)
2328
+ {
2329
+ int x = e.getX();
2330
+
2331
+ colorField.setFloat((double)x / ((cLabel)e.getSource()).getWidth());
2332
+ }
2333
+ });
2334
+
2335
+ huelabel.add(hue);
22232336 huelabel.preferredWidth = 20;
22242337 huepanel.add(new cGridBag()); // Label
22252338 huepanel.add(huelabel); // Field/slider
....@@ -3495,32 +3608,8 @@
34953608
34963609 if (multiplyToggle != null)
34973610 multiplyToggle.setSelected(mat.multiply);
3498
-
3499
- assert (object.projectedVertices != null);
3500
-
3501
- if (object.projectedVertices.length <= 2)
3502
- {
3503
- // Side effect...
3504
- Object3D.cVector2[] keep = object.projectedVertices;
3505
- object.projectedVertices = new Object3D.cVector2[3];
3506
- for (int i = 0; i < 3; i++)
3507
- {
3508
- if (i < keep.length)
3509
- {
3510
- object.projectedVertices[i] = keep[i];
3511
- } else
3512
- {
3513
- object.projectedVertices[i] = new Object3D.cVector2();
3514
- }
3515
- /*
3516
- if(keep.length == 0)
3517
- object.projectedVertices[0] = new Object3D.cVector2();
3518
- else
3519
- object.projectedVertices[0] = keep[0];
3520
- object.projectedVertices[1] = new Object3D.cVector2();
3521
- */
3522
- }
3523
- }
3611
+
3612
+ AllocProjectedVertices(object);
35243613
35253614 SetMaterial(mat, object.projectedVertices);
35263615 }
....@@ -3830,7 +3919,7 @@
38303919 //System.out.println("ObjEditor " + event);
38313920 applySelf0(true);
38323921 //parent.applySelf();
3833
- objEditor.refreshContents();
3922
+ // conflicts with requestFocus objEditor.refreshContents();
38343923 } else if (source == resetButton)
38353924 {
38363925 CameraPane.fullreset = true;
....@@ -4123,7 +4212,7 @@
41234212 {
41244213 //Save(true);
41254214 Replace();
4126
- SetUndoStates();
4215
+ SetVersionStates();
41274216 }
41284217
41294218 private boolean Equal(byte[] compress, byte[] name)
....@@ -4142,8 +4231,6 @@
41424231 return true;
41434232 }
41444233
4145
- java.util.Hashtable<java.util.UUID, Object3D> versiontable = new java.util.Hashtable<java.util.UUID, Object3D>();
4146
-
41474234 void DeleteVersion()
41484235 {
41494236 for (int i = copy.versionindex; i < copy.versionlist.length-1; i++)
....@@ -4151,9 +4238,13 @@
41514238 copy.versionlist[i] = copy.versionlist[i+1];
41524239 }
41534240
4154
- CopyChanged();
4241
+ if (copy.versionlist[copy.versionindex] == null)
4242
+ copy.versionindex -= 1;
41554243
4156
- SetUndoStates();
4244
+ if (copy.versionindex != -1)
4245
+ CopyChanged();
4246
+
4247
+ SetVersionStates();
41574248 }
41584249
41594250 public boolean Save(boolean user)
....@@ -4161,7 +4252,7 @@
41614252 System.err.println("Save");
41624253 Replace();
41634254
4164
- cRadio tab = GetCurrentTab();
4255
+ //cRadio tab = GetCurrentTab();
41654256
41664257 Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"?
41674258
....@@ -4199,7 +4290,7 @@
41994290 // copy.versionlist[i] = null;
42004291 // }
42014292
4202
- SetUndoStates();
4293
+ SetVersionStates();
42034294
42044295 // test save
42054296 if (false)
....@@ -4259,12 +4350,12 @@
42594350 {
42604351 Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]);
42614352
4262
- SetUndoStates();
4353
+ SetVersionStates();
42634354
42644355 boolean temp = CameraPane.SWITCH;
42654356 CameraPane.SWITCH = false;
42664357
4267
- copy.ExtractBigData(versiontable);
4358
+ copy.ExtractBigData(Grafreed.grafreed.universe.versiontable);
42684359
42694360 copy.clear();
42704361
....@@ -4276,7 +4367,7 @@
42764367 copy.add(obj.get(i));
42774368 }
42784369
4279
- copy.RestoreBigData(versiontable);
4370
+ copy.RestoreBigData(Grafreed.grafreed.universe.versiontable);
42804371
42814372 CameraPane.SWITCH = temp;
42824373
....@@ -4326,22 +4417,27 @@
43264417 return count;
43274418 }
43284419
4329
- void SetUndoStates()
4420
+ void SetVersionStates()
43304421 {
4331
- cRadio tab = GetCurrentTab();
4422
+ //if (true)
4423
+ // return;
4424
+
4425
+ //cRadio tab = GetCurrentTab();
43324426
4333
- restoreButton.setEnabled(true); // copy.versionindex != -1);
4334
- replaceButton.setEnabled(true); // copy.versionindex != -1);
4427
+ restoreButton.setEnabled(copy.versionindex != -1);
4428
+ replaceButton.setEnabled(copy.versionindex != -1);
43354429
43364430 previousVersionButton.setEnabled(copy.versionindex > 0);
43374431 nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null);
43384432
4339
- deleteVersionButton.setEnabled(//copy.versionindex > 0 &&
4340
- copy.versionlist[copy.versionindex + 1] != null);
4433
+ deleteVersionButton.setEnabled(copy.versionindex != -1);
4434
+ //copy.versionlist[copy.versionindex + 1] != null);
43414435
43424436 muteSlider = true;
4437
+ versionSlider.setMinimum(0);
43434438 versionSlider.setMaximum(VersionCount() - 1);
43444439 versionSlider.setInteger(copy.versionindex);
4440
+ versionSlider.setEnabled(copy.versionindex != -1);
43454441 muteSlider = false;
43464442 }
43474443
....@@ -4352,7 +4448,7 @@
43524448
43534449 System.err.println("Undo");
43544450
4355
- cRadio tab = GetCurrentTab();
4451
+ //cRadio tab = GetCurrentTab();
43564452
43574453 if (copy.versionindex == 0)
43584454 {
....@@ -4384,7 +4480,7 @@
43844480 {
43854481 System.err.println("Restore");
43864482
4387
- cRadio tab = GetCurrentTab();
4483
+ //cRadio tab = GetCurrentTab();
43884484
43894485 if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null)
43904486 {
....@@ -4400,9 +4496,9 @@
44004496
44014497 public boolean Replace()
44024498 {
4403
- System.err.println("Replace");
4499
+ //System.err.println("Replace");
44044500
4405
- cRadio tab = GetCurrentTab();
4501
+ //cRadio tab = GetCurrentTab();
44064502
44074503 if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null)
44084504 {
....@@ -4420,7 +4516,7 @@
44204516 // Option?
44214517 Replace();
44224518
4423
- cRadio tab = GetCurrentTab();
4519
+ //cRadio tab = GetCurrentTab();
44244520
44254521 if (copy.versionlist[copy.versionindex + 1] == null)
44264522 {
....@@ -4739,9 +4835,11 @@
47394835 if (muteSlider)
47404836 return;
47414837
4838
+ Replace();
4839
+
47424840 int version = versionSlider.getInteger();
47434841
4744
- if (copy.versionlist[version] != null)
4842
+ if (version != -1 && copy.versionlist[version] != null)
47454843 {
47464844 copy.versionindex = version;
47474845 CopyChanged();
....@@ -5100,7 +5198,9 @@
51005198 }
51015199
51025200 if (previousVersionButton != null && copy.versionlist != null)
5103
- SetUndoStates();
5201
+ SetVersionStates();
5202
+
5203
+ cameraView.requestFocusInWindow();
51045204 }
51055205
51065206 static TweenManager tweenManager = new TweenManager();
....@@ -5132,7 +5232,7 @@
51325232 // group = (Composite) group.get(0);
51335233 // }
51345234
5135
- System.out.println("makeSomething of " + thing);
5235
+ //System.out.println("makeSomething of " + thing);
51365236
51375237 /*
51385238 if (deselect && jList != null)
....@@ -5486,11 +5586,15 @@
54865586
54875587 copy.versionlist = readobj.versionlist;
54885588 copy.versionindex = readobj.versionindex;
5589
+ copy.versiontable = readobj.versiontable;
54895590
54905591 if (copy.versionlist == null)
54915592 {
5593
+ // Backward compatibility
54925594 copy.versionlist = new Object3D[100];
54935595 copy.versionindex = -1;
5596
+
5597
+ //Save(true);
54945598 }
54955599
54965600 //? SetUndoStates();
....@@ -5582,6 +5686,8 @@
55825686
55835687 void save()
55845688 {
5689
+ Replace();
5690
+
55855691 if (lastname == null)
55865692 {
55875693 return;