setupCrawl
Definition
-- @/lua/ge/extensions/gameplay/crawl/general.lua:25
local function setupCrawl(trail, veh, isFromMission)
if not trail or not veh then
log('E', logTag, 'Cannot setup crawl: no valid trail data')
return false
end
if M.activeTrail then
gameplay_crawl_utils.stopCrawl(true)
crawlersData = {}
end
local boundary = gameplay_crawl_saveSystem.getBoundaryById(trail.boundaryId)
local path = gameplay_crawl_saveSystem.getPathById(trail.pathId)
local startingPosition = gameplay_crawl_saveSystem.getStartingPositionById(trail.startingPositionId)
if not boundary or not path then
log('E', logTag, 'Missing required boundary or path data for trail: ' .. trail.name)
return false
end
M.activeTrail = {
trail = trail,
boundary = boundary,
path = deepcopy(path),
startingPosition = startingPosition,
prefabs = trail.prefabs or {},
isFromMission = isFromMission or false
}
if trail.pathReversed then
M.activeTrail.path.nodes = arrayReverse(M.activeTrail.path.nodes)
local reverseRot180 = quatFromAxisAngle(vec3(0, 1, 0), math.pi)
for _, node in ipairs(M.activeTrail.path.nodes) do
if node.rotation then
node.rotation = reverseRot180 * node.rotation
end
end
if trail.startingPositionIdReversed and trail.startingPositionIdReversed ~= "" then
startingPosition = gameplay_crawl_saveSystem.getStartingPositionById(trail.startingPositionIdReversed)
M.activeTrail.startingPosition = startingPosition
elseif M.activeTrail.path.nodes and #M.activeTrail.path.nodes > 0 then
local firstNode = M.activeTrail.path.nodes[1]
if firstNode and firstNode.pos then
local rot = firstNode.rotation or quat(0, 0, 0, 1)
startingPosition = {
transform = {
position = firstNode.pos,
rotation = rot,
radius = 10.0
}
}
M.activeTrail.startingPosition = startingPosition
end
end
end
local crawlerData = gameplay_crawl_utils.setupCrawlerData(veh)
table.insert(crawlersData, crawlerData)
gameplay_crawl_utils.loadPrefabs(M.activeTrail.prefabs)
if startingPosition and isFromMission then
spawn.safeTeleport(veh, startingPosition.transform.position, startingPosition.transform.rotation, nil, nil, nil, nil, true)
end
return true
end
Callers
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/setupCrawl.lua
log('D', 'SetupCrawl', string.format('Calling bridge.setupCrawl with vehicleId: %s', tostring(vehicleIdToUse)))
if self.bridge.setupCrawl(vehicleIdToUse, trail) then
log('I', 'SetupCrawl', 'Crawl setup completed successfully via bridge')
@/lua/ge/extensions/gameplay/crawl/general.lua
if not setupCrawl(trail, veh, false) then
log('E', logTag, 'Failed to setup crawl')
if not setupCrawl(trail, veh, true) then
log('E', logTag, 'Failed to setup crawl')
if veh then
setupCrawl(trail, veh, false)
end
@/lua/ge/extensions/gameplay/crawl/flowgraphBridge.lua
if gameplay_crawl_general.setupCrawl(trail, veh, true) then
return true