feat(navpoints): added navpoint sublayers

This commit is contained in:
MarcoJayUsai
2025-03-07 12:36:10 +01:00
parent 8e20499b92
commit 6e7b5b1cc3
2 changed files with 24 additions and 4 deletions

View File

@@ -530,7 +530,7 @@ export class DCSDrawingsContainer {
if (layerName === 'navpoints') { if (layerName === 'navpoints') {
return; return;
} }
if (drawingsData[layerName]["name"] === undefined) { if (drawingsData[layerName]["name"] === undefined && drawingsData[layerName]["callsignStr"] === undefined) {
const newContainer = new DCSDrawingsContainer(layerName, this); const newContainer = new DCSDrawingsContainer(layerName, this);
this.addSubContainer(newContainer); this.addSubContainer(newContainer);
newContainer.initFromData(drawingsData[layerName]); newContainer.initFromData(drawingsData[layerName]);
@@ -557,7 +557,9 @@ export class DCSDrawingsContainer {
if (isANavpoint) { if (isANavpoint) {
newDrawing = new DCSNavpoint(drawingsData[layerName], othersContainer); newDrawing = new DCSNavpoint(drawingsData[layerName], othersContainer);
this.addDrawing(newDrawing); if (hasContainers) othersContainer.addDrawing(newDrawing);
else this.addDrawing(newDrawing);
if (othersContainer.getDrawings().length === 0) this.removeSubContainer(othersContainer); // Remove empty container
return; return;
} }

View File

@@ -1077,19 +1077,37 @@ function getUnitDescription(unit)
end end
-- This function gets the navpoints from the DCS mission -- This function gets the navpoints from the DCS mission
function Olympus.getNavPoints() function Olympus.getNavPoints()
local function extract_tag(str)
return str:match("^%[(.-)%]")
end
local navpoints = {} local navpoints = {}
if mist.DBs.navPoints ~= nil then if mist.DBs.navPoints ~= nil then
for coalitionName, coalitionNavpoints in pairs(mist.DBs.navPoints) do for coalitionName, coalitionNavpoints in pairs(mist.DBs.navPoints) do
if navpoints[coalitionName] == nil then
navpoints[coalitionName] = {}
end
for index, navpointDrawingData in pairs(coalitionNavpoints) do for index, navpointDrawingData in pairs(coalitionNavpoints) do
local navpointCustomLayer = extract_tag(navpointDrawingData['callsignStr']);
-- Let's convert DCS coords to lat lon -- Let's convert DCS coords to lat lon
local vec3 = { x = navpointDrawingData['x'], y = 0, z = navpointDrawingData['y'] } local vec3 = { x = navpointDrawingData['x'], y = 0, z = navpointDrawingData['y'] }
local lat, lng = coord.LOtoLL(vec3) local lat, lng = coord.LOtoLL(vec3)
navpointDrawingData['lat'] = lat navpointDrawingData['lat'] = lat
navpointDrawingData['lng'] = lng navpointDrawingData['lng'] = lng
navpointDrawingData['coalition'] = coalitionName navpointDrawingData['coalition'] = coalitionName
if navpointCustomLayer ~= nil then
if navpoints[coalitionName][navpointCustomLayer] == nil then
navpoints[coalitionName][navpointCustomLayer] = {}
end
navpoints[coalitionName][navpointCustomLayer][navpointDrawingData['callsignStr']] = navpointDrawingData
else
navpoints[coalitionName][navpointDrawingData['callsignStr']] = navpointDrawingData
end
end end
navpoints[coalitionName] = coalitionNavpoints
end end
end end