Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local glm = require("glm")
- function ScreenPositionToCameraRay(screenX, screenY)
- local pos = GetFinalRenderedCamCoord()
- local rot = glm.rad(GetFinalRenderedCamRot(2))
- local q = glm.quatEulerAngleZYX(rot.z, rot.y, rot.x)
- return pos,glm.rayPicking(
- q * glm.forward(),
- q * glm.up(),
- glm.rad(GetFinalRenderedCamFov()),
- GetAspectRatio(true),
- 0.10000, -- GetFinalRenderedCamNearClip(),
- 10000.0, -- GetFinalRenderedCamFarClip(),
- screenX * 2 - 1, -- scale mouse coordinates from [0, 1] to [-1, 1]
- screenY * 2 - 1
- )
- end
- -- RegisterNUICallback...
- local w, h = GetActiveScreenResolution()
- -- data.mouseX e mouseY são recebidos via NUICallback
- -- correspondem às propriedades pageX e pageY do evento `mousemove`
- local mx = data.mouseX / w
- local my = data.mouseY / h
- local r_pos, r_dir = ScreenPositionToCameraRay(mx, my)
- local b = r_pos + 10000 * r_dir
- local handle = StartExpensiveSynchronousShapeTestLosProbe(r_pos.x, r_pos.y, r_pos.z, b.x, b.y, b.z, 8, PlayerPedId(), 7)
- local _, hit, pos, surface, entity = GetShapeTestResult(handle)
Advertisement
Add Comment
Please, Sign In to add comment