From 591dd128ce4d00808684196ea0186f390b5b0672 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 9 Oct 2020 00:15:19 +0200 Subject: [PATCH] Navygroup --- Moose Development/Moose/Ops/NavyGroup.lua | 74 ++++++++--------------- Moose Development/Moose/Ops/OpsGroup.lua | 35 +++++++---- 2 files changed, 49 insertions(+), 60 deletions(-) diff --git a/Moose Development/Moose/Ops/NavyGroup.lua b/Moose Development/Moose/Ops/NavyGroup.lua index 4dcf3f739..fad6bd75a 100644 --- a/Moose Development/Moose/Ops/NavyGroup.lua +++ b/Moose Development/Moose/Ops/NavyGroup.lua @@ -617,65 +617,43 @@ function NAVYGROUP:onafterUpdateRoute(From, Event, To, n, Speed, Depth) -- Waypoints. local waypoints={} - -- Add remaining waypoints to route. - local depth=nil - for i=n, #self.waypoints do - - -- Waypoint. - local wp=UTILS.DeepCopy(self.waypoints[i]) --Ops.OpsGroup#OPSGROUP.Waypoint - - -- Check if next wp. - if i==n then + -- Waypoint. + local wp=UTILS.DeepCopy(self.waypoints[n]) --Ops.OpsGroup#OPSGROUP.Waypoint - -- Speed. - if Speed then - -- Take speed specified. - wp.speed=UTILS.KnotsToMps(Speed) - else - -- Take default waypoint speed. But make sure speed>0 if patrol ad infinitum. - if self.adinfinitum and wp.speed<0.1 then - wp.speed=UTILS.KmphToMps(self.speedCruise) - end - end - - if Depth then - wp.alt=-Depth - elseif self.depth then - wp.alt=-self.depth - else - -- Take default waypoint alt. - end - - -- Current set speed in m/s. - self.speedWp=wp.speed - - -- Current set depth. - depth=wp.alt - - else - - -- Dive depth is applied to all other waypoints. - if self.depth then - wp.alt=-self.depth - else - -- Take default waypoint depth. - end - + -- Speed. + if Speed then + -- Take speed specified. + wp.speed=UTILS.KnotsToMps(Speed) + else + -- Take default waypoint speed. But make sure speed>0 if patrol ad infinitum. + if self.adinfinitum and wp.speed<0.1 then + wp.speed=UTILS.KmphToMps(self.speedCruise) end - - -- Add waypoint. - table.insert(waypoints, wp) end + if Depth then + wp.alt=-Depth + elseif self.depth then + wp.alt=-self.depth + else + -- Take default waypoint alt. + end + + -- Current set speed in m/s. + self.speedWp=wp.speed + + -- Add waypoint. + table.insert(waypoints, wp) + -- Current waypoint. - local current=self:GetCoordinate():WaypointNaval(UTILS.MpsToKmph(self.speedWp), depth) + local current=self:GetCoordinate():WaypointNaval(UTILS.MpsToKmph(self.speedWp), wp.alt) table.insert(waypoints, 1, current) if #waypoints>1 then self:T(self.lid..string.format("Updateing route: WP %d-->%d-->%d (#%d), Speed=%.1f knots, Depth=%d m", - self.currentwp, n, #self.waypoints, #waypoints-1, UTILS.MpsToKnots(self.speedWp), depth)) + self.currentwp, n, #self.waypoints, #waypoints-1, UTILS.MpsToKnots(self.speedWp), wp.alt)) -- Route group to all defined waypoints remaining. diff --git a/Moose Development/Moose/Ops/OpsGroup.lua b/Moose Development/Moose/Ops/OpsGroup.lua index 2d0010b78..6d10ae8e1 100644 --- a/Moose Development/Moose/Ops/OpsGroup.lua +++ b/Moose Development/Moose/Ops/OpsGroup.lua @@ -2682,10 +2682,10 @@ function OPSGROUP:onafterPassingWaypoint(From, Event, To, Waypoint) end - -- Check if all tasks/mission are done? If so, RTB or WAIT. + -- Check if all tasks/mission are done? -- Note, we delay it for a second to let the OnAfterPassingwaypoint function to be executed in case someone wants to add another waypoint there. if ntasks==0 then - self:_CheckGroupDone() + self:_CheckGroupDone(0.1) end -- Debug info. @@ -3061,23 +3061,34 @@ function OPSGROUP:_CheckGroupDone(delay) self:ScheduleOnce(delay, self._CheckGroupDone, self) else + local waypoint=self:GetWaypoint(self.currentwp) + + local n=self:GetTasksWaypoint(id) + if self.adinfinitum then --- -- Parol Ad Infinitum --- + + if #self.waypoints>0 then - -- Next waypoint index. - local i=self:GetWaypointIndexNext(true) - - -- Get positive speed to first waypoint. - local speed=self:GetSpeedToWaypoint(i) - - -- Start route at first waypoint. - self:UpdateRoute(i, speed) - - self:T(self.lid..string.format("Adinfinitum=TRUE ==> Goto WP index=%d at speed=%d knots", i, speed)) + -- Next waypoint index. + local i=self:GetWaypointIndexNext(true) + + -- Get positive speed to first waypoint. + local speed=self:GetSpeedToWaypoint(i) + + -- Start route at first waypoint. + self:UpdateRoute(i, speed) + + self:T(self.lid..string.format("Adinfinitum=TRUE ==> Goto WP index=%d at speed=%d knots", i, speed)) + + else + self:E(self.lid..string.format("WARNING: No waypoints left! Commanding a Full Stop")) + self:__FullStop(-1) + end else