Merge pull request #2267 from FlightControl-Master/master

merge from master
This commit is contained in:
Thomas 2025-03-10 15:33:52 +01:00 committed by GitHub
commit 702c5464aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 35 additions and 16 deletions

View File

@ -831,8 +831,8 @@ do
-- my_ctld.PackDistance = 35 -- Pack crates in this radius only
-- my_ctld.dropcratesanywhere = false -- Option to allow crates to be dropped anywhere.
-- my_ctld.dropAsCargoCrate = false -- Hercules only: Parachuted herc cargo is not unpacked automatically but placed as crate to be unpacked. Needs a cargo with the same name defined like the cargo that was dropped.
-- my_ctld.maximumHoverHeight = 15 -- Hover max this high to load.
-- my_ctld.minimumHoverHeight = 4 -- Hover min this low to load.
-- my_ctld.maximumHoverHeight = 15 -- Hover max this high to load in meters.
-- my_ctld.minimumHoverHeight = 4 -- Hover min this low to load in meters.
-- my_ctld.forcehoverload = true -- Crates (not: troops) can **only** be loaded while hovering.
-- my_ctld.hoverautoloading = true -- Crates in CrateDistance in a LOAD zone will be loaded automatically if space allows.
-- my_ctld.smokedistance = 2000 -- Smoke or flares can be request for zones this far away (in meters).

View File

@ -5693,15 +5693,22 @@ function CONTROLLABLE:DisableIRMarker()
self:DisableIRMarkerForGroup()
return
end
if self.spot then
self.spot:destroy()
self.spot = nil
if self.spot then
self.spot:destroy()
self.spot = nil
end
if self.timer and self.timer:IsRunning() then
self.timer:Stop()
self.timer = nil
end
if self.ClassName == "GROUP" then
self.IRMarkerGroup = nil
elseif self.ClassName == "UNIT" then
self.IRMarkerUnit = nil
end
return self
end
@ -5709,7 +5716,7 @@ end
-- @param #CONTROLLABLE self
-- @return #CONTROLLABLE self
function CONTROLLABLE:EnableIRMarkerForGroup()
--sefl:F("EnableIRMarkerForGroup")
--self:F("EnableIRMarkerForGroup")
if self.ClassName == "GROUP" then
local units = self:GetUnits() or {}
for _,_unit in pairs(units) do
@ -5729,6 +5736,7 @@ function CONTROLLABLE:DisableIRMarkerForGroup()
for _,_unit in pairs(units) do
_unit:DisableIRMarker()
end
self.IRMarkerGroup = nil
end
return self
end
@ -5737,10 +5745,18 @@ end
-- @param #CONTROLLABLE self
-- @return #boolean outcome
function CONTROLLABLE:HasIRMarker()
if self.spot then return true end
if self.IRMarkerGroup == true or self.IRMarkerUnit == true then return true end
return false
end
--- [Internal] This method is called by the scheduler after disabling the IR marker.
function CONTROLLABLE._StopSpot(spot)
if spot then
spot:destroy()
spot=nil
end
end
--- [Internal] This method is called by the scheduler after enabling the IR marker.
-- @param #CONTROLLABLE self
-- @return #CONTROLLABLE self
@ -5756,13 +5772,16 @@ function CONTROLLABLE:_MarkerBlink()
local _, _, unitBBHeight, _ = self:GetObjectSize()
local unitPos = self:GetPositionVec3()
self.spot = Spot.createInfraRed(
self.DCSUnit,
{ x = 0, y = (unitBBHeight + 1), z = 0 },
{ x = unitPos.x, y = (unitPos.y + unitBBHeight), z = unitPos.z }
)
local offTimer = TIMER:New(function() if self.spot then self.spot:destroy() end end)
offTimer:Start(0.5)
if not self.spot then
local spot = Spot.createInfraRed(
self.DCSUnit,
{ x = 0, y = (unitBBHeight + 1), z = 0 },
{ x = unitPos.x, y = (unitPos.y + unitBBHeight), z = unitPos.z }
)
self.spot = spot
local offTimer = nil
local offTimer = TIMER:New(CONTROLLABLE._StopSpot, spot)
offTimer:Start(0.5)
end
return self
end