GE Lua Documentation

Press F to search!

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