setNewParts
Definition
-- @/lua/ge/extensions/core/vehicle/partmgmt.lua:886
-- Merge old part highlights with new vehicle parts
-- When new part added, its visiblity is set to the parent part visiblity,
-- as well as its children to prevent weirdness
-- If inVehID is nil, it uses player vehicle
local function setNewParts(inVehID)
local vehObj, vehData, vehID, partsData = getVehData(inVehID)
if not vehObj then return end
local partsFlattened = {}
local newHighlightedParts = {}
local oldPartsHighlighted = partsData.partsHighlighted
local function recHighlightNode(node, parentHighlight)
local highlight = nil
if node.partPath then
partsFlattened[node.partPath] = true
if oldPartsHighlighted then
if oldPartsHighlighted[node.partPath] ~= nil then
-- Existing part uses old highlight
highlight = oldPartsHighlighted[node.partPath]
else
-- New part uses parent part highlight
highlight = parentHighlight
end
else
highlight = parentHighlight
end
newHighlightedParts[node.partPath] = highlight
end
if node.children then
for _, childNode in pairs(node.children) do
recHighlightNode(childNode, highlight)
end
end
end
recHighlightNode(vehData.config.partsTree or {}, true)
local partsSorted = tableKeysSorted(partsFlattened)
partsData.partsHighlighted = newHighlightedParts
partsData.partsSorted = partsSorted
table.clear(partsData.partsHighlightedIdxs)
table.clear(partsData.partNameToIdx)
for k, partName in ipairs(partsSorted) do
if newHighlightedParts[partName] then
table.insert(partsData.partsHighlightedIdxs, k)
end
partsData.partNameToIdx[partName] = k
end
end
Callers
@/lua/ge/extensions/freeroam/freeroam.lua
extensions.core_vehicle_partmgmt.resetVehicleHighlights(true, vehID)
extensions.core_vehicle_partmgmt.setNewParts(vehID)
extensions.core_vehicle_partmgmt.showHighlightedParts(vehID)