mirror of
https://github.com/weyne85/DML.git
synced 2025-10-29 16:57:49 +00:00
Version 1.3.1
stopGaps owned zones factory zones flag documentation
This commit is contained in:
52
modules/mxObjects.lua
Normal file
52
modules/mxObjects.lua
Normal file
@@ -0,0 +1,52 @@
|
||||
mxObjects = {}
|
||||
|
||||
function mxObjects.getObjectFreePoly(layerName, polyName, rel) -- omit rel to get absolute points, else pass 'true' to get relative to first point.
|
||||
if not rel then rel = false end -- relative or absolute
|
||||
if not env.mission.drawings then
|
||||
trigger.action.outText("+++mxO: Mission has no drawings.", 30)
|
||||
return {}
|
||||
end
|
||||
|
||||
local drawings = env.mission.drawings
|
||||
local layers = drawings["layers"]
|
||||
if not layers then
|
||||
trigger.action.outText("+++mxO: Mission has no layers in drawing", 30)
|
||||
return {}
|
||||
end
|
||||
local theLayer = nil
|
||||
for idx, aLayer in pairs(layers) do
|
||||
if aLayer.name == layerName then
|
||||
theLayer = aLayer
|
||||
end
|
||||
end
|
||||
if not theLayer then
|
||||
trigger.action.outText("+++mxO: No layer named <" .. layerName .. "> in Mission", 30)
|
||||
return {}
|
||||
end
|
||||
|
||||
local objects = theLayer.objects
|
||||
if not objects then
|
||||
trigger.action.outText("+++mxO: No objects in layer <" .. layerName .. ">", 30)
|
||||
return {}
|
||||
end
|
||||
-- scan objects for a "free" mode poly with name polyName
|
||||
for idx, theObject in pairs(objects) do
|
||||
if theObject.polygonMode == "free" and theObject.name == polyName then
|
||||
local poly = {}
|
||||
for idp, thePoint in pairs(theObject.points) do
|
||||
local p = {}
|
||||
p.x = thePoint.x
|
||||
p.y = thePoint.y
|
||||
if not rel then
|
||||
p.x = p.x + theObject.mapX
|
||||
p.y = p.y + theObject.mapY
|
||||
end
|
||||
poly[idp] = p
|
||||
end
|
||||
return poly
|
||||
end
|
||||
end
|
||||
|
||||
trigger.action.outText("+++mxO: no polygon named <" .. polyName .. "> in layer <" ..layerName .. ">", 30)
|
||||
return {}
|
||||
end
|
||||
Reference in New Issue
Block a user