diff --git a/Moose Development/Moose/Ops/Intelligence.lua b/Moose Development/Moose/Ops/Intelligence.lua index c34e31836..28f91150d 100644 --- a/Moose Development/Moose/Ops/Intelligence.lua +++ b/Moose Development/Moose/Ops/Intelligence.lua @@ -98,6 +98,7 @@ INTEL = { clusterradius = 15000, clusteranalysis = true, clustermarkers = false, + clusterarrows = false, prediction = 300, detectStatics = false, } @@ -528,10 +529,12 @@ end -- @param #INTEL self -- @param #boolean Switch If true, enable cluster analysis. -- @param #boolean Markers If true, place markers on F10 map. +-- @param #boolean Arrows If true, draws arrows on F10 map. -- @return #INTEL self -function INTEL:SetClusterAnalysis(Switch, Markers) +function INTEL:SetClusterAnalysis(Switch, Markers, Arrows) self.clusteranalysis=Switch self.clustermarkers=Markers + self.clusterarrows=Arrows return self end @@ -1760,7 +1763,7 @@ function INTEL:CalcClusterFuturePosition(cluster, seconds) local futureposition=COORDINATE:NewFromVec3(Vec3) -- Create an arrow pointing in the direction of the movement. - if self.clustermarkers and self.verbose>1 then + if self.clustermarkers and self.clusterarrows then if cluster.markerID then COORDINATE:RemoveMark(cluster.markerID) end diff --git a/Moose Development/Moose/Wrapper/Group.lua b/Moose Development/Moose/Wrapper/Group.lua index d8b23a871..73a306509 100644 --- a/Moose Development/Moose/Wrapper/Group.lua +++ b/Moose Development/Moose/Wrapper/Group.lua @@ -701,15 +701,26 @@ function GROUP:GetUnit( UnitNumber ) local DCSGroup = self:GetDCSObject() if DCSGroup then - - local DCSUnit = DCSGroup:getUnit( UnitNumber ) - local UnitFound = UNIT:Find(DCSUnit) + local UnitFound = nil + -- 2.7.1 dead event bug, return the first alive unit instead + local units = DCSGroup:getUnits() or {} + + for _,_unit in pairs(units) do + + local UnitFound = UNIT:Find(_unit) + + if UnitFound then + + return UnitFound + + end + end - return UnitFound end return nil + end --- Returns the DCS Unit with number UnitNumber. @@ -1105,17 +1116,17 @@ function GROUP:GetHeading() local GroupSize = self:GetSize() local HeadingAccumulator = 0 - local n=0 + local Units = self:GetUnits() + if GroupSize then - for i = 1, GroupSize do - local unit=self:GetUnit(i) + for _,unit in pairs(Units) do if unit and unit:IsAlive() then HeadingAccumulator = HeadingAccumulator + unit:GetHeading() n=n+1 end end - return math.floor(HeadingAccumulator / n) + return math.floor(HeadingAccumulator / n) end BASE:E( { "Cannot GetHeading", Group = self, Alive = self:IsAlive() } )