onPreRender
Definition
-- @/lua/ge/extensions/core/camera.lua:825
local function onPreRender(dtReal, dtSim, dtRaw)
if not levelLoaded then return end
local player = 0
local veh = getPlayerVehicle(player)
local vid = veh and veh:getId()
-- fixup res if a reference in it has been altered
resPos:set(camData.pos)
resTargetPos:set(0, 0, 0)
resRot:set(1,0,0,0)
camData.res.pos = resPos
camData.res.targetPos = resTargetPos
camData.res.rot = resRot
camData.veh = veh
camData.vid = vid
camData.dtSim = dtSim * M.speedFactor-- smoothed dt used by physics, includes time scaling
camData.dtReal = dtReal * M.speedFactor -- smoothed gfx render dt
camData.dtRaw = dtRaw * M.speedFactor -- gfx render dt, in seconds from wall clock
camData.dt = dtReal * M.speedFactor
camData.prevPos:set(camData.pos)
camData.prevVehPos:set(camData.vehPos)
camData.openxrSessionRunning = render_openxr and render_openxr.isSessionRunning() or false
if veh then
camData.pos:set(veh:getPositionXYZ()) -- scene object position - this jumps on the floating point grid
camData.vehPos:set(veh:getRefNodeAbsPositionXYZ()) -- vehicle's actual position on a double precision grid
else
camData.pos:set(0,0,0)
camData.vehPos:set(0,0,0)
end
local paused = dtSim < 0.00001
if paused then
camData.teleported = false
else
camData.prevVel:set(camData.vel)
camData.vel:set(camData.vehPos)
camData.vel:setSub(camData.prevVehPos)
camData.vel:setScaled(1/dtSim)
camData.teleported = objectTeleported(camData.pos, camData.prevPos, camData.prevVel, dtSim)
if camData.teleported then
camData.vel:set(0,0,0)
end
end
if veh then
local vehicleName = veh:getField('name', '')
if vehicleName ~= lastVehicleName then
local lastVehicle = lastVehicleName and scenetree.findObject(lastVehicleName) or nil
local lastVehicleId = lastVehicle and lastVehicle:getId() or nil
vehicleChanged(lastVehicleId, vid)
lastVehicleName = vehicleName
end
end
if not configuration then return end
camData.res.targetPos:set(camData.pos) -- tracked target
camData.res.fov = 60
camData.res.nearClip = getLevelNearClip() or 0.1 -- choose a sane default if the level hasn't defined a nearclip
-- update the selected camera
local globalCam = getGlobalCameras()[activeGlobalCameraName]
if globalCam then
-- one of the global cameras
if globalCam:update(camData) then
extensions.hook("onCameraPreRender", camData)
else
setGlobalCameraByName(nil)
end
else
-- one of the vehicle cameras
local vdata = getVehicleData()[vid]
if not vdata then
--log("E", "", "No global cam used, and no vehicle exists either")
return
end
local plvdata = core_vehicle_manager.getPlayerVehicleData()
local isUnicycle = plvdata and plvdata.mainPartName == "unicycle"
local camName = isUnicycle and "unicycle" or vdata.focusedCamName
local cam = vdata.cameras[camName]
if cam and vdata.focusedCamName then
cam:update(camData)
if not validateData(camData) and cam.init then cam:init() end -- if present, clean up NaN/infs in camera state, by re-initting it
else
local fallbackCamName = "orbit"
local fallbackCam = vdata.cameras[fallbackCamName]
if fallbackCam then
log("E", "", "Vehicle cam \""..dumps(vdata.focusedCamName).."\" not found. Falling back to \""..dumps(fallbackCamName).."\"")
setByName(0, fallbackCamName)
else
log("E", "", "Vehicle cam \""..dumps(vdata.focusedCamName).."\" not found. Fallback cam \""..dumps(fallbackCamName).."\" not found either. Falling back to free camera")
commands.setFreeCamera()
end
return
end
camData.dt = camData.dtReal -- revert back to gfx dt, in case one filter switched it
end
-- running cameras
for _,v in ipairs(getRunningCamsOrder()) do
v.cam:update(camData)
end
MoveManager.yawRelative = 0
MoveManager.pitchRelative = 0
MoveManager.rollRelative = 0
local clearAbsAxes = true
-- keeps the camera moving for a set amount of time
if absTranslateTimer then
absTranslateTimer = absTranslateTimer + dtReal
if absTranslateTimer < 0.05 then
clearAbsAxes = false
else
absTranslateTimer = nil
end
end
if clearAbsAxes then
MoveManager.absXAxis = 0
MoveManager.absYAxis = 0
MoveManager.absZAxis = 0
end
updateCameraData(camData)
if veh then setShadowLogWeight(veh) end
end
Callers
@/gameplay/missionTypes/collection/customNodes/collectionMarkersNode.lua
function C:onPreRender(dt)
local cameraPos = core_camera.getPosition()
@/gameplay/missionTypes/scatterPickup/customNodes/scatterAnimatorNode.lua
function C:onPreRender(dt, dtSim)
if not self.mgr.scatterPickup then return end
@/lua/ge/extensions/util/trackBuilder/splineTrack.lua
M.onCollectScreenshotMetadata = onCollectScreenshotMetadata
M.onPreRender = function(dt) transition.onPreRender(dt) end
@/lua/ge/extensions/scenario/demolitionDerby.lua
-- called before rendering a graphics frame
local function onPreRender(dt)
local scenario = scenario_scenarios.getScenario()
@/lua/ge/extensions/flowgraph/nodes/vehicle/touchingStatic.lua
function C:onPreRender()
if self.active and self.pinIn.debugMode.value then
@/lua/ge/extensions/gameplay/crawl/debug.lua
local function onPreRender(dtReal, dtSim, dtRaw)
if not enableDebugWindow then return end
@/lua/ge/extensions/editor/roadEditor.lua
local function onPreRender()
if not editor.editMode or (editor.editMode.displayName ~= editModeName) then
@/gameplay/missionTypes/cannon/customNodes/MarkersNode.lua
function C:onPreRender()
if self.markers then
@/lua/ge/extensions/editor/veMain.lua
-- Update data for other vehicle editors to use
local function onPreRender(dtReal, dtSim, dtRaw)
if not vEditor.vehicle then
@/lua/ge/extensions/scenario/scenarios.lua
local function onPreRender(dt, dtSim)
if not scenario then return end
@/lua/ge/ge_utils.lua
local function onPreRender(dtReal, dtSim, dtRaw)
if(fpsLimiter:update(dtReal)) then
@/lua/ge/extensions/gameplay/crashTest/scenarioManager.lua
local function onPreRender(dt, dtSim)
if markers then
@/lua/ge/extensions/gameplay/statisticModules/watchJturn.lua
local function onPreRender()
if myvid == -1 then return end
@/lua/ge/extensions/editor/terrainEditor.lua
end
terrainEditor:onPreRender()
local hit
@/lua/common/utils/debugDraw.lua
-- GE do calls `onPreRender()`
-- VEH do calls on `onDebugDraw()`
@/lua/ge/extensions/util/screenshotCreator.lua
local function onPreRender(dt)
if workerCoroutine ~= nil then
@/lua/ge/extensions/scenario/busdriver.lua
local function onPreRender(dt, dtSim)
--local debugPath = true
@/lua/ge/extensions/c2/panelPlugins/tileManager.lua
local function onPreRender(dt)
if not p_showWindow then
@/lua/ge/extensions/util/precompileShaders.lua
local function onPreRender(dt)
if finished then return end
@/lua/ge/extensions/freeroam/dragRace.lua
local function onPreRender(dtReal, dtSim, dtRaw)
if not opponentVehicle then return end
@/lua/ge/extensions/gameplay/markerInteraction.lua
local function onPreRender(dtReal, dtSim)
if not gameplay_playmodeMarkers.isStateWithPlaymodeMarkers() then
@/lua/ge/extensions/core/hotlapping.lua
local colorOrange = ColorF(1, 0.5, 0, 0.5)
local function onPreRender(dt, dtSim)
if editMode then
@/lua/ge/extensions/core/sounds.lua
local function onPreRender(dtReal, dtSim, dtRaw)
if Engine.Audio.getGlobalParams then
@/lua/ge/extensions/scenario/waypoints.lua
local function onPreRender(dtReal, dtSim, dtRaw)
if not scenario_scenarios then return end
@/lua/ge/extensions/util/trackBuilder/cameraTransition.lua
local perc = 0
local function onPreRender(dt)
if remainingTime <= 0 then return end
@/lua/ge/extensions/core/groundMarkerArrows.lua
local scale = vec3()
local function onPreRender(dt)
-- Update all arrow objects based on their proxies
@/lua/ge/extensions/gameplay/traffic.lua
local function onPreRender(dt)
if not M.debugMode then return end
@/lua/ge/extensions/editor/camPathEditor.lua
local function onPreRender()
if
@/lua/ge/extensions/flowgraph/nodes/mission/knockAwayCheck.lua
function C:onPreRender(dt, dtSim)
if self.markers then
@/lua/common/extensions/networking/editorToolchain.lua
local function onPreRender(dtReal, dtSim, dtRaw)
if not server then return end
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/raceMarkers.lua
function C:onPreRender(dt, dtSim)
if self.markers then
@/lua/ge/extensions/util/decalRoadsEditor.lua
local function onPreRender(dt)
local camPos = core_camera.getPosition()
@/lua/ge/extensions/editor/shapeEditor.lua
local function onPreRender()
if(shapePrev) then
@/lua/ge/extensions/freeroam/bigMapPoiProvider.lua
-- gets called only while career mode is enabled
local function onPreRender(dtReal, dtSim)
if not gameplay_playmodeMarkers.isStateWithPlaymodeMarkers() then
@/lua/ge/extensions/flowgraph/nodes/gfx/blur.lua
function C:onPreRender(dt, dtSim)
if not extensions.ui_visibility.getCef() then return end
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veStaticRenderView.lua
-- Do debugDrawer stuff here
local function onPreRender()
for wndID, wndData in ipairs(wndsData) do
@/lua/ge/extensions/core/vehicleMirrors.lua
local function onPreRender(dtReal, dtSim, dtRaw)
local veh = getPlayerVehicle(0)
@/lua/ge/extensions/ui/gameBlur.lua
local function onPreRender()
if not extensions.ui_visibility.getCef() then return end
@/lua/ge/extensions/util/precompileVehicles.lua
local function onPreRender(dt)
if finished then return end
@/lua/ge/extensions/gameplay/statisticModules/watchRollover.lua
local function onPreRender()
if myvid == -1 then return end
@/lua/ge/extensions/gameplay/crawl/utils.lua
local function onPreRender(dtReal, dtSim, dtRaw)
if not crawlStates then
@/lua/ge/extensions/flowgraph/nodes/util/customLua.lua
end
function C:onPreRender(dt, dtSim)
self:exec('onPreRender')
@/lua/ge/extensions/core/groundMarkers.lua
local playerVehPos = vec3()
local function onPreRender(dt)
if not M.endWP then return end
@/lua/ge/extensions/editor/vehicleDetailViewer.lua
local function onPreRender(dtReal, dtSim, dtRaw)
if not editor.beginWindow or not detailViewerActive then return end -- for some frames, the editor is not ready yet
@/lua/ge/extensions/tech/multiscreen.lua
local rotation = QuatF(0, 0, 0, 1)
local function onPreRender()
if not getOrCreateCameraToWindow or not requestCameraToWindowRender then return end
@/lua/ge/extensions/core/checkpoints.lua
local function onPreRender(dt)
local scenario = scenario_scenarios and scenario_scenarios.getScenario()
@/lua/ge/extensions/util/instancedLineRenderDemo.lua
local function onPreRender(dtReal, dtSim, dtRaw)
t = t + dtSim * 0.5
@/lua/ge/extensions/campaign/exploration.lua
local function onPreRender(dt)
if not getExplorationActive() then
@/lua/ge/extensions/core/weather.lua
local function onPreRender(dt)
if switch == true then