Guest User

Untitled

a guest
May 4th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. function _updateSelector(_)
  2. {
  3. // _3dcamera.modelMatrix
  4. var m = _3dcamera.invModelMatrix;
  5.  
  6. var zinv : Float = 1.0/999999.0;
  7.  
  8. var xcenter : Float = (viewport.width / 2) - 0.5;
  9. var ycenter : Float = (viewport.height / 2) - 0.5;
  10.  
  11. var xscale = viewport.width / Math.tan(_3dcamera.fov * MathUtils.TO_RADIAN);
  12. var yscale = viewport.height / Math.tan(_3dcamera.fov * MathUtils.TO_RADIAN);
  13.  
  14. var vnear = new Point3D((display.mouseX - xcenter) / xscale, (ycenter - display.mouseY) / yscale, 1);
  15. var vfar = new Point3D((display.mouseX - xcenter) / (xscale * zinv), (ycenter - display.mouseY) / (yscale * zinv), 999999.0);
  16.  
  17. trace(vnear.y);
  18.  
  19. m.transform(vnear);
  20. m.transform(vfar);
  21.  
  22. // var campos = new Point3D(0,0,128);
  23.  
  24. // vnear.add(campos);
  25. // vfar.add(campos);
  26.  
  27. var vfloor = new Point3D(0, 0, 1);
  28.  
  29. var neardot = vnear.dot(vfloor);
  30. var fardot = vfar.dot(vfloor);
  31.  
  32. trace(neardot + " " + fardot);
  33.  
  34. if ((neardot > 0.0 && fardot < 0.0) || (neardot < 0.0 && fardot > 0.0))
  35. {
  36. var vray = vnear.clone();
  37. vray.sub(vfar);
  38. var dot = vray.dot(vfloor);
  39. trace(dot);
  40. if (dot != 0.0) {
  41. var rayscale = -neardot / dot;
  42. var vintersect = vray.clone();
  43. vintersect.scale(rayscale);
  44. vintersect.add(vnear);
  45. trace(vintersect);
  46. _selector.x = vintersect.x;
  47. _selector.y = vintersect.y;
  48. _scene.render();
  49. }
  50. }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment