diff --git a/Moose Development/Moose/Ops/TARS.lua b/Moose Development/Moose/Ops/TARS.lua index 092e7df06..260e0db11 100644 --- a/Moose Development/Moose/Ops/TARS.lua +++ b/Moose Development/Moose/Ops/TARS.lua @@ -17,6 +17,7 @@ -- @type TARS_SESSION -- @extends Core.Base#BASE -- @field #boolean debug Enable debugging in TARS_SESSION. +-- @field #boolean debugunitsearch Enable Target Search Debug. -- @field Wrapper.Unit#UNIT unit The MOOSE UNIT object for the recon aircraft. -- @field #string lid Log-line prefix shown in Moose.log entries. -- @field DCS#Vec3 vec3 World position snapshot taken at session creation. @@ -57,6 +58,7 @@ -- @field #TARS_SESSION TARS_SESSION = {} TARS_SESSION.debug = false +TARS_SESSION.debugunitsearch = false --- @type TARS -- @extends Core.Base#BASE @@ -146,7 +148,7 @@ TARS_SESSION.debug = false -- -- TARS_Instance.reconTypes["F-16C_50"] = true -- TARS_Instance.parameters["F-16C_50"] = { --- minAlt=300, maxAlt=8000, maxRoll=10, maxPitch=15, +-- minAlt=300, maxAlt=8000, maxRoll=10, maxPitch=15, -- Note altitude is AGL! -- fov=35, duration=300, offset=math.rad(20), -- name="F-16C with RECCE pod" -- } @@ -280,7 +282,7 @@ TARS = {} ------------------------------------------------- --- @field #string version -TARS.version = "v2.2.1" +TARS.version = "v2.2.2" --- Active locale. -- @field #string locale @@ -356,7 +358,8 @@ TARS.reconTypes = { -- TODO PER-PLATFORM PARAMETERS ------------------------------------------------- ---- @field #table parameters +--- @type #TARS.parameters +-- @field #table parameters TARS.parameters = {} TARS.parameters["F-4E-45MC"] = { minAlt=100, maxAlt=6096, maxRoll=10, maxPitch=15, fov=23, duration=120, offset=math.rad(60), name="RF-4E with KS-87 Forward Oblique Camera" } @@ -950,12 +953,13 @@ end function TARS_SESSION:FindTargets() local unit = self.unit local vec3 = unit:GetVec3() - local MSL = land.getHeight({ x = vec3.x, y = vec3.z }) - local alt = vec3.y - MSL - local params = self.Callback.parameters[self.type] + --local MSL = land.getHeight({ x = vec3.x, y = vec3.z }) + --local alt = vec3.y - MSL + local alt = unit:GetAltitude(true) + local params = self.Callback.parameters[self.type] -- #TARS.parameters - local roll = math.abs(math.deg(TARS.getRoll(unit))) - local pitch = math.abs(math.deg(TARS.getPitch(unit))) + local roll = math.abs(TARS.getRoll(unit)) + local pitch = math.abs(TARS.getPitch(unit)) local isFlat = roll < params.maxRoll and pitch < params.maxPitch local radius = params.optimalAlt @@ -967,6 +971,34 @@ function TARS_SESSION:FindTargets() coordinate = coordinate:UpdateFromVec3({ x=offset.x, y=MSL, z=offset.z }) self.coordinate = coordinate + if self.debugunitsearch then + -- TODO Search Zone Debug + -- Draw the searczone on the F10 map + local searchzone = self.searchzone or ZONE_RADIUS:New("TARS Debug",coordinate:GetVec2(),radius,true) + + if searchzone then + searchzone:UndrawZone() + searchzone:UpdateFromVec2(coordinate:GetVec2(),radius) + self.searchzone = searchzone + searchzone:DrawZone(-1,{0,0,1},1,{0,1,0},.2,2,true) + end + + --- TODO Params check and output + if params and unit and unit:IsAlive() then + self:I({Roll=roll,Pitch=pitch,AGL=alt}) + if roll > params.maxRoll then + MESSAGE:New(string.format("Roll - NOK out of parameters (%d°)!",roll or 0),9,"PARAM"):ToUnit(unit) + elseif pitch > params.maxPitch then + MESSAGE:New(string.format("Pitch - NOK out of parameters (%d°)!", pitch or 0),9,"PARAM"):ToUnit(unit) + elseif alt < params.minAlt or alt > params.maxAlt then + MESSAGE:New(string.format("AGL - NOK too high or too low (%dm)!", alt or 0),9,"PARAM"):ToUnit(unit) + else + MESSAGE:New("Params - OK!",9,"PARAM"):ToUnit(unit) + end + end + + end + local debugunitset if self.debug == true then self:I(self.lid.."FindTargets Debug SET_UNIT created")