.. | .. |
---|
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; |
---|
.. | .. |
---|
168 | 169 | |
---|
169 | 170 | |
---|
170 | 171 | // OPTIONS |
---|
171 | | - boolean Skinshader = true; |
---|
| 172 | + boolean Skinshader = false; // true; |
---|
172 | 173 | boolean cameraLight = false; |
---|
173 | 174 | boolean UVdebug = 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(), |
---|
.. | .. |
---|
10690 | 10706 | static boolean init = false; |
---|
10691 | 10707 | |
---|
10692 | 10708 | double[][] matrix = LA.newMatrix(); |
---|
| 10709 | + |
---|
| 10710 | + // This is to refresh the UI of the material panel. |
---|
| 10711 | + ObjEditor patchMaterial; |
---|
10693 | 10712 | |
---|
10694 | 10713 | public void display(GLAutoDrawable drawable) |
---|
10695 | 10714 | { |
---|
| 10715 | + if (patchMaterial.patchMaterial) |
---|
| 10716 | + { |
---|
| 10717 | + patchMaterial.patchMaterial = false; |
---|
| 10718 | + patchMaterial.objectTabbedPane.setSelectedIndex(1); |
---|
| 10719 | + } |
---|
| 10720 | + |
---|
10696 | 10721 | if (Grafreed.savesound && Grafreed.hassound) |
---|
10697 | 10722 | { |
---|
10698 | 10723 | Grafreed.wav.save(); |
---|
.. | .. |
---|
10788 | 10813 | |
---|
10789 | 10814 | if (DrawMode() == DEFAULT) |
---|
10790 | 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 | + |
---|
10791 | 10922 | currentlydrawing = true; |
---|
10792 | 10923 | } |
---|
10793 | 10924 | |
---|
.. | .. |
---|
11088 | 11219 | { |
---|
11089 | 11220 | if (cubemaprgb == null) |
---|
11090 | 11221 | { |
---|
11091 | | - cubemaprgb = LoadSkybox("cubemaps/default-skyboxes/rgb" + "/", "jpg", false); |
---|
| 11222 | + cubemaprgb = LoadSkybox("cubemaps/default-skyboxes/rgb2" + "/", "jpg", false); |
---|
11092 | 11223 | } |
---|
11093 | 11224 | |
---|
11094 | 11225 | cubemap = cubemaprgb; |
---|
.. | .. |
---|
11312 | 11443 | |
---|
11313 | 11444 | gl.glMatrixMode(GL.GL_MODELVIEW); |
---|
11314 | 11445 | |
---|
11315 | | -gl.glEnable(gl.GL_POLYGON_SMOOTH); |
---|
11316 | | -gl.glHint(gl.GL_POLYGON_SMOOTH_HINT, gl.GL_NICEST); |
---|
11317 | | -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); |
---|
11318 | 11449 | } else |
---|
11319 | 11450 | { |
---|
11320 | 11451 | //gl.glDisable(GL.GL_TEXTURE_2D); |
---|
.. | .. |
---|
11375 | 11506 | //gl.glOrtho(-BOOST, BOOST, -BOOST, BOOST, 0.001, 1000); |
---|
11376 | 11507 | } else |
---|
11377 | 11508 | { |
---|
11378 | | - 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()); |
---|
11379 | 11513 | } |
---|
11380 | 11514 | } |
---|
11381 | 11515 | |
---|
.. | .. |
---|
11731 | 11865 | repaint(); |
---|
11732 | 11866 | } |
---|
11733 | 11867 | |
---|
11734 | | - if (Globals.isLIVE() && DrawMode() == DEFAULT) // may 2013 |
---|
| 11868 | + if (Globals.isLIVE() && DrawMode() == DEFAULT || pingthread.live) // may 2013 |
---|
| 11869 | + { |
---|
| 11870 | + renderCamera.computeTransform(); |
---|
11735 | 11871 | repaint(); |
---|
| 11872 | + } |
---|
11736 | 11873 | |
---|
11737 | 11874 | displaydone = true; |
---|
11738 | 11875 | } |
---|
.. | .. |
---|
11807 | 11944 | //GL gl = getGL(); |
---|
11808 | 11945 | if ((TRACK || SHADOWTRACK) || zoomonce) |
---|
11809 | 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 | + } |
---|
11810 | 11961 | if ((TRACK || SHADOWTRACK) && trackedobject != null && DrawMode() == SHADOW) // && !lightMode) |
---|
11811 | 11962 | object.GetWindow().ScreenFit(trackedobject, SHADOWTRACK && !TRACK); |
---|
11812 | | - pingthread.StepToTarget(true); // true); |
---|
| 11963 | + pingthread.StepToTarget(); // true); |
---|
11813 | 11964 | // zoomonce = false; |
---|
11814 | 11965 | } |
---|
11815 | 11966 | |
---|
.. | .. |
---|
12492 | 12643 | String programmin = |
---|
12493 | 12644 | // Min shader |
---|
12494 | 12645 | "!!ARBfp1.0\n" + |
---|
12495 | | - "PARAM zero123 = { 0.0, 1.0, 2, 1.25 };" + |
---|
12496 | | - "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 };" + |
---|
12497 | 12649 | "PARAM one = { 1.0, 1.0, 1.0, 1.0 };" + |
---|
12498 | 12650 | "PARAM eps = { 0.001, 0.001, 0.001, 1.0 };" + |
---|
12499 | 12651 | "PARAM infinity = { 100000000, 100000000, 100000000, 1.0 };" + |
---|
.. | .. |
---|
12508 | 12660 | "TEMP eye;" + |
---|
12509 | 12661 | "TEMP pos;" + |
---|
12510 | 12662 | |
---|
12511 | | - "MAD normal, fragment.color, zero123.z, -zero123.y;" + |
---|
| 12663 | + "MAD normal, fragment.color, zero12t.z, -zero12t.y;" + |
---|
12512 | 12664 | Normalize("normal") + |
---|
12513 | 12665 | "MOV light, state.light[0].position;" + |
---|
12514 | 12666 | "DP3 ndotl.x, light, normal;" + |
---|
| 12667 | + "MAX ndotl.x, ndotl.x, zero12t.x;" + |
---|
12515 | 12668 | |
---|
12516 | 12669 | // shadow |
---|
12517 | 12670 | "MOV pos, fragment.texcoord[1];" + |
---|
.. | .. |
---|
12527 | 12680 | "MUL ndotl.x, ndotl.x, ndotl.z;" + // Shadow |
---|
12528 | 12681 | |
---|
12529 | 12682 | // Backlit |
---|
12530 | | - "MOV pos.w, zero123.y;" + |
---|
| 12683 | + "MOV pos.w, zero12t.y;" + // one |
---|
12531 | 12684 | "DP4 eye.x, pos, light2cam0;" + |
---|
12532 | 12685 | "DP4 eye.y, pos, light2cam1;" + |
---|
12533 | 12686 | "DP4 eye.z, pos, light2cam2;" + |
---|
.. | .. |
---|
12535 | 12688 | |
---|
12536 | 12689 | "DP3 ndotl.y, -eye, normal;" + |
---|
12537 | 12690 | //"MUL ndotl.y, ndotl.y, pow2.x;" + |
---|
12538 | | - "POW ndotl.y, ndotl.y, pow2.z;" + // backlit |
---|
12539 | | - "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 |
---|
12540 | 12694 | //"SUB ndotl.y, zero123.y, ndotl.y;" + |
---|
12541 | 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;" + |
---|
12542 | 12698 | |
---|
12543 | 12699 | //"MAX ndotl.x, ndotl.x, ndotl.y;" + // Ambient |
---|
12544 | 12700 | //"MAX ndotl.x, ndotl.x, pow2.y;" + // Ambient |
---|
12545 | 12701 | |
---|
12546 | 12702 | // Pigment |
---|
12547 | 12703 | "TEX temp, fragment.texcoord[0], texture[0], 2D;" + |
---|
12548 | | - "LRP temp, zero123.w, temp, one;" + // texture proportion |
---|
12549 | | - "MUL temp, temp, ndotl.x;" + |
---|
12550 | | - |
---|
12551 | | - "MUL temp, temp, zero123.z;" + |
---|
| 12704 | + "LRP temp, zero12t.w, temp, one;" + // texture proportion |
---|
| 12705 | + "MUL temp, temp, zero12t.w;" + // Times x |
---|
12552 | 12706 | |
---|
12553 | 12707 | //"MUL temp, temp, ndotl.y;" + |
---|
| 12708 | + "MAD ndotl.x, pow_2.xxxx, ndotl.yyyy, ndotl.x;" + |
---|
12554 | 12709 | |
---|
12555 | | - "MOV temp.w, zero123.y;" + // reset alpha |
---|
| 12710 | + "MUL temp, temp, ndotl.x;" + // lambert |
---|
| 12711 | + |
---|
| 12712 | + "MOV temp.w, zero12t.y;" + // reset alpha |
---|
12556 | 12713 | "MOV result.color, temp;" + |
---|
12557 | 12714 | "END"; |
---|
12558 | 12715 | |
---|
.. | .. |
---|
12584 | 12741 | "PARAM params4 = program.env[4];" + // anisoV, cameralight, selfshadow, shadow |
---|
12585 | 12742 | "PARAM params5 = program.env[5];" + // texture, opacity, fakedepth, shadowbias |
---|
12586 | 12743 | "PARAM params6 = program.env[6];" + // bump, noise, borderfade, fog punchthrough |
---|
12587 | | - "PARAM params7 = program.env[7];" + // noise power, opacity power |
---|
| 12744 | + "PARAM params7 = program.env[7];" + // noise power, opacity power, parallax |
---|
12588 | 12745 | "PARAM options0 = program.env[63];" + // fog density, intensity, elevation |
---|
12589 | 12746 | "PARAM options1 = program.env[62];" + // fog rgb color |
---|
12590 | 12747 | "PARAM options2 = program.env[61];" + // image intensity, subsurface, lightsheen |
---|
.. | .. |
---|
12829 | 12986 | "POW texSamp.a, texSamp.a, params6.w;" + // fog punch through shortcut |
---|
12830 | 12987 | // mar 2013 ??? "KIL alpha.a;" + |
---|
12831 | 12988 | "MOV alpha, texSamp.aaaa;" + // y;" + |
---|
12832 | | - "KIL alpha.a;" + |
---|
| 12989 | + "KIL alpha.a;" + // not sure with parallax mapping |
---|
12833 | 12990 | /* |
---|
12834 | 12991 | "MUL temp.xy, temp, two;" + |
---|
12835 | 12992 | "TXB bump, temp, texture[0], 2D;" + |
---|
.. | .. |
---|
12915 | 13072 | "SUB bump0, bump0, half;" + |
---|
12916 | 13073 | "ADD bump, bump, bump0;" + |
---|
12917 | 13074 | |
---|
12918 | | - "MOV temp.x, texSamp.a;" + |
---|
12919 | | - "LRP texSamp, params5.x, texSamp, one;" + // texture proportion |
---|
12920 | | - //"LRP texSamp0, params5.x, texSamp0, one;" + |
---|
12921 | | - "MOV texSamp.a, temp.x;" + |
---|
12922 | | - |
---|
12923 | 13075 | // double-sided |
---|
12924 | 13076 | /**/ |
---|
12925 | 13077 | (doublesided?"DP3 temp.z, normal, eye;" + |
---|
.. | .. |
---|
12929 | 13081 | "ADD temp.x, temp.x, one.x;" + |
---|
12930 | 13082 | "MUL normal, normal, temp.xxxx;":"" |
---|
12931 | 13083 | ) + |
---|
12932 | | - /**/ |
---|
12933 | | -//// Normalize("normal") + |
---|
12934 | | -//// "MAX normal.z, eps.x, normal.z;" + |
---|
12935 | | -// Normalize("normal") + |
---|
12936 | | - "MOV normald, normal;" + |
---|
12937 | | - "MOV normals, normal;" + |
---|
| 13084 | + /**/ |
---|
| 13085 | + |
---|
| 13086 | + "MOV temp, fragment.texcoord[4];" + |
---|
12938 | 13087 | |
---|
12939 | 13088 | // UV base |
---|
12940 | 13089 | //"DP3 UP.x,state.matrix.modelview.row[0],Y;" + |
---|
12941 | 13090 | //"DP3 UP.y,state.matrix.modelview.row[1],Y;" + |
---|
12942 | 13091 | //"DP3 UP.z,state.matrix.modelview.row[2],Y;" + |
---|
12943 | | - "DP3 UP.x,state.matrix.texture[7].row[0],Y;" + |
---|
12944 | | - "DP3 UP.y,state.matrix.texture[7].row[1],Y;" + |
---|
12945 | | - "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 | + |
---|
12946 | 13097 | "XPD V, normal, UP;" + |
---|
12947 | 13098 | Normalize("V") + |
---|
12948 | 13099 | "XPD U, V, normal;" + |
---|
12949 | 13100 | Normalize("U") + |
---|
12950 | 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 | + |
---|
12951 | 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;" + |
---|
12952 | 13151 | |
---|
12953 | 13152 | //"MOV temp, fragment.texcoord[0];" + |
---|
12954 | 13153 | // |
---|
.. | .. |
---|
13419 | 13618 | program = programmin; |
---|
13420 | 13619 | } |
---|
13421 | 13620 | |
---|
13422 | | - System.out.print("Program #" + mode + "; instructions = " + program.split(";").length + "; length = " + program.length()); |
---|
13423 | | - System.out.println(" - " + (mode >> 3) + " lights; " + ((mode & 2) == 2 ? "anisoUV " : "") + ((mode & 4) == 4 ? "SoftShadow " : "")); |
---|
| 13621 | + if (Globals.DEBUG) |
---|
| 13622 | + { |
---|
| 13623 | + System.out.print("Program #" + mode + "; instructions = " + program.split(";").length + "; length = " + program.length()); |
---|
| 13624 | + System.out.println(" - " + (mode >> 3) + " lights; " + ((mode & 2) == 2 ? "anisoUV " : "") + ((mode & 4) == 4 ? "SoftShadow " : "")); |
---|
| 13625 | + } |
---|
| 13626 | + |
---|
13424 | 13627 | loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); |
---|
13425 | 13628 | |
---|
13426 | 13629 | //gl.glNewList(displayListID, GL.GL_COMPILE); |
---|
.. | .. |
---|
13467 | 13670 | "\n" + |
---|
13468 | 13671 | "END\n"; |
---|
13469 | 13672 | |
---|
13470 | | - System.out.println("Program shadow #" + 0 + "; length = " + program.length()); |
---|
| 13673 | + if (Globals.DEBUG) |
---|
| 13674 | + System.out.println("Program shadow #" + 0 + "; length = " + program.length()); |
---|
13471 | 13675 | loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, program); |
---|
13472 | 13676 | |
---|
13473 | 13677 | //gl.glNewList(displayListID, GL.GL_COMPILE); |
---|
.. | .. |
---|
13725 | 13929 | /*static*/ float[] modelParams4 = new float[]{0, 0, 0, 0}; // anisoV, cameralight, selfshadow, shadow |
---|
13726 | 13930 | /*static*/ float[] modelParams5 = new float[]{0, 0, 0, 0}; // texture, opacity, fakedepth, shadowbias |
---|
13727 | 13931 | /*static*/ float[] modelParams6 = new float[]{0, 0, 0, 0}; // bump, noise, borderfade, fog punchthrough |
---|
13728 | | - /*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 |
---|
13729 | 13933 | |
---|
13730 | 13934 | //Object3D.cVector2[] vector2buffer; |
---|
13731 | 13935 | |
---|
.. | .. |
---|
13892 | 14096 | "PARAM p[4] = { state.matrix.projection }; # modelview projection matrix\n" + |
---|
13893 | 14097 | "PARAM zero = { 0.0, 0.0, 0.0, 1.0 };" + |
---|
13894 | 14098 | "PARAM half = { 0.5, 0.5, 0.5, 1.0 };" + |
---|
13895 | | - "PARAM one = { 1.0, 1.0, 1.0, 0.0 };" + |
---|
| 14099 | + "PARAM one = { 1.0, 1.0, 1.0, 1.0 };" + |
---|
13896 | 14100 | "PARAM two = { 2.0, 2.0, 2.0, 1.0 };" + |
---|
13897 | 14101 | "PARAM third = { 0.33333333333, 0.33333333333, 0.33333333333, 1.0 };" + |
---|
13898 | 14102 | //"PARAM v256 = { 256.0, 256.0, 256.0, 1.0 };" + |
---|
.. | .. |
---|
13953 | 14157 | "DP4 temp.x,state.matrix.texture[0].inverse.row[0],vertex.texcoord;" + |
---|
13954 | 14158 | "DP4 temp.y,state.matrix.texture[0].inverse.row[1],vertex.texcoord;" + |
---|
13955 | 14159 | "DP4 temp.z,state.matrix.texture[0].inverse.row[2],vertex.texcoord;" + |
---|
13956 | | - //"MOV result.texcoord, vertex.texcoord;" + |
---|
| 14160 | + //"MOV result.texcoord, vertex.fogcoord;" + |
---|
13957 | 14161 | "MOV result.texcoord, temp;" + |
---|
13958 | 14162 | // border fade |
---|
13959 | 14163 | "MOV result.texcoord[3], vertex.texcoord;" + |
---|
.. | .. |
---|
14000 | 14204 | |
---|
14001 | 14205 | //"ADD temp.z, temp.z, one;" + |
---|
14002 | 14206 | |
---|
14003 | | - "MOV result.color, temp;" |
---|
| 14207 | + "MOV result.texcoord[4], vertex.attrib[4];" + // U dir |
---|
| 14208 | + |
---|
| 14209 | + "MOV result.color, temp;" // Normal |
---|
14004 | 14210 | : "MOV result.color, vertex.color;") + |
---|
14005 | 14211 | ((mode & VP_PROJECTION) != 0 ? "MOV result.color, zero;" |
---|
14006 | 14212 | : "") + |
---|
.. | .. |
---|
14135 | 14341 | public void mouseClicked(MouseEvent e) |
---|
14136 | 14342 | { |
---|
14137 | 14343 | System.out.println("mouseClicked: " + e); |
---|
| 14344 | + System.exit(0); |
---|
14138 | 14345 | } |
---|
14139 | 14346 | |
---|
14140 | 14347 | public void mousePressed(MouseEvent e) |
---|
14141 | 14348 | { |
---|
| 14349 | + RigidBody.justclicked = true; |
---|
| 14350 | + System.out.println("justclicked: " + e); |
---|
14142 | 14351 | //System.out.println("mousePressed: " + e); |
---|
14143 | 14352 | clickStart(e.getX(), e.getY(), e.getModifiers(), e.getModifiersEx()); |
---|
14144 | 14353 | } |
---|
.. | .. |
---|
14173 | 14382 | return; |
---|
14174 | 14383 | } |
---|
14175 | 14384 | |
---|
14176 | | - 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; |
---|
14177 | 14388 | |
---|
14178 | 14389 | // TIMER |
---|
14179 | | - if (ZOOMBOXMODE && !wheeltimer.isRunning() && e.getModifiersEx() == 0 && !capsLocked) // VR |
---|
| 14390 | + if (ZOOMBOXMODE && !wheeltimer.isRunning() && e.getModifiersEx() == 0 && !vr) // VR |
---|
14180 | 14391 | { |
---|
14181 | 14392 | keepboxmode = BOXMODE; |
---|
14182 | 14393 | keepsupport = SUPPORT; |
---|
.. | .. |
---|
14217 | 14428 | //} |
---|
14218 | 14429 | |
---|
14219 | 14430 | SetMouseMode(e.getModifiers(), WHEEL | e.getModifiersEx()); |
---|
14220 | | - drag(anchorX, anchorY + e.getUnitsToScroll()*8, 0, 0); |
---|
| 14431 | + drag(anchorX, anchorY + e.getUnitsToScroll()*8, e.getModifiers(), e.getModifiersEx()); |
---|
14221 | 14432 | anchorX = ax; |
---|
14222 | 14433 | anchorY = ay; |
---|
14223 | 14434 | prevX = px; |
---|
.. | .. |
---|
14312 | 14523 | // fev 2014??? |
---|
14313 | 14524 | if ((TRACK || SHADOWTRACK) && trackedobject != null) // && DrawMode() == SHADOW) // && !lightMode) |
---|
14314 | 14525 | object.GetWindow().ScreenFit(trackedobject, SHADOWTRACK && !TRACK); |
---|
14315 | | - pingthread.StepToTarget(true); // true); |
---|
| 14526 | + pingthread.StepToTarget(); // true); |
---|
14316 | 14527 | } |
---|
| 14528 | + |
---|
14317 | 14529 | // if (!LIVE) |
---|
14318 | 14530 | super.repaint(); |
---|
14319 | 14531 | } |
---|
.. | .. |
---|
14408 | 14620 | |
---|
14409 | 14621 | //if (drawing) |
---|
14410 | 14622 | //return; |
---|
14411 | | - if ((e.getModifiersEx() & CTRL) != 0 |
---|
14412 | | - || (e.getModifiersEx() & COMMAND) != 0) // || IsFrozen()) |
---|
| 14623 | + if ((e.getModifiersEx() & CTRL) != 0 || |
---|
| 14624 | + (e.getModifiersEx() & COMMAND) != 0) // || IsFrozen()) |
---|
14413 | 14625 | { |
---|
14414 | 14626 | //System.out.println("mouseDragged: " + e); |
---|
14415 | 14627 | clickEnd(e.getX(), e.getY(), e.getModifiersEx()); |
---|
.. | .. |
---|
14433 | 14645 | return targetLookAt; |
---|
14434 | 14646 | } |
---|
14435 | 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 | + |
---|
14436 | 14653 | class PingThread extends Thread |
---|
14437 | 14654 | { |
---|
14438 | 14655 | boolean jump; |
---|
| 14656 | + boolean live; |
---|
| 14657 | + |
---|
| 14658 | + boolean mute; |
---|
14439 | 14659 | |
---|
14440 | 14660 | // void JumpToTarget() |
---|
14441 | 14661 | // { |
---|
.. | .. |
---|
14451 | 14671 | // only one thread!? synchronized |
---|
14452 | 14672 | void StepToTarget(boolean jump) |
---|
14453 | 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 | + |
---|
14454 | 14756 | tmp.set(targetLookAt); |
---|
14455 | 14757 | tmp.sub(manipCamera.lookAt); // june 2014 |
---|
14456 | 14758 | |
---|
.. | .. |
---|
14488 | 14790 | |
---|
14489 | 14791 | if (tmp.dot(tmp) > 1) // may 2014. far away: jump to target |
---|
14490 | 14792 | { |
---|
14491 | | - jump = true; // step = 1; |
---|
| 14793 | + // sep 2019 jump = true; // step = 1; |
---|
14492 | 14794 | } |
---|
14493 | 14795 | |
---|
14494 | 14796 | if (OEILONCE && OEIL) |
---|
.. | .. |
---|
14523 | 14825 | if (tmp.dot(tmp) < 0.00001) |
---|
14524 | 14826 | { |
---|
14525 | 14827 | zoomonce = false; |
---|
| 14828 | + live = false; |
---|
14526 | 14829 | } |
---|
| 14830 | + else |
---|
| 14831 | + live = true; |
---|
14527 | 14832 | |
---|
14528 | 14833 | tmp.mul(step > step2 ? step : step2); |
---|
14529 | 14834 | } |
---|
.. | .. |
---|
14550 | 14855 | { |
---|
14551 | 14856 | if (LOOKAT) |
---|
14552 | 14857 | manipCamera.lookAt.add(tmp); |
---|
14553 | | - if (OEIL) |
---|
| 14858 | + if (OEIL && !capsLocked) |
---|
14554 | 14859 | manipCamera.location.add(tmp); |
---|
14555 | 14860 | |
---|
14556 | 14861 | { |
---|
.. | .. |
---|
14565 | 14870 | lightCamera.computeTransform(); |
---|
14566 | 14871 | } |
---|
14567 | 14872 | } |
---|
14568 | | - manipCamera.computeTransform(); |
---|
| 14873 | + if (tmp.x != 0 || tmp.y != 0 || tmp.z != 0) |
---|
| 14874 | + { |
---|
| 14875 | + manipCamera.computeTransform(); |
---|
| 14876 | + } |
---|
14569 | 14877 | } |
---|
14570 | 14878 | // ?????? mouseDown = true; |
---|
14571 | 14879 | //System.out.println("---------------- ---------- Paint " + tmp.length2()); |
---|
.. | .. |
---|
14658 | 14966 | } |
---|
14659 | 14967 | } |
---|
14660 | 14968 | } |
---|
| 14969 | + |
---|
14661 | 14970 | PingThread pingthread = new PingThread(); |
---|
14662 | | - int delta = 5; |
---|
14663 | | - int speed = 5; |
---|
| 14971 | + int delta = 1; |
---|
| 14972 | + int speed = 1; |
---|
| 14973 | + int walk = 8; |
---|
14664 | 14974 | boolean autorepeat = false; |
---|
14665 | 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 | + |
---|
14666 | 14995 | void GoDown(int mod) |
---|
14667 | 14996 | { |
---|
14668 | 14997 | MODIFIERS |= COMMAND; |
---|
| 14998 | + boolean isVR = (mouseMode&VR)!=0; |
---|
14669 | 14999 | /**/ |
---|
14670 | 15000 | if((mod&SHIFT) == SHIFT) |
---|
14671 | | - manipCamera.BackForth(0, -speed*delta, 0); // getWidth()); |
---|
14672 | | - else |
---|
14673 | | - manipCamera.RotatePosition(0, -speed); |
---|
14674 | | - /**/ |
---|
14675 | | - if ((mod & SHIFT) == SHIFT) |
---|
14676 | 15001 | { |
---|
14677 | | - mouseMode = mouseMode; // VR?? |
---|
14678 | | - } else |
---|
14679 | | - { |
---|
14680 | | - mouseMode |= BACKFORTH; |
---|
| 15002 | +// if (isVR) |
---|
| 15003 | +// manipCamera.RotateInterest(0, speed); |
---|
| 15004 | +// else |
---|
| 15005 | + if (isVR) |
---|
| 15006 | + ViewAngle(-speed*delta); |
---|
| 15007 | + else |
---|
| 15008 | + manipCamera.Translate(0, -speed*delta, getWidth()); |
---|
14681 | 15009 | } |
---|
| 15010 | + else |
---|
| 15011 | + { |
---|
| 15012 | + if (isVR) |
---|
| 15013 | + manipCamera.BackForth(0, -speed*delta, isVR?1000:0); // getWidth()); |
---|
| 15014 | + else |
---|
| 15015 | + manipCamera.RotatePosition(0, -speed); |
---|
| 15016 | + } |
---|
| 15017 | + |
---|
| 15018 | + /**/ |
---|
| 15019 | +// if ((mod & SHIFT) == SHIFT) |
---|
| 15020 | +// { |
---|
| 15021 | +// mouseMode = mouseMode; // VR?? |
---|
| 15022 | +// } else |
---|
| 15023 | +// { |
---|
| 15024 | +// mouseMode |= BACKFORTH; |
---|
| 15025 | +// } |
---|
14682 | 15026 | |
---|
| 15027 | + targetLookAt.set(manipCamera.lookAt); |
---|
| 15028 | + |
---|
14683 | 15029 | //prevX = X = anchorX; |
---|
14684 | 15030 | prevY = Y = anchorY - (int) (renderCamera.Distance()); |
---|
14685 | 15031 | } |
---|
14686 | 15032 | |
---|
14687 | 15033 | void GoUp(int mod) |
---|
14688 | 15034 | { |
---|
| 15035 | + RigidBody.justclicked = true; |
---|
| 15036 | + |
---|
14689 | 15037 | MODIFIERS |= COMMAND; |
---|
14690 | 15038 | /**/ |
---|
| 15039 | + boolean isVR = (mouseMode&VR)!=0; |
---|
| 15040 | + |
---|
14691 | 15041 | if((mod&SHIFT) == SHIFT) |
---|
14692 | | - manipCamera.BackForth(0, speed*delta, 0); // getWidth()); |
---|
14693 | | - else |
---|
14694 | | - manipCamera.RotatePosition(0, speed); |
---|
14695 | | - /**/ |
---|
14696 | | - if ((mod & SHIFT) == SHIFT) |
---|
14697 | 15042 | { |
---|
14698 | | - mouseMode = mouseMode; |
---|
14699 | | - } else |
---|
14700 | | - { |
---|
14701 | | - mouseMode |= BACKFORTH; |
---|
| 15043 | +// if (isVR) |
---|
| 15044 | +// manipCamera.RotateInterest(0, -speed); |
---|
| 15045 | +// else |
---|
| 15046 | + if (isVR) |
---|
| 15047 | + ViewAngle(speed*delta); |
---|
| 15048 | + else |
---|
| 15049 | + manipCamera.Translate(0, speed*delta, getWidth()); |
---|
14702 | 15050 | } |
---|
| 15051 | + else |
---|
| 15052 | + { |
---|
| 15053 | + if (isVR) |
---|
| 15054 | + manipCamera.BackForth(0, speed*delta, isVR?1000:0); // getWidth()); |
---|
| 15055 | + else |
---|
| 15056 | + manipCamera.RotatePosition(0, speed); |
---|
| 15057 | + } |
---|
| 15058 | + |
---|
| 15059 | + /**/ |
---|
| 15060 | +// if ((mod & SHIFT) == SHIFT) |
---|
| 15061 | +// { |
---|
| 15062 | +// mouseMode = mouseMode; |
---|
| 15063 | +// } else |
---|
| 15064 | +// { |
---|
| 15065 | +// mouseMode |= BACKFORTH; |
---|
| 15066 | +// } |
---|
14703 | 15067 | |
---|
| 15068 | + targetLookAt.set(manipCamera.lookAt); |
---|
| 15069 | + |
---|
14704 | 15070 | //prevX = X = anchorX; |
---|
14705 | 15071 | prevY = Y = anchorY + (int) (renderCamera.Distance()); |
---|
14706 | 15072 | } |
---|
.. | .. |
---|
14710 | 15076 | MODIFIERS |= COMMAND; |
---|
14711 | 15077 | /**/ |
---|
14712 | 15078 | if((mod&SHIFT) == SHIFT) |
---|
14713 | | - manipCamera.Translate(speed*delta, 0, getWidth()); |
---|
| 15079 | + manipCamera.Translate(speed, 0, getWidth()); |
---|
14714 | 15080 | else |
---|
14715 | | - manipCamera.RotatePosition(speed, 0); |
---|
| 15081 | + { |
---|
| 15082 | + if ((mouseMode&VR)!=0) |
---|
| 15083 | + manipCamera.RotateInterest(-speed*manipCamera.shaper_fovy/90, 0); |
---|
| 15084 | + else |
---|
| 15085 | + manipCamera.RotatePosition(speed*manipCamera.shaper_fovy/90, 0); |
---|
| 15086 | + } |
---|
| 15087 | + |
---|
14716 | 15088 | /**/ |
---|
14717 | | - if ((mod & SHIFT) == SHIFT) |
---|
14718 | | - { |
---|
14719 | | - mouseMode = mouseMode; |
---|
14720 | | - } else |
---|
14721 | | - { |
---|
14722 | | - mouseMode |= ROTATE; |
---|
14723 | | - } // TRANSLATE; |
---|
| 15089 | +// if ((mod & SHIFT) == SHIFT) |
---|
| 15090 | +// { |
---|
| 15091 | +// mouseMode = mouseMode; |
---|
| 15092 | +// } else |
---|
| 15093 | +// { |
---|
| 15094 | +// mouseMode |= ROTATE; |
---|
| 15095 | +// } // TRANSLATE; |
---|
14724 | 15096 | |
---|
| 15097 | + //System.err.println("lookAt = " + manipCamera.lookAt); |
---|
| 15098 | + //System.err.println("location = " + manipCamera.location); |
---|
| 15099 | + |
---|
| 15100 | + targetLookAt.set(manipCamera.lookAt); |
---|
| 15101 | + |
---|
14725 | 15102 | prevX = X = anchorX - 10; // (int)(10*renderCamera.Distance()); |
---|
14726 | 15103 | prevY = Y = anchorY; |
---|
14727 | 15104 | } |
---|
.. | .. |
---|
14731 | 15108 | MODIFIERS |= COMMAND; |
---|
14732 | 15109 | /**/ |
---|
14733 | 15110 | if((mod&SHIFT) == SHIFT) |
---|
14734 | | - manipCamera.Translate(-speed*delta, 0, getWidth()); |
---|
| 15111 | + manipCamera.Translate(-speed, 0, getWidth()); |
---|
14735 | 15112 | else |
---|
14736 | | - manipCamera.RotatePosition(-speed, 0); |
---|
| 15113 | + { |
---|
| 15114 | + if ((mouseMode&VR)!=0) |
---|
| 15115 | + manipCamera.RotateInterest(speed*manipCamera.shaper_fovy/90, 0); |
---|
| 15116 | + else |
---|
| 15117 | + manipCamera.RotatePosition(-speed*manipCamera.shaper_fovy/90, 0); |
---|
| 15118 | + } |
---|
| 15119 | + |
---|
14737 | 15120 | /**/ |
---|
14738 | | - if ((mod & SHIFT) == SHIFT) |
---|
14739 | | - { |
---|
14740 | | - mouseMode = mouseMode; |
---|
14741 | | - } else |
---|
14742 | | - { |
---|
14743 | | - mouseMode |= ROTATE; |
---|
14744 | | - } // TRANSLATE; |
---|
| 15121 | +// if ((mod & SHIFT) == SHIFT) |
---|
| 15122 | +// { |
---|
| 15123 | +// mouseMode = mouseMode; |
---|
| 15124 | +// } else |
---|
| 15125 | +// { |
---|
| 15126 | +// mouseMode |= ROTATE; |
---|
| 15127 | +// } // TRANSLATE; |
---|
14745 | 15128 | |
---|
| 15129 | + targetLookAt.set(manipCamera.lookAt); |
---|
| 15130 | + |
---|
14746 | 15131 | prevX = X = anchorX + 10; // (int)(10*renderCamera.Distance()); |
---|
14747 | 15132 | prevY = Y = anchorY; |
---|
14748 | 15133 | } |
---|
.. | .. |
---|
14876 | 15261 | if ((mouseMode & ZOOM) != 0) |
---|
14877 | 15262 | { |
---|
14878 | 15263 | //if ((mouseMode & BACKFORTH) != 0) |
---|
| 15264 | + if ((modifiersex & SHIFT) == SHIFT) |
---|
| 15265 | + { |
---|
| 15266 | + ViewAngle(dy); |
---|
| 15267 | + } |
---|
| 15268 | + else |
---|
14879 | 15269 | if ((mouseMode & VR) != 0) |
---|
14880 | 15270 | manipCamera.BackForth(dx, dy, getWidth()); |
---|
14881 | 15271 | else |
---|
.. | .. |
---|
14946 | 15336 | |
---|
14947 | 15337 | public void mouseMoved(MouseEvent e) |
---|
14948 | 15338 | { |
---|
| 15339 | +//object.editWindow.frame. |
---|
| 15340 | + setCursor(Cursor.getDefaultCursor()); |
---|
| 15341 | + |
---|
14949 | 15342 | //System.out.println("mouseMoved: " + e); |
---|
14950 | 15343 | if (isRenderer) |
---|
14951 | 15344 | return; |
---|
.. | .. |
---|
15130 | 15523 | mouseMode |= ZOOM; |
---|
15131 | 15524 | } |
---|
15132 | 15525 | |
---|
15133 | | - boolean capsLocked = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK); |
---|
15134 | | - 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) |
---|
15135 | 15530 | { |
---|
15136 | 15531 | mouseMode |= VR; // BACKFORTH; |
---|
15137 | 15532 | } |
---|
.. | .. |
---|
15143 | 15538 | { |
---|
15144 | 15539 | mouseMode |= SELECT; |
---|
15145 | 15540 | } |
---|
15146 | | - if ((modifiersex & SHIFT) == SHIFT || forcetranslate || (modifiers & MouseEvent.BUTTON3_MASK) != 0) |
---|
| 15541 | + if (//(modifiersex & SHIFT) == SHIFT || |
---|
| 15542 | + forcetranslate || (modifiers & MouseEvent.BUTTON3_MASK) != 0) |
---|
15147 | 15543 | { |
---|
15148 | 15544 | mouseMode &= ~VR; |
---|
15149 | 15545 | mouseMode |= TRANSLATE; |
---|
.. | .. |
---|
15187 | 15583 | float SATPOW = 1; // 2; // 0.5f; |
---|
15188 | 15584 | float BRIPOW = 1; // 0.5f; // 0.5f; |
---|
15189 | 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 | + |
---|
15190 | 15592 | public void keyPressed(int key) |
---|
15191 | 15593 | { |
---|
| 15594 | +// Set the blank cursor to the JFrame. |
---|
| 15595 | +//object.editWindow.frame. |
---|
| 15596 | + setCursor(blankCursor); |
---|
| 15597 | + |
---|
15192 | 15598 | if (key >= '0' && key <= '5') |
---|
15193 | 15599 | clampbit = (key-'0'); |
---|
15194 | 15600 | |
---|
.. | .. |
---|
15245 | 15651 | case 'K': |
---|
15246 | 15652 | KOMPACTTEXTURE ^= true; |
---|
15247 | 15653 | //textures.clear(); |
---|
15248 | | - break; |
---|
15249 | | - case 'P': // Texture Projection macros |
---|
| 15654 | + // break; |
---|
| 15655 | + //case 'P': // Texture Projection macros |
---|
15250 | 15656 | // SAVETEXTURE ^= true; |
---|
15251 | 15657 | macromode = true; |
---|
15252 | 15658 | Udebug = Vdebug = NORMALdebug = false; programInitialized = false; |
---|
.. | .. |
---|
15347 | 15753 | RevertCamera(); |
---|
15348 | 15754 | repaint(); |
---|
15349 | 15755 | break; |
---|
15350 | | - case 'l': |
---|
15351 | | - //case 'L': |
---|
| 15756 | + //case 'l': |
---|
| 15757 | + case 'L': |
---|
15352 | 15758 | if (lightMode) |
---|
15353 | 15759 | { |
---|
15354 | 15760 | lightMode = false; |
---|
.. | .. |
---|
15367 | 15773 | targetLookAt.set(manipCamera.lookAt); |
---|
15368 | 15774 | repaint(); |
---|
15369 | 15775 | break; |
---|
15370 | | - case 'p': |
---|
| 15776 | + case 'P': // p': |
---|
15371 | 15777 | // c'est quoi ca au juste? spherical ^= true; |
---|
15372 | 15778 | Skinshader ^= true; programInitialized = false; |
---|
15373 | 15779 | repaint(); |
---|
.. | .. |
---|
15378 | 15784 | break; |
---|
15379 | 15785 | case 'm': |
---|
15380 | 15786 | { |
---|
15381 | | - PrintMemory(); |
---|
| 15787 | + //PrintMemory(); |
---|
| 15788 | + ToggleImageFlip(); |
---|
15382 | 15789 | break; |
---|
15383 | 15790 | } |
---|
15384 | 15791 | case 'M': |
---|
.. | .. |
---|
15405 | 15812 | repaint(); |
---|
15406 | 15813 | break; |
---|
15407 | 15814 | case 'O': |
---|
15408 | | - Globals.drawMode = OCCLUSION; // WARNING |
---|
15409 | | - repaint(); |
---|
15410 | | - break; |
---|
| 15815 | + // Too dangerous. Use menu. Globals.drawMode = OCCLUSION; // WARNING |
---|
| 15816 | + //repaint(); |
---|
| 15817 | + //break; |
---|
15411 | 15818 | case 'o': |
---|
15412 | 15819 | OCCLUSION_CULLING ^= true; |
---|
15413 | 15820 | System.out.println("OCCLUSION CULLING = " + OCCLUSION_CULLING); |
---|
.. | .. |
---|
15499 | 15906 | // kompactbit = 6; |
---|
15500 | 15907 | // break; |
---|
15501 | 15908 | case ' ': |
---|
| 15909 | + capsLocked ^= true; |
---|
| 15910 | + repaint(); |
---|
| 15911 | + break; |
---|
| 15912 | + case 'l': |
---|
15502 | 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 | + |
---|
15503 | 15924 | Globals.lighttouched = true; |
---|
15504 | 15925 | manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera; |
---|
15505 | 15926 | targetLookAt.set(manipCamera.lookAt); |
---|
.. | .. |
---|
15507 | 15928 | break; |
---|
15508 | 15929 | //case '`' : |
---|
15509 | 15930 | case ESC: |
---|
| 15931 | + if (FULLSCREEN) |
---|
| 15932 | + object.editWindow.ToggleFullScreen(); |
---|
| 15933 | + break; |
---|
| 15934 | + case 'p': |
---|
15510 | 15935 | RENDERPROGRAM += 1; |
---|
15511 | 15936 | RENDERPROGRAM %= 3; |
---|
15512 | 15937 | |
---|
.. | .. |
---|
15545 | 15970 | case ENTER: |
---|
15546 | 15971 | // object.editWindow.ScreenFit(); // Edit(); |
---|
15547 | 15972 | ToggleLive(); |
---|
| 15973 | + if (capsLocked) |
---|
| 15974 | + { |
---|
| 15975 | + Globals.WALK ^= true; |
---|
| 15976 | + } |
---|
15548 | 15977 | break; |
---|
15549 | 15978 | case DELETE: |
---|
15550 | 15979 | ClearSelection(); |
---|
.. | .. |
---|
15581 | 16010 | object.GetWindow().refreshContents(true); |
---|
15582 | 16011 | break; |
---|
15583 | 16012 | case '{': |
---|
15584 | | - manipCamera.shaper_fovy /= 1.1; |
---|
| 16013 | + double factor = 1.1; |
---|
| 16014 | + if (manipCamera.shaper_fovy / factor > 0.1) |
---|
| 16015 | + manipCamera.shaper_fovy /= factor; |
---|
15585 | 16016 | System.out.println("FOV = " + manipCamera.shaper_fovy); |
---|
15586 | 16017 | repaint(); |
---|
15587 | 16018 | break; |
---|
15588 | 16019 | case '}': |
---|
15589 | | - manipCamera.shaper_fovy *= 1.1; |
---|
| 16020 | + factor = 1.1; |
---|
| 16021 | + if (manipCamera.shaper_fovy * factor < 150) |
---|
| 16022 | + manipCamera.shaper_fovy *= factor; |
---|
15590 | 16023 | System.out.println("FOV = " + manipCamera.shaper_fovy); |
---|
15591 | 16024 | repaint(); |
---|
15592 | 16025 | break; |
---|
15593 | 16026 | case '[': |
---|
15594 | | - manipCamera.shaper_fovy /= 1.01; |
---|
| 16027 | + factor = 1.01; |
---|
| 16028 | + if (manipCamera.shaper_fovy / factor > 0.1) |
---|
| 16029 | + manipCamera.shaper_fovy /= factor; |
---|
15595 | 16030 | if (false) //manipCamera.hAspect == 0) |
---|
15596 | 16031 | { |
---|
15597 | 16032 | double x = Math.tan(manipCamera.shaper_fovy * Math.PI / 180 / 2); |
---|
.. | .. |
---|
15607 | 16042 | break; |
---|
15608 | 16043 | case ']': |
---|
15609 | 16044 | //manipCamera.shaper_fovy += (180 - manipCamera.shaper_fovy)*0.1; |
---|
15610 | | - manipCamera.shaper_fovy *= 1.01; |
---|
| 16045 | + factor = 1.01; |
---|
| 16046 | + if (manipCamera.shaper_fovy * factor < 150) |
---|
| 16047 | + manipCamera.shaper_fovy *= factor; |
---|
15611 | 16048 | if (false) //manipCamera.hAspect == 0) |
---|
15612 | 16049 | { |
---|
15613 | 16050 | double x = Math.tan(manipCamera.shaper_fovy * Math.PI / 180 / 2); |
---|
.. | .. |
---|
15645 | 16082 | } |
---|
15646 | 16083 | } |
---|
15647 | 16084 | |
---|
| 16085 | + boolean keys[] = new boolean[256]; |
---|
| 16086 | + int speedkey[] = new int[256]; |
---|
| 16087 | + int modifiers = 0; |
---|
| 16088 | + |
---|
15648 | 16089 | public void processKeyEvent(KeyEvent e) |
---|
15649 | 16090 | { |
---|
15650 | 16091 | switch (e.getID()) |
---|
15651 | 16092 | { |
---|
15652 | 16093 | case KeyEvent.KEY_PRESSED: |
---|
15653 | | - if (!autorepeat) |
---|
15654 | | - { |
---|
15655 | | - //System.out.println("processKeyEvent: " + KeyEvent.getKeyText(e.getKeyCode())); |
---|
15656 | | - keyPressed(e.getKeyChar(), e.getModifiersEx()); |
---|
15657 | | - } |
---|
15658 | | - if (manipCamera == lightCamera) |
---|
15659 | | - { |
---|
15660 | | - switch (e.getKeyCode()) |
---|
15661 | | - { |
---|
15662 | | - case DOWN_ARROW: |
---|
15663 | | - lightCamera.DECAL /= 2; |
---|
15664 | | - repaint(); |
---|
15665 | | - break; |
---|
15666 | | - case UP_ARROW: |
---|
15667 | | - lightCamera.DECAL *= 2; |
---|
15668 | | - repaint(); |
---|
15669 | | - break; |
---|
15670 | | - case LEFT_ARROW: |
---|
15671 | | - lightCamera.SCALE /= 2; |
---|
15672 | | - repaint(); |
---|
15673 | | - break; |
---|
15674 | | - case RIGHT_ARROW: |
---|
15675 | | - lightCamera.SCALE *= 2; |
---|
15676 | | - repaint(); |
---|
15677 | | - break; |
---|
15678 | | - default: |
---|
15679 | | - break; |
---|
15680 | | - } |
---|
15681 | | - |
---|
15682 | | - System.out.println("DECAL = " + lightCamera.DECAL + "; SCALE = " + lightCamera.SCALE); |
---|
15683 | | - } else |
---|
15684 | | - { |
---|
15685 | | - if (true) // !autorepeat) |
---|
15686 | | - { |
---|
15687 | | - boolean reset = true; |
---|
15688 | | - |
---|
15689 | | - switch (e.getKeyCode()) |
---|
15690 | | - { |
---|
15691 | | - case DOWN_ARROW: |
---|
15692 | | - GoDown(e.getModifiersEx()); |
---|
15693 | | - repaint(); |
---|
15694 | | - break; |
---|
15695 | | - case UP_ARROW: |
---|
15696 | | - GoUp(e.getModifiersEx()); |
---|
15697 | | - repaint(); |
---|
15698 | | - break; |
---|
15699 | | - case LEFT_ARROW: |
---|
15700 | | - GoLeft(e.getModifiersEx()); |
---|
15701 | | - repaint(); |
---|
15702 | | - break; |
---|
15703 | | - case RIGHT_ARROW: |
---|
15704 | | - GoRight(e.getModifiersEx()); |
---|
15705 | | - repaint(); |
---|
15706 | | - break; |
---|
15707 | | - default: |
---|
15708 | | - reset = false; |
---|
15709 | | - break; |
---|
15710 | | - } |
---|
15711 | | - |
---|
15712 | | - if (reset) |
---|
15713 | | - { |
---|
15714 | | - autorepeat = true; |
---|
15715 | | - |
---|
15716 | | - targetLookAt.set(manipCamera.lookAt); |
---|
15717 | | - } |
---|
15718 | | - } |
---|
15719 | | - } |
---|
| 16094 | + keys[e.getKeyCode()] = true; |
---|
| 16095 | + modifiers = e.getModifiersEx(); |
---|
| 16096 | + keyPressed(e.getKeyChar(), modifiers); |
---|
| 16097 | + //Globals.theRenderer.keyPressed(e.getKeyChar()); |
---|
| 16098 | + repaint(); |
---|
15720 | 16099 | break; |
---|
15721 | | - case KeyEvent.KEY_TYPED: |
---|
15722 | | - 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; |
---|
15723 | 16170 | case KeyEvent.KEY_RELEASED: |
---|
15724 | | - { |
---|
15725 | | - switch (e.getKeyCode()) |
---|
15726 | | - { |
---|
15727 | | - case DOWN_ARROW: |
---|
15728 | | - case UP_ARROW: |
---|
15729 | | - case LEFT_ARROW: |
---|
15730 | | - case RIGHT_ARROW: |
---|
15731 | | - MODIFIERS &= ~COMMAND; |
---|
15732 | | - autorepeat = false; |
---|
15733 | | - break; |
---|
15734 | | - default: |
---|
15735 | | - break; |
---|
15736 | | - } |
---|
| 16171 | + keys[e.getKeyCode()] = false; |
---|
| 16172 | + modifiers = e.getModifiersEx(); |
---|
15737 | 16173 | keyReleased(e.getKeyChar(), e.getModifiersEx()); |
---|
| 16174 | + repaint(); |
---|
15738 | 16175 | break; |
---|
15739 | | - } |
---|
| 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 | +// } |
---|
15740 | 16192 | default: |
---|
15741 | 16193 | break; |
---|
15742 | 16194 | } |
---|
.. | .. |
---|
16127 | 16579 | { |
---|
16128 | 16580 | switch (hitSomething) |
---|
16129 | 16581 | { |
---|
16130 | | - case Object3D.hitCenter: gr.setColor(Color.pink); |
---|
| 16582 | + case Object3D.hitCenter: gr.setColor(Color.white); |
---|
16131 | 16583 | gr.drawLine(X, Y, info.bounds.width/2, info.bounds.height/2); |
---|
16132 | 16584 | break; |
---|
16133 | 16585 | case Object3D.hitRotate: gr.setColor(Color.yellow); |
---|
.. | .. |
---|
16153 | 16605 | if (hasMarquee) |
---|
16154 | 16606 | { |
---|
16155 | 16607 | gr.setXORMode(Color.white); |
---|
16156 | | - gr.setColor(Color.red); |
---|
| 16608 | + gr.setColor(Color.white); |
---|
16157 | 16609 | if (!firstime) |
---|
16158 | 16610 | { |
---|
16159 | 16611 | gr.drawRect(prevmarqX, prevmarqY, prevmarqW, prevmarqH); |
---|
.. | .. |
---|
16312 | 16764 | |
---|
16313 | 16765 | public boolean mouseDrag(Event evt, int x, int y) |
---|
16314 | 16766 | { |
---|
16315 | | - //System.out.println("mouseDrag: " + evt); |
---|
| 16767 | + System.out.println("mouseDrag: " + evt); |
---|
| 16768 | + System.exit(0); |
---|
16316 | 16769 | /* |
---|
16317 | 16770 | drag = true; |
---|
16318 | 16771 | //System.out.println("Mouse DRAG"); |
---|
.. | .. |
---|
16431 | 16884 | public boolean mouseUp(Event evt, int x, int y) |
---|
16432 | 16885 | { |
---|
16433 | 16886 | System.out.println("mouseUp: " + evt); |
---|
| 16887 | + System.exit(0); |
---|
16434 | 16888 | /* |
---|
16435 | 16889 | locked = false; |
---|
16436 | 16890 | if (isRenderer) |
---|
.. | .. |
---|
16849 | 17303 | gl.glScalef(1.0f, -1.0f, 1.0f); |
---|
16850 | 17304 | } |
---|
16851 | 17305 | |
---|
16852 | | - gl.glNormal3f(0.0f, 0.0f, 1.0f); |
---|
| 17306 | + SetGLNormal(gl, 0.0f, 0.0f, 1.0f); |
---|
16853 | 17307 | |
---|
16854 | 17308 | float step = 2; // 0.1666f; //0.25f; |
---|
16855 | 17309 | float stepv = 2; // step * 1652 / 998; |
---|
.. | .. |
---|
17138 | 17592 | |
---|
17139 | 17593 | float depth = depths[y * TEX_SIZE + x]; |
---|
17140 | 17594 | |
---|
17141 | | - if (pointselection && mouseMode == SELECT && depth != 0 && depth != 1) |
---|
| 17595 | + if (pointselection && (mouseMode & SELECT) == SELECT && depth != 0 && depth != 1) |
---|
17142 | 17596 | { |
---|
17143 | 17597 | pointselection = false; |
---|
17144 | 17598 | |
---|
.. | .. |
---|
17329 | 17783 | |
---|
17330 | 17784 | public void init(GLAutoDrawable drawable) |
---|
17331 | 17785 | { |
---|
| 17786 | + if (Globals.DEBUG) |
---|
17332 | 17787 | System.out.println("shadow buffer init"); |
---|
17333 | 17788 | |
---|
17334 | 17789 | GL gl = drawable.getGL(); |
---|
.. | .. |
---|
17801 | 18256 | static boolean DEBUG_SELECTION = false; |
---|
17802 | 18257 | boolean OCCLUSION_CULLING = false; //true; |
---|
17803 | 18258 | public boolean lightMode = false; |
---|
| 18259 | + |
---|
| 18260 | + private boolean keepshadow; |
---|
| 18261 | + |
---|
| 18262 | + static public boolean capsLocked = false; // VR |
---|
| 18263 | + |
---|
17804 | 18264 | static public int indexcount = 0; |
---|
17805 | 18265 | /*static*/ cColor vertexOcclusion = new cColor(); |
---|
17806 | 18266 | //private int selection_view = -1; |
---|