Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function _updateSelector(_)
- {
- // _3dcamera.modelMatrix
- var m = _3dcamera.invModelMatrix;
- var zinv : Float = 1.0/999999.0;
- var xcenter : Float = (viewport.width / 2) - 0.5;
- var ycenter : Float = (viewport.height / 2) - 0.5;
- var xscale = viewport.width / Math.tan(_3dcamera.fov * MathUtils.TO_RADIAN);
- var yscale = viewport.height / Math.tan(_3dcamera.fov * MathUtils.TO_RADIAN);
- var vnear = new Point3D((display.mouseX - xcenter) / xscale, (ycenter - display.mouseY) / yscale, 1);
- var vfar = new Point3D((display.mouseX - xcenter) / (xscale * zinv), (ycenter - display.mouseY) / (yscale * zinv), 999999.0);
- trace(vnear.y);
- m.transform(vnear);
- m.transform(vfar);
- // var campos = new Point3D(0,0,128);
- // vnear.add(campos);
- // vfar.add(campos);
- var vfloor = new Point3D(0, 0, 1);
- var neardot = vnear.dot(vfloor);
- var fardot = vfar.dot(vfloor);
- trace(neardot + " " + fardot);
- if ((neardot > 0.0 && fardot < 0.0) || (neardot < 0.0 && fardot > 0.0))
- {
- var vray = vnear.clone();
- vray.sub(vfar);
- var dot = vray.dot(vfloor);
- trace(dot);
- if (dot != 0.0) {
- var rayscale = -neardot / dot;
- var vintersect = vray.clone();
- vintersect.scale(rayscale);
- vintersect.add(vnear);
- trace(vintersect);
- _selector.x = vintersect.x;
- _selector.y = vintersect.y;
- _scene.render();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment