.. | .. |
---|
106 | 106 | |
---|
107 | 107 | static java.util.Hashtable<String, javax.swing.ImageIcon> icons = new java.util.Hashtable<String, javax.swing.ImageIcon>(); |
---|
108 | 108 | |
---|
109 | | - ImageIcon GetIcon(String name) |
---|
| 109 | + static ImageIcon GetIcon(String name) |
---|
110 | 110 | { |
---|
111 | 111 | javax.swing.ImageIcon iconCache = icons.get(name); |
---|
112 | 112 | if (iconCache != null) |
---|
.. | .. |
---|
116 | 116 | |
---|
117 | 117 | try |
---|
118 | 118 | { |
---|
119 | | - BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name)); |
---|
| 119 | + BufferedImage image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name)); |
---|
120 | 120 | |
---|
121 | 121 | // if (image.getWidth() > 48 && image.getHeight() > 48) |
---|
122 | 122 | // { |
---|
.. | .. |
---|
426 | 426 | |
---|
427 | 427 | static java.util.Vector<Object3D> listUI = new java.util.Vector<Object3D>(); |
---|
428 | 428 | |
---|
| 429 | + // This is to refresh the UI of the material panel. |
---|
| 430 | + boolean patchMaterial; |
---|
| 431 | + |
---|
429 | 432 | void SetupMenu() |
---|
430 | 433 | { |
---|
431 | 434 | frame.setMenuBar(menuBar = new MenuBar()); |
---|
.. | .. |
---|
951 | 954 | boolean temp = CameraPane.SWITCH; |
---|
952 | 955 | CameraPane.SWITCH = false; |
---|
953 | 956 | |
---|
954 | | - object.ExtractBigData(versiontable); |
---|
| 957 | + if (Grafreed.grafreed.universe.versiontable == null) |
---|
| 958 | + Grafreed.grafreed.universe.versiontable = new java.util.Hashtable<java.util.UUID, Object3D>(); |
---|
| 959 | + |
---|
| 960 | + object.ExtractBigData(Grafreed.grafreed.universe.versiontable); |
---|
955 | 961 | // if (copy == client) |
---|
956 | 962 | |
---|
957 | 963 | Object3D versions[] = object.versionlist; |
---|
| 964 | + java.util.Hashtable<java.util.UUID, Object3D> versiontable = object.versiontable; // if Grafreed.grafreed.universe |
---|
958 | 965 | object.versionlist = null; |
---|
| 966 | + object.versiontable = null; |
---|
959 | 967 | |
---|
960 | 968 | //byte[] compress = Compress(copy); |
---|
961 | 969 | Object3D compress = (Object3D)Grafreed.clone(object); |
---|
962 | 970 | |
---|
963 | 971 | object.versionlist = versions; |
---|
| 972 | + object.versiontable = versiontable; // if Grafreed.grafreed.universe |
---|
964 | 973 | |
---|
965 | | - object.RestoreBigData(versiontable); |
---|
| 974 | + object.RestoreBigData(Grafreed.grafreed.universe.versiontable); |
---|
966 | 975 | |
---|
967 | 976 | CameraPane.SWITCH = temp; |
---|
968 | 977 | |
---|
.. | .. |
---|
1659 | 1668 | |
---|
1660 | 1669 | //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); |
---|
1661 | 1670 | //tmp.setName("Edit"); |
---|
1662 | | - objectPanel.add(materialPanel); |
---|
1663 | | - objectPanel.setIconAt(0, GetIcon("icons/material.png")); |
---|
1664 | | - objectPanel.setToolTipTextAt(0, "Material"); |
---|
1665 | | - |
---|
1666 | 1671 | objectPanel.add(toolboxPanel); |
---|
1667 | | - objectPanel.setIconAt(1, GetIcon("icons/primitives.png")); |
---|
1668 | | - objectPanel.setToolTipTextAt(1, "Objects & textures"); |
---|
| 1672 | + objectPanel.setIconAt(0, GetIcon("icons/primitives.png")); |
---|
| 1673 | + objectPanel.setToolTipTextAt(0, "Objects & textures"); |
---|
1669 | 1674 | |
---|
| 1675 | + objectPanel.add(materialPanel); |
---|
| 1676 | + objectPanel.setIconAt(1, GetIcon("icons/material.png")); |
---|
| 1677 | + objectPanel.setToolTipTextAt(1, "Material"); |
---|
| 1678 | + |
---|
1670 | 1679 | objectPanel.add(skyboxPanel); |
---|
1671 | 1680 | objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg")); |
---|
1672 | 1681 | objectPanel.setToolTipTextAt(2, "Backgrounds"); |
---|
.. | .. |
---|
1683 | 1692 | objectPanel.setIconAt(4, GetIcon("icons/XYZ.png")); |
---|
1684 | 1693 | objectPanel.setToolTipTextAt(4, "XYZ/RGB transform"); |
---|
1685 | 1694 | |
---|
| 1695 | + patchMaterial = true; |
---|
| 1696 | + cameraView.patchMaterial = this; |
---|
| 1697 | + objectPanel.setSelectedIndex(1); |
---|
| 1698 | + |
---|
1686 | 1699 | /* |
---|
1687 | 1700 | aConstraints.gridx = 0; |
---|
1688 | 1701 | aConstraints.gridwidth = 1; |
---|
.. | .. |
---|
1702 | 1715 | scrollpane.addMouseWheelListener(this); // Default not fast enough |
---|
1703 | 1716 | |
---|
1704 | 1717 | /*JTabbedPane*/ scenePanel = new cGridBag(); |
---|
1705 | | - scenePanel.preferredWidth = 5; |
---|
| 1718 | + scenePanel.preferredWidth = 6; |
---|
1706 | 1719 | |
---|
1707 | 1720 | JTabbedPane tabbedPane = new JTabbedPane(); |
---|
1708 | 1721 | tabbedPane.add(scrollpane); |
---|
.. | .. |
---|
1880 | 1893 | |
---|
1881 | 1894 | // Skin |
---|
1882 | 1895 | colorField.setFloat(material.color); |
---|
1883 | | - saturationField.setFloat(material.modulation); |
---|
| 1896 | + float saturation = material.modulation; |
---|
| 1897 | + |
---|
| 1898 | + if (!cameraView.Skinshader) |
---|
| 1899 | + { |
---|
| 1900 | + saturation /= 1.5; |
---|
| 1901 | + } |
---|
| 1902 | + |
---|
| 1903 | + saturationField.setFloat(saturation); |
---|
| 1904 | + |
---|
1884 | 1905 | subsurfaceField.setFloat(material.subsurface); |
---|
1885 | 1906 | selfshadowField.setFloat(material.diffuseness); |
---|
1886 | 1907 | diffusenessField.setFloat(material.factor); |
---|
.. | .. |
---|
3913 | 3934 | //System.out.println("ObjEditor " + event); |
---|
3914 | 3935 | applySelf0(true); |
---|
3915 | 3936 | //parent.applySelf(); |
---|
3916 | | - objEditor.refreshContents(); |
---|
| 3937 | + // conflicts with requestFocus objEditor.refreshContents(); |
---|
3917 | 3938 | } else if (source == resetButton) |
---|
3918 | 3939 | { |
---|
3919 | 3940 | CameraPane.fullreset = true; |
---|
.. | .. |
---|
4225 | 4246 | return true; |
---|
4226 | 4247 | } |
---|
4227 | 4248 | |
---|
4228 | | - java.util.Hashtable<java.util.UUID, Object3D> versiontable = new java.util.Hashtable<java.util.UUID, Object3D>(); |
---|
4229 | | - |
---|
4230 | 4249 | void DeleteVersion() |
---|
4231 | 4250 | { |
---|
4232 | 4251 | for (int i = copy.versionindex; i < copy.versionlist.length-1; i++) |
---|
.. | .. |
---|
4234 | 4253 | copy.versionlist[i] = copy.versionlist[i+1]; |
---|
4235 | 4254 | } |
---|
4236 | 4255 | |
---|
4237 | | - CopyChanged(); |
---|
| 4256 | + if (copy.versionlist[copy.versionindex] == null) |
---|
| 4257 | + copy.versionindex -= 1; |
---|
| 4258 | + |
---|
| 4259 | + if (copy.versionindex != -1) |
---|
| 4260 | + CopyChanged(); |
---|
4238 | 4261 | |
---|
4239 | 4262 | SetVersionStates(); |
---|
4240 | 4263 | } |
---|
.. | .. |
---|
4347 | 4370 | boolean temp = CameraPane.SWITCH; |
---|
4348 | 4371 | CameraPane.SWITCH = false; |
---|
4349 | 4372 | |
---|
4350 | | - copy.ExtractBigData(versiontable); |
---|
| 4373 | + copy.ExtractBigData(Grafreed.grafreed.universe.versiontable); |
---|
4351 | 4374 | |
---|
4352 | 4375 | copy.clear(); |
---|
4353 | 4376 | |
---|
.. | .. |
---|
4359 | 4382 | copy.add(obj.get(i)); |
---|
4360 | 4383 | } |
---|
4361 | 4384 | |
---|
4362 | | - copy.RestoreBigData(versiontable); |
---|
| 4385 | + copy.RestoreBigData(Grafreed.grafreed.universe.versiontable); |
---|
4363 | 4386 | |
---|
4364 | 4387 | CameraPane.SWITCH = temp; |
---|
4365 | 4388 | |
---|
.. | .. |
---|
4422 | 4445 | previousVersionButton.setEnabled(copy.versionindex > 0); |
---|
4423 | 4446 | nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null); |
---|
4424 | 4447 | |
---|
4425 | | - deleteVersionButton.setEnabled(//copy.versionindex > 0 && |
---|
4426 | | - copy.versionlist[copy.versionindex + 1] != null); |
---|
| 4448 | + deleteVersionButton.setEnabled(copy.versionindex != -1); |
---|
| 4449 | + //copy.versionlist[copy.versionindex + 1] != null); |
---|
4427 | 4450 | |
---|
4428 | 4451 | muteSlider = true; |
---|
4429 | 4452 | versionSlider.setMinimum(0); |
---|
.. | .. |
---|
4488 | 4511 | |
---|
4489 | 4512 | public boolean Replace() |
---|
4490 | 4513 | { |
---|
4491 | | - System.err.println("Replace"); |
---|
| 4514 | + //System.err.println("Replace"); |
---|
4492 | 4515 | |
---|
4493 | 4516 | //cRadio tab = GetCurrentTab(); |
---|
4494 | 4517 | |
---|
.. | .. |
---|
4715 | 4738 | // else |
---|
4716 | 4739 | // applySelf(true); |
---|
4717 | 4740 | // } |
---|
| 4741 | + |
---|
| 4742 | + boolean Equal(double a, double b) |
---|
| 4743 | + { |
---|
| 4744 | + return Math.abs(a - b) < 0.001; |
---|
| 4745 | + } |
---|
| 4746 | + |
---|
4718 | 4747 | void applySelf0(boolean name) |
---|
4719 | 4748 | { |
---|
4720 | 4749 | if (name) |
---|
.. | .. |
---|
4764 | 4793 | { |
---|
4765 | 4794 | cMaterial mat = copy.material; |
---|
4766 | 4795 | |
---|
4767 | | - colorField.SetToolTipValue((mat.color)); |
---|
4768 | | - saturationField.SetToolTipValue((mat.modulation)); |
---|
4769 | | - metalnessField.SetToolTipValue((mat.metalness)); |
---|
4770 | | - diffuseField.SetToolTipValue((mat.diffuse)); |
---|
4771 | | - specularField.SetToolTipValue((mat.specular)); |
---|
4772 | | - shininessField.SetToolTipValue((mat.shininess)); |
---|
4773 | | - shiftField.SetToolTipValue((mat.shift)); |
---|
4774 | | - ambientField.SetToolTipValue((mat.ambient)); |
---|
4775 | | - lightareaField.SetToolTipValue((mat.lightarea)); |
---|
4776 | | - diffusenessField.SetToolTipValue((mat.factor)); |
---|
4777 | | - velvetField.SetToolTipValue((mat.velvet)); |
---|
4778 | | - sheenField.SetToolTipValue((mat.sheen)); |
---|
4779 | | - subsurfaceField.SetToolTipValue((mat.subsurface)); |
---|
4780 | | - backlitField.SetToolTipValue((mat.bump)); |
---|
4781 | | - anisoField.SetToolTipValue((mat.aniso)); |
---|
4782 | | - anisoVField.SetToolTipValue((mat.anisoV)); |
---|
4783 | | - cameraField.SetToolTipValue((mat.cameralight)); |
---|
4784 | | - selfshadowField.SetToolTipValue((mat.diffuseness)); |
---|
4785 | | - shadowField.SetToolTipValue((mat.shadow)); |
---|
4786 | | - textureField.SetToolTipValue((mat.texture)); |
---|
4787 | | - opacityField.SetToolTipValue((mat.opacity)); |
---|
4788 | | - fakedepthField.SetToolTipValue((mat.fakedepth)); |
---|
4789 | | - shadowbiasField.SetToolTipValue((mat.shadowbias)); |
---|
| 4796 | + if (!Equal(colorField.getFloat(), mat.color)) |
---|
| 4797 | + colorField.SetToolTipValue((mat.color)); |
---|
| 4798 | + if (!Equal(saturationField.getFloat(), mat.modulation)) |
---|
| 4799 | + saturationField.SetToolTipValue((mat.modulation)); |
---|
| 4800 | + if (!Equal(metalnessField.getFloat(), mat.metalness)) |
---|
| 4801 | + metalnessField.SetToolTipValue((mat.metalness)); |
---|
| 4802 | + if (!Equal(diffuseField.getFloat(), mat.diffuse)) |
---|
| 4803 | + diffuseField.SetToolTipValue((mat.diffuse)); |
---|
| 4804 | + if (!Equal(specularField.getFloat(), mat.specular)) |
---|
| 4805 | + specularField.SetToolTipValue((mat.specular)); |
---|
| 4806 | + if (!Equal(shininessField.getFloat(), mat.shininess)) |
---|
| 4807 | + shininessField.SetToolTipValue((mat.shininess)); |
---|
| 4808 | + if (!Equal(shiftField.getFloat(), mat.shift)) |
---|
| 4809 | + shiftField.SetToolTipValue((mat.shift)); |
---|
| 4810 | + if (!Equal(ambientField.getFloat(), mat.ambient)) |
---|
| 4811 | + ambientField.SetToolTipValue((mat.ambient)); |
---|
| 4812 | + if (!Equal(lightareaField.getFloat(), mat.lightarea)) |
---|
| 4813 | + lightareaField.SetToolTipValue((mat.lightarea)); |
---|
| 4814 | + if (!Equal(diffusenessField.getFloat(), mat.factor)) |
---|
| 4815 | + diffusenessField.SetToolTipValue((mat.factor)); |
---|
| 4816 | + if (!Equal(velvetField.getFloat(), mat.velvet)) |
---|
| 4817 | + velvetField.SetToolTipValue((mat.velvet)); |
---|
| 4818 | + if (!Equal(sheenField.getFloat(), mat.sheen)) |
---|
| 4819 | + sheenField.SetToolTipValue((mat.sheen)); |
---|
| 4820 | + if (!Equal(subsurfaceField.getFloat(), mat.subsurface)) |
---|
| 4821 | + subsurfaceField.SetToolTipValue((mat.subsurface)); |
---|
| 4822 | + if (!Equal(backlitField.getFloat(), mat.bump)) |
---|
| 4823 | + backlitField.SetToolTipValue((mat.bump)); |
---|
| 4824 | + if (!Equal(anisoField.getFloat(), mat.aniso)) |
---|
| 4825 | + anisoField.SetToolTipValue((mat.aniso)); |
---|
| 4826 | + if (!Equal(anisoVField.getFloat(), mat.anisoV)) |
---|
| 4827 | + anisoVField.SetToolTipValue((mat.anisoV)); |
---|
| 4828 | + if (!Equal(cameraField.getFloat(), mat.cameralight)) |
---|
| 4829 | + cameraField.SetToolTipValue((mat.cameralight)); |
---|
| 4830 | + if (!Equal(selfshadowField.getFloat(), mat.diffuseness)) |
---|
| 4831 | + selfshadowField.SetToolTipValue((mat.diffuseness)); |
---|
| 4832 | + if (!Equal(shadowField.getFloat(), mat.shadow)) |
---|
| 4833 | + shadowField.SetToolTipValue((mat.shadow)); |
---|
| 4834 | + if (!Equal(textureField.getFloat(), mat.texture)) |
---|
| 4835 | + textureField.SetToolTipValue((mat.texture)); |
---|
| 4836 | + if (!Equal(opacityField.getFloat(), mat.opacity)) |
---|
| 4837 | + opacityField.SetToolTipValue((mat.opacity)); |
---|
| 4838 | + if (!Equal(fakedepthField.getFloat(), mat.fakedepth)) |
---|
| 4839 | + fakedepthField.SetToolTipValue((mat.fakedepth)); |
---|
| 4840 | + if (!Equal(shadowbiasField.getFloat(), mat.shadowbias)) |
---|
| 4841 | + shadowbiasField.SetToolTipValue((mat.shadowbias)); |
---|
4790 | 4842 | } |
---|
4791 | 4843 | |
---|
4792 | 4844 | if (copy.material != null && copy.projectedVertices.length > 0 && copy.projectedVertices[0] != null) |
---|
.. | .. |
---|
5578 | 5630 | |
---|
5579 | 5631 | copy.versionlist = readobj.versionlist; |
---|
5580 | 5632 | copy.versionindex = readobj.versionindex; |
---|
| 5633 | + copy.versiontable = readobj.versiontable; |
---|
5581 | 5634 | |
---|
5582 | 5635 | if (copy.versionlist == null) |
---|
5583 | 5636 | { |
---|