| BoundaryRep.java | ●●●●● patch | view | raw | blame | history | |
| CameraPane.java | ●●●●● patch | view | raw | blame | history | |
| ObjEditor.java | ●●●●● patch | view | raw | blame | history | |
| Object3D.java | ●●●●● patch | view | raw | blame | history | |
| cMaterial.java | ●●●●● patch | view | raw | blame | history | |
| fullscenes/alsace.png | patch | view | raw | blame | history | |
| fullscenes/skullcove.png | patch | view | raw | blame | history | |
| fullscenes/viking.png | patch | view | raw | blame | history | |
| fullscenes/yvoire.png | patch | view | raw | blame | history | 
BoundaryRep.java
.. .. @@ -7,7 +7,8 @@ 7 7 8 8 class BoundaryRep implements java.io.Serializable 9 9 { 10  - static final long serialVersionUID = -4852664309425035321L;10  + static final long serialVersionUID = // VERY old 2008 -5762968998168738314L;11  + -4852664309425035321L;11 12 12 13 transient int displaylist = 0; 13 14  CameraPane.java
.. .. @@ -3601,6 +3601,8 @@ 3601 3601 }; 3602 3602 /**/ 3603 3603 3604  + static Object3D lastObject;3605  +3604 3606 //com.sun.opengl.util.texture.Texture 3605 3607 TextureData 3606 3608 GetFileTexture(String name, boolean bump, int resolution) .. .. @@ -3637,6 +3639,8 @@ 3637 3639 // return null; 3638 3640 //if (i == 2) 3639 3641 // return null; 3642  + // TIFF issue sept 20193643  + System.err.println("lastObject = " + lastObject);3640 3644 e.printStackTrace(); 3641 3645 name = name.split("\\.tif")[0] + ".jpg"; 3642 3646 } .. .. @@ -15753,6 +15757,16 @@ 15753 15757 break; 15754 15758 case 'l': 15755 15759 lightMode ^= true; 15760  + if (lightMode)15761  + {15762  + keepshadow = Globals.RENDERSHADOW;15763  + Globals.RENDERSHADOW = false;15764  + }15765  + else15766  + {15767  + Globals.RENDERSHADOW = keepshadow;15768  + }15769  +15756 15770 Globals.lighttouched = true; 15757 15771 manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera; 15758 15772 targetLookAt.set(manipCamera.lookAt); .. .. @@ -17410,7 +17424,7 @@ 17410 17424 17411 17425 float depth = depths[y * TEX_SIZE + x]; 17412 17426 17413  - if (pointselection && mouseMode == SELECT && depth != 0 && depth != 1)17427  + if (pointselection && (mouseMode & SELECT) == SELECT && depth != 0 && depth != 1)17414 17428 { 17415 17429 pointselection = false; 17416 17430 .. .. @@ -18075,6 +18089,8 @@ 18075 18089 boolean OCCLUSION_CULLING = false; //true; 18076 18090 public boolean lightMode = false; 18077 18091 18092  + private boolean keepshadow;18093  +18078 18094 public boolean capsLocked = false; // VR 18079 18095 18080 18096 static public int indexcount = 0; ObjEditor.java
.. .. @@ -799,6 +799,8 @@ 799 799 // SendInfo(" delay: " + sel.delay + newline, "regular"); 800 800 // live, hide, ... 801 801 //?? SendInfo(" Orig: " + maxima + newline, "regular"); 802  + if (sel.GetTextures().pigmentdata != null)803  + si.SendInfo(" EMBEDDED ", "regular");802 804 si.SendInfo((debug ? " Texture: " : " ") + sel.GetTextures(), "bold"); 803 805 // SendInfo((debug ? " Material: " : " ") + sel.material + newline, "regular"); 804 806 if (sel instanceof cMesh) .. .. @@ -1169,6 +1171,7 @@ 1169 1171 JCheckBox selectableCB; 1170 1172 JCheckBox hideCB; 1171 1173 JCheckBox link2masterCB; 1174  + JCheckBox sortCB;1172 1175 JCheckBox markCB; 1173 1176 JCheckBox randomCB; 1174 1177 JCheckBox speedupCB; .. .. @@ -1412,11 +1415,14 @@ 1412 1415 rewindCB = AddCheckBox(setupPanel2, "Rewind", copy.rewind); 1413 1416 rewindCB.setToolTipText("Rewind animation"); 1414 1417 1418  + sortCB = AddCheckBox(setupPanel2, "Sort", copy.sort);1419  + sortCB.setToolTipText("Display from back to front");1420  +1415 1421 randomCB = AddCheckBox(setupPanel2, "Random", copy.random); 1416 1422 randomCB.setToolTipText("Randomly Rewind (or Go back and forth)"); 1417 1423 1418 1424 link2masterCB = AddCheckBox(setupPanel2, GetSupportText(), copy.link2master); 1419  - link2masterCB.setToolTipText("Attach to support");1425  + link2masterCB.setToolTipText("Link to support");1420 1426 1421 1427 if (Globals.ADVANCED) 1422 1428 { .. .. @@ -1847,6 +1853,28 @@ 1847 1853 1848 1854 cButton fullsceneButton; 1849 1855 1856  + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/alsace.png", !Globals.NIMBUSLAF));1857  + fullsceneButton.setToolTipText("Alsace!");1858  + fullsceneButton.addActionListener(new ActionListener()1859  + {1860  + @Override1861  + public void actionPerformed(ActionEvent e)1862  + {1863  + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Alsace.gfd", new iCallBack()1864  + {1865  +1866  + public void Callback(Object obj)1867  + {1868  + LoadIt(obj);1869  + }1870  +1871  + public void DragGesture()1872  + {1873  + }1874  + });1875  + }1876  + });1877  +1850 1878 fullscenePanel.add(fullsceneButton = GetButton("fullscenes/london.png", !Globals.NIMBUSLAF)); 1851 1879 fullsceneButton.setToolTipText("Old London!"); 1852 1880 fullsceneButton.addActionListener(new ActionListener() .. .. @@ -1854,7 +1882,7 @@ 1854 1882 @Override 1855 1883 public void actionPerformed(ActionEvent e) 1856 1884 { 1857  - /*Object3D readobj =*/ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/oldlondon.gfd", new iCallBack()1885  + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/oldlondon.gfd", new iCallBack()1858 1886 { 1859 1887 1860 1888 public void Callback(Object obj) .. .. @@ -1869,6 +1897,8 @@ 1869 1897 } 1870 1898 }); 1871 1899 1900  + fullscenePanel.Return();1901  +1872 1902 fullscenePanel.add(fullsceneButton = GetButton("fullscenes/venice.png", !Globals.NIMBUSLAF)); 1873 1903 fullsceneButton.setToolTipText("Venice!"); 1874 1904 fullsceneButton.addActionListener(new ActionListener() .. .. @@ -1876,7 +1906,29 @@ 1876 1906 @Override 1877 1907 public void actionPerformed(ActionEvent e) 1878 1908 { 1879  - /*Object3D readobj =*/ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Venice.gfd", new iCallBack()1909  + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Venice.gfd", new iCallBack()1910  + {1911  +1912  + public void Callback(Object obj)1913  + {1914  + LoadIt(obj);1915  + }1916  +1917  + public void DragGesture()1918  + {1919  + }1920  + });1921  + }1922  + });1923  +1924  + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/viking.png", !Globals.NIMBUSLAF));1925  + fullsceneButton.setToolTipText("Viking Village!");1926  + fullsceneButton.addActionListener(new ActionListener()1927  + {1928  + @Override1929  + public void actionPerformed(ActionEvent e)1930  + {1931  + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/VikingVillage.gfd", new iCallBack()1880 1932 { 1881 1933 1882 1934 public void Callback(Object obj) .. .. @@ -1892,12 +1944,53 @@ 1892 1944 }); 1893 1945 1894 1946 fullscenePanel.Return(); 1895  - fullscenePanel.add(new cGridBag());1896  - fullscenePanel.add(new cGridBag());1947  +1948  + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/yvoire.png", !Globals.NIMBUSLAF));1949  + fullsceneButton.setToolTipText("Yvoire!");1950  + fullsceneButton.addActionListener(new ActionListener()1951  + {1952  + @Override1953  + public void actionPerformed(ActionEvent e)1954  + {1955  + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Yvoire.gfd", new iCallBack()1956  + {1957  +1958  + public void Callback(Object obj)1959  + {1960  + LoadIt(obj);1961  + }1962  +1963  + public void DragGesture()1964  + {1965  + }1966  + });1967  + }1968  + });1969  +1970  + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/skullcove.png", !Globals.NIMBUSLAF));1971  + fullsceneButton.setToolTipText("Skull Cove Island!");1972  + fullsceneButton.addActionListener(new ActionListener()1973  + {1974  + @Override1975  + public void actionPerformed(ActionEvent e)1976  + {1977  + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/SkullCoveIsland.gfd", new iCallBack()1978  + {1979  +1980  + public void Callback(Object obj)1981  + {1982  + LoadIt(obj);1983  + }1984  +1985  + public void DragGesture()1986  + {1987  + }1988  + });1989  + }1990  + });1991  +1897 1992 fullscenePanel.Return(); 1898  - fullscenePanel.add(new cGridBag());1899  - fullscenePanel.add(new cGridBag());1900  - fullscenePanel.Return();1993  +1901 1994 fullscenePanel.add(new cGridBag()); 1902 1995 fullscenePanel.add(new cGridBag()); 1903 1996 fullscenePanel.Return(); .. .. @@ -4196,6 +4289,11 @@ 4196 4289 copy.Touch(); // display list issue 4197 4290 objEditor.refreshContents(true); // To show item colors 4198 4291 return; 4292  + } else if (event.getSource() == sortCB)4293  + {4294  + copy.sort ^= true;4295  + objEditor.refreshContents();4296  + return;4199 4297 } else if (event.getSource() == link2masterCB) 4200 4298 { 4201 4299 copy.link2master ^= true; .. .. @@ -4959,7 +5057,7 @@ 4959 5057 void ImportGFD() 4960 5058 { 4961 5059 FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD); 4962  - browser.show();5060  + browser.setVisible(true);4963 5061 String filename = browser.getFile(); 4964 5062 if (filename != null && filename.length() > 0) 4965 5063 { .. .. @@ -5934,7 +6032,7 @@ 5934 6032 { 5935 6033 try 5936 6034 { 5937  - url = new java.net.URL("file://" + fullname);6035  + url = new java.net.URL("file:///" + fullname);5938 6036 } catch (Exception e2) 5939 6037 { 5940 6038 e2.printStackTrace(); Object3D.java
.. .. @@ -140,7 +140,7 @@ 140 140 projectedVertices[i] = new cVector2(); // Others 141 141 } 142 142 projectedVertices[0].x = 100; // bump 143  - projectedVertices[1].y = 5000; // punchthrough. only for png143  + projectedVertices[1].y = 1000; // punchthrough. only for png144 144 } 145 145 146 146 void MinMax(cVector minima, cVector maxima) .. .. @@ -641,6 +641,9 @@ 641 641 boolean random = false; 642 642 boolean speedup = false; 643 643 boolean rewind = false; 644  +645  + // Option to sort triangles, e.g. for transparency.646  + boolean sort = false;644 647 645 648 float NORMALPUSH = 0; 646 649 .. .. @@ -1213,24 +1216,28 @@ 1213 1216 { 1214 1217 // return true; 1215 1218 1216  - if (material == null || material.multiply)1217  - return true;1219  +// if (material == null || material.multiply)1220  +// return true;1221  +//1222  +// if (projectedVertices != null && projectedVertices.length > 2 && projectedVertices[2].y >= 10000)1223  +// return false;1224  +//1225  +// // Transparent objects are dynamic because we have to sort the triangles.1226  +// return material.opacity > 0.99;1218 1227 1219  - if (projectedVertices != null && projectedVertices.length > 2 && projectedVertices[2].y >= 10000)1220  - return false;1221  -1222  - // Transparent objects are dynamic because we have to sort the triangles.1223  - return material.opacity > 0.99;1228  + return !sort;1224 1229 } 1225 1230 1226 1231 boolean IsOpaque() 1227 1232 { 1228 1233 // return true; 1229 1234 1230  - if (material == null || material.multiply)1231  - return true;1235  +// if (material == null || material.multiply)1236  +// return true;1237  +//1238  +// return material.opacity > 0.99;1232 1239 1233  - return material.opacity > 0.99;1240  + return !sort;1234 1241 } 1235 1242 1236 1243 Object3D() .. .. @@ -6307,8 +6314,8 @@ 6307 6314 Globals.lighttouched = true; // all panes... 6308 6315 } 6309 6316 6310  - touched = GetBRep() == null; // this instanceof Composite || this instanceof FileObject; // false;6311  - //touched = false;6317  + //touched = GetBRep() == null; // this instanceof Composite || this instanceof FileObject; // false;6318  + touched = false;6312 6319 6313 6320 if (this instanceof Texture || this instanceof TextureNode) 6314 6321 { .. .. @@ -6455,6 +6462,7 @@ 6455 6462 boolean failedPigment = false; 6456 6463 boolean failedBump = false; 6457 6464 6465  + CameraPane.lastObject = this;6458 6466 try 6459 6467 { 6460 6468 display.BindPigmentTexture(tex, texres); cMaterial.java
.. .. @@ -362,7 +362,7 @@ 362 362 363 363 float color = 0.5f, modulation /*SATURATION*/ = 0.001f, metalness = 0.001f; 364 364 float diffuse = 1f, specular = 0.25f, shininess = 0.75f, shift = 1; 365  - float ambient = 0.001f, lightarea = 0.025f, factor = 0.001f, velvet = 0.001f;365  + float ambient = 0.001f, lightarea = 0.005f, factor = 0.001f, velvet = 0.001f;366 366 float sheen = 1f, subsurface = 0.001f, bump = 0.75f, aniso = 0.001f, anisoV = 0.001f; 367 367 float cameralight = 0.5f, diffuseness = 0.001f, shadow = 5f, texture = 1f, opacity = 1; 368 368 float fakedepth = 0.5f, shadowbias = 0.01f; // 0.001f; fullscenes/alsace.pngBinary files differ
fullscenes/skullcove.pngBinary files differ
fullscenes/viking.pngBinary files differ
fullscenes/yvoire.pngBinary files differ