onTrigger
Definition
-- @/lua/ge/extensions/core/camera.lua:1141
local function onTrigger(trigger)
if not trigger or not trigger.subjectID then return end
local player = 0
local vid = be:getPlayerVehicleID(player)
local otherId = nil
local triggerTargetOverride = nil
if trigger.triggerOverride then
local overrideObj = scenetree.findObject(trigger.triggerOverride)
if overrideObj then
otherId = overrideObj:getId()
end
if otherId == trigger.subjectID then
triggerTargetOverride = trigger.triggerOverride
end
end
if vid < 0 and not otherId then return end
if not commands.isFreeCamera() then
-- TODO FIXME: this spams the whole UI, needs to be a stream
--guihooks.trigger('cameraDistance', {state = 'notfree'}) -- TODO: convert into stream
end
if trigger.subjectID ~= vid and trigger.subjectID ~= otherId then return end
local triggeredDuringSpawning = false
local scenario = scenario_scenarios and scenario_scenarios.getScenario()
if scenario and (scenario.state == nil or (scenario.state == 'pre-start' or scenario.state == 'restart')) then
triggeredDuringSpawning = true
end
if getActiveCamName() == 'path' or triggeredDuringSpawning then
if type(trigger.cameraOnEnter) == 'string' and trigger.cameraOnEnter ~= "" then
local cam = scenetree.findObject(trigger.cameraOnEnter)
if cam.showApps ~= '1' then
guihooks.trigger('appContainer:loadLayoutByType', "scenario_cinematic_start")
end
pendingTrigger = trigger
return
end
end
if trigger.event == 'exit' and trigger.cameraOnLeave == true then
setGlobalCameraByName(nil)
local vdata = getVehicleData()[vid]
if vdata then
notifyUI(vdata)
end
elseif trigger.event == 'enter' and type(trigger.cameraOnEnter) == 'string' and trigger.cameraOnEnter ~= "" then
local cam = scenetree.findObject(trigger.cameraOnEnter)
if cam then
setGlobalCameraByName("observer", nil, {cam = cam, targetOverride = triggerTargetOverride or cam.targetOverride})
else
log('E', 'camera', 'camera not found for trigger: ' .. dumps(trigger.cameraOnEnter))
end
end
end
Callers
@/ui/lib/ext/vue3/vue.global.js
if (effect.options.onTrigger) {
effect.options.onTrigger({
effect,
@/lua/ge/extensions/core/camera.lua
pendingTrigger = nil
onTrigger(tempTrigger)
end