Fixed problem with crash in Detection.lua.

When DetectionObject is nil (this can be), or is destroyed in between
detections, then nil must be returned and IsDetectedObjectIdentified is
not required to be checked.
This commit is contained in:
FlightControl 2017-07-13 21:41:58 +02:00
parent 6f581cadf1
commit 4252f9baac

View File

@ -1250,19 +1250,23 @@ do -- DETECTION_BASE
-- @param #DETECTION_BASE.DetectedObject DetectedObject -- @param #DETECTION_BASE.DetectedObject DetectedObject
-- @return #boolean true if already identified. -- @return #boolean true if already identified.
function DETECTION_BASE:IsDetectedObjectIdentified( DetectedObject ) function DETECTION_BASE:IsDetectedObjectIdentified( DetectedObject )
self:F3( DetectedObject.Name ) --self:F3( DetectedObject.Name )
local DetectedObjectName = DetectedObject.Name local DetectedObjectName = DetectedObject.Name
if DetectedObjectName then
local DetectedObjectIdentified = self.DetectedObjectsIdentified[DetectedObjectName] == true local DetectedObjectIdentified = self.DetectedObjectsIdentified[DetectedObjectName] == true
self:T3( DetectedObjectIdentified ) self:T3( DetectedObjectIdentified )
return DetectedObjectIdentified return DetectedObjectIdentified
else
return nil
end
end end
--- Identifies a detected object during detection processing. --- Identifies a detected object during detection processing.
-- @param #DETECTION_BASE self -- @param #DETECTION_BASE self
-- @param #DETECTION_BASE.DetectedObject DetectedObject -- @param #DETECTION_BASE.DetectedObject DetectedObject
function DETECTION_BASE:IdentifyDetectedObject( DetectedObject ) function DETECTION_BASE:IdentifyDetectedObject( DetectedObject )
self:F( { "Identified:", DetectedObject.Name } ) --self:F( { "Identified:", DetectedObject.Name } )
local DetectedObjectName = DetectedObject.Name local DetectedObjectName = DetectedObject.Name
self.DetectedObjectsIdentified[DetectedObjectName] = true self.DetectedObjectsIdentified[DetectedObjectName] = true
@ -1289,11 +1293,12 @@ do -- DETECTION_BASE
-- @param #string ObjectName -- @param #string ObjectName
-- @return #DETECTION_BASE.DetectedObject -- @return #DETECTION_BASE.DetectedObject
function DETECTION_BASE:GetDetectedObject( ObjectName ) function DETECTION_BASE:GetDetectedObject( ObjectName )
self:F2( ObjectName ) --self:F2( ObjectName )
if ObjectName then if ObjectName then
local DetectedObject = self.DetectedObjects[ObjectName] local DetectedObject = self.DetectedObjects[ObjectName]
if DetectedObject then
-- Only return detected objects that are alive! -- Only return detected objects that are alive!
local DetectedUnit = UNIT:FindByName( ObjectName ) local DetectedUnit = UNIT:FindByName( ObjectName )
if DetectedUnit and DetectedUnit:IsAlive() then if DetectedUnit and DetectedUnit:IsAlive() then
@ -1302,6 +1307,7 @@ do -- DETECTION_BASE
end end
end end
end end
end
return nil return nil
end end