PATROLZONE class + integration of PATROLZONE class in AIBALANCER class + documentation.

This commit is contained in:
FlightControl 2016-06-18 23:13:33 +02:00
parent b2bd37edbc
commit ffbc4a838e
66 changed files with 4491 additions and 61 deletions

View File

@ -22,14 +22,8 @@
-- --
-- 1.3) AIBALANCER allows AI to patrol specific zones: -- 1.3) AIBALANCER allows AI to patrol specific zones:
-- --------------------------------------------------- -- ---------------------------------------------------
-- Use @{AIBalancer#AIBALANCER.AddPatrolZone}() to specify zones where airplanes need patrol a zone ( @{Zone} ) for a specific time, at a specific altitude, with a specific speed. -- Use @{AIBalancer#AIBALANCER.SetPatrolZone}() to specify a zone where the AI needs to patrol.
-- Multiple zones can be patrolled, calling @{AIBalancer#AIBALANCER.AddPatrolZone}() multiple times. The AI will patrol at a random zone in the list.
-- And when the PatrolTime is finished, it will patrol another zone.
-- --
-- 1.4) AIRBALANCER manages AI out of fuel events:
-- -----------------------------------------------
-- Once an AI is out of fuel, it will contact the home base, so that on time, a new replacement AI is spawned, while the old will orbit for a specific time and RTB.
-- Use @{AIBalancer#AIBALANCER.GuardFuel}() to guard for each AI the fuel status.
-- --
-- === -- ===
-- --
@ -40,8 +34,8 @@
-- James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-) -- James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)
-- --
-- **SNAFU** -- **SNAFU**
-- Had a couple of mails with the guys to validate, if the same concept in the GTI/CAP script could be reworked within MOOSE. -- Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE.
-- Non of the script code has been used however within the new AIBALANCER moose class. -- None of the script code has been used however within the new AIBALANCER moose class.
-- --
-- @module AIBalancer -- @module AIBalancer
-- @author FlightControl -- @author FlightControl
@ -54,6 +48,7 @@
-- @field Set#SET_AIRBASE ReturnAirbaseSet -- @field Set#SET_AIRBASE ReturnAirbaseSet
-- @field DCSTypes#Distance ReturnTresholdRange -- @field DCSTypes#Distance ReturnTresholdRange
-- @field #boolean ToHomeAirbase -- @field #boolean ToHomeAirbase
-- @field PatrolZone#PATROLZONE PatrolZone
-- @extends Base#BASE -- @extends Base#BASE
AIBALANCER = { AIBALANCER = {
ClassName = "AIBALANCER", ClassName = "AIBALANCER",
@ -119,6 +114,15 @@ function AIBALANCER:ReturnToHomeAirbase( ReturnTresholdRange )
self.ReturnTresholdRange = ReturnTresholdRange self.ReturnTresholdRange = ReturnTresholdRange
end end
--- Let the AI patrol a @{Zone} with a given Speed range and Altitude range.
-- @param #AIBALANCER self
-- @param PatrolZone#PATROLZONE PatrolZone The @{PatrolZone} where the AI needs to patrol.
-- @return PatrolZone#PATROLZONE self
function AIBALANCER:SetPatrolZone( PatrolZone )
self.PatrolZone = PatrolZone
end
--- @param #AIBALANCER self --- @param #AIBALANCER self
function AIBALANCER:_ClientAliveMonitorScheduler() function AIBALANCER:_ClientAliveMonitorScheduler()
@ -133,6 +137,12 @@ function AIBALANCER:_ClientAliveMonitorScheduler()
local AIGroup = Client:GetState( self, 'AIGroup' ) -- Group#GROUP local AIGroup = Client:GetState( self, 'AIGroup' ) -- Group#GROUP
local PatrolZone = Client:GetState( self, "PatrolZone" )
if PatrolZone then
PatrolZone = nil
Client:ClearState( self, "PatrolZone" )
end
if self.ToNearestAirbase == false and self.ToHomeAirbase == false then if self.ToNearestAirbase == false and self.ToHomeAirbase == false then
AIGroup:Destroy() AIGroup:Destroy()
else else
@ -193,7 +203,27 @@ function AIBALANCER:_ClientAliveMonitorScheduler()
-- OK, spawn a new group from the SpawnAI objects provided. -- OK, spawn a new group from the SpawnAI objects provided.
local SpawnAICount = #self.SpawnAI local SpawnAICount = #self.SpawnAI
local SpawnAIIndex = math.random( 1, SpawnAICount ) local SpawnAIIndex = math.random( 1, SpawnAICount )
Client:SetState( self, 'AIGroup', self.SpawnAI[SpawnAIIndex]:Spawn() ) local AIGroup = self.SpawnAI[SpawnAIIndex]:Spawn()
Client:SetState( self, 'AIGroup', AIGroup )
--- Now test if the AIGroup needs to patrol a zone, otherwise let it follow its route...
if self.PatrolZone then
local PatrolZone = PATROLZONE:New(
self.PatrolZone.PatrolZone,
self.PatrolZone.PatrolFloorAltitude,
self.PatrolZone.PatrolCeilingAltitude,
self.PatrolZone.PatrolMinSpeed,
self.PatrolPatrolMaxSpeed
)
if self.PatrolZone.PatrolManageFuel == true then
PatrolZone:ManageFuel( self.PatrolZone.PatrolFuelTresholdPercentage, self.PatrolZone.PatrolOutOfFuelOrbitTime )
end
PatrolZone:SetGroup( AIGroup )
Client:SetState( self, "PatrolZone", PatrolZone )
end
end end
end end
end end

View File

@ -494,10 +494,15 @@ end
-- Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan. -- Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan.
-- Note that when WayPointInitialize is called, the Mission of the group is RESTARTED! -- Note that when WayPointInitialize is called, the Mission of the group is RESTARTED!
-- @param #GROUP self -- @param #GROUP self
-- @param #table WayPoints If WayPoints is given, then use the route.
-- @return #GROUP -- @return #GROUP
function GROUP:WayPointInitialize() function GROUP:WayPointInitialize( WayPoints )
self.WayPoints = self:GetTaskRoute() if WayPoints then
self.WayPoints = WayPoints
else
self.WayPoints = self:GetTaskRoute()
end
return self return self
end end

View File

@ -36,6 +36,7 @@ Include.File( "Movement" )
Include.File( "Sead" ) Include.File( "Sead" )
Include.File( "Escort" ) Include.File( "Escort" )
Include.File( "MissileTrainer" ) Include.File( "MissileTrainer" )
Include.File( "PatrolZone" )
Include.File( "AIBalancer" ) Include.File( "AIBalancer" )
Include.File( "AirbasePolice" ) Include.File( "AirbasePolice" )

View File

@ -14,8 +14,17 @@
-- -------------------------------------- -- --------------------------------------
-- The following methods are available to modify the parameters of a PATROLZONE object: -- The following methods are available to modify the parameters of a PATROLZONE object:
-- --
-- * @{PatrolZone#PATROLZONE.SetSpeed}(): Set the patrol speed of the AI, while patrolling. -- * @{PatrolZone#PATROLZONE.SetGroup}(): Set the AI Patrol Group.
-- * @{PatrolZone#PATROLZONE.SetAltitude}(): Set altitude of the AI, while patrolling. -- * @{PatrolZone#PATROLZONE.SetSpeed}(): Set the patrol speed of the AI, for the next patrol.
-- * @{PatrolZone#PATROLZONE.SetAltitude}(): Set altitude of the AI, for the next patrol.
--
-- 1.3) Manage the out of fuel in the PATROLZONE:
-- ----------------------------------------------
-- When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base.
-- Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
-- When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE.
-- Once the time is finished, the old PatrolGroup will return to the base.
-- Use the method @{PatrolZone#PATROLZONE.ManageFuel}() to have this proces in place.
-- --
-- === -- ===
-- --
@ -25,6 +34,12 @@
--- PATROLZONE class --- PATROLZONE class
-- @type PATROLZONE -- @type PATROLZONE
-- @field Group#GROUP PatrolGroup The @{Group} patrolling.
-- @field Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @field DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @field DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @field DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h.
-- @field DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h.
-- @extends Base#BASE -- @extends Base#BASE
PATROLZONE = { PATROLZONE = {
ClassName = "PATROLZONE", ClassName = "PATROLZONE",
@ -32,7 +47,6 @@ PATROLZONE = {
--- Creates a new PATROLZONE object, taking a @{Group} object as a parameter. The GROUP needs to be alive. --- Creates a new PATROLZONE object, taking a @{Group} object as a parameter. The GROUP needs to be alive.
-- @param #PATROLZONE self -- @param #PATROLZONE self
-- @param Group#GROUP PatrolGroup The @{Group} patrolling.
-- @param Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. -- @param Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @param DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @param DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. -- @param DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
@ -44,12 +58,11 @@ PATROLZONE = {
-- PatrolZone = ZONE:New( 'PatrolZone' ) -- PatrolZone = ZONE:New( 'PatrolZone' )
-- PatrolGroup = GROUP:FindByName( "Patrol Group" ) -- PatrolGroup = GROUP:FindByName( "Patrol Group" )
-- PatrolArea = PATROLZONE:New( PatrolGroup, PatrolZone, 3000, 6000, 600, 900 ) -- PatrolArea = PATROLZONE:New( PatrolGroup, PatrolZone, 3000, 6000, 600, 900 )
function PATROLZONE:New( PatrolGroup, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) function PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, BASE:New() ) local self = BASE:Inherit( self, BASE:New() )
self.PatrolGroup = PatrolGroup
self.PatrolZone = PatrolZone self.PatrolZone = PatrolZone
self.PatrolFloorAltitude = PatrolFloorAltitude self.PatrolFloorAltitude = PatrolFloorAltitude
self.PatrolCeilingAltitude = PatrolCeilingAltitude self.PatrolCeilingAltitude = PatrolCeilingAltitude
@ -58,3 +71,194 @@ function PATROLZONE:New( PatrolGroup, PatrolZone, PatrolFloorAltitude, PatrolCei
return self return self
end end
--- Set the @{Group} to act as the Patroller.
-- @param #PATROLZONE self
-- @param Group#GROUP PatrolGroup The @{Group} patrolling.
-- @return #PATROLZONE self
function PATROLZONE:SetGroup( PatrolGroup )
self.PatrolGroup = PatrolGroup
self.PatrolGroupTemplateName = PatrolGroup:GetName()
self:NewPatrolRoute()
if not self.PatrolOutOfFuelMonitor then
self.PatrolOutOfFuelMonitor = SCHEDULER:New( self, self._MonitorOutOfFuelScheduled, {}, 60, 120, 0.2 )
self.SpawnPatrolGroup = SPAWN:New( self.PatrolGroupTemplateName )
end
return self
end
--- Sets (modifies) the minimum and maximum speed of the patrol.
-- @param #PATROLZONE self
-- @param DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Group} in km/h.
-- @param DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Group} in km/h.
-- @return #PATROLZONE self
function PATROLZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed )
self:F2( { PatrolMinSpeed, PatrolMaxSpeed } )
self.PatrolMinSpeed = PatrolMinSpeed
self.PatrolMaxSpeed = PatrolMaxSpeed
end
--- Sets the floor and ceiling altitude of the patrol.
-- @param #PATROLZONE self
-- @param DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @return #PATROLZONE self
function PATROLZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude )
self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } )
self.PatrolFloorAltitude = PatrolFloorAltitude
self.PatrolCeilingAltitude = PatrolCeilingAltitude
end
--- @param Group#GROUP PatrolGroup
function _NewPatrolRoute( PatrolGroup )
PatrolGroup:T( "NewPatrolRoute" )
local PatrolZone = PatrolGroup:GetState( PatrolGroup, "PatrolZone" ) -- PatrolZone#PATROLZONE
PatrolZone:NewPatrolRoute()
end
--- Defines a new patrol route using the @{PatrolZone} parameters and settings.
-- @param #PATROLZONE self
-- @return #PATROLZONE self
function PATROLZONE:NewPatrolRoute()
self:F2()
local PatrolRoute = {}
if self.PatrolGroup:IsAlive() then
--- Determine if the PatrolGroup is within the PatrolZone.
-- If not, make a waypoint within the to that the PatrolGroup will fly at maximum speed to that point.
-- --- Calculate the current route point.
-- local CurrentVec2 = self.PatrolGroup:GetPointVec2()
-- local CurrentAltitude = self.PatrolGroup:GetUnit(1):GetAltitude()
-- local CurrentPointVec3 = POINT_VEC3:New( CurrentVec2.x, CurrentAltitude, CurrentVec2.y )
-- local CurrentRoutePoint = CurrentPointVec3:RoutePointAir(
-- POINT_VEC3.RoutePointAltType.BARO,
-- POINT_VEC3.RoutePointType.TurningPoint,
-- POINT_VEC3.RoutePointAction.TurningPoint,
-- ToPatrolZoneSpeed,
-- true
-- )
--
-- PatrolRoute[#PatrolRoute+1] = CurrentRoutePoint
self:T2( PatrolRoute )
if self.PatrolGroup:IsNotInZone( self.PatrolZone ) then
--- Find a random 2D point in PatrolZone.
local ToPatrolZoneVec2 = self.PatrolZone:GetRandomVec2()
self:T2( ToPatrolZoneVec2 )
--- Define Speed and Altitude.
local ToPatrolZoneAltitude = math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude )
local ToPatrolZoneSpeed = self.PatrolMaxSpeed
--- Obtain a 3D @{Point} from the 2D point + altitude.
self:T2( ToPatrolZoneVec2.x )
self:T2( ToPatrolZoneVec2.y )
local ToPatrolZonePointVec3 = POINT_VEC3:New( ToPatrolZoneVec2.x, ToPatrolZoneAltitude, ToPatrolZoneVec2.y )
--- Create a route point of type air.
local ToPatrolZoneRoutePoint = ToPatrolZonePointVec3:RoutePointAir(
POINT_VEC3.RoutePointAltType.BARO,
POINT_VEC3.RoutePointType.TurningPoint,
POINT_VEC3.RoutePointAction.TurningPoint,
ToPatrolZoneSpeed,
true
)
PatrolRoute[#PatrolRoute+1] = ToPatrolZoneRoutePoint
end
--- Define a random point in the @{Zone}. The AI will fly to that point within the zone.
--- Find a random 2D point in PatrolZone.
local ToTargetVec2 = self.PatrolZone:GetRandomVec2()
self:T2( ToTargetVec2 )
--- Define Speed and Altitude.
local ToTargetAltitude = math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude )
local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed )
--- Obtain a 3D @{Point} from the 2D point + altitude.
local ToTargetPointVec3 = POINT_VEC3:New( ToTargetVec2.x, ToTargetAltitude, ToTargetVec2.y )
--- Create a route point of type air.
local ToTargetRoutePoint = ToTargetPointVec3:RoutePointAir(
POINT_VEC3.RoutePointAltType.BARO,
POINT_VEC3.RoutePointType.TurningPoint,
POINT_VEC3.RoutePointAction.TurningPoint,
ToTargetSpeed,
true
)
ToTargetPointVec3:SmokeRed()
PatrolRoute[#PatrolRoute+1] = ToTargetRoutePoint
--- Now we're going to do something special, we're going to call a function from a waypoint action at the PatrolGroup...
self.PatrolGroup:WayPointInitialize( PatrolRoute )
--- Do a trick, link the NewPatrolRoute function of the PATROLGROUP object to the PatrolGroupin a temporary variable ...
self.PatrolGroup:SetState( self.PatrolGroup, "PatrolZone", self )
self.PatrolGroup:WayPointFunction( #PatrolRoute, 1, "_NewPatrolRoute" )
--- NOW ROUTE THE GROUP!
self.PatrolGroup:WayPointExecute( 1, 2 )
end
end
--- When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base.
-- Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
-- When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE.
-- Once the time is finished, the old PatrolGroup will return to the base.
-- @param #PATROLZONE self
-- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the PatrolGroup is considered to get out of fuel.
-- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel PatrolGroup will orbit before returning to the base.
-- @return #PATROLZONE self
function PATROLZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime )
self.PatrolManageFuel = true
self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage
self.PatrolOutOfFuelOrbitTime = PatrolOutOfFuelOrbitTime
if self.PatrolGroup then
self.PatrolOutOfFuelMonitor = SCHEDULER:New( self, self._MonitorOutOfFuelScheduled, {}, 60, 120, 0.2 )
self.SpawnPatrolGroup = SPAWN:New( self.PatrolGroupTemplateName )
end
return self
end
--- @param #PATROLZONE self
function PATROLZONE:_MonitorOutOfFuelScheduled()
if self.PatrolGroup and self.PatrolGroup:IsAlive() then
local Fuel = self.PatrolGroup:GetUnit(1):GetFuel()
if Fuel < self.PatrolFuelTresholdPercentage then
local OldPatrolGroup = self.PatrolGroup
local PatrolGroupTemplate = self.PatrolGroup:GetTemplate()
local OrbitTask = OldPatrolGroup:TaskOrbitCircle( math.random( self.PatrolFloorAltitude, self.PatrolCeilingAltitude ), self.PatrolMinSpeed )
local TimedOrbitTask = OldPatrolGroup:TaskControlled( OrbitTask, OldPatrolGroup:TaskCondition(nil,nil,nil,nil,self.PatrolOutOfFuelOrbitTime,nil ) )
OldPatrolGroup:SetTask( TimedOrbitTask, 10 )
local NewPatrolGroup = self.SpawnPatrolGroup:Spawn()
self.PatrolGroup = NewPatrolGroup
self:NewPatrolRoute()
end
else
self.PatrolOutOfFuelMonitor:Stop()
end
end

View File

@ -30,6 +30,9 @@
-- @extends Base#BASE -- @extends Base#BASE
-- @field #POINT_VEC3.SmokeColor SmokeColor -- @field #POINT_VEC3.SmokeColor SmokeColor
-- @field #POINT_VEC3.FlareColor FlareColor -- @field #POINT_VEC3.FlareColor FlareColor
-- @field #POINT_VEC3.RoutePointAltType RoutePointAltType
-- @field #POINT_VEC3.RoutePointType RoutePointType
-- @field #POINT_VEC3.RoutePointAction RoutePointAction
POINT_VEC3 = { POINT_VEC3 = {
ClassName = "POINT_VEC3", ClassName = "POINT_VEC3",
SmokeColor = { SmokeColor = {
@ -38,14 +41,24 @@ POINT_VEC3 = {
White = trigger.smokeColor.White, White = trigger.smokeColor.White,
Orange = trigger.smokeColor.Orange, Orange = trigger.smokeColor.Orange,
Blue = trigger.smokeColor.Blue Blue = trigger.smokeColor.Blue
}, },
FlareColor = { FlareColor = {
Green = trigger.flareColor.Green, Green = trigger.flareColor.Green,
Red = trigger.flareColor.Red, Red = trigger.flareColor.Red,
White = trigger.flareColor.White, White = trigger.flareColor.White,
Yellow = trigger.flareColor.Yellow Yellow = trigger.flareColor.Yellow
}, },
} RoutePointAltType = {
BARO = "BARO",
},
RoutePointType = {
TurningPoint = "Turning Point",
},
RoutePointAction = {
TurningPoint = "Turning Point",
},
}
--- SmokeColor --- SmokeColor
-- @type POINT_VEC3.SmokeColor -- @type POINT_VEC3.SmokeColor
@ -55,6 +68,8 @@ POINT_VEC3 = {
-- @field Orange -- @field Orange
-- @field Blue -- @field Blue
--- FlareColor --- FlareColor
-- @type POINT_VEC3.FlareColor -- @type POINT_VEC3.FlareColor
-- @field Green -- @field Green
@ -62,6 +77,26 @@ POINT_VEC3 = {
-- @field White -- @field White
-- @field Yellow -- @field Yellow
--- RoutePoint AltTypes
-- @type POINT_VEC3.RoutePointAltType
-- @field BARO "BARO"
--- RoutePoint Types
-- @type POINT_VEC3.RoutePointType
-- @field TurningPoint "Turning Point"
--- RoutePoint Actions
-- @type POINT_VEC3.RoutePointAction
-- @field TurningPoint "Turning Point"
-- Constructor. -- Constructor.
--- Create a new POINT_VEC3 object. --- Create a new POINT_VEC3 object.
@ -69,15 +104,68 @@ POINT_VEC3 = {
-- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North. -- @param DCSTypes#Distance x The x coordinate of the Vec3 point, pointing to the North.
-- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing Upwards. -- @param DCSTypes#Distance y The y coordinate of the Vec3 point, pointing Upwards.
-- @param DCSTypes#Distance z The z coordinate of the Vec3 point, pointing to the Right. -- @param DCSTypes#Distance z The z coordinate of the Vec3 point, pointing to the Right.
-- @return Point#POINT_VEC3 -- @return Point#POINT_VEC3 self
function POINT_VEC3:New( x, y, z ) function POINT_VEC3:New( x, y, z )
local self = BASE:Inherit( self, BASE:New() ) local self = BASE:Inherit( self, BASE:New() )
self:F2( { x, y, z } )
self.PointVec3 = { x = x, y = y, z = z } self.PointVec3 = { x = x, y = y, z = z }
self:F2( self.PointVec3 )
return self return self
end end
--- Build an air type route point.
-- @param #POINT_VEC3 self
-- @param #POINT_VEC3.RoutePointAltType AltType The altitude type.
-- @param #POINT_VEC3.RoutePointType Type The route point type.
-- @param #POINT_VEC3.RoutePointAction Action The route point action.
-- @param DCSTypes#Speed Speed Airspeed in km/h.
-- @param #boolean SpeedLocked true means the speed is locked.
-- @return #table The route point.
function POINT_VEC3:RoutePointAir( AltType, Type, Action, Speed, SpeedLocked )
local RoutePoint = {}
RoutePoint.x = self.PointVec3.x
RoutePoint.y = self.PointVec3.z
RoutePoint.alt = self.PointVec3.y
RoutePoint.alt_type = AltType
RoutePoint.type = Type
RoutePoint.action = Action
RoutePoint.speed = Speed
RoutePoint.speed_locked = true
RoutePoint.properties = {
["vnav"] = 1,
["scale"] = 0,
["angle"] = 0,
["vangle"] = 0,
["steer"] = 2,
}
-- ["task"] =
-- {
-- ["id"] = "ComboTask",
-- ["params"] =
-- {
-- ["tasks"] =
-- {
-- }, -- end of ["tasks"]
-- }, -- end of ["params"]
-- }, -- end of ["task"]
RoutePoint.task = {}
RoutePoint.task.id = "ComboTask"
RoutePoint.task.params = {}
RoutePoint.task.params.tasks = {}
return RoutePoint
end
--- Smokes the point in a color. --- Smokes the point in a color.
-- @param #POINT_VEC3 self -- @param #POINT_VEC3 self
-- @param Point#POINT_VEC3.SmokeColor SmokeColor -- @param Point#POINT_VEC3.SmokeColor SmokeColor

View File

@ -77,6 +77,15 @@ ZONE_BASE = {
ClassName = "ZONE_BASE", ClassName = "ZONE_BASE",
} }
--- The ZONE_BASE.BoundingSquare
-- @type ZONE_BASE.BoundingSquare
-- @field DCSTypes#Distance x1 The lower x coordinate (left down)
-- @field DCSTypes#Distance y1 The lower y coordinate (left down)
-- @field DCSTypes#Distance x2 The higher x coordinate (right up)
-- @field DCSTypes#Distance y2 The higher y coordinate (right up)
--- ZONE_BASE constructor --- ZONE_BASE constructor
-- @param #ZONE_BASE self -- @param #ZONE_BASE self
-- @param #string ZoneName Name of the zone. -- @param #string ZoneName Name of the zone.
@ -91,7 +100,7 @@ function ZONE_BASE:New( ZoneName )
end end
--- Returns if a location is within the zone. --- Returns if a location is within the zone.
-- @param #ZONE_RADIUS self -- @param #ZONE_BASE self
-- @param DCSTypes#Vec2 PointVec2 The location to test. -- @param DCSTypes#Vec2 PointVec2 The location to test.
-- @return #boolean true if the location is within the zone. -- @return #boolean true if the location is within the zone.
function ZONE_BASE:IsPointVec2InZone( PointVec2 ) function ZONE_BASE:IsPointVec2InZone( PointVec2 )
@ -101,7 +110,7 @@ function ZONE_BASE:IsPointVec2InZone( PointVec2 )
end end
--- Returns if a point is within the zone. --- Returns if a point is within the zone.
-- @param #ZONE_RADIUS self -- @param #ZONE_BASE self
-- @param DCSTypes#Vec3 PointVec3 The point to test. -- @param DCSTypes#Vec3 PointVec3 The point to test.
-- @return #boolean true if the point is within the zone. -- @return #boolean true if the point is within the zone.
function ZONE_BASE:IsPointVec3InZone( PointVec3 ) function ZONE_BASE:IsPointVec3InZone( PointVec3 )
@ -112,6 +121,21 @@ function ZONE_BASE:IsPointVec3InZone( PointVec3 )
return InZone return InZone
end end
--- Define a random @{DCSTypes#Vec2} within the zone.
-- @param #ZONE_BASE self
-- @return DCSTypes#Vec2 The Vec2 coordinates.
function ZONE_BASE:GetRandomVec2()
return { x = 0, y = 0 }
end
--- Get the bounding square the zone.
-- @param #ZONE_BASE self
-- @return #ZONE_BASE.BoundingSquare The bounding square.
function ZONE_BASE:GetBoundingSquare()
return { x1 = 0, y1 = 0, x2 = 0, y2 = 0 }
end
--- Smokes the zone boundaries in a color. --- Smokes the zone boundaries in a color.
-- @param #ZONE_BASE self -- @param #ZONE_BASE self
-- @param SmokeColor The smoke color. -- @param SmokeColor The smoke color.
@ -495,6 +519,55 @@ function ZONE_POLYGON_BASE:IsPointVec2InZone( PointVec2 )
return c return c
end end
--- Define a random @{DCSTypes#Vec2} within the zone.
-- @param #ZONE_POLYGON_BASE self
-- @return DCSTypes#Vec2 The Vec2 coordinate.
function ZONE_POLYGON_BASE:GetRandomVec2()
self:F2()
--- It is a bit tricky to find a random point within a polygon. Right now i am doing it the dirty and inefficient way...
local Vec2Found = false
local Vec2
local BS = self:GetBoundingSquare()
self:T2( BS )
while Vec2Found == false do
Vec2 = { x = math.random( BS.x1, BS.x2 ), y = math.random( BS.y1, BS.y2 ) }
self:T2( Vec2 )
if self:IsPointVec2InZone( Vec2 ) then
Vec2Found = true
end
end
self:T2( Vec2 )
return Vec2
end
--- Get the bounding square the zone.
-- @param #ZONE_POLYGON_BASE self
-- @return #ZONE_POLYGON_BASE.BoundingSquare The bounding square.
function ZONE_POLYGON_BASE:GetBoundingSquare()
local x1 = self.Polygon[1].x
local y1 = self.Polygon[1].y
local x2 = self.Polygon[1].x
local y2 = self.Polygon[1].y
for i = 2, #self.Polygon do
self:T2( { self.Polygon[i], x1, y1, x2, y2 } )
x1 = ( x1 > self.Polygon[i].x ) and self.Polygon[i].x or x1
x2 = ( x2 < self.Polygon[i].x ) and self.Polygon[i].x or x2
y1 = ( y1 > self.Polygon[i].y ) and self.Polygon[i].y or y1
y2 = ( y2 < self.Polygon[i].y ) and self.Polygon[i].y or y2
end
return { x1 = x1, y1 = y1, x2 = x2, y2 = y2 }
end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -74,7 +74,9 @@ COPY /b Moose.lua + %1\Movement.lua Moose.lua
COPY /b Moose.lua + %1\Sead.lua Moose.lua COPY /b Moose.lua + %1\Sead.lua Moose.lua
COPY /b Moose.lua + %1\Escort.lua Moose.lua COPY /b Moose.lua + %1\Escort.lua Moose.lua
COPY /b Moose.lua + %1\MissileTrainer.lua Moose.lua COPY /b Moose.lua + %1\MissileTrainer.lua Moose.lua
COPY /b Moose.lua + %1\PatrolZone.lua Moose.lua
COPY /b Moose.lua + %1\AIBalancer.lua Moose.lua COPY /b Moose.lua + %1\AIBalancer.lua Moose.lua
COPY /b Moose.lua + %1\AirbasePolice.lua Moose.lua
COPY /b Moose.lua + "Moose Create Static\Moose_Trace_Off.lua" Moose.lua COPY /b Moose.lua + "Moose Create Static\Moose_Trace_Off.lua" Moose.lua

View File

@ -12,3 +12,8 @@ local RU_AirbasesSet = SET_AIRBASE:New():FilterCoalitions("red"):FilterStart()
RU_AirbasesSet:Flush() RU_AirbasesSet:Flush()
RU_AIBalancer:ReturnToNearestAirbases( 10000, RU_AirbasesSet ) RU_AIBalancer:ReturnToNearestAirbases( 10000, RU_AirbasesSet )
--RU_AIBalancer:ReturnToHomeAirbase( 10000 ) --RU_AIBalancer:ReturnToHomeAirbase( 10000 )
local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone" )
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
local PatrolZone = PATROLZONE:New( PatrolZone, 3000, 6000, 300, 600 ):ManageFuel( 0.2, 60 )
RU_AIBalancer:SetPatrolZone( PatrolZone )

View File

@ -0,0 +1,8 @@
local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone" )
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
local PatrolGroup = GROUP:FindByName( "Patrol Group" )
local Patrol = PATROLZONE:New( PatrolGroup, PatrolZone, 3000, 6000, 300, 600 )
Patrol:ManageFuel( 0.2, 60 )

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>
@ -90,7 +91,7 @@ There will be as many AI GROUPS spawned as there at CLIENTS in SET</em>CLIENT no
<li><a href="##(AIBALANCER).New">AIBALANCER.New</a>: Creates a new AIBALANCER object.</li> <li><a href="##(AIBALANCER).New">AIBALANCER.New</a>: Creates a new AIBALANCER object.</li>
</ul> </ul>
<h2>1.2) AIBALANCER return AI to Airbases:</h2> <h2>1.2) AIBALANCER returns AI to Airbases:</h2>
<p>You can configure to have the AI to return to:</p> <p>You can configure to have the AI to return to:</p>
<ul> <ul>
@ -98,6 +99,10 @@ There will be as many AI GROUPS spawned as there at CLIENTS in SET</em>CLIENT no
<li><a href="##(AIBALANCER).ReturnToNearestAirbases">AIBALANCER.ReturnToNearestAirbases</a>: Returns the AI to the nearest friendly <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</li> <li><a href="##(AIBALANCER).ReturnToNearestAirbases">AIBALANCER.ReturnToNearestAirbases</a>: Returns the AI to the nearest friendly <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</li>
</ul> </ul>
<h2>1.3) AIBALANCER allows AI to patrol specific zones:</h2>
<p>Use <a href="AIBalancer.html##(AIBALANCER).SetPatrolZone">AIBalancer#AIBALANCER.SetPatrolZone</a>() to specify a zone where the AI needs to patrol.</p>
<hr/> <hr/>
<h1>CREDITS</h1> <h1>CREDITS</h1>
@ -105,6 +110,10 @@ There will be as many AI GROUPS spawned as there at CLIENTS in SET</em>CLIENT no
Working together with James has resulted in the creation of the AIBALANCER class. Working together with James has resulted in the creation of the AIBALANCER class.
James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)</p> James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)</p>
<p><strong>SNAFU</strong>
Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE.
None of the script code has been used however within the new AIBALANCER moose class.</p>
<h2>Global(s)</h2> <h2>Global(s)</h2>
<table class="function_list"> <table class="function_list">
@ -127,6 +136,12 @@ James has shared his ideas on balancing AI with air units, and together we made
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).New">AIBALANCER:New(SetClient, SpawnAI)</a></td> <td class="name" nowrap="nowrap"><a href="##(AIBALANCER).New">AIBALANCER:New(SetClient, SpawnAI)</a></td>
<td class="summary"> <td class="summary">
<p>Creates a new AIBALANCER object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names.</p> <p>Creates a new AIBALANCER object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).PatrolZone">AIBALANCER.PatrolZone</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -157,6 +172,12 @@ James has shared his ideas on balancing AI with air units, and together we made
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).SetClient">AIBALANCER.SetClient</a></td> <td class="name" nowrap="nowrap"><a href="##(AIBALANCER).SetClient">AIBALANCER.SetClient</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).SetPatrolZone">AIBALANCER:SetPatrolZone(PatrolZone)</a></td>
<td class="summary">
<p>Let the AI patrol a <a href="Zone.html">Zone</a> with a given Speed range and Altitude range.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -252,6 +273,20 @@ A SPAWN object that will spawn the AI units required, balancing the SetClient.</
<p><em><a href="##(AIBALANCER)">#AIBALANCER</a>:</em> <p><em><a href="##(AIBALANCER)">#AIBALANCER</a>:</em>
self</p> self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="PatrolZone.html##(PATROLZONE)">PatrolZone#PATROLZONE</a></em>
<a id="#(AIBALANCER).PatrolZone" >
<strong>AIBALANCER.PatrolZone</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@ -344,6 +379,33 @@ The SET of <a href="Set.html##(SET_AIRBASE)">Set#SET_AIRBASE</a>s to evaluate wh
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AIBALANCER).SetPatrolZone" >
<strong>AIBALANCER:SetPatrolZone(PatrolZone)</strong>
</a>
</dt>
<dd>
<p>Let the AI patrol a <a href="Zone.html">Zone</a> with a given Speed range and Altitude range.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="PatrolZone.html##(PATROLZONE)">PatrolZone#PATROLZONE</a> PatrolZone </em></code>:
The <a href="PatrolZone.html">PatrolZone</a> where the AI needs to patrol.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="PatrolZone.html##(PATROLZONE)">PatrolZone#PATROLZONE</a>:</em>
self</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>
@ -960,7 +961,7 @@ A speed can be given in km/h.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).WayPointInitialize">GROUP:WayPointInitialize()</a></td> <td class="name" nowrap="nowrap"><a href="##(GROUP).WayPointInitialize">GROUP:WayPointInitialize(WayPoints)</a></td>
<td class="summary"> <td class="summary">
<p> Retrieve the group mission and allow to place function hooks within the mission waypoint plan.</p> <p> Retrieve the group mission and allow to place function hooks within the mission waypoint plan.</p>
</td> </td>
@ -4231,7 +4232,7 @@ The waypoint function to be called when the group moves over the waypoint. The w
<dt> <dt>
<a id="#(GROUP).WayPointInitialize" > <a id="#(GROUP).WayPointInitialize" >
<strong>GROUP:WayPointInitialize()</strong> <strong>GROUP:WayPointInitialize(WayPoints)</strong>
</a> </a>
</dt> </dt>
<dd> <dd>
@ -4243,6 +4244,15 @@ The waypoint function to be called when the group moves over the waypoint. The w
Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan. Use the method @{Group@GROUP:WayPointExecute) to start the execution of the new mission plan.
Note that when WayPointInitialize is called, the Mission of the group is RESTARTED!</p> Note that when WayPointInitialize is called, the Mission of the group is RESTARTED!</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#table WayPoints </em></code>:
If WayPoints is given, then use the route.</p>
</li>
</ul>
<h3>Return value</h3> <h3>Return value</h3>
<p><em><a href="##(GROUP)">#GROUP</a>:</em></p> <p><em><a href="##(GROUP)">#GROUP</a>:</em></p>

View File

@ -52,6 +52,7 @@
<li>Mission</li> <li>Mission</li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li>NOTASK</li> <li>NOTASK</li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li>PICKUPTASK</li> <li>PICKUPTASK</li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -0,0 +1,698 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="CARGO.html">CARGO</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="DCSAirbase.html">DCSAirbase</a></li>
<li><a href="DCSCoalitionObject.html">DCSCoalitionObject</a></li>
<li><a href="DCSCommand.html">DCSCommand</a></li>
<li><a href="DCSController.html">DCSController</a></li>
<li><a href="DCSGroup.html">DCSGroup</a></li>
<li><a href="DCSObject.html">DCSObject</a></li>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
<li><a href="DESTROYRADARSTASK.html">DESTROYRADARSTASK</a></li>
<li><a href="DESTROYUNITTYPESTASK.html">DESTROYUNITTYPESTASK</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="GOHOMETASK.html">GOHOMETASK</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li>PatrolZone</li>
<li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="TASK.html">TASK</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
<li><a href="routines.html">routines</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>PatrolZone</code></h1>
<p>This module contains the PATROLZONE class.</p>
<hr/>
<h1>1) <a href="Patrol.html##(PATROLZONE)">Patrol#PATROLZONE</a> class, extends <a href="Base.html##(BASE)">Base#BASE</a></h1>
<p>The <a href="Patrol.html##(PATROLZONE)">Patrol#PATROLZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a>.</p>
<h2>1.1) PATROLZONE constructor:</h2>
<p><a href="PatrolZone.html##(PATROLZONE).New">PatrolZone#PATROLZONE.New</a>(): Creates a new PATROLZONE object.</p>
<h2>1.2) Modify the PATROLZONE parameters:</h2>
<p>The following methods are available to modify the parameters of a PATROLZONE object:</p>
<pre><code>* &lt;a href="PatrolZone.html##(PATROLZONE).SetGroup"&gt;PatrolZone#PATROLZONE.SetGroup&lt;/a&gt;(): Set the AI Patrol Group.
* &lt;a href="PatrolZone.html##(PATROLZONE).SetSpeed"&gt;PatrolZone#PATROLZONE.SetSpeed&lt;/a&gt;(): Set the patrol speed of the AI, for the next patrol.
* &lt;a href="PatrolZone.html##(PATROLZONE).SetAltitude"&gt;PatrolZone#PATROLZONE.SetAltitude&lt;/a&gt;(): Set altitude of the AI, for the next patrol.
</code></pre>
<h2>1.3) Manage the out of fuel in the PATROLZONE:</h2>
<p>When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base.
Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE.
Once the time is finished, the old PatrolGroup will return to the base.
Use the method <a href="PatrolZone.html##(PATROLZONE).ManageFuel">PatrolZone#PATROLZONE.ManageFuel</a>() to have this proces in place.</p>
<hr/>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PATROLZONE">PATROLZONE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#_NewPatrolRoute">_NewPatrolRoute(PatrolGroup)</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PATROLZONE)">Type <code>PATROLZONE</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).ClassName">PATROLZONE.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).ManageFuel">PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</a></td>
<td class="summary">
<p>When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).New">PATROLZONE:New(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Creates a new PATROLZONE object, taking a <a href="Group.html">Group</a> object as a parameter.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).NewPatrolRoute">PATROLZONE:NewPatrolRoute()</a></td>
<td class="summary">
<p>Defines a new patrol route using the <a href="PatrolZone.html">PatrolZone</a> parameters and settings.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolCeilingAltitude">PATROLZONE.PatrolCeilingAltitude</a></td>
<td class="summary">
<p>The highest altitude in meters where to execute the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolFloorAltitude">PATROLZONE.PatrolFloorAltitude</a></td>
<td class="summary">
<p>The lowest altitude in meters where to execute the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolFuelTresholdPercentage">PATROLZONE.PatrolFuelTresholdPercentage</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolGroup">PATROLZONE.PatrolGroup</a></td>
<td class="summary">
<p>The <a href="Group.html">Group</a> patrolling.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolGroupTemplateName">PATROLZONE.PatrolGroupTemplateName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolManageFuel">PATROLZONE.PatrolManageFuel</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolMaxSpeed">PATROLZONE.PatrolMaxSpeed</a></td>
<td class="summary">
<p>The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolMinSpeed">PATROLZONE.PatrolMinSpeed</a></td>
<td class="summary">
<p>The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolOutOfFuelMonitor">PATROLZONE.PatrolOutOfFuelMonitor</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolOutOfFuelOrbitTime">PATROLZONE.PatrolOutOfFuelOrbitTime</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolZone">PATROLZONE.PatrolZone</a></td>
<td class="summary">
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).SetAltitude">PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</a></td>
<td class="summary">
<p>Sets the floor and ceiling altitude of the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).SetGroup">PATROLZONE:SetGroup(PatrolGroup)</a></td>
<td class="summary">
<p>Set the <a href="Group.html">Group</a> to act as the Patroller.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).SetSpeed">PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).SpawnPatrolGroup">PATROLZONE.SpawnPatrolGroup</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE)._MonitorOutOfFuelScheduled">PATROLZONE:_MonitorOutOfFuelScheduled()</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(PATROLZONE)">#PATROLZONE</a></em>
<a id="PATROLZONE" >
<strong>PATROLZONE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="_NewPatrolRoute" >
<strong>_NewPatrolRoute(PatrolGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> PatrolGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<h2><a id="#(PatrolZone)" >Type <code>PatrolZone</code></a></h2>
<h2><a id="#(PATROLZONE)" >Type <code>PATROLZONE</code></a></h2>
<p>PATROLZONE class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PATROLZONE).ClassName" >
<strong>PATROLZONE.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).ManageFuel" >
<strong>PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</strong>
</a>
</dt>
<dd>
<p>When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE.
Once the time is finished, the old PatrolGroup will return to the base.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number PatrolFuelTresholdPercentage </em></code>:
The treshold in percentage (between 0 and 1) when the PatrolGroup is considered to get out of fuel.</p>
</li>
<li>
<p><code><em>#number PatrolOutOfFuelOrbitTime </em></code>:
The amount of seconds the out of fuel PatrolGroup will orbit before returning to the base.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).New" >
<strong>PATROLZONE:New(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Creates a new PATROLZONE object, taking a <a href="Group.html">Group</a> object as a parameter.</p>
<p>The GROUP needs to be alive.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a> PatrolZone </em></code>:
The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
The lowest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
The highest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
<h3>Usage:</h3>
<pre class="example"><code>-- Define a new PATROLZONE Object. This PatrolArea will patrol a group within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
PatrolZone = ZONE:New( 'PatrolZone' )
PatrolGroup = GROUP:FindByName( "Patrol Group" )
PatrolArea = PATROLZONE:New( PatrolGroup, PatrolZone, 3000, 6000, 600, 900 )</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).NewPatrolRoute" >
<strong>PATROLZONE:NewPatrolRoute()</strong>
</a>
</dt>
<dd>
<p>Defines a new patrol route using the <a href="PatrolZone.html">PatrolZone</a> parameters and settings.</p>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a></em>
<a id="#(PATROLZONE).PatrolCeilingAltitude" >
<strong>PATROLZONE.PatrolCeilingAltitude</strong>
</a>
</dt>
<dd>
<p>The highest altitude in meters where to execute the patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a></em>
<a id="#(PATROLZONE).PatrolFloorAltitude" >
<strong>PATROLZONE.PatrolFloorAltitude</strong>
</a>
</dt>
<dd>
<p>The lowest altitude in meters where to execute the patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).PatrolFuelTresholdPercentage" >
<strong>PATROLZONE.PatrolFuelTresholdPercentage</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Group.html##(GROUP)">Group#GROUP</a></em>
<a id="#(PATROLZONE).PatrolGroup" >
<strong>PATROLZONE.PatrolGroup</strong>
</a>
</dt>
<dd>
<p>The <a href="Group.html">Group</a> patrolling.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).PatrolGroupTemplateName" >
<strong>PATROLZONE.PatrolGroupTemplateName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(PATROLZONE).PatrolManageFuel" >
<strong>PATROLZONE.PatrolManageFuel</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a></em>
<a id="#(PATROLZONE).PatrolMaxSpeed" >
<strong>PATROLZONE.PatrolMaxSpeed</strong>
</a>
</dt>
<dd>
<p>The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a></em>
<a id="#(PATROLZONE).PatrolMinSpeed" >
<strong>PATROLZONE.PatrolMinSpeed</strong>
</a>
</dt>
<dd>
<p>The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).PatrolOutOfFuelMonitor" >
<strong>PATROLZONE.PatrolOutOfFuelMonitor</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).PatrolOutOfFuelOrbitTime" >
<strong>PATROLZONE.PatrolOutOfFuelOrbitTime</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a></em>
<a id="#(PATROLZONE).PatrolZone" >
<strong>PATROLZONE.PatrolZone</strong>
</a>
</dt>
<dd>
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).SetAltitude" >
<strong>PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</strong>
</a>
</dt>
<dd>
<p>Sets the floor and ceiling altitude of the patrol.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
The lowest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
The highest altitude in meters where to execute the patrol.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).SetGroup" >
<strong>PATROLZONE:SetGroup(PatrolGroup)</strong>
</a>
</dt>
<dd>
<p>Set the <a href="Group.html">Group</a> to act as the Patroller.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> PatrolGroup </em></code>:
The <a href="Group.html">Group</a> patrolling.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).SetSpeed" >
<strong>PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).SpawnPatrolGroup" >
<strong>PATROLZONE.SpawnPatrolGroup</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE)._MonitorOutOfFuelScheduled" >
<strong>PATROLZONE:_MonitorOutOfFuelScheduled()</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li>Point</li> <li>Point</li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>
@ -197,6 +198,30 @@
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3).New">POINT_VEC3:New(x, y, z)</a></td> <td class="name" nowrap="nowrap"><a href="##(POINT_VEC3).New">POINT_VEC3:New(x, y, z)</a></td>
<td class="summary"> <td class="summary">
<p>Create a new POINT_VEC3 object.</p> <p>Create a new POINT_VEC3 object.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3).RoutePointAction">POINT_VEC3.RoutePointAction</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3).RoutePointAir">POINT_VEC3:RoutePointAir(AltType, Type, Action, Speed, SpeedLocked)</a></td>
<td class="summary">
<p>Build an air type route point.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3).RoutePointAltType">POINT_VEC3.RoutePointAltType</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3).RoutePointType">POINT_VEC3.RoutePointType</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -267,6 +292,36 @@
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.FlareColor).Yellow">POINT_VEC3.FlareColor.Yellow</a></td> <td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.FlareColor).Yellow">POINT_VEC3.FlareColor.Yellow</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
</table>
<h2><a id="#(POINT_VEC3.RoutePointAction)">Type <code>POINT_VEC3.RoutePointAction</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.RoutePointAction).TurningPoint">POINT_VEC3.RoutePointAction.TurningPoint</a></td>
<td class="summary">
<p>"Turning Point"</p>
</td>
</tr>
</table>
<h2><a id="#(POINT_VEC3.RoutePointAltType)">Type <code>POINT_VEC3.RoutePointAltType</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.RoutePointAltType).BARO">POINT_VEC3.RoutePointAltType.BARO</a></td>
<td class="summary">
<p>"BARO"</p>
</td>
</tr>
</table>
<h2><a id="#(POINT_VEC3.RoutePointType)">Type <code>POINT_VEC3.RoutePointType</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.RoutePointType).TurningPoint">POINT_VEC3.RoutePointType.TurningPoint</a></td>
<td class="summary">
<p>"Turning Point"</p>
</td> </td>
</tr> </tr>
</table> </table>
@ -670,7 +725,100 @@ The z coordinate of the Vec3 point, pointing to the Right.</p>
</ul> </ul>
<h3>Return value</h3> <h3>Return value</h3>
<p><em><a href="Point.html##(POINT_VEC3)">Point#POINT_VEC3</a>:</em></p> <p><em><a href="Point.html##(POINT_VEC3)">Point#POINT_VEC3</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(POINT_VEC3.RoutePointAction)">#POINT_VEC3.RoutePointAction</a></em>
<a id="#(POINT_VEC3).RoutePointAction" >
<strong>POINT_VEC3.RoutePointAction</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POINT_VEC3).RoutePointAir" >
<strong>POINT_VEC3:RoutePointAir(AltType, Type, Action, Speed, SpeedLocked)</strong>
</a>
</dt>
<dd>
<p>Build an air type route point.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="##(POINT_VEC3.RoutePointAltType)">#POINT_VEC3.RoutePointAltType</a> AltType </em></code>:
The altitude type.</p>
</li>
<li>
<p><code><em><a href="##(POINT_VEC3.RoutePointType)">#POINT_VEC3.RoutePointType</a> Type </em></code>:
The route point type.</p>
</li>
<li>
<p><code><em><a href="##(POINT_VEC3.RoutePointAction)">#POINT_VEC3.RoutePointAction</a> Action </em></code>:
The route point action.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> Speed </em></code>:
Airspeed in km/h.</p>
</li>
<li>
<p><code><em>#boolean SpeedLocked </em></code>:
true means the speed is locked.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#table:</em>
The route point.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(POINT_VEC3.RoutePointAltType)">#POINT_VEC3.RoutePointAltType</a></em>
<a id="#(POINT_VEC3).RoutePointAltType" >
<strong>POINT_VEC3.RoutePointAltType</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(POINT_VEC3.RoutePointType)">#POINT_VEC3.RoutePointType</a></em>
<a id="#(POINT_VEC3).RoutePointType" >
<strong>POINT_VEC3.RoutePointType</strong>
</a>
</dt>
<dd>
</dd> </dd>
@ -831,6 +979,63 @@ The z coordinate of the Vec3 point, pointing to the Right.</p>
</dd>
</dl>
<h2><a id="#(POINT_VEC3.RoutePointAction)" >Type <code>POINT_VEC3.RoutePointAction</code></a></h2>
<p>RoutePoint Actions</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<a id="#(POINT_VEC3.RoutePointAction).TurningPoint" >
<strong>POINT_VEC3.RoutePointAction.TurningPoint</strong>
</a>
</dt>
<dd>
<p>"Turning Point"</p>
</dd>
</dl>
<h2><a id="#(POINT_VEC3.RoutePointAltType)" >Type <code>POINT_VEC3.RoutePointAltType</code></a></h2>
<p>RoutePoint AltTypes</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<a id="#(POINT_VEC3.RoutePointAltType).BARO" >
<strong>POINT_VEC3.RoutePointAltType.BARO</strong>
</a>
</dt>
<dd>
<p>"BARO"</p>
</dd>
</dl>
<h2><a id="#(POINT_VEC3.RoutePointType)" >Type <code>POINT_VEC3.RoutePointType</code></a></h2>
<p>RoutePoint Types</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<a id="#(POINT_VEC3.RoutePointType).TurningPoint" >
<strong>POINT_VEC3.RoutePointType.TurningPoint</strong>
</a>
</dt>
<dd>
<p>"Turning Point"</p>
</dd> </dd>
</dl> </dl>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li>ROUTETASK</li> <li>ROUTETASK</li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li>STAGE</li> <li>STAGE</li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>
@ -200,6 +201,18 @@
<td class="name" nowrap="nowrap"><a href="##(ZONE_BASE).ClassName">ZONE_BASE.ClassName</a></td> <td class="name" nowrap="nowrap"><a href="##(ZONE_BASE).ClassName">ZONE_BASE.ClassName</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ZONE_BASE).GetBoundingSquare">ZONE_BASE:GetBoundingSquare()</a></td>
<td class="summary">
<p>Get the bounding square the zone.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ZONE_BASE).GetRandomVec2">ZONE_BASE:GetRandomVec2()</a></td>
<td class="summary">
<p>Define a random <a href="DCSTypes.html##(Vec2)">DCSTypes#Vec2</a> within the zone.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -230,6 +243,34 @@
<td class="name" nowrap="nowrap"><a href="##(ZONE_BASE).ZoneName">ZONE_BASE.ZoneName</a></td> <td class="name" nowrap="nowrap"><a href="##(ZONE_BASE).ZoneName">ZONE_BASE.ZoneName</a></td>
<td class="summary"> <td class="summary">
<p>Name of the zone.</p> <p>Name of the zone.</p>
</td>
</tr>
</table>
<h2><a id="#(ZONE_BASE.BoundingSquare)">Type <code>ZONE_BASE.BoundingSquare</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(ZONE_BASE.BoundingSquare).x1">ZONE_BASE.BoundingSquare.x1</a></td>
<td class="summary">
<p>The lower x coordinate (left down)</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ZONE_BASE.BoundingSquare).x2">ZONE_BASE.BoundingSquare.x2</a></td>
<td class="summary">
<p>The higher x coordinate (right up)</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ZONE_BASE.BoundingSquare).y1">ZONE_BASE.BoundingSquare.y1</a></td>
<td class="summary">
<p>The lower y coordinate (left down)</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ZONE_BASE.BoundingSquare).y2">ZONE_BASE.BoundingSquare.y2</a></td>
<td class="summary">
<p>The higher y coordinate (right up)</p>
</td> </td>
</tr> </tr>
</table> </table>
@ -262,6 +303,18 @@
<td class="name" nowrap="nowrap"><a href="##(ZONE_POLYGON_BASE).Flush">ZONE_POLYGON_BASE:Flush()</a></td> <td class="name" nowrap="nowrap"><a href="##(ZONE_POLYGON_BASE).Flush">ZONE_POLYGON_BASE:Flush()</a></td>
<td class="summary"> <td class="summary">
<p>Flush polygon coordinates as a table in DCS.log.</p> <p>Flush polygon coordinates as a table in DCS.log.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ZONE_POLYGON_BASE).GetBoundingSquare">ZONE_POLYGON_BASE:GetBoundingSquare()</a></td>
<td class="summary">
<p>Get the bounding square the zone.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ZONE_POLYGON_BASE).GetRandomVec2">ZONE_POLYGON_BASE:GetRandomVec2()</a></td>
<td class="summary">
<p>Define a random <a href="DCSTypes.html##(Vec2)">DCSTypes#Vec2</a> within the zone.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -564,6 +617,42 @@ The name of the zone as defined within the mission editor.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ZONE_BASE).GetBoundingSquare" >
<strong>ZONE_BASE:GetBoundingSquare()</strong>
</a>
</dt>
<dd>
<p>Get the bounding square the zone.</p>
<h3>Return value</h3>
<p><em><a href="##(ZONE_BASE.BoundingSquare)">#ZONE_BASE.BoundingSquare</a>:</em>
The bounding square.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ZONE_BASE).GetRandomVec2" >
<strong>ZONE_BASE:GetRandomVec2()</strong>
</a>
</dt>
<dd>
<p>Define a random <a href="DCSTypes.html##(Vec2)">DCSTypes#Vec2</a> within the zone.</p>
<h3>Return value</h3>
<p><em><a href="DCSTypes.html##(Vec2)">DCSTypes#Vec2</a>:</em>
The Vec2 coordinates.</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@ -681,6 +770,68 @@ The smoke color.</p>
<p>Name of the zone.</p> <p>Name of the zone.</p>
</dd>
</dl>
<h2><a id="#(ZONE_BASE.BoundingSquare)" >Type <code>ZONE_BASE.BoundingSquare</code></a></h2>
<p>The ZONE_BASE.BoundingSquare</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Distance)">DCSTypes#Distance</a></em>
<a id="#(ZONE_BASE.BoundingSquare).x1" >
<strong>ZONE_BASE.BoundingSquare.x1</strong>
</a>
</dt>
<dd>
<p>The lower x coordinate (left down)</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Distance)">DCSTypes#Distance</a></em>
<a id="#(ZONE_BASE.BoundingSquare).x2" >
<strong>ZONE_BASE.BoundingSquare.x2</strong>
</a>
</dt>
<dd>
<p>The higher x coordinate (right up)</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Distance)">DCSTypes#Distance</a></em>
<a id="#(ZONE_BASE.BoundingSquare).y1" >
<strong>ZONE_BASE.BoundingSquare.y1</strong>
</a>
</dt>
<dd>
<p>The lower y coordinate (left down)</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Distance)">DCSTypes#Distance</a></em>
<a id="#(ZONE_BASE.BoundingSquare).y2" >
<strong>ZONE_BASE.BoundingSquare.y2</strong>
</a>
</dt>
<dd>
<p>The higher y coordinate (right up)</p>
</dd> </dd>
</dl> </dl>
@ -780,6 +931,42 @@ self</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<a id="#(ZONE_POLYGON_BASE).GetBoundingSquare" >
<strong>ZONE_POLYGON_BASE:GetBoundingSquare()</strong>
</a>
</dt>
<dd>
<p>Get the bounding square the zone.</p>
<h3>Return value</h3>
<p><em><a href="##(ZONE_POLYGON_BASE.BoundingSquare)">#ZONE<em>POLYGON</em>BASE.BoundingSquare</a>:</em>
The bounding square.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ZONE_POLYGON_BASE).GetRandomVec2" >
<strong>ZONE_POLYGON_BASE:GetRandomVec2()</strong>
</a>
</dt>
<dd>
<p>Define a random <a href="DCSTypes.html##(Vec2)">DCSTypes#Vec2</a> within the zone.</p>
<h3>Return value</h3>
<p><em><a href="DCSTypes.html##(Vec2)">DCSTypes#Vec2</a>:</em>
The Vec2 coordinate.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ZONE_POLYGON_BASE).IsPointVec2InZone" > <a id="#(ZONE_POLYGON_BASE).IsPointVec2InZone" >
<strong>ZONE_POLYGON_BASE:IsPointVec2InZone(PointVec2)</strong> <strong>ZONE_POLYGON_BASE:IsPointVec2InZone(PointVec2)</strong>
</a> </a>
@ -882,6 +1069,8 @@ self</p>
</dd> </dd>
</dl> </dl>
<h2><a id="#(ZONE_POLYGON_BASE.BoundingSquare)" >Type <code>ZONE_POLYGON_BASE.BoundingSquare</code></a></h2>
<h2><a id="#(ZONE_POLYGON_BASE.ListVec2)" >Type <code>ZONE_POLYGON_BASE.ListVec2</code></a></h2> <h2><a id="#(ZONE_POLYGON_BASE.ListVec2)" >Type <code>ZONE_POLYGON_BASE.ListVec2</code></a></h2>
<p>A points array.</p> <p>A points array.</p>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>
@ -281,6 +282,12 @@
<td class="name" nowrap="nowrap"><a href="PICKUPTASK.html">PICKUPTASK</a></td> <td class="name" nowrap="nowrap"><a href="PICKUPTASK.html">PICKUPTASK</a></td>
<td class="summary"> <td class="summary">
<p>A PICKUPTASK orchestrates the loading of CARGO at a specific landing zone.</p> <p>A PICKUPTASK orchestrates the loading of CARGO at a specific landing zone.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="PatrolZone.html">PatrolZone</a></td>
<td class="summary">
<p>This module contains the PATROLZONE class.</p>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>

View File

@ -52,6 +52,7 @@
<li><a href="Mission.html">Mission</a></li> <li><a href="Mission.html">Mission</a></li>
<li><a href="NOTASK.html">NOTASK</a></li> <li><a href="NOTASK.html">NOTASK</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</a></li> <li><a href="PICKUPTASK.html">PICKUPTASK</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li> <li><a href="Point.html">Point</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li> <li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li> <li><a href="STAGE.html">STAGE</a></li>