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)