.. | .. |
---|
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 | // { |
---|
.. | .. |
---|
388 | 388 | //parent = p; |
---|
389 | 389 | |
---|
390 | 390 | GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); |
---|
391 | | - System.out.println("getFullScreenWindow? " + gd.getFullScreenWindow()); |
---|
| 391 | + if (Globals.DEBUG) |
---|
| 392 | + System.out.println("getFullScreenWindow? " + gd.getFullScreenWindow()); |
---|
392 | 393 | //gd.setFullScreenWindow(this); |
---|
393 | 394 | //setResizable(false); |
---|
394 | 395 | //if (!isDisplayable()) |
---|
.. | .. |
---|
425 | 426 | |
---|
426 | 427 | static java.util.Vector<Object3D> listUI = new java.util.Vector<Object3D>(); |
---|
427 | 428 | |
---|
| 429 | + // This is to refresh the UI of the material panel. |
---|
| 430 | + boolean patchMaterial; |
---|
| 431 | + |
---|
428 | 432 | void SetupMenu() |
---|
429 | 433 | { |
---|
430 | 434 | frame.setMenuBar(menuBar = new MenuBar()); |
---|
.. | .. |
---|
950 | 954 | boolean temp = CameraPane.SWITCH; |
---|
951 | 955 | CameraPane.SWITCH = false; |
---|
952 | 956 | |
---|
953 | | - 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); |
---|
954 | 961 | // if (copy == client) |
---|
955 | 962 | |
---|
956 | 963 | Object3D versions[] = object.versionlist; |
---|
| 964 | + java.util.Hashtable<java.util.UUID, Object3D> versiontable = object.versiontable; // if Grafreed.grafreed.universe |
---|
957 | 965 | object.versionlist = null; |
---|
| 966 | + object.versiontable = null; |
---|
958 | 967 | |
---|
959 | 968 | //byte[] compress = Compress(copy); |
---|
960 | 969 | Object3D compress = (Object3D)Grafreed.clone(object); |
---|
961 | 970 | |
---|
962 | 971 | object.versionlist = versions; |
---|
| 972 | + object.versiontable = versiontable; // if Grafreed.grafreed.universe |
---|
963 | 973 | |
---|
964 | | - object.RestoreBigData(versiontable); |
---|
| 974 | + object.RestoreBigData(Grafreed.grafreed.universe.versiontable); |
---|
965 | 975 | |
---|
966 | 976 | CameraPane.SWITCH = temp; |
---|
967 | 977 | |
---|
.. | .. |
---|
1323 | 1333 | |
---|
1324 | 1334 | liveCB = AddCheckBox(setupPanel, "Live", copy.live); |
---|
1325 | 1335 | liveCB.setToolTipText("Animate object"); |
---|
| 1336 | + markCB = AddCheckBox(setupPanel, "Anim", copy.marked); |
---|
| 1337 | + markCB.setToolTipText("Set target transform"); |
---|
1326 | 1338 | selectableCB = AddCheckBox(setupPanel, "Select", !copy.dontselect); |
---|
1327 | 1339 | selectableCB.setToolTipText("Make object selectable"); |
---|
1328 | 1340 | // Return(); |
---|
1329 | 1341 | |
---|
1330 | 1342 | hideCB = AddCheckBox(setupPanel, "Hide", copy.hide); |
---|
1331 | 1343 | hideCB.setToolTipText("Hide object"); |
---|
1332 | | - markCB = AddCheckBox(setupPanel, "Mark", copy.marked); |
---|
1333 | | - markCB.setToolTipText("As animation target transform"); |
---|
1334 | 1344 | |
---|
1335 | 1345 | ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); |
---|
1336 | 1346 | |
---|
.. | .. |
---|
1532 | 1542 | |
---|
1533 | 1543 | if (cam == null || !(copy.get(0) instanceof cGroup)) |
---|
1534 | 1544 | { |
---|
| 1545 | + if (Globals.DEBUG) |
---|
1535 | 1546 | System.out.println("CREATE CAMERAS"); |
---|
1536 | 1547 | cams = new cTemplate(); |
---|
1537 | 1548 | cams.name = "Cameras"; |
---|
.. | .. |
---|
1657 | 1668 | |
---|
1658 | 1669 | //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); |
---|
1659 | 1670 | //tmp.setName("Edit"); |
---|
1660 | | - objectPanel.add(materialPanel); |
---|
1661 | | - objectPanel.setIconAt(0, GetIcon("icons/material.png")); |
---|
1662 | | - objectPanel.setToolTipTextAt(0, "Material"); |
---|
1663 | | - |
---|
1664 | 1671 | objectPanel.add(toolboxPanel); |
---|
1665 | | - objectPanel.setIconAt(1, GetIcon("icons/primitives.png")); |
---|
1666 | | - objectPanel.setToolTipTextAt(1, "Objects & textures"); |
---|
| 1672 | + objectPanel.setIconAt(0, GetIcon("icons/primitives.png")); |
---|
| 1673 | + objectPanel.setToolTipTextAt(0, "Objects & textures"); |
---|
1667 | 1674 | |
---|
| 1675 | + objectPanel.add(materialPanel); |
---|
| 1676 | + objectPanel.setIconAt(1, GetIcon("icons/material.png")); |
---|
| 1677 | + objectPanel.setToolTipTextAt(1, "Material"); |
---|
| 1678 | + |
---|
1668 | 1679 | objectPanel.add(skyboxPanel); |
---|
1669 | 1680 | objectPanel.setIconAt(2, GetIcon("icons/skybox.jpg")); |
---|
1670 | 1681 | objectPanel.setToolTipTextAt(2, "Backgrounds"); |
---|
.. | .. |
---|
1681 | 1692 | objectPanel.setIconAt(4, GetIcon("icons/XYZ.png")); |
---|
1682 | 1693 | objectPanel.setToolTipTextAt(4, "XYZ/RGB transform"); |
---|
1683 | 1694 | |
---|
| 1695 | + patchMaterial = true; |
---|
| 1696 | + cameraView.patchMaterial = this; |
---|
| 1697 | + objectPanel.setSelectedIndex(1); |
---|
| 1698 | + |
---|
1684 | 1699 | /* |
---|
1685 | 1700 | aConstraints.gridx = 0; |
---|
1686 | 1701 | aConstraints.gridwidth = 1; |
---|
.. | .. |
---|
1700 | 1715 | scrollpane.addMouseWheelListener(this); // Default not fast enough |
---|
1701 | 1716 | |
---|
1702 | 1717 | /*JTabbedPane*/ scenePanel = new cGridBag(); |
---|
1703 | | - scenePanel.preferredWidth = 5; |
---|
| 1718 | + scenePanel.preferredWidth = 6; |
---|
1704 | 1719 | |
---|
1705 | 1720 | JTabbedPane tabbedPane = new JTabbedPane(); |
---|
1706 | 1721 | tabbedPane.add(scrollpane); |
---|
.. | .. |
---|
1878 | 1893 | |
---|
1879 | 1894 | // Skin |
---|
1880 | 1895 | colorField.setFloat(material.color); |
---|
1881 | | - 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 | + |
---|
1882 | 1905 | subsurfaceField.setFloat(material.subsurface); |
---|
1883 | 1906 | selfshadowField.setFloat(material.diffuseness); |
---|
1884 | 1907 | diffusenessField.setFloat(material.factor); |
---|
.. | .. |
---|
2196 | 2219 | public void mouseClicked(MouseEvent e) |
---|
2197 | 2220 | { |
---|
2198 | 2221 | borderfadeField.setFloat(0.5); |
---|
2199 | | - opacityField.setFloat(0.6); |
---|
| 2222 | + opacityField.setFloat(0.75); |
---|
2200 | 2223 | |
---|
2201 | 2224 | materialtouched = true; |
---|
2202 | 2225 | applySelf(); |
---|
.. | .. |
---|
2311 | 2334 | |
---|
2312 | 2335 | cGridBag huepanel = new cGridBag(); |
---|
2313 | 2336 | cGridBag huelabel = new cGridBag(); |
---|
2314 | | - skin = GetLabel("icons/hue.png", false); |
---|
2315 | | - skin.fit = true; |
---|
2316 | | - huelabel.add(skin); |
---|
| 2337 | + cLabel hue = GetLabel("icons/hue.png", false); |
---|
| 2338 | + hue.fit = true; |
---|
| 2339 | + |
---|
| 2340 | + hue.addMouseListener(new MouseAdapter() |
---|
| 2341 | + { |
---|
| 2342 | + public void mousePressed(MouseEvent e) |
---|
| 2343 | + { |
---|
| 2344 | + int x = e.getX(); |
---|
| 2345 | + |
---|
| 2346 | + colorField.setFloat((double)x / ((cLabel)e.getSource()).getWidth()); |
---|
| 2347 | + } |
---|
| 2348 | + }); |
---|
| 2349 | + |
---|
| 2350 | + huelabel.add(hue); |
---|
2317 | 2351 | huelabel.preferredWidth = 20; |
---|
2318 | 2352 | huepanel.add(new cGridBag()); // Label |
---|
2319 | 2353 | huepanel.add(huelabel); // Field/slider |
---|
.. | .. |
---|
3900 | 3934 | //System.out.println("ObjEditor " + event); |
---|
3901 | 3935 | applySelf0(true); |
---|
3902 | 3936 | //parent.applySelf(); |
---|
3903 | | - objEditor.refreshContents(); |
---|
| 3937 | + // conflicts with requestFocus objEditor.refreshContents(); |
---|
3904 | 3938 | } else if (source == resetButton) |
---|
3905 | 3939 | { |
---|
3906 | 3940 | CameraPane.fullreset = true; |
---|
.. | .. |
---|
4212 | 4246 | return true; |
---|
4213 | 4247 | } |
---|
4214 | 4248 | |
---|
4215 | | - java.util.Hashtable<java.util.UUID, Object3D> versiontable = new java.util.Hashtable<java.util.UUID, Object3D>(); |
---|
4216 | | - |
---|
4217 | 4249 | void DeleteVersion() |
---|
4218 | 4250 | { |
---|
4219 | 4251 | for (int i = copy.versionindex; i < copy.versionlist.length-1; i++) |
---|
.. | .. |
---|
4221 | 4253 | copy.versionlist[i] = copy.versionlist[i+1]; |
---|
4222 | 4254 | } |
---|
4223 | 4255 | |
---|
4224 | | - CopyChanged(); |
---|
| 4256 | + if (copy.versionlist[copy.versionindex] == null) |
---|
| 4257 | + copy.versionindex -= 1; |
---|
| 4258 | + |
---|
| 4259 | + if (copy.versionindex != -1) |
---|
| 4260 | + CopyChanged(); |
---|
4225 | 4261 | |
---|
4226 | 4262 | SetVersionStates(); |
---|
4227 | 4263 | } |
---|
.. | .. |
---|
4334 | 4370 | boolean temp = CameraPane.SWITCH; |
---|
4335 | 4371 | CameraPane.SWITCH = false; |
---|
4336 | 4372 | |
---|
4337 | | - copy.ExtractBigData(versiontable); |
---|
| 4373 | + copy.ExtractBigData(Grafreed.grafreed.universe.versiontable); |
---|
4338 | 4374 | |
---|
4339 | 4375 | copy.clear(); |
---|
4340 | 4376 | |
---|
.. | .. |
---|
4346 | 4382 | copy.add(obj.get(i)); |
---|
4347 | 4383 | } |
---|
4348 | 4384 | |
---|
4349 | | - copy.RestoreBigData(versiontable); |
---|
| 4385 | + copy.RestoreBigData(Grafreed.grafreed.universe.versiontable); |
---|
4350 | 4386 | |
---|
4351 | 4387 | CameraPane.SWITCH = temp; |
---|
4352 | 4388 | |
---|
.. | .. |
---|
4409 | 4445 | previousVersionButton.setEnabled(copy.versionindex > 0); |
---|
4410 | 4446 | nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null); |
---|
4411 | 4447 | |
---|
4412 | | - deleteVersionButton.setEnabled(//copy.versionindex > 0 && |
---|
4413 | | - copy.versionlist[copy.versionindex + 1] != null); |
---|
| 4448 | + deleteVersionButton.setEnabled(copy.versionindex != -1); |
---|
| 4449 | + //copy.versionlist[copy.versionindex + 1] != null); |
---|
4414 | 4450 | |
---|
4415 | 4451 | muteSlider = true; |
---|
4416 | 4452 | versionSlider.setMinimum(0); |
---|
.. | .. |
---|
4475 | 4511 | |
---|
4476 | 4512 | public boolean Replace() |
---|
4477 | 4513 | { |
---|
4478 | | - System.err.println("Replace"); |
---|
| 4514 | + //System.err.println("Replace"); |
---|
4479 | 4515 | |
---|
4480 | 4516 | //cRadio tab = GetCurrentTab(); |
---|
4481 | 4517 | |
---|
.. | .. |
---|
4702 | 4738 | // else |
---|
4703 | 4739 | // applySelf(true); |
---|
4704 | 4740 | // } |
---|
| 4741 | + |
---|
| 4742 | + boolean Equal(double a, double b) |
---|
| 4743 | + { |
---|
| 4744 | + return Math.abs(a - b) < 0.001; |
---|
| 4745 | + } |
---|
| 4746 | + |
---|
4705 | 4747 | void applySelf0(boolean name) |
---|
4706 | 4748 | { |
---|
4707 | 4749 | if (name) |
---|
.. | .. |
---|
4751 | 4793 | { |
---|
4752 | 4794 | cMaterial mat = copy.material; |
---|
4753 | 4795 | |
---|
4754 | | - colorField.SetToolTipValue((mat.color)); |
---|
4755 | | - saturationField.SetToolTipValue((mat.modulation)); |
---|
4756 | | - metalnessField.SetToolTipValue((mat.metalness)); |
---|
4757 | | - diffuseField.SetToolTipValue((mat.diffuse)); |
---|
4758 | | - specularField.SetToolTipValue((mat.specular)); |
---|
4759 | | - shininessField.SetToolTipValue((mat.shininess)); |
---|
4760 | | - shiftField.SetToolTipValue((mat.shift)); |
---|
4761 | | - ambientField.SetToolTipValue((mat.ambient)); |
---|
4762 | | - lightareaField.SetToolTipValue((mat.lightarea)); |
---|
4763 | | - diffusenessField.SetToolTipValue((mat.factor)); |
---|
4764 | | - velvetField.SetToolTipValue((mat.velvet)); |
---|
4765 | | - sheenField.SetToolTipValue((mat.sheen)); |
---|
4766 | | - subsurfaceField.SetToolTipValue((mat.subsurface)); |
---|
4767 | | - backlitField.SetToolTipValue((mat.bump)); |
---|
4768 | | - anisoField.SetToolTipValue((mat.aniso)); |
---|
4769 | | - anisoVField.SetToolTipValue((mat.anisoV)); |
---|
4770 | | - cameraField.SetToolTipValue((mat.cameralight)); |
---|
4771 | | - selfshadowField.SetToolTipValue((mat.diffuseness)); |
---|
4772 | | - shadowField.SetToolTipValue((mat.shadow)); |
---|
4773 | | - textureField.SetToolTipValue((mat.texture)); |
---|
4774 | | - opacityField.SetToolTipValue((mat.opacity)); |
---|
4775 | | - fakedepthField.SetToolTipValue((mat.fakedepth)); |
---|
4776 | | - 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)); |
---|
4777 | 4842 | } |
---|
4778 | 4843 | |
---|
4779 | 4844 | if (copy.material != null && copy.projectedVertices.length > 0 && copy.projectedVertices[0] != null) |
---|
.. | .. |
---|
5178 | 5243 | |
---|
5179 | 5244 | if (previousVersionButton != null && copy.versionlist != null) |
---|
5180 | 5245 | SetVersionStates(); |
---|
| 5246 | + |
---|
| 5247 | + cameraView.requestFocusInWindow(); |
---|
5181 | 5248 | } |
---|
5182 | 5249 | |
---|
5183 | 5250 | static TweenManager tweenManager = new TweenManager(); |
---|
.. | .. |
---|
5209 | 5276 | // group = (Composite) group.get(0); |
---|
5210 | 5277 | // } |
---|
5211 | 5278 | |
---|
5212 | | - System.out.println("makeSomething of " + thing); |
---|
| 5279 | + //System.out.println("makeSomething of " + thing); |
---|
5213 | 5280 | |
---|
5214 | 5281 | /* |
---|
5215 | 5282 | if (deselect && jList != null) |
---|
.. | .. |
---|
5563 | 5630 | |
---|
5564 | 5631 | copy.versionlist = readobj.versionlist; |
---|
5565 | 5632 | copy.versionindex = readobj.versionindex; |
---|
| 5633 | + copy.versiontable = readobj.versiontable; |
---|
5566 | 5634 | |
---|
5567 | 5635 | if (copy.versionlist == null) |
---|
5568 | 5636 | { |
---|