.. | .. |
---|
1 | 1 | |
---|
| 2 | +import com.bulletphysics.dynamics.RigidBody; |
---|
2 | 3 | import java.awt.*; |
---|
3 | 4 | import java.awt.event.*; |
---|
4 | 5 | import java.awt.image.*; |
---|
.. | .. |
---|
134 | 135 | static boolean ZOOMBOXMODE = false; |
---|
135 | 136 | static boolean BOXMODE = false; |
---|
136 | 137 | static boolean IMAGEFLIP = false; |
---|
137 | | -static boolean SMOOTHFOCUS = false; |
---|
| 138 | +static boolean SMOOTHFOCUS = true; // false; |
---|
138 | 139 | static boolean SPEAKERMOCAP = true; // jan 2014 false; |
---|
139 | 140 | static boolean SPEAKERCAMERA = false; |
---|
140 | 141 | static boolean SPEAKERFOCUS = false; |
---|
.. | .. |
---|
174 | 175 | boolean Udebug = false; |
---|
175 | 176 | boolean Vdebug = false; |
---|
176 | 177 | boolean NORMALdebug = false; |
---|
177 | | - static boolean doublesided = false; // true; // reversed normals are awful for conformance |
---|
| 178 | + static boolean doublesided = true; // false; // reversed normals are awful for conformance |
---|
178 | 179 | boolean anisotropy = true; |
---|
179 | 180 | boolean softshadow = true; // slower but better false; |
---|
180 | 181 | boolean opacityhalo = false; // reverse the halo effect (e.g. glass) |
---|
.. | .. |
---|
221 | 222 | cameras = new Camera[2]; |
---|
222 | 223 | targetLookAts = new cVector[2]; |
---|
223 | 224 | |
---|
224 | | - SetCamera(cam); |
---|
| 225 | + SetCamera(cam, true); |
---|
225 | 226 | |
---|
226 | 227 | // Warning: not used. |
---|
227 | | - SetLight(new Camera(new cVector(15, 10, -20))); |
---|
| 228 | + //SetLight(new Camera(new cVector(15, 10, -20))); |
---|
228 | 229 | |
---|
229 | 230 | object = o; |
---|
230 | 231 | |
---|
.. | .. |
---|
542 | 543 | LA.vecSub(pv/*.pos*/, rv/*.pos*/, obj.v1); |
---|
543 | 544 | LA.vecCross(obj.v0, obj.v1, obj.v2); |
---|
544 | 545 | LA.vecNormalize(obj.v2); |
---|
545 | | - gl.glNormal3f((float) obj.v2.x, (float) obj.v2.y, (float) obj.v2.z); |
---|
| 546 | + |
---|
| 547 | + SetGLNormal(gl, (float) obj.v2.x, (float) obj.v2.y, (float) obj.v2.z); |
---|
546 | 548 | } |
---|
547 | 549 | |
---|
548 | 550 | // P |
---|
.. | .. |
---|
564 | 566 | y += ny * obj.NORMALPUSH; |
---|
565 | 567 | z += nz * obj.NORMALPUSH; |
---|
566 | 568 | |
---|
567 | | - gl.glNormal3f(nx, ny, nz); |
---|
| 569 | + SetGLNormal(gl, nx, ny, nz); |
---|
568 | 570 | } |
---|
569 | 571 | gl.glColor4f(pv.AO, pv.AO, pv.AO, 1); |
---|
570 | 572 | SetColor(obj, pv); |
---|
.. | .. |
---|
596 | 598 | y += ny * obj.NORMALPUSH; |
---|
597 | 599 | z += nz * obj.NORMALPUSH; |
---|
598 | 600 | |
---|
599 | | - gl.glNormal3f(nx, ny, nz); |
---|
| 601 | + SetGLNormal(gl, nx, ny, nz); |
---|
600 | 602 | } |
---|
601 | 603 | //System.out.println("vertexq = " + qv.s + ", " + qv.t); |
---|
602 | 604 | // boolean locked = false; |
---|
.. | .. |
---|
644 | 646 | y += ny * obj.NORMALPUSH; |
---|
645 | 647 | z += nz * obj.NORMALPUSH; |
---|
646 | 648 | |
---|
647 | | - gl.glNormal3f(nx, ny, nz); |
---|
| 649 | + SetGLNormal(gl, nx, ny, nz); |
---|
648 | 650 | } |
---|
649 | 651 | |
---|
650 | 652 | // if ((dot&4) == 0) |
---|
.. | .. |
---|
880 | 882 | //// tris.postdraw(this); |
---|
881 | 883 | } |
---|
882 | 884 | |
---|
883 | | - static Camera localcamera = new Camera(); |
---|
| 885 | + static Camera localAOcamera = new Camera(); |
---|
884 | 886 | static cVector from = new cVector(); |
---|
885 | 887 | static cVector to = new cVector(); |
---|
886 | 888 | |
---|
.. | .. |
---|
889 | 891 | CameraPane cp = this; |
---|
890 | 892 | |
---|
891 | 893 | Camera keep = cp.RenderCamera(); |
---|
892 | | - cp.renderCamera = localcamera; |
---|
| 894 | + cp.renderCamera = localAOcamera; |
---|
893 | 895 | |
---|
894 | 896 | if (br.trimmed) |
---|
895 | 897 | { |
---|
.. | .. |
---|
907 | 909 | br.positions[i3 + 2] + br.normals[i3 + 2]); |
---|
908 | 910 | LA.xformPos(from, transform, from); |
---|
909 | 911 | LA.xformPos(to, transform, to); // RIGID ONLY |
---|
910 | | - localcamera.setAim(from, to); |
---|
| 912 | + localAOcamera.setAim(from, to); |
---|
911 | 913 | |
---|
912 | 914 | CameraPane.occlusionbuffer.display(); |
---|
913 | 915 | |
---|
.. | .. |
---|
941 | 943 | to.set(v.x+v.norm.x, v.y+v.norm.y, v.z+v.norm.z); |
---|
942 | 944 | LA.xformPos(from, transform, from); |
---|
943 | 945 | LA.xformPos(to, transform, to); // RIGID ONLY |
---|
944 | | - localcamera.setAim(from, to); |
---|
| 946 | + localAOcamera.setAim(from, to); |
---|
945 | 947 | |
---|
946 | 948 | CameraPane.occlusionbuffer.display(); |
---|
947 | 949 | |
---|
.. | .. |
---|
1250 | 1252 | { |
---|
1251 | 1253 | if (n[count3] != 0 || n[count3 + 1] != 0 || n[count3 + 2] != 0) |
---|
1252 | 1254 | { |
---|
1253 | | - gl.glNormal3f(n[count3], n[count3 + 1], n[count3 + 2]); |
---|
| 1255 | + SetGLNormal(gl, n[count3], n[count3 + 1], n[count3 + 2]); |
---|
1254 | 1256 | } else |
---|
1255 | 1257 | { |
---|
1256 | | - gl.glNormal3f(0, 0, 1); |
---|
| 1258 | + SetGLNormal(gl, 0, 0, 1); |
---|
1257 | 1259 | } |
---|
1258 | 1260 | |
---|
1259 | 1261 | if (c != null) |
---|
.. | .. |
---|
1277 | 1279 | { |
---|
1278 | 1280 | if (n[count3] != 0 || n[count3 + 1] != 0 || n[count3 + 2] != 0) |
---|
1279 | 1281 | { |
---|
1280 | | - gl.glNormal3f(n[count3], n[count3 + 1], n[count3 + 2]); |
---|
| 1282 | + SetGLNormal(gl, n[count3], n[count3 + 1], n[count3 + 2]); |
---|
1281 | 1283 | } else |
---|
1282 | 1284 | { |
---|
1283 | | - gl.glNormal3f(0, 0, 1); |
---|
| 1285 | + SetGLNormal(gl, 0, 0, 1); |
---|
1284 | 1286 | } |
---|
1285 | 1287 | if (c != null) |
---|
1286 | 1288 | { |
---|
.. | .. |
---|
1305 | 1307 | { |
---|
1306 | 1308 | if (n[count3] != 0 || n[count3 + 1] != 0 || n[count3 + 2] != 0) |
---|
1307 | 1309 | { |
---|
1308 | | - gl.glNormal3f(n[count3], n[count3 + 1], n[count3 + 2]); |
---|
| 1310 | + SetGLNormal(gl, n[count3], n[count3 + 1], n[count3 + 2]); |
---|
1309 | 1311 | } else |
---|
1310 | 1312 | { |
---|
1311 | | - gl.glNormal3f(0, 0, 1); |
---|
| 1313 | + SetGLNormal(gl, 0, 0, 1); |
---|
1312 | 1314 | } |
---|
1313 | 1315 | if (c != null) |
---|
1314 | 1316 | { |
---|
.. | .. |
---|
1490 | 1492 | { |
---|
1491 | 1493 | if (!selectmode) |
---|
1492 | 1494 | { |
---|
1493 | | - gl.glNormal3f((float) pv.norm.x, (float) pv.norm.y, (float) pv.norm.z); |
---|
| 1495 | + SetGLNormal(gl, (float) pv.norm.x, (float) pv.norm.y, (float) pv.norm.z); |
---|
1494 | 1496 | gl.glColor4f(pv.AO, pv.AO, pv.AO, 1); |
---|
1495 | 1497 | |
---|
1496 | 1498 | if (flipV) |
---|
.. | .. |
---|
1819 | 1821 | |
---|
1820 | 1822 | display.modelParams7[0] = 0; |
---|
1821 | 1823 | display.modelParams7[1] = 1000; |
---|
1822 | | - display.modelParams7[2] = 0; |
---|
| 1824 | + display.modelParams7[2] = material.parallax; |
---|
1823 | 1825 | display.modelParams7[3] = 0; |
---|
1824 | 1826 | |
---|
1825 | 1827 | //display.modelParams6[0] = 100; // criss de bug de bump |
---|
.. | .. |
---|
2052 | 2054 | switch(viewcode) |
---|
2053 | 2055 | { |
---|
2054 | 2056 | case 0: return "main"; |
---|
2055 | | - case 1: return "one"; |
---|
2056 | | - case 2: return "two"; |
---|
2057 | | - case 3: return "three"; |
---|
| 2057 | + case 1: return "Red"; |
---|
| 2058 | + case 2: return "Green"; |
---|
| 2059 | + case 3: return "Blue"; |
---|
2058 | 2060 | case 4: return "light"; |
---|
2059 | 2061 | } |
---|
2060 | 2062 | |
---|
.. | .. |
---|
2063 | 2065 | |
---|
2064 | 2066 | static int camerachangeframe; |
---|
2065 | 2067 | |
---|
2066 | | - public boolean SetCamera(Camera cam) |
---|
| 2068 | + public boolean SetCamera(Camera cam, boolean set) |
---|
2067 | 2069 | { |
---|
2068 | 2070 | // may 2014 if (cam == cameras[0] || cam == cameras[1]) |
---|
2069 | 2071 | // return false; |
---|
.. | .. |
---|
2081 | 2083 | |
---|
2082 | 2084 | camerachangeframe = Globals.framecount; |
---|
2083 | 2085 | |
---|
2084 | | - cam.hAspect = -1; // Read only |
---|
| 2086 | + if (cam != null) |
---|
| 2087 | + cam.hAspect = -1; // Read only |
---|
2085 | 2088 | |
---|
2086 | 2089 | cameras[0] = cam; |
---|
2087 | 2090 | targetLookAts[0] = new cVector(cam.lookAt); |
---|
.. | .. |
---|
2091 | 2094 | { |
---|
2092 | 2095 | cameras[i] = new Camera(cam.viewCode); |
---|
2093 | 2096 | } |
---|
2094 | | - |
---|
2095 | | - cameras[i].setAim(cam.location, cam.lookAt); |
---|
2096 | | - cameras[i].shaper_fovy = cam.shaper_fovy; |
---|
2097 | | - cameras[i].UP.set(cam.UP); |
---|
2098 | | - targetLookAts[i] = new cVector(cameras[i].lookAt); |
---|
| 2097 | + |
---|
| 2098 | + if (set) |
---|
| 2099 | + { |
---|
| 2100 | + cameras[i].setAim(cam.location, cam.lookAt); |
---|
| 2101 | + cameras[i].shaper_fovy = cam.shaper_fovy; |
---|
| 2102 | + cameras[i].UP.set(cam.UP); |
---|
| 2103 | + targetLookAts[i] = new cVector(cameras[i].lookAt); |
---|
| 2104 | + } |
---|
2099 | 2105 | } |
---|
2100 | 2106 | cameracount = 0; |
---|
2101 | 2107 | targetLookAt = targetLookAts[cameracount]; |
---|
.. | .. |
---|
2104 | 2110 | // Start with free camera |
---|
2105 | 2111 | SwitchCameras(true); |
---|
2106 | 2112 | |
---|
2107 | | - pingthread.jump = true; // optional? |
---|
| 2113 | +// pingthread.jump = true; // optional? |
---|
2108 | 2114 | |
---|
2109 | 2115 | if (TRACKONCE) |
---|
2110 | 2116 | { |
---|
.. | .. |
---|
2291 | 2297 | public void ToggleTrack() |
---|
2292 | 2298 | { |
---|
2293 | 2299 | TRACK ^= true; |
---|
2294 | | - if (TRACK) |
---|
2295 | | - { |
---|
2296 | | - if (object.selection != null && |
---|
2297 | | - object.selection.size() > 0 && |
---|
2298 | | - object.selection.elementAt(0) != null && |
---|
2299 | | - !(object.selection.elementAt(0) instanceof Camera) && |
---|
2300 | | - !(object.selection.elementAt(0) instanceof ScriptNode)) |
---|
2301 | | - { |
---|
2302 | | - trackedobject = object.selection.elementAt(0); |
---|
2303 | | - repaint(); |
---|
2304 | | - } |
---|
2305 | | - } |
---|
2306 | 2300 | |
---|
2307 | 2301 | repaint(); |
---|
2308 | 2302 | } |
---|
.. | .. |
---|
2394 | 2388 | { |
---|
2395 | 2389 | //System.out.println("PROTECTION = " + cam.hAspect); |
---|
2396 | 2390 | //assert (cam.hAspect == 0); |
---|
2397 | | - cam.hAspect = 0; |
---|
| 2391 | + if (cam != null) |
---|
| 2392 | + cam.hAspect = 0; |
---|
2398 | 2393 | lightCamera = cam; |
---|
2399 | 2394 | } |
---|
2400 | 2395 | |
---|
.. | .. |
---|
2473 | 2468 | byte[] bytes = bytebuf.array(); |
---|
2474 | 2469 | |
---|
2475 | 2470 | return CreateBim(bytes, width, height); |
---|
| 2471 | + } |
---|
| 2472 | + |
---|
| 2473 | + private void SetGLNormal(javax.media.opengl.GL gl, float nx, float ny, float nz) |
---|
| 2474 | + { |
---|
| 2475 | + gl.glNormal3f(nx, ny, nz); |
---|
| 2476 | + |
---|
| 2477 | + if (ny > 0.9 || ny < -0.9) |
---|
| 2478 | + // Ground or ceiling |
---|
| 2479 | + gl.glVertexAttrib3f(4, 1, 0, 0); |
---|
| 2480 | + else |
---|
| 2481 | + // Walls |
---|
| 2482 | + gl.glVertexAttrib3f(4, 0, 1, 0); |
---|
2476 | 2483 | } |
---|
2477 | 2484 | |
---|
2478 | 2485 | /**/ |
---|
.. | .. |
---|
3583 | 3590 | }; |
---|
3584 | 3591 | /**/ |
---|
3585 | 3592 | |
---|
| 3593 | + static Object3D lastObject; |
---|
| 3594 | + |
---|
3586 | 3595 | //com.sun.opengl.util.texture.Texture |
---|
3587 | 3596 | TextureData |
---|
3588 | 3597 | GetFileTexture(String name, boolean bump, int resolution) |
---|
.. | .. |
---|
3619 | 3628 | // return null; |
---|
3620 | 3629 | //if (i == 2) |
---|
3621 | 3630 | // return null; |
---|
| 3631 | + // TIFF issue sept 2019 |
---|
| 3632 | + System.err.println("lastObject = " + lastObject); |
---|
3622 | 3633 | e.printStackTrace(); |
---|
3623 | 3634 | name = name.split("\\.tif")[0] + ".jpg"; |
---|
3624 | 3635 | } |
---|
.. | .. |
---|
6951 | 6962 | short residu = 0; |
---|
6952 | 6963 | |
---|
6953 | 6964 | // wraparound workarounds |
---|
6954 | | - short fuck = (short) (buffer[i] & 0xFF); |
---|
| 6965 | + short ww = (short) (buffer[i] & 0xFF); |
---|
6955 | 6966 | /* |
---|
6956 | | - residu += (fuck%2); |
---|
6957 | | - if(fuck/2 < 256-residu/2) |
---|
| 6967 | + residu += (ww%2); |
---|
| 6968 | + if(ww/2 < 256-residu/2) |
---|
6958 | 6969 | { |
---|
6959 | | - fuck = (short)((fuck/2) + residu/2); |
---|
| 6970 | + ww = (short)((ww/2) + residu/2); |
---|
6960 | 6971 | if(residu == 2) |
---|
6961 | 6972 | residu = 0; |
---|
6962 | 6973 | } |
---|
6963 | 6974 | else |
---|
6964 | 6975 | { |
---|
6965 | 6976 | residu = 0; |
---|
6966 | | - fuck /= 2; |
---|
| 6977 | + ww /= 2; |
---|
6967 | 6978 | } |
---|
6968 | 6979 | */ |
---|
6969 | | - if (i < imglength / 3 || rnd.nextFloat() < 0.5 || fuck >= 254) |
---|
| 6980 | + if (i < imglength / 3 || rnd.nextFloat() < 0.5 || ww >= 254) |
---|
6970 | 6981 | { |
---|
6971 | | - fuck /= 2; |
---|
| 6982 | + ww /= 2; |
---|
6972 | 6983 | } else |
---|
6973 | 6984 | { |
---|
6974 | | - fuck = (short) ((fuck / 2) + fuck % 2); |
---|
| 6985 | + ww = (short) ((ww / 2) + ww % 2); |
---|
6975 | 6986 | } |
---|
6976 | 6987 | |
---|
6977 | | - buffer[i] = (byte) fuck; |
---|
| 6988 | + buffer[i] = (byte) ww; |
---|
6978 | 6989 | } |
---|
6979 | 6990 | //System.out.print(bytes[i] + " "); |
---|
6980 | 6991 | //if(buffer[i] >= 0 && buffer[i]<=eps-1) buffer[i] = eps; |
---|
.. | .. |
---|
8441 | 8452 | { |
---|
8442 | 8453 | // texturecache = textures.get(texname); // suspicious |
---|
8443 | 8454 | if (texturecache == null) |
---|
8444 | | - texturecache = new CacheTexture(GetResourceTexture("whitenoise.png", bump),resolution); |
---|
| 8455 | + texturecache = new CacheTexture(GetResourceTexture("whitenoise.jpg", bump),resolution); |
---|
8445 | 8456 | else |
---|
8446 | 8457 | new Exception().printStackTrace(); |
---|
8447 | 8458 | } else |
---|
8448 | 8459 | { |
---|
8449 | | - if (texname.startsWith("@")) |
---|
| 8460 | + if (texname.startsWith("@") && textureon) |
---|
8450 | 8461 | { |
---|
8451 | 8462 | // texturecache = textures.get(texname); // suspicious |
---|
8452 | 8463 | if (texturecache == null) |
---|
.. | .. |
---|
8629 | 8640 | { |
---|
8630 | 8641 | tex.bw = texturecache.texturedata.getWidth(); |
---|
8631 | 8642 | tex.bh = texturecache.texturedata.getHeight(); |
---|
8632 | | - tex.bumpdata = CompressJPEG(CreateBim(((ByteBuffer)texturecache.texturedata.getBuffer()).array(), tex.bw, tex.bh), 0.5f); |
---|
| 8643 | + tex.bumpdata = //CompressJPEG(CreateBim( |
---|
| 8644 | + ((ByteBuffer)texturecache.texturedata.getBuffer()).array(); |
---|
| 8645 | + //, tex.bw, tex.bh), 0.5f); |
---|
8633 | 8646 | } |
---|
8634 | 8647 | } |
---|
8635 | 8648 | } |
---|
.. | .. |
---|
9827 | 9840 | DrawSkyBox(gl, (float)rati); |
---|
9828 | 9841 | gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); |
---|
9829 | 9842 | gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB); |
---|
9830 | | - accPerspective(gl, renderCamera.shaper_fovy / ratio, |
---|
| 9843 | + |
---|
| 9844 | + boolean vr = capsLocked && !lightMode; |
---|
| 9845 | + |
---|
| 9846 | + accPerspective(gl, renderCamera.shaper_fovy / ratio * (vr ? 1.2 : 1), |
---|
9831 | 9847 | ratio, |
---|
9832 | 9848 | //near_plane, far_plane, |
---|
9833 | 9849 | renderCamera.shaper_zNear * renderCamera.Distance(), renderCamera.shaper_zFar * renderCamera.Distance(), |
---|
.. | .. |
---|
10699 | 10715 | if (patchMaterial.patchMaterial) |
---|
10700 | 10716 | { |
---|
10701 | 10717 | patchMaterial.patchMaterial = false; |
---|
10702 | | - patchMaterial.objectPanel.setSelectedIndex(0); |
---|
| 10718 | + patchMaterial.objectTabbedPane.setSelectedIndex(1); |
---|
10703 | 10719 | } |
---|
10704 | 10720 | |
---|
10705 | 10721 | if (Grafreed.savesound && Grafreed.hassound) |
---|
.. | .. |
---|
10797 | 10813 | |
---|
10798 | 10814 | if (DrawMode() == DEFAULT) |
---|
10799 | 10815 | { |
---|
| 10816 | + if (manipCamera == lightCamera) |
---|
| 10817 | + { |
---|
| 10818 | +// switch (e.getKeyCode()) |
---|
| 10819 | +// { |
---|
| 10820 | +// case DOWN_ARROW: |
---|
| 10821 | +// lightCamera.DECAL /= 2; |
---|
| 10822 | +// repaint(); |
---|
| 10823 | +// break; |
---|
| 10824 | +// case UP_ARROW: |
---|
| 10825 | +// lightCamera.DECAL *= 2; |
---|
| 10826 | +// repaint(); |
---|
| 10827 | +// break; |
---|
| 10828 | +// case LEFT_ARROW: |
---|
| 10829 | +// lightCamera.SCALE /= 2; |
---|
| 10830 | +// repaint(); |
---|
| 10831 | +// break; |
---|
| 10832 | +// case RIGHT_ARROW: |
---|
| 10833 | +// lightCamera.SCALE *= 2; |
---|
| 10834 | +// repaint(); |
---|
| 10835 | +// break; |
---|
| 10836 | +// default: |
---|
| 10837 | +// break; |
---|
| 10838 | + if (keys[DOWN_ARROW]) |
---|
| 10839 | + { |
---|
| 10840 | + lightCamera.DECAL /= 2; |
---|
| 10841 | + } |
---|
| 10842 | + |
---|
| 10843 | + if (keys[UP_ARROW]) |
---|
| 10844 | + { |
---|
| 10845 | + lightCamera.DECAL *= 2; |
---|
| 10846 | + } |
---|
| 10847 | + |
---|
| 10848 | + if (keys[LEFT_ARROW]) |
---|
| 10849 | + { |
---|
| 10850 | + lightCamera.SCALE /= 2; |
---|
| 10851 | + } |
---|
| 10852 | + |
---|
| 10853 | + if (keys[RIGHT_ARROW]) |
---|
| 10854 | + { |
---|
| 10855 | + lightCamera.SCALE *= 2; |
---|
| 10856 | + } |
---|
| 10857 | + } |
---|
| 10858 | + else |
---|
| 10859 | + { |
---|
| 10860 | + //pingthread.mute = true; |
---|
| 10861 | + |
---|
| 10862 | + boolean keyon = false; |
---|
| 10863 | + |
---|
| 10864 | + if (keys[DOWN_ARROW]) |
---|
| 10865 | + { |
---|
| 10866 | + speed = ++speedkey[DOWN_ARROW]; |
---|
| 10867 | + if (speed > 20) |
---|
| 10868 | + speed = 20; |
---|
| 10869 | + GoDown(modifiers); |
---|
| 10870 | + keyon = true; |
---|
| 10871 | + } |
---|
| 10872 | + else |
---|
| 10873 | + speedkey[DOWN_ARROW] = 0; |
---|
| 10874 | + |
---|
| 10875 | + if (keys[UP_ARROW]) |
---|
| 10876 | + { |
---|
| 10877 | + speed = ++speedkey[UP_ARROW]; |
---|
| 10878 | + if (speed > 20) |
---|
| 10879 | + speed = 20; |
---|
| 10880 | + GoUp(modifiers); |
---|
| 10881 | + keyon = true; |
---|
| 10882 | + } |
---|
| 10883 | + else |
---|
| 10884 | + speedkey[UP_ARROW] = 0; |
---|
| 10885 | + |
---|
| 10886 | + if (keys[LEFT_ARROW]) |
---|
| 10887 | + { |
---|
| 10888 | + speed = ++speedkey[LEFT_ARROW]; |
---|
| 10889 | + if (speed > 20) |
---|
| 10890 | + speed = 20; |
---|
| 10891 | + GoLeft(modifiers); |
---|
| 10892 | + keyon = true; |
---|
| 10893 | + } |
---|
| 10894 | + else |
---|
| 10895 | + speedkey[LEFT_ARROW] = 0; |
---|
| 10896 | + |
---|
| 10897 | + if (keys[RIGHT_ARROW]) |
---|
| 10898 | + { |
---|
| 10899 | + speed = ++speedkey[RIGHT_ARROW]; |
---|
| 10900 | + if (speed > 20) |
---|
| 10901 | + speed = 20; |
---|
| 10902 | + GoRight(modifiers); |
---|
| 10903 | + keyon = true; |
---|
| 10904 | + } |
---|
| 10905 | + else |
---|
| 10906 | + speedkey[RIGHT_ARROW] = 0; |
---|
| 10907 | + |
---|
| 10908 | + if (Globals.WALK && capsLocked) |
---|
| 10909 | + { |
---|
| 10910 | + Walk(); |
---|
| 10911 | + keyon = true; |
---|
| 10912 | + } |
---|
| 10913 | + |
---|
| 10914 | + if (keyon) |
---|
| 10915 | + { |
---|
| 10916 | + repaint(); |
---|
| 10917 | + } |
---|
| 10918 | + |
---|
| 10919 | + //pingthread.mute = false; |
---|
| 10920 | + } |
---|
| 10921 | + |
---|
10800 | 10922 | currentlydrawing = true; |
---|
10801 | 10923 | } |
---|
10802 | 10924 | |
---|
.. | .. |
---|
11321 | 11443 | |
---|
11322 | 11444 | gl.glMatrixMode(GL.GL_MODELVIEW); |
---|
11323 | 11445 | |
---|
11324 | | -gl.glEnable(gl.GL_POLYGON_SMOOTH); |
---|
11325 | | -gl.glHint(gl.GL_POLYGON_SMOOTH_HINT, gl.GL_NICEST); |
---|
11326 | | -gl.glEnable(gl.GL_MULTISAMPLE); |
---|
| 11446 | +//gl.glEnable(gl.GL_POLYGON_SMOOTH); |
---|
| 11447 | +//gl.glHint(gl.GL_POLYGON_SMOOTH_HINT, gl.GL_NICEST); |
---|
| 11448 | +//gl.glEnable(gl.GL_MULTISAMPLE); |
---|
11327 | 11449 | } else |
---|
11328 | 11450 | { |
---|
11329 | 11451 | //gl.glDisable(GL.GL_TEXTURE_2D); |
---|
.. | .. |
---|
11384 | 11506 | //gl.glOrtho(-BOOST, BOOST, -BOOST, BOOST, 0.001, 1000); |
---|
11385 | 11507 | } else |
---|
11386 | 11508 | { |
---|
11387 | | - glu.gluPerspective(cam.shaper_fovy / ratio, ratio, cam.shaper_zNear * cam.Distance(), cam.shaper_zFar * cam.Distance()); |
---|
| 11509 | + boolean vr = capsLocked && !lightMode; |
---|
| 11510 | + |
---|
| 11511 | + glu.gluPerspective(cam.shaper_fovy / ratio * (vr ? 1.2 : 1), |
---|
| 11512 | + ratio, cam.shaper_zNear * cam.Distance(), cam.shaper_zFar * cam.Distance()); |
---|
11388 | 11513 | } |
---|
11389 | 11514 | } |
---|
11390 | 11515 | |
---|
.. | .. |
---|
11740 | 11865 | repaint(); |
---|
11741 | 11866 | } |
---|
11742 | 11867 | |
---|
11743 | | - if (Globals.isLIVE() && DrawMode() == DEFAULT) // may 2013 |
---|
| 11868 | + if (Globals.isLIVE() && DrawMode() == DEFAULT || pingthread.live) // may 2013 |
---|
| 11869 | + { |
---|
| 11870 | + renderCamera.computeTransform(); |
---|
11744 | 11871 | repaint(); |
---|
| 11872 | + } |
---|
11745 | 11873 | |
---|
11746 | 11874 | displaydone = true; |
---|
11747 | 11875 | } |
---|
.. | .. |
---|
11816 | 11944 | //GL gl = getGL(); |
---|
11817 | 11945 | if ((TRACK || SHADOWTRACK) || zoomonce) |
---|
11818 | 11946 | { |
---|
| 11947 | + if (TRACK) |
---|
| 11948 | + { |
---|
| 11949 | + if (object.selection != null && |
---|
| 11950 | + object.selection.size() > 0 && |
---|
| 11951 | + object.selection.elementAt(0) != null && |
---|
| 11952 | + !(object.selection.elementAt(0) instanceof Camera) && |
---|
| 11953 | + !(object.selection.elementAt(0) instanceof ScriptNode)) |
---|
| 11954 | + { |
---|
| 11955 | + trackedobject = object.selection.elementAt(0); |
---|
| 11956 | + //repaint(); |
---|
| 11957 | + } |
---|
| 11958 | + else |
---|
| 11959 | + trackedobject = null; |
---|
| 11960 | + } |
---|
11819 | 11961 | if ((TRACK || SHADOWTRACK) && trackedobject != null && DrawMode() == SHADOW) // && !lightMode) |
---|
11820 | 11962 | object.GetWindow().ScreenFit(trackedobject, SHADOWTRACK && !TRACK); |
---|
11821 | | - pingthread.StepToTarget(true); // true); |
---|
| 11963 | + pingthread.StepToTarget(); // true); |
---|
11822 | 11964 | // zoomonce = false; |
---|
11823 | 11965 | } |
---|
11824 | 11966 | |
---|
.. | .. |
---|
12501 | 12643 | String programmin = |
---|
12502 | 12644 | // Min shader |
---|
12503 | 12645 | "!!ARBfp1.0\n" + |
---|
12504 | | - "PARAM zero123 = { 0.0, 1.0, 2, 1.25 };" + |
---|
12505 | | - "PARAM pow2 = { 0.5, 0.25, 0.125, 0.0 };" + |
---|
| 12646 | + "PARAM zero12t = { 0.0, 1.0, 2, 1.25 };" + |
---|
| 12647 | + "PARAM pow_2 = { 0.5, 0.25, 0.125, 0.0 };" + |
---|
| 12648 | + "PARAM pow2 = { 2, 4, 8, 0.0 };" + |
---|
12506 | 12649 | "PARAM one = { 1.0, 1.0, 1.0, 1.0 };" + |
---|
12507 | 12650 | "PARAM eps = { 0.001, 0.001, 0.001, 1.0 };" + |
---|
12508 | 12651 | "PARAM infinity = { 100000000, 100000000, 100000000, 1.0 };" + |
---|
.. | .. |
---|
12517 | 12660 | "TEMP eye;" + |
---|
12518 | 12661 | "TEMP pos;" + |
---|
12519 | 12662 | |
---|
12520 | | - "MAD normal, fragment.color, zero123.z, -zero123.y;" + |
---|
| 12663 | + "MAD normal, fragment.color, zero12t.z, -zero12t.y;" + |
---|
12521 | 12664 | Normalize("normal") + |
---|
12522 | 12665 | "MOV light, state.light[0].position;" + |
---|
12523 | 12666 | "DP3 ndotl.x, light, normal;" + |
---|
| 12667 | + "MAX ndotl.x, ndotl.x, zero12t.x;" + |
---|
12524 | 12668 | |
---|
12525 | 12669 | // shadow |
---|
12526 | 12670 | "MOV pos, fragment.texcoord[1];" + |
---|
.. | .. |
---|
12536 | 12680 | "MUL ndotl.x, ndotl.x, ndotl.z;" + // Shadow |
---|
12537 | 12681 | |
---|
12538 | 12682 | // Backlit |
---|
12539 | | - "MOV pos.w, zero123.y;" + |
---|
| 12683 | + "MOV pos.w, zero12t.y;" + // one |
---|
12540 | 12684 | "DP4 eye.x, pos, light2cam0;" + |
---|
12541 | 12685 | "DP4 eye.y, pos, light2cam1;" + |
---|
12542 | 12686 | "DP4 eye.z, pos, light2cam2;" + |
---|
.. | .. |
---|
12544 | 12688 | |
---|
12545 | 12689 | "DP3 ndotl.y, -eye, normal;" + |
---|
12546 | 12690 | //"MUL ndotl.y, ndotl.y, pow2.x;" + |
---|
12547 | | - "POW ndotl.y, ndotl.y, pow2.z;" + // backlit |
---|
12548 | | - "SUB ndotl.y, zero123.y, ndotl.y;" + |
---|
| 12691 | + "POW ndotl.y, ndotl.y, pow2.x;" + // backlit |
---|
| 12692 | + "SUB ndotl.y, zero12t.y, ndotl.y;" + // 1 - y |
---|
| 12693 | + //"POW ndotl.y, ndotl.y, pow2.z;" + // backlit |
---|
12549 | 12694 | //"SUB ndotl.y, zero123.y, ndotl.y;" + |
---|
12550 | 12695 | //"MUL ndotl.y, ndotl.y, pow2.z;" + |
---|
| 12696 | + "ADD ndotl.y, ndotl.y, one.x;" + |
---|
| 12697 | + "MUL ndotl.y, ndotl.y, pow_2.x;" + |
---|
12551 | 12698 | |
---|
12552 | 12699 | //"MAX ndotl.x, ndotl.x, ndotl.y;" + // Ambient |
---|
12553 | 12700 | //"MAX ndotl.x, ndotl.x, pow2.y;" + // Ambient |
---|
12554 | 12701 | |
---|
12555 | 12702 | // Pigment |
---|
12556 | 12703 | "TEX temp, fragment.texcoord[0], texture[0], 2D;" + |
---|
12557 | | - "LRP temp, zero123.w, temp, one;" + // texture proportion |
---|
12558 | | - "MUL temp, temp, ndotl.x;" + |
---|
12559 | | - |
---|
12560 | | - "MUL temp, temp, zero123.z;" + |
---|
| 12704 | + "LRP temp, zero12t.w, temp, one;" + // texture proportion |
---|
| 12705 | + "MUL temp, temp, zero12t.w;" + // Times x |
---|
12561 | 12706 | |
---|
12562 | 12707 | //"MUL temp, temp, ndotl.y;" + |
---|
| 12708 | + "MAD ndotl.x, pow_2.xxxx, ndotl.yyyy, ndotl.x;" + |
---|
12563 | 12709 | |
---|
12564 | | - "MOV temp.w, zero123.y;" + // reset alpha |
---|
| 12710 | + "MUL temp, temp, ndotl.x;" + // lambert |
---|
| 12711 | + |
---|
| 12712 | + "MOV temp.w, zero12t.y;" + // reset alpha |
---|
12565 | 12713 | "MOV result.color, temp;" + |
---|
12566 | 12714 | "END"; |
---|
12567 | 12715 | |
---|
.. | .. |
---|
12593 | 12741 | "PARAM params4 = program.env[4];" + // anisoV, cameralight, selfshadow, shadow |
---|
12594 | 12742 | "PARAM params5 = program.env[5];" + // texture, opacity, fakedepth, shadowbias |
---|
12595 | 12743 | "PARAM params6 = program.env[6];" + // bump, noise, borderfade, fog punchthrough |
---|
12596 | | - "PARAM params7 = program.env[7];" + // noise power, opacity power |
---|
| 12744 | + "PARAM params7 = program.env[7];" + // noise power, opacity power, parallax |
---|
12597 | 12745 | "PARAM options0 = program.env[63];" + // fog density, intensity, elevation |
---|
12598 | 12746 | "PARAM options1 = program.env[62];" + // fog rgb color |
---|
12599 | 12747 | "PARAM options2 = program.env[61];" + // image intensity, subsurface, lightsheen |
---|
.. | .. |
---|
12838 | 12986 | "POW texSamp.a, texSamp.a, params6.w;" + // fog punch through shortcut |
---|
12839 | 12987 | // mar 2013 ??? "KIL alpha.a;" + |
---|
12840 | 12988 | "MOV alpha, texSamp.aaaa;" + // y;" + |
---|
12841 | | - "KIL alpha.a;" + |
---|
| 12989 | + "KIL alpha.a;" + // not sure with parallax mapping |
---|
12842 | 12990 | /* |
---|
12843 | 12991 | "MUL temp.xy, temp, two;" + |
---|
12844 | 12992 | "TXB bump, temp, texture[0], 2D;" + |
---|
.. | .. |
---|
12924 | 13072 | "SUB bump0, bump0, half;" + |
---|
12925 | 13073 | "ADD bump, bump, bump0;" + |
---|
12926 | 13074 | |
---|
12927 | | - "MOV temp.x, texSamp.a;" + |
---|
12928 | | - "LRP texSamp, params5.x, texSamp, one;" + // texture proportion |
---|
12929 | | - //"LRP texSamp0, params5.x, texSamp0, one;" + |
---|
12930 | | - "MOV texSamp.a, temp.x;" + |
---|
12931 | | - |
---|
12932 | 13075 | // double-sided |
---|
12933 | 13076 | /**/ |
---|
12934 | 13077 | (doublesided?"DP3 temp.z, normal, eye;" + |
---|
.. | .. |
---|
12938 | 13081 | "ADD temp.x, temp.x, one.x;" + |
---|
12939 | 13082 | "MUL normal, normal, temp.xxxx;":"" |
---|
12940 | 13083 | ) + |
---|
12941 | | - /**/ |
---|
12942 | | -//// Normalize("normal") + |
---|
12943 | | -//// "MAX normal.z, eps.x, normal.z;" + |
---|
12944 | | -// Normalize("normal") + |
---|
12945 | | - "MOV normald, normal;" + |
---|
12946 | | - "MOV normals, normal;" + |
---|
| 13084 | + /**/ |
---|
| 13085 | + |
---|
| 13086 | + "MOV temp, fragment.texcoord[4];" + |
---|
12947 | 13087 | |
---|
12948 | 13088 | // UV base |
---|
12949 | 13089 | //"DP3 UP.x,state.matrix.modelview.row[0],Y;" + |
---|
12950 | 13090 | //"DP3 UP.y,state.matrix.modelview.row[1],Y;" + |
---|
12951 | 13091 | //"DP3 UP.z,state.matrix.modelview.row[2],Y;" + |
---|
12952 | | - "DP3 UP.x,state.matrix.texture[7].row[0],Y;" + |
---|
12953 | | - "DP3 UP.y,state.matrix.texture[7].row[1],Y;" + |
---|
12954 | | - "DP3 UP.z,state.matrix.texture[7].row[2],Y;" + |
---|
| 13092 | + "DP3 UP.x,state.matrix.texture[7].row[0],temp;" + |
---|
| 13093 | + "DP3 UP.y,state.matrix.texture[7].row[1],temp;" + |
---|
| 13094 | + "DP3 UP.z,state.matrix.texture[7].row[2],temp;" + |
---|
| 13095 | + Normalize("UP") + |
---|
| 13096 | + |
---|
12955 | 13097 | "XPD V, normal, UP;" + |
---|
12956 | 13098 | Normalize("V") + |
---|
12957 | 13099 | "XPD U, V, normal;" + |
---|
12958 | 13100 | Normalize("U") + |
---|
12959 | 13101 | |
---|
| 13102 | + "MOV temp, fragment.texcoord[0];" + |
---|
| 13103 | + |
---|
| 13104 | +// "MAD normal, -temp.x, U, normal;" + |
---|
| 13105 | +// "MAD normal, -temp.y, V, normal;" + |
---|
| 13106 | +// Normalize("normal") + |
---|
| 13107 | + |
---|
| 13108 | +//// "MAX normal.z, eps.x, normal.z;" + |
---|
| 13109 | +// Normalize("normal") + |
---|
| 13110 | + "MOV normald, normal;" + |
---|
| 13111 | + "MOV normals, normal;" + |
---|
| 13112 | + |
---|
12960 | 13113 | // parallax mapping |
---|
| 13114 | + |
---|
| 13115 | + "DP3 temp2.x, V, eye;" + |
---|
| 13116 | + "DP3 temp2.y, U, eye;" + |
---|
| 13117 | + "DP3 temp2.z, normal, eye;" + |
---|
| 13118 | + "RCP temp2.z, temp2.z;" + |
---|
| 13119 | + |
---|
| 13120 | + "DP3 temp2.w, texSamp, texSamp;" + // Height |
---|
| 13121 | + "RSQ temp2.w, temp2.w;" + |
---|
| 13122 | + "RCP temp2.w, temp2.w;" + |
---|
| 13123 | + |
---|
| 13124 | + "SUB temp2.w, temp2.w, half;" + |
---|
| 13125 | + // "SGE temp.x, temp2.w, eps.x;" + |
---|
| 13126 | + // "MUL temp2.w, temp2.w, temp.x;" + |
---|
| 13127 | + |
---|
| 13128 | + // "MOV texSamp, U;" + |
---|
| 13129 | + |
---|
| 13130 | + "MUL temp2.z, temp2.z, temp2.w;" + |
---|
| 13131 | + "MUL temp2.z, temp2.z, params7.z;" + // parallax |
---|
| 13132 | + |
---|
| 13133 | + "MUL temp2, temp2, temp2.z;" + |
---|
| 13134 | + |
---|
| 13135 | + "SUB temp, temp, temp2;" + |
---|
| 13136 | + |
---|
| 13137 | + "TEX temp, temp, texture[0], 2D;" + |
---|
| 13138 | + "POW temp.a, temp.a, params6.w;" + // punch through |
---|
| 13139 | + |
---|
| 13140 | + "ADD texSamp, temp, texSamp;" + |
---|
| 13141 | + "MUL texSamp.xyz, half, texSamp;" + |
---|
| 13142 | + |
---|
| 13143 | + "MOV alpha, texSamp.aaaa;" + |
---|
| 13144 | + |
---|
| 13145 | +// parallax mapping |
---|
| 13146 | + |
---|
| 13147 | + "MOV temp.x, texSamp.a;" + |
---|
| 13148 | + "LRP texSamp, params5.x, texSamp, one;" + // texture proportion |
---|
| 13149 | + //"LRP texSamp0, params5.x, texSamp0, one;" + |
---|
| 13150 | + "MOV texSamp.a, temp.x;" + |
---|
12961 | 13151 | |
---|
12962 | 13152 | //"MOV temp, fragment.texcoord[0];" + |
---|
12963 | 13153 | // |
---|
.. | .. |
---|
13739 | 13929 | /*static*/ float[] modelParams4 = new float[]{0, 0, 0, 0}; // anisoV, cameralight, selfshadow, shadow |
---|
13740 | 13930 | /*static*/ float[] modelParams5 = new float[]{0, 0, 0, 0}; // texture, opacity, fakedepth, shadowbias |
---|
13741 | 13931 | /*static*/ float[] modelParams6 = new float[]{0, 0, 0, 0}; // bump, noise, borderfade, fog punchthrough |
---|
13742 | | - /*static*/ float[] modelParams7 = new float[]{0, 0, 0, 0}; // noise power, opacity power |
---|
| 13932 | + /*static*/ float[] modelParams7 = new float[]{0, 0, 0, 0}; // noise power, opacity power, parallax |
---|
13743 | 13933 | |
---|
13744 | 13934 | //Object3D.cVector2[] vector2buffer; |
---|
13745 | 13935 | |
---|
.. | .. |
---|
13906 | 14096 | "PARAM p[4] = { state.matrix.projection }; # modelview projection matrix\n" + |
---|
13907 | 14097 | "PARAM zero = { 0.0, 0.0, 0.0, 1.0 };" + |
---|
13908 | 14098 | "PARAM half = { 0.5, 0.5, 0.5, 1.0 };" + |
---|
13909 | | - "PARAM one = { 1.0, 1.0, 1.0, 0.0 };" + |
---|
| 14099 | + "PARAM one = { 1.0, 1.0, 1.0, 1.0 };" + |
---|
13910 | 14100 | "PARAM two = { 2.0, 2.0, 2.0, 1.0 };" + |
---|
13911 | 14101 | "PARAM third = { 0.33333333333, 0.33333333333, 0.33333333333, 1.0 };" + |
---|
13912 | 14102 | //"PARAM v256 = { 256.0, 256.0, 256.0, 1.0 };" + |
---|
.. | .. |
---|
13967 | 14157 | "DP4 temp.x,state.matrix.texture[0].inverse.row[0],vertex.texcoord;" + |
---|
13968 | 14158 | "DP4 temp.y,state.matrix.texture[0].inverse.row[1],vertex.texcoord;" + |
---|
13969 | 14159 | "DP4 temp.z,state.matrix.texture[0].inverse.row[2],vertex.texcoord;" + |
---|
13970 | | - //"MOV result.texcoord, vertex.texcoord;" + |
---|
| 14160 | + //"MOV result.texcoord, vertex.fogcoord;" + |
---|
13971 | 14161 | "MOV result.texcoord, temp;" + |
---|
13972 | 14162 | // border fade |
---|
13973 | 14163 | "MOV result.texcoord[3], vertex.texcoord;" + |
---|
.. | .. |
---|
14014 | 14204 | |
---|
14015 | 14205 | //"ADD temp.z, temp.z, one;" + |
---|
14016 | 14206 | |
---|
14017 | | - "MOV result.color, temp;" |
---|
| 14207 | + "MOV result.texcoord[4], vertex.attrib[4];" + // U dir |
---|
| 14208 | + |
---|
| 14209 | + "MOV result.color, temp;" // Normal |
---|
14018 | 14210 | : "MOV result.color, vertex.color;") + |
---|
14019 | 14211 | ((mode & VP_PROJECTION) != 0 ? "MOV result.color, zero;" |
---|
14020 | 14212 | : "") + |
---|
.. | .. |
---|
14149 | 14341 | public void mouseClicked(MouseEvent e) |
---|
14150 | 14342 | { |
---|
14151 | 14343 | System.out.println("mouseClicked: " + e); |
---|
| 14344 | + System.exit(0); |
---|
14152 | 14345 | } |
---|
14153 | 14346 | |
---|
14154 | 14347 | public void mousePressed(MouseEvent e) |
---|
14155 | 14348 | { |
---|
| 14349 | + RigidBody.justclicked = true; |
---|
| 14350 | + System.out.println("justclicked: " + e); |
---|
14156 | 14351 | //System.out.println("mousePressed: " + e); |
---|
14157 | 14352 | clickStart(e.getX(), e.getY(), e.getModifiers(), e.getModifiersEx()); |
---|
14158 | 14353 | } |
---|
.. | .. |
---|
14187 | 14382 | return; |
---|
14188 | 14383 | } |
---|
14189 | 14384 | |
---|
14190 | | - boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK); |
---|
| 14385 | + //boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK); |
---|
| 14386 | + |
---|
| 14387 | + boolean vr = capsLocked && !lightMode; |
---|
14191 | 14388 | |
---|
14192 | 14389 | // TIMER |
---|
14193 | | - if (ZOOMBOXMODE && !wheeltimer.isRunning() && e.getModifiersEx() == 0 && !capsLocked) // VR |
---|
| 14390 | + if (ZOOMBOXMODE && !wheeltimer.isRunning() && e.getModifiersEx() == 0 && !vr) // VR |
---|
14194 | 14391 | { |
---|
14195 | 14392 | keepboxmode = BOXMODE; |
---|
14196 | 14393 | keepsupport = SUPPORT; |
---|
.. | .. |
---|
14231 | 14428 | //} |
---|
14232 | 14429 | |
---|
14233 | 14430 | SetMouseMode(e.getModifiers(), WHEEL | e.getModifiersEx()); |
---|
14234 | | - drag(anchorX, anchorY + e.getUnitsToScroll()*8, 0, 0); |
---|
| 14431 | + drag(anchorX, anchorY + e.getUnitsToScroll()*8, e.getModifiers(), e.getModifiersEx()); |
---|
14235 | 14432 | anchorX = ax; |
---|
14236 | 14433 | anchorY = ay; |
---|
14237 | 14434 | prevX = px; |
---|
.. | .. |
---|
14326 | 14523 | // fev 2014??? |
---|
14327 | 14524 | if ((TRACK || SHADOWTRACK) && trackedobject != null) // && DrawMode() == SHADOW) // && !lightMode) |
---|
14328 | 14525 | object.GetWindow().ScreenFit(trackedobject, SHADOWTRACK && !TRACK); |
---|
14329 | | - pingthread.StepToTarget(true); // true); |
---|
| 14526 | + pingthread.StepToTarget(); // true); |
---|
14330 | 14527 | } |
---|
| 14528 | + |
---|
14331 | 14529 | // if (!LIVE) |
---|
14332 | 14530 | super.repaint(); |
---|
14333 | 14531 | } |
---|
.. | .. |
---|
14422 | 14620 | |
---|
14423 | 14621 | //if (drawing) |
---|
14424 | 14622 | //return; |
---|
14425 | | - if ((e.getModifiersEx() & CTRL) != 0 |
---|
14426 | | - || (e.getModifiersEx() & COMMAND) != 0) // || IsFrozen()) |
---|
| 14623 | + if ((e.getModifiersEx() & CTRL) != 0 || |
---|
| 14624 | + (e.getModifiersEx() & COMMAND) != 0) // || IsFrozen()) |
---|
14427 | 14625 | { |
---|
14428 | 14626 | //System.out.println("mouseDragged: " + e); |
---|
14429 | 14627 | clickEnd(e.getX(), e.getY(), e.getModifiersEx()); |
---|
.. | .. |
---|
14447 | 14645 | return targetLookAt; |
---|
14448 | 14646 | } |
---|
14449 | 14647 | |
---|
| 14648 | + javax.vecmath.Point3d eye = new javax.vecmath.Point3d(); |
---|
| 14649 | + javax.vecmath.Point3d eye2 = new javax.vecmath.Point3d(); |
---|
| 14650 | + javax.vecmath.Vector3d dir = new javax.vecmath.Vector3d(); |
---|
| 14651 | + |
---|
| 14652 | + |
---|
14450 | 14653 | class PingThread extends Thread |
---|
14451 | 14654 | { |
---|
14452 | 14655 | boolean jump; |
---|
| 14656 | + boolean live; |
---|
| 14657 | + |
---|
| 14658 | + boolean mute; |
---|
14453 | 14659 | |
---|
14454 | 14660 | // void JumpToTarget() |
---|
14455 | 14661 | // { |
---|
.. | .. |
---|
14465 | 14671 | // only one thread!? synchronized |
---|
14466 | 14672 | void StepToTarget(boolean jump) |
---|
14467 | 14673 | { |
---|
| 14674 | + RigidBody.pos.x = 0; |
---|
| 14675 | + RigidBody.pos.y = 0; |
---|
| 14676 | + RigidBody.pos.z = 0; |
---|
| 14677 | + if (RigidBody.justclicked) |
---|
| 14678 | + { |
---|
| 14679 | + RigidBody.pos.x = (float)manipCamera.lookAt.x; |
---|
| 14680 | + RigidBody.pos.y = (float)manipCamera.lookAt.y; |
---|
| 14681 | + RigidBody.pos.z = (float)manipCamera.lookAt.z; |
---|
| 14682 | + RigidBody.wind.set(RigidBody.pos); |
---|
| 14683 | + RigidBody.wind.x -= (float)manipCamera.location.x; |
---|
| 14684 | + RigidBody.wind.y -= (float)manipCamera.location.y; |
---|
| 14685 | + RigidBody.wind.z -= (float)manipCamera.location.z; |
---|
| 14686 | + RigidBody.wind.normalize(); |
---|
| 14687 | + } |
---|
| 14688 | + |
---|
| 14689 | + if (mute) |
---|
| 14690 | + return; |
---|
| 14691 | + |
---|
| 14692 | + if (capsLocked && manipCamera.viewCode == 0) |
---|
| 14693 | + { |
---|
| 14694 | + eye.x = manipCamera.location.x; |
---|
| 14695 | + eye.y = manipCamera.location.y + 0.25; |
---|
| 14696 | + eye.z = manipCamera.location.z; |
---|
| 14697 | + |
---|
| 14698 | + dir.y = -1; |
---|
| 14699 | + |
---|
| 14700 | + Ray ray = new Ray(eye, dir); |
---|
| 14701 | + |
---|
| 14702 | + IntersectResult res = new IntersectResult(); |
---|
| 14703 | + res.t = Double.POSITIVE_INFINITY; |
---|
| 14704 | + |
---|
| 14705 | + tmp.set(targetLookAt); |
---|
| 14706 | + tmp.sub(manipCamera.location); |
---|
| 14707 | + |
---|
| 14708 | + double dist = tmp.length(); |
---|
| 14709 | + |
---|
| 14710 | + tmp.normalize(); |
---|
| 14711 | + |
---|
| 14712 | + eye2.x = manipCamera.location.x + tmp.x * 0.25; |
---|
| 14713 | + eye2.y = manipCamera.location.y + 0.25; |
---|
| 14714 | + eye2.z = manipCamera.location.z + tmp.z * 0.25; |
---|
| 14715 | + |
---|
| 14716 | + Ray ray2 = new Ray(eye2, dir); |
---|
| 14717 | + |
---|
| 14718 | + IntersectResult res2 = new IntersectResult(); |
---|
| 14719 | + res2.t = Double.POSITIVE_INFINITY; |
---|
| 14720 | + |
---|
| 14721 | + if (object.intersect(ray, res) && object.intersect(ray2, res2) && Math.abs(res.t - res2.t) < 0.25) |
---|
| 14722 | + { |
---|
| 14723 | + //tmp.set(manipCamera.location); |
---|
| 14724 | + |
---|
| 14725 | + manipCamera.location.x = ray.eyePoint.x + ray.viewDirection.x * res.t; |
---|
| 14726 | + manipCamera.location.y = ray.eyePoint.y + ray.viewDirection.y * res.t + 0.5; |
---|
| 14727 | + manipCamera.location.z = ray.eyePoint.z + ray.viewDirection.z * res.t; |
---|
| 14728 | + |
---|
| 14729 | + //tmp.sub(manipCamera.location); |
---|
| 14730 | + |
---|
| 14731 | + targetLookAt.x = ray2.eyePoint.x + ray2.viewDirection.x * res2.t; |
---|
| 14732 | + targetLookAt.y = ray2.eyePoint.y + ray2.viewDirection.y * res2.t + 0.5; |
---|
| 14733 | + targetLookAt.z = ray2.eyePoint.z + ray2.viewDirection.z * res2.t; |
---|
| 14734 | + |
---|
| 14735 | + targetLookAt.sub(manipCamera.location); |
---|
| 14736 | + targetLookAt.normalize(); |
---|
| 14737 | + targetLookAt.mul(dist); |
---|
| 14738 | + targetLookAt.add(manipCamera.location); |
---|
| 14739 | + |
---|
| 14740 | + //if (tmp.dot(tmp) > 0.000001) |
---|
| 14741 | + // System.out.println("INTERSECTION " + manipCamera.location); |
---|
| 14742 | + |
---|
| 14743 | + manipCamera.lookAt.set(targetLookAt); |
---|
| 14744 | + |
---|
| 14745 | + tmp.x = res.n.x; |
---|
| 14746 | + tmp.y = res.n.y; |
---|
| 14747 | + tmp.z = res.n.z; |
---|
| 14748 | + tmp.x += res2.n.x; |
---|
| 14749 | + tmp.y += res2.n.y; |
---|
| 14750 | + tmp.z += res2.n.z; |
---|
| 14751 | + tmp.normalize(); |
---|
| 14752 | + manipCamera.UP.set(tmp); |
---|
| 14753 | + } |
---|
| 14754 | + } |
---|
| 14755 | + |
---|
14468 | 14756 | tmp.set(targetLookAt); |
---|
14469 | 14757 | tmp.sub(manipCamera.lookAt); // june 2014 |
---|
14470 | 14758 | |
---|
.. | .. |
---|
14502 | 14790 | |
---|
14503 | 14791 | if (tmp.dot(tmp) > 1) // may 2014. far away: jump to target |
---|
14504 | 14792 | { |
---|
14505 | | - jump = true; // step = 1; |
---|
| 14793 | + // sep 2019 jump = true; // step = 1; |
---|
14506 | 14794 | } |
---|
14507 | 14795 | |
---|
14508 | 14796 | if (OEILONCE && OEIL) |
---|
.. | .. |
---|
14537 | 14825 | if (tmp.dot(tmp) < 0.00001) |
---|
14538 | 14826 | { |
---|
14539 | 14827 | zoomonce = false; |
---|
| 14828 | + live = false; |
---|
14540 | 14829 | } |
---|
| 14830 | + else |
---|
| 14831 | + live = true; |
---|
14541 | 14832 | |
---|
14542 | 14833 | tmp.mul(step > step2 ? step : step2); |
---|
14543 | 14834 | } |
---|
.. | .. |
---|
14564 | 14855 | { |
---|
14565 | 14856 | if (LOOKAT) |
---|
14566 | 14857 | manipCamera.lookAt.add(tmp); |
---|
14567 | | - if (OEIL) |
---|
| 14858 | + if (OEIL && !capsLocked) |
---|
14568 | 14859 | manipCamera.location.add(tmp); |
---|
14569 | 14860 | |
---|
14570 | 14861 | { |
---|
.. | .. |
---|
14579 | 14870 | lightCamera.computeTransform(); |
---|
14580 | 14871 | } |
---|
14581 | 14872 | } |
---|
14582 | | - manipCamera.computeTransform(); |
---|
| 14873 | + if (tmp.x != 0 || tmp.y != 0 || tmp.z != 0) |
---|
| 14874 | + { |
---|
| 14875 | + manipCamera.computeTransform(); |
---|
| 14876 | + } |
---|
14583 | 14877 | } |
---|
14584 | 14878 | // ?????? mouseDown = true; |
---|
14585 | 14879 | //System.out.println("---------------- ---------- Paint " + tmp.length2()); |
---|
.. | .. |
---|
14672 | 14966 | } |
---|
14673 | 14967 | } |
---|
14674 | 14968 | } |
---|
| 14969 | + |
---|
14675 | 14970 | PingThread pingthread = new PingThread(); |
---|
14676 | | - int delta = 5; |
---|
14677 | | - int speed = 5; |
---|
| 14971 | + int delta = 1; |
---|
| 14972 | + int speed = 1; |
---|
| 14973 | + int walk = 8; |
---|
14678 | 14974 | boolean autorepeat = false; |
---|
14679 | 14975 | |
---|
| 14976 | + void Walk() |
---|
| 14977 | + { |
---|
| 14978 | + manipCamera.BackForth(0, walk, 1000); |
---|
| 14979 | + |
---|
| 14980 | + targetLookAt.set(manipCamera.lookAt); |
---|
| 14981 | + } |
---|
| 14982 | + |
---|
| 14983 | + void ViewAngle(float dy) |
---|
| 14984 | + { |
---|
| 14985 | + double factor = Math.exp(-dy/300.0); // (1 + dy/100); |
---|
| 14986 | + |
---|
| 14987 | + if (manipCamera.shaper_fovy * factor > 1 && |
---|
| 14988 | + manipCamera.shaper_fovy * factor < 150) |
---|
| 14989 | + { |
---|
| 14990 | + manipCamera.shaper_fovy *= factor; |
---|
| 14991 | + //System.out.println("fovy = " + shaper_fovy); |
---|
| 14992 | + } |
---|
| 14993 | + } |
---|
| 14994 | + |
---|
14680 | 14995 | void GoDown(int mod) |
---|
14681 | 14996 | { |
---|
14682 | 14997 | MODIFIERS |= COMMAND; |
---|
.. | .. |
---|
14684 | 14999 | /**/ |
---|
14685 | 15000 | if((mod&SHIFT) == SHIFT) |
---|
14686 | 15001 | { |
---|
| 15002 | +// if (isVR) |
---|
| 15003 | +// manipCamera.RotateInterest(0, speed); |
---|
| 15004 | +// else |
---|
14687 | 15005 | if (isVR) |
---|
14688 | | - manipCamera.RotateInterest(0, -speed); |
---|
| 15006 | + ViewAngle(-speed*delta); |
---|
| 15007 | + else |
---|
| 15008 | + manipCamera.Translate(0, -speed*delta, getWidth()); |
---|
| 15009 | + } |
---|
| 15010 | + else |
---|
| 15011 | + { |
---|
| 15012 | + if (isVR) |
---|
| 15013 | + manipCamera.BackForth(0, -speed*delta, isVR?1000:0); // getWidth()); |
---|
14689 | 15014 | else |
---|
14690 | 15015 | manipCamera.RotatePosition(0, -speed); |
---|
14691 | 15016 | } |
---|
14692 | | - else |
---|
14693 | | - manipCamera.BackForth(0, -speed*delta, isVR?1000:0); // getWidth()); |
---|
| 15017 | + |
---|
14694 | 15018 | /**/ |
---|
14695 | | - if ((mod & SHIFT) == SHIFT) |
---|
14696 | | - { |
---|
14697 | | - mouseMode = mouseMode; // VR?? |
---|
14698 | | - } else |
---|
14699 | | - { |
---|
14700 | | - mouseMode |= BACKFORTH; |
---|
14701 | | - } |
---|
| 15019 | +// if ((mod & SHIFT) == SHIFT) |
---|
| 15020 | +// { |
---|
| 15021 | +// mouseMode = mouseMode; // VR?? |
---|
| 15022 | +// } else |
---|
| 15023 | +// { |
---|
| 15024 | +// mouseMode |= BACKFORTH; |
---|
| 15025 | +// } |
---|
14702 | 15026 | |
---|
14703 | 15027 | targetLookAt.set(manipCamera.lookAt); |
---|
14704 | 15028 | |
---|
.. | .. |
---|
14708 | 15032 | |
---|
14709 | 15033 | void GoUp(int mod) |
---|
14710 | 15034 | { |
---|
| 15035 | + RigidBody.justclicked = true; |
---|
| 15036 | + |
---|
14711 | 15037 | MODIFIERS |= COMMAND; |
---|
14712 | 15038 | /**/ |
---|
14713 | 15039 | boolean isVR = (mouseMode&VR)!=0; |
---|
14714 | 15040 | |
---|
14715 | 15041 | if((mod&SHIFT) == SHIFT) |
---|
14716 | 15042 | { |
---|
| 15043 | +// if (isVR) |
---|
| 15044 | +// manipCamera.RotateInterest(0, -speed); |
---|
| 15045 | +// else |
---|
14717 | 15046 | if (isVR) |
---|
14718 | | - manipCamera.RotateInterest(0, speed); |
---|
| 15047 | + ViewAngle(speed*delta); |
---|
| 15048 | + else |
---|
| 15049 | + manipCamera.Translate(0, speed*delta, getWidth()); |
---|
| 15050 | + } |
---|
| 15051 | + else |
---|
| 15052 | + { |
---|
| 15053 | + if (isVR) |
---|
| 15054 | + manipCamera.BackForth(0, speed*delta, isVR?1000:0); // getWidth()); |
---|
14719 | 15055 | else |
---|
14720 | 15056 | manipCamera.RotatePosition(0, speed); |
---|
14721 | 15057 | } |
---|
14722 | | - else |
---|
14723 | | - manipCamera.BackForth(0, speed*delta, isVR?1000:0); // getWidth()); |
---|
| 15058 | + |
---|
14724 | 15059 | /**/ |
---|
14725 | | - if ((mod & SHIFT) == SHIFT) |
---|
14726 | | - { |
---|
14727 | | - mouseMode = mouseMode; |
---|
14728 | | - } else |
---|
14729 | | - { |
---|
14730 | | - mouseMode |= BACKFORTH; |
---|
14731 | | - } |
---|
| 15060 | +// if ((mod & SHIFT) == SHIFT) |
---|
| 15061 | +// { |
---|
| 15062 | +// mouseMode = mouseMode; |
---|
| 15063 | +// } else |
---|
| 15064 | +// { |
---|
| 15065 | +// mouseMode |= BACKFORTH; |
---|
| 15066 | +// } |
---|
14732 | 15067 | |
---|
14733 | 15068 | targetLookAt.set(manipCamera.lookAt); |
---|
14734 | 15069 | |
---|
.. | .. |
---|
14741 | 15076 | MODIFIERS |= COMMAND; |
---|
14742 | 15077 | /**/ |
---|
14743 | 15078 | if((mod&SHIFT) == SHIFT) |
---|
14744 | | - manipCamera.Translate(speed*delta, 0, getWidth()); |
---|
| 15079 | + manipCamera.Translate(speed, 0, getWidth()); |
---|
14745 | 15080 | else |
---|
14746 | 15081 | { |
---|
14747 | 15082 | if ((mouseMode&VR)!=0) |
---|
14748 | | - manipCamera.RotateInterest(-speed, 0); |
---|
| 15083 | + manipCamera.RotateInterest(-speed*manipCamera.shaper_fovy/90, 0); |
---|
14749 | 15084 | else |
---|
14750 | | - manipCamera.RotatePosition(speed, 0); |
---|
| 15085 | + manipCamera.RotatePosition(speed*manipCamera.shaper_fovy/90, 0); |
---|
14751 | 15086 | } |
---|
| 15087 | + |
---|
14752 | 15088 | /**/ |
---|
14753 | | - if ((mod & SHIFT) == SHIFT) |
---|
14754 | | - { |
---|
14755 | | - mouseMode = mouseMode; |
---|
14756 | | - } else |
---|
14757 | | - { |
---|
14758 | | - mouseMode |= ROTATE; |
---|
14759 | | - } // TRANSLATE; |
---|
| 15089 | +// if ((mod & SHIFT) == SHIFT) |
---|
| 15090 | +// { |
---|
| 15091 | +// mouseMode = mouseMode; |
---|
| 15092 | +// } else |
---|
| 15093 | +// { |
---|
| 15094 | +// mouseMode |= ROTATE; |
---|
| 15095 | +// } // TRANSLATE; |
---|
14760 | 15096 | |
---|
| 15097 | + //System.err.println("lookAt = " + manipCamera.lookAt); |
---|
| 15098 | + //System.err.println("location = " + manipCamera.location); |
---|
| 15099 | + |
---|
14761 | 15100 | targetLookAt.set(manipCamera.lookAt); |
---|
14762 | 15101 | |
---|
14763 | 15102 | prevX = X = anchorX - 10; // (int)(10*renderCamera.Distance()); |
---|
.. | .. |
---|
14769 | 15108 | MODIFIERS |= COMMAND; |
---|
14770 | 15109 | /**/ |
---|
14771 | 15110 | if((mod&SHIFT) == SHIFT) |
---|
14772 | | - manipCamera.Translate(-speed*delta, 0, getWidth()); |
---|
| 15111 | + manipCamera.Translate(-speed, 0, getWidth()); |
---|
14773 | 15112 | else |
---|
14774 | 15113 | { |
---|
14775 | 15114 | if ((mouseMode&VR)!=0) |
---|
14776 | | - manipCamera.RotateInterest(speed, 0); |
---|
| 15115 | + manipCamera.RotateInterest(speed*manipCamera.shaper_fovy/90, 0); |
---|
14777 | 15116 | else |
---|
14778 | | - manipCamera.RotatePosition(-speed, 0); |
---|
| 15117 | + manipCamera.RotatePosition(-speed*manipCamera.shaper_fovy/90, 0); |
---|
14779 | 15118 | } |
---|
14780 | 15119 | |
---|
14781 | 15120 | /**/ |
---|
14782 | | - if ((mod & SHIFT) == SHIFT) |
---|
14783 | | - { |
---|
14784 | | - mouseMode = mouseMode; |
---|
14785 | | - } else |
---|
14786 | | - { |
---|
14787 | | - mouseMode |= ROTATE; |
---|
14788 | | - } // TRANSLATE; |
---|
| 15121 | +// if ((mod & SHIFT) == SHIFT) |
---|
| 15122 | +// { |
---|
| 15123 | +// mouseMode = mouseMode; |
---|
| 15124 | +// } else |
---|
| 15125 | +// { |
---|
| 15126 | +// mouseMode |= ROTATE; |
---|
| 15127 | +// } // TRANSLATE; |
---|
14789 | 15128 | |
---|
14790 | 15129 | targetLookAt.set(manipCamera.lookAt); |
---|
14791 | 15130 | |
---|
.. | .. |
---|
14922 | 15261 | if ((mouseMode & ZOOM) != 0) |
---|
14923 | 15262 | { |
---|
14924 | 15263 | //if ((mouseMode & BACKFORTH) != 0) |
---|
| 15264 | + if ((modifiersex & SHIFT) == SHIFT) |
---|
| 15265 | + { |
---|
| 15266 | + ViewAngle(dy); |
---|
| 15267 | + } |
---|
| 15268 | + else |
---|
14925 | 15269 | if ((mouseMode & VR) != 0) |
---|
14926 | 15270 | manipCamera.BackForth(dx, dy, getWidth()); |
---|
14927 | 15271 | else |
---|
.. | .. |
---|
14992 | 15336 | |
---|
14993 | 15337 | public void mouseMoved(MouseEvent e) |
---|
14994 | 15338 | { |
---|
| 15339 | +//object.editWindow.frame. |
---|
| 15340 | + setCursor(Cursor.getDefaultCursor()); |
---|
| 15341 | + |
---|
14995 | 15342 | //System.out.println("mouseMoved: " + e); |
---|
14996 | 15343 | if (isRenderer) |
---|
14997 | 15344 | return; |
---|
.. | .. |
---|
15176 | 15523 | mouseMode |= ZOOM; |
---|
15177 | 15524 | } |
---|
15178 | 15525 | |
---|
15179 | | - boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK); |
---|
15180 | | - if (capsLocked) // || (modifiers & META) == META) |
---|
| 15526 | + //boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK); |
---|
| 15527 | + boolean vr = capsLocked && !lightMode; |
---|
| 15528 | + |
---|
| 15529 | + if (vr) // || (modifiers & META) == META) |
---|
15181 | 15530 | { |
---|
15182 | 15531 | mouseMode |= VR; // BACKFORTH; |
---|
15183 | 15532 | } |
---|
.. | .. |
---|
15189 | 15538 | { |
---|
15190 | 15539 | mouseMode |= SELECT; |
---|
15191 | 15540 | } |
---|
15192 | | - if ((modifiersex & SHIFT) == SHIFT || forcetranslate || (modifiers & MouseEvent.BUTTON3_MASK) != 0) |
---|
| 15541 | + if (//(modifiersex & SHIFT) == SHIFT || |
---|
| 15542 | + forcetranslate || (modifiers & MouseEvent.BUTTON3_MASK) != 0) |
---|
15193 | 15543 | { |
---|
15194 | 15544 | mouseMode &= ~VR; |
---|
15195 | 15545 | mouseMode |= TRANSLATE; |
---|
.. | .. |
---|
15233 | 15583 | float SATPOW = 1; // 2; // 0.5f; |
---|
15234 | 15584 | float BRIPOW = 1; // 0.5f; // 0.5f; |
---|
15235 | 15585 | |
---|
| 15586 | +static BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB); |
---|
| 15587 | + |
---|
| 15588 | +// Create a new blank cursor. |
---|
| 15589 | +static Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor( |
---|
| 15590 | + cursorImg, new Point(0, 0), "blank cursor"); |
---|
| 15591 | + |
---|
15236 | 15592 | public void keyPressed(int key) |
---|
15237 | 15593 | { |
---|
| 15594 | +// Set the blank cursor to the JFrame. |
---|
| 15595 | +//object.editWindow.frame. |
---|
| 15596 | + setCursor(blankCursor); |
---|
| 15597 | + |
---|
15238 | 15598 | if (key >= '0' && key <= '5') |
---|
15239 | 15599 | clampbit = (key-'0'); |
---|
15240 | 15600 | |
---|
.. | .. |
---|
15393 | 15753 | RevertCamera(); |
---|
15394 | 15754 | repaint(); |
---|
15395 | 15755 | break; |
---|
15396 | | - case 'l': |
---|
15397 | | - //case 'L': |
---|
| 15756 | + //case 'l': |
---|
| 15757 | + case 'L': |
---|
15398 | 15758 | if (lightMode) |
---|
15399 | 15759 | { |
---|
15400 | 15760 | lightMode = false; |
---|
.. | .. |
---|
15424 | 15784 | break; |
---|
15425 | 15785 | case 'm': |
---|
15426 | 15786 | { |
---|
15427 | | - PrintMemory(); |
---|
| 15787 | + //PrintMemory(); |
---|
| 15788 | + ToggleImageFlip(); |
---|
15428 | 15789 | break; |
---|
15429 | 15790 | } |
---|
15430 | 15791 | case 'M': |
---|
.. | .. |
---|
15451 | 15812 | repaint(); |
---|
15452 | 15813 | break; |
---|
15453 | 15814 | case 'O': |
---|
15454 | | - Globals.drawMode = OCCLUSION; // WARNING |
---|
15455 | | - repaint(); |
---|
15456 | | - break; |
---|
| 15815 | + // Too dangerous. Use menu. Globals.drawMode = OCCLUSION; // WARNING |
---|
| 15816 | + //repaint(); |
---|
| 15817 | + //break; |
---|
15457 | 15818 | case 'o': |
---|
15458 | 15819 | OCCLUSION_CULLING ^= true; |
---|
15459 | 15820 | System.out.println("OCCLUSION CULLING = " + OCCLUSION_CULLING); |
---|
.. | .. |
---|
15545 | 15906 | // kompactbit = 6; |
---|
15546 | 15907 | // break; |
---|
15547 | 15908 | case ' ': |
---|
| 15909 | + capsLocked ^= true; |
---|
| 15910 | + repaint(); |
---|
| 15911 | + break; |
---|
| 15912 | + case 'l': |
---|
15548 | 15913 | lightMode ^= true; |
---|
| 15914 | + if (lightMode) |
---|
| 15915 | + { |
---|
| 15916 | + keepshadow = Globals.RENDERSHADOW; |
---|
| 15917 | + Globals.RENDERSHADOW = false; |
---|
| 15918 | + } |
---|
| 15919 | + else |
---|
| 15920 | + { |
---|
| 15921 | + Globals.RENDERSHADOW = keepshadow; |
---|
| 15922 | + } |
---|
| 15923 | + |
---|
15549 | 15924 | Globals.lighttouched = true; |
---|
15550 | 15925 | manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera; |
---|
15551 | 15926 | targetLookAt.set(manipCamera.lookAt); |
---|
.. | .. |
---|
15553 | 15928 | break; |
---|
15554 | 15929 | //case '`' : |
---|
15555 | 15930 | case ESC: |
---|
| 15931 | + if (FULLSCREEN) |
---|
| 15932 | + object.editWindow.ToggleFullScreen(); |
---|
| 15933 | + break; |
---|
| 15934 | + case 'p': |
---|
15556 | 15935 | RENDERPROGRAM += 1; |
---|
15557 | 15936 | RENDERPROGRAM %= 3; |
---|
15558 | 15937 | |
---|
.. | .. |
---|
15591 | 15970 | case ENTER: |
---|
15592 | 15971 | // object.editWindow.ScreenFit(); // Edit(); |
---|
15593 | 15972 | ToggleLive(); |
---|
| 15973 | + if (capsLocked) |
---|
| 15974 | + { |
---|
| 15975 | + Globals.WALK ^= true; |
---|
| 15976 | + } |
---|
15594 | 15977 | break; |
---|
15595 | 15978 | case DELETE: |
---|
15596 | 15979 | ClearSelection(); |
---|
.. | .. |
---|
15627 | 16010 | object.GetWindow().refreshContents(true); |
---|
15628 | 16011 | break; |
---|
15629 | 16012 | case '{': |
---|
15630 | | - manipCamera.shaper_fovy /= 1.1; |
---|
| 16013 | + double factor = 1.1; |
---|
| 16014 | + if (manipCamera.shaper_fovy / factor > 0.1) |
---|
| 16015 | + manipCamera.shaper_fovy /= factor; |
---|
15631 | 16016 | System.out.println("FOV = " + manipCamera.shaper_fovy); |
---|
15632 | 16017 | repaint(); |
---|
15633 | 16018 | break; |
---|
15634 | 16019 | case '}': |
---|
15635 | | - manipCamera.shaper_fovy *= 1.1; |
---|
| 16020 | + factor = 1.1; |
---|
| 16021 | + if (manipCamera.shaper_fovy * factor < 150) |
---|
| 16022 | + manipCamera.shaper_fovy *= factor; |
---|
15636 | 16023 | System.out.println("FOV = " + manipCamera.shaper_fovy); |
---|
15637 | 16024 | repaint(); |
---|
15638 | 16025 | break; |
---|
15639 | 16026 | case '[': |
---|
15640 | | - manipCamera.shaper_fovy /= 1.01; |
---|
| 16027 | + factor = 1.01; |
---|
| 16028 | + if (manipCamera.shaper_fovy / factor > 0.1) |
---|
| 16029 | + manipCamera.shaper_fovy /= factor; |
---|
15641 | 16030 | if (false) //manipCamera.hAspect == 0) |
---|
15642 | 16031 | { |
---|
15643 | 16032 | double x = Math.tan(manipCamera.shaper_fovy * Math.PI / 180 / 2); |
---|
.. | .. |
---|
15653 | 16042 | break; |
---|
15654 | 16043 | case ']': |
---|
15655 | 16044 | //manipCamera.shaper_fovy += (180 - manipCamera.shaper_fovy)*0.1; |
---|
15656 | | - manipCamera.shaper_fovy *= 1.01; |
---|
| 16045 | + factor = 1.01; |
---|
| 16046 | + if (manipCamera.shaper_fovy * factor < 150) |
---|
| 16047 | + manipCamera.shaper_fovy *= factor; |
---|
15657 | 16048 | if (false) //manipCamera.hAspect == 0) |
---|
15658 | 16049 | { |
---|
15659 | 16050 | double x = Math.tan(manipCamera.shaper_fovy * Math.PI / 180 / 2); |
---|
.. | .. |
---|
15691 | 16082 | } |
---|
15692 | 16083 | } |
---|
15693 | 16084 | |
---|
| 16085 | + boolean keys[] = new boolean[256]; |
---|
| 16086 | + int speedkey[] = new int[256]; |
---|
| 16087 | + int modifiers = 0; |
---|
| 16088 | + |
---|
15694 | 16089 | public void processKeyEvent(KeyEvent e) |
---|
15695 | 16090 | { |
---|
15696 | 16091 | switch (e.getID()) |
---|
15697 | 16092 | { |
---|
15698 | 16093 | case KeyEvent.KEY_PRESSED: |
---|
15699 | | - if (!autorepeat) |
---|
15700 | | - { |
---|
15701 | | - //System.out.println("processKeyEvent: " + KeyEvent.getKeyText(e.getKeyCode())); |
---|
15702 | | - keyPressed(e.getKeyChar(), e.getModifiersEx()); |
---|
15703 | | - } |
---|
15704 | | - if (manipCamera == lightCamera) |
---|
15705 | | - { |
---|
15706 | | - switch (e.getKeyCode()) |
---|
15707 | | - { |
---|
15708 | | - case DOWN_ARROW: |
---|
15709 | | - lightCamera.DECAL /= 2; |
---|
15710 | | - repaint(); |
---|
15711 | | - break; |
---|
15712 | | - case UP_ARROW: |
---|
15713 | | - lightCamera.DECAL *= 2; |
---|
15714 | | - repaint(); |
---|
15715 | | - break; |
---|
15716 | | - case LEFT_ARROW: |
---|
15717 | | - lightCamera.SCALE /= 2; |
---|
15718 | | - repaint(); |
---|
15719 | | - break; |
---|
15720 | | - case RIGHT_ARROW: |
---|
15721 | | - lightCamera.SCALE *= 2; |
---|
15722 | | - repaint(); |
---|
15723 | | - break; |
---|
15724 | | - default: |
---|
15725 | | - break; |
---|
15726 | | - } |
---|
15727 | | - |
---|
15728 | | - System.out.println("DECAL = " + lightCamera.DECAL + "; SCALE = " + lightCamera.SCALE); |
---|
15729 | | - } else |
---|
15730 | | - { |
---|
15731 | | - if (true) // !autorepeat) |
---|
15732 | | - { |
---|
15733 | | - boolean reset = true; |
---|
15734 | | - |
---|
15735 | | - switch (e.getKeyCode()) |
---|
15736 | | - { |
---|
15737 | | - case DOWN_ARROW: |
---|
15738 | | - GoDown(e.getModifiersEx()); |
---|
15739 | | - repaint(); |
---|
15740 | | - break; |
---|
15741 | | - case UP_ARROW: |
---|
15742 | | - GoUp(e.getModifiersEx()); |
---|
15743 | | - repaint(); |
---|
15744 | | - break; |
---|
15745 | | - case LEFT_ARROW: |
---|
15746 | | - GoLeft(e.getModifiersEx()); |
---|
15747 | | - repaint(); |
---|
15748 | | - break; |
---|
15749 | | - case RIGHT_ARROW: |
---|
15750 | | - GoRight(e.getModifiersEx()); |
---|
15751 | | - repaint(); |
---|
15752 | | - break; |
---|
15753 | | - default: |
---|
15754 | | - reset = false; |
---|
15755 | | - break; |
---|
15756 | | - } |
---|
15757 | | - |
---|
15758 | | - if (reset) |
---|
15759 | | - { |
---|
15760 | | - autorepeat = true; |
---|
15761 | | - |
---|
15762 | | - targetLookAt.set(manipCamera.lookAt); |
---|
15763 | | - } |
---|
15764 | | - } |
---|
15765 | | - } |
---|
| 16094 | + keys[e.getKeyCode()] = true; |
---|
| 16095 | + modifiers = e.getModifiersEx(); |
---|
| 16096 | + keyPressed(e.getKeyChar(), modifiers); |
---|
| 16097 | + //Globals.theRenderer.keyPressed(e.getKeyChar()); |
---|
| 16098 | + repaint(); |
---|
15766 | 16099 | break; |
---|
15767 | | - case KeyEvent.KEY_TYPED: |
---|
15768 | | - break; |
---|
| 16100 | +// if (!autorepeat) |
---|
| 16101 | +// { |
---|
| 16102 | +// //System.out.println("processKeyEvent: " + KeyEvent.getKeyText(e.getKeyCode())); |
---|
| 16103 | +// keyPressed(e.getKeyChar(), e.getModifiersEx()); |
---|
| 16104 | +// } |
---|
| 16105 | +// if (manipCamera == lightCamera) |
---|
| 16106 | +// { |
---|
| 16107 | +// switch (e.getKeyCode()) |
---|
| 16108 | +// { |
---|
| 16109 | +// case DOWN_ARROW: |
---|
| 16110 | +// lightCamera.DECAL /= 2; |
---|
| 16111 | +// repaint(); |
---|
| 16112 | +// break; |
---|
| 16113 | +// case UP_ARROW: |
---|
| 16114 | +// lightCamera.DECAL *= 2; |
---|
| 16115 | +// repaint(); |
---|
| 16116 | +// break; |
---|
| 16117 | +// case LEFT_ARROW: |
---|
| 16118 | +// lightCamera.SCALE /= 2; |
---|
| 16119 | +// repaint(); |
---|
| 16120 | +// break; |
---|
| 16121 | +// case RIGHT_ARROW: |
---|
| 16122 | +// lightCamera.SCALE *= 2; |
---|
| 16123 | +// repaint(); |
---|
| 16124 | +// break; |
---|
| 16125 | +// default: |
---|
| 16126 | +// break; |
---|
| 16127 | +// } |
---|
| 16128 | +// |
---|
| 16129 | +// System.out.println("DECAL = " + lightCamera.DECAL + "; SCALE = " + lightCamera.SCALE); |
---|
| 16130 | +// } else |
---|
| 16131 | +// { |
---|
| 16132 | +// if (true) // !autorepeat) |
---|
| 16133 | +// { |
---|
| 16134 | +// boolean reset = true; |
---|
| 16135 | +// |
---|
| 16136 | +// switch (e.getKeyCode()) |
---|
| 16137 | +// { |
---|
| 16138 | +// case DOWN_ARROW: |
---|
| 16139 | +// GoDown(e.getModifiersEx()); |
---|
| 16140 | +// repaint(); |
---|
| 16141 | +// break; |
---|
| 16142 | +// case UP_ARROW: |
---|
| 16143 | +// GoUp(e.getModifiersEx()); |
---|
| 16144 | +// repaint(); |
---|
| 16145 | +// break; |
---|
| 16146 | +// case LEFT_ARROW: |
---|
| 16147 | +// GoLeft(e.getModifiersEx()); |
---|
| 16148 | +// repaint(); |
---|
| 16149 | +// break; |
---|
| 16150 | +// case RIGHT_ARROW: |
---|
| 16151 | +// GoRight(e.getModifiersEx()); |
---|
| 16152 | +// repaint(); |
---|
| 16153 | +// break; |
---|
| 16154 | +// default: |
---|
| 16155 | +// reset = false; |
---|
| 16156 | +// break; |
---|
| 16157 | +// } |
---|
| 16158 | +// |
---|
| 16159 | +// if (reset) |
---|
| 16160 | +// { |
---|
| 16161 | +// autorepeat = true; |
---|
| 16162 | +// |
---|
| 16163 | +// targetLookAt.set(manipCamera.lookAt); |
---|
| 16164 | +// } |
---|
| 16165 | +// } |
---|
| 16166 | +// } |
---|
| 16167 | +// break; |
---|
| 16168 | +// case KeyEvent.KEY_TYPED: |
---|
| 16169 | +// break; |
---|
15769 | 16170 | case KeyEvent.KEY_RELEASED: |
---|
15770 | | - { |
---|
15771 | | - switch (e.getKeyCode()) |
---|
15772 | | - { |
---|
15773 | | - case DOWN_ARROW: |
---|
15774 | | - case UP_ARROW: |
---|
15775 | | - case LEFT_ARROW: |
---|
15776 | | - case RIGHT_ARROW: |
---|
15777 | | - MODIFIERS &= ~COMMAND; |
---|
15778 | | - autorepeat = false; |
---|
15779 | | - break; |
---|
15780 | | - default: |
---|
15781 | | - break; |
---|
15782 | | - } |
---|
| 16171 | + keys[e.getKeyCode()] = false; |
---|
| 16172 | + modifiers = e.getModifiersEx(); |
---|
15783 | 16173 | keyReleased(e.getKeyChar(), e.getModifiersEx()); |
---|
| 16174 | + repaint(); |
---|
15784 | 16175 | break; |
---|
15785 | | - } |
---|
| 16176 | +// { |
---|
| 16177 | +// switch (e.getKeyCode()) |
---|
| 16178 | +// { |
---|
| 16179 | +// case DOWN_ARROW: |
---|
| 16180 | +// case UP_ARROW: |
---|
| 16181 | +// case LEFT_ARROW: |
---|
| 16182 | +// case RIGHT_ARROW: |
---|
| 16183 | +// MODIFIERS &= ~COMMAND; |
---|
| 16184 | +// autorepeat = false; |
---|
| 16185 | +// break; |
---|
| 16186 | +// default: |
---|
| 16187 | +// break; |
---|
| 16188 | +// } |
---|
| 16189 | +// keyReleased(e.getKeyChar(), e.getModifiersEx()); |
---|
| 16190 | +// break; |
---|
| 16191 | +// } |
---|
15786 | 16192 | default: |
---|
15787 | 16193 | break; |
---|
15788 | 16194 | } |
---|
.. | .. |
---|
16358 | 16764 | |
---|
16359 | 16765 | public boolean mouseDrag(Event evt, int x, int y) |
---|
16360 | 16766 | { |
---|
16361 | | - //System.out.println("mouseDrag: " + evt); |
---|
| 16767 | + System.out.println("mouseDrag: " + evt); |
---|
| 16768 | + System.exit(0); |
---|
16362 | 16769 | /* |
---|
16363 | 16770 | drag = true; |
---|
16364 | 16771 | //System.out.println("Mouse DRAG"); |
---|
.. | .. |
---|
16477 | 16884 | public boolean mouseUp(Event evt, int x, int y) |
---|
16478 | 16885 | { |
---|
16479 | 16886 | System.out.println("mouseUp: " + evt); |
---|
| 16887 | + System.exit(0); |
---|
16480 | 16888 | /* |
---|
16481 | 16889 | locked = false; |
---|
16482 | 16890 | if (isRenderer) |
---|
.. | .. |
---|
16895 | 17303 | gl.glScalef(1.0f, -1.0f, 1.0f); |
---|
16896 | 17304 | } |
---|
16897 | 17305 | |
---|
16898 | | - gl.glNormal3f(0.0f, 0.0f, 1.0f); |
---|
| 17306 | + SetGLNormal(gl, 0.0f, 0.0f, 1.0f); |
---|
16899 | 17307 | |
---|
16900 | 17308 | float step = 2; // 0.1666f; //0.25f; |
---|
16901 | 17309 | float stepv = 2; // step * 1652 / 998; |
---|
.. | .. |
---|
17184 | 17592 | |
---|
17185 | 17593 | float depth = depths[y * TEX_SIZE + x]; |
---|
17186 | 17594 | |
---|
17187 | | - if (pointselection && mouseMode == SELECT && depth != 0 && depth != 1) |
---|
| 17595 | + if (pointselection && (mouseMode & SELECT) == SELECT && depth != 0 && depth != 1) |
---|
17188 | 17596 | { |
---|
17189 | 17597 | pointselection = false; |
---|
17190 | 17598 | |
---|
.. | .. |
---|
17848 | 18256 | static boolean DEBUG_SELECTION = false; |
---|
17849 | 18257 | boolean OCCLUSION_CULLING = false; //true; |
---|
17850 | 18258 | public boolean lightMode = false; |
---|
| 18259 | + |
---|
| 18260 | + private boolean keepshadow; |
---|
| 18261 | + |
---|
| 18262 | + static public boolean capsLocked = false; // VR |
---|
| 18263 | + |
---|
17851 | 18264 | static public int indexcount = 0; |
---|
17852 | 18265 | /*static*/ cColor vertexOcclusion = new cColor(); |
---|
17853 | 18266 | //private int selection_view = -1; |
---|