forked from Simnation/Main
58 lines
No EOL
2.3 KiB
Lua
58 lines
No EOL
2.3 KiB
Lua
StartN3dRenderLoop = function()
|
|
Citizen.CreateThread(function()
|
|
while true do
|
|
local drawing = false
|
|
|
|
for k,v in pairs(Utility.Cache.N3d) do
|
|
if v.show then
|
|
drawing = true
|
|
|
|
local scaleformCoords
|
|
local scaleformScale
|
|
local rotation = vector3(0.0, 0.0, 0.0)
|
|
|
|
if v.advanced_scale then
|
|
scaleformScale = v.advanced_scale
|
|
else
|
|
scaleformScale = vector3(v.scale*1, v.scale*(9/16), 1)
|
|
end
|
|
|
|
if v.attach ~= nil then
|
|
local rot = v.rotation.rotation or 0.0
|
|
|
|
if v.rotation.syncedwithplayer then
|
|
rotation = vector3(0.0, 0.0, -GetEntityHeading(v.attach.entity) + rot)
|
|
else
|
|
rotation = vector3(0.0, 0.0, rot)
|
|
end
|
|
|
|
local coords = GetOffsetFromEntityInWorldCoords(v.attach.entity, v.attach.offset.x, v.attach.offset.y, v.attach.offset.z)
|
|
|
|
scaleformCoords = vector3(coords.x, coords.y, coords.z)
|
|
else
|
|
local rot = v.rotation.rotation or 0.0
|
|
|
|
if v.rotation.syncedwithplayer then
|
|
rotation = vector3(0.0, 0.0, -GetEntityHeading(PlayerPedId()) + rot)
|
|
else
|
|
rotation = vector3(0.0, 0.0, rot)
|
|
end
|
|
|
|
scaleformCoords = vector3(v.coords.x, v.coords.y, v.coords.z)
|
|
end
|
|
|
|
if v.scaleform ~= nil and HasScaleformMovieLoaded(v.scaleform) then
|
|
-- handle coords rot unk scale unk
|
|
DrawScaleformMovie_3dNonAdditive(v.scaleform, scaleformCoords, rotation, 0.0, 1.0, 0.0, scaleformScale, 0)
|
|
end
|
|
end
|
|
end
|
|
|
|
if not drawing then
|
|
Citizen.Wait(Config.UpdateCooldown)
|
|
end
|
|
|
|
Citizen.Wait(0)
|
|
end
|
|
end)
|
|
end |