GE Lua Documentation

Press F to search!

setupCrawlerData

Definition


-- @/lua/ge/extensions/gameplay/crawl/utils.lua:904

local function setupCrawlerData(veh)
  if not veh then
    log('E', logTag, 'No vehicle available, cannot setup crawler data')
    return
  end
  local cD = {
    id = veh:getID(),
    isPlayable = true,
    isDesc = false,
    descReason = "None",
    isFinished = false,
    lastPoints = 0,
    points = 0,
    time = 0,
    dynamicData = {
      vehPos = vec3(),
      vehDirectionVector = vec3(),
      vehDirectionVectorUp = vec3(),
      vehRot = quat(),
      vehVelocity = vec3(),
      vehObj = veh,
      bbCenter = vec3(),
      wheelOffsets = {},
      currentCorners = {},
    },
    infractionData = {
      drivingBackwardsCooldown = 0,
      drivingBackwardsDistance = 0,
      boundaryViolationCooldown = 0,
      recentlyRecovered = false,
      recoveryCooldown = 0,
    }
  }
  cD.dynamicData.oobb = cD.dynamicData.vehObj:getSpawnWorldOOBB()

  local wCount = veh:getWheelCount()-1
  if wCount > 0 then
    local vehiclePos = veh:getPosition()
    local vRot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
    local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
    for i=0, wCount do
      local axisNodes = veh:getWheelAxisNodes(i)
      local nodePos = vec3(veh:getNodePosition(axisNodes[1]))
      local pos = vec3(nodePos:dot(x), nodePos:dot(y), nodePos:dot(z))
      table.insert(cD.dynamicData.wheelOffsets, pos)
      table.insert(cD.dynamicData.currentCorners, vRot*pos + vehiclePos)
    end
  end

  core_vehicleBridge.registerValueChangeNotification(veh, "accZSmooth")
  return cD
end

Callers

@/lua/ge/extensions/gameplay/crawl/general.lua

  local crawlerData = gameplay_crawl_utils.setupCrawlerData(veh)
  table.insert(crawlersData, crawlerData)
    if not crawlerData then
      crawlerData = gameplay_crawl_utils.setupCrawlerData(veh)
      table.insert(crawlersData, crawlerData)