Documentation and embedding pictures in AI_CAS_ZONE

This commit is contained in:
FlightControl 2017-01-15 22:18:39 +01:00
parent 04c6d12247
commit 114517bb05
15 changed files with 827 additions and 696 deletions

View File

@ -6,23 +6,44 @@
-- --
-- === -- ===
-- --
-- # 1) @{#AI_CAS_ZONE} class, extends @{AI.AI_Patrol#AI_PATROLZONE} -- # 1) @{#AI_CAS_ZONE} class, extends @{AI.AI_Patrol#AI_PATROL_ZONE}
-- --
-- @{#AI_CAS_ZONE} derives from the @{AI.AI_Patrol#AI_PATROLZONE}, inheriting its methods and behaviour. -- @{#AI_CAS_ZONE} derives from the @{AI.AI_Patrol#AI_PATROL_ZONE}, inheriting its methods and behaviour.
-- --
-- The @{#AI_CAS_ZONE} class implements the core functions to provide Close Air Support in an Engage @{Zone} by an AIR @{Controllable} or @{Group}. -- The @{#AI_CAS_ZONE} class implements the core functions to provide Close Air Support in an Engage @{Zone} by an AIR @{Controllable} or @{Group}.
-- The AI_CASE_ZONE is assigned a @(Group) and this must be done before the AI_CAS_ZONE process can be started through the **Start** event. -- The AI_CAS_ZONE runs a process. It holds an AI in a Patrol Zone and when the AI is commanded to engage, it will fly to an Engage Zone.
--
-- ![HoldAndEngage](..\Presentations\AI_Cas\Dia3.JPG)
--
-- The AI_CAS_ZONE is assigned a @(Group) and this must be done before the AI_CAS_ZONE process can be started through the **Start** event.
--
-- ![Start Event](..\Presentations\AI_Cas\Dia4.JPG)
-- --
-- Upon started, The AI will **Route** itself towards the random 3D point within a patrol zone, -- Upon started, The AI will **Route** itself towards the random 3D point within a patrol zone,
-- using a random speed within the given altitude and speed limits. -- using a random speed within the given altitude and speed limits.
-- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. -- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits.
-- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. -- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB.
-- --
-- ![Route Event](..\Presentations\AI_Cas\Dia5.JPG)
--
-- When the AI is commanded to provide Close Air Support (through the event **Engage**), the AI will fly towards the Engage Zone. -- When the AI is commanded to provide Close Air Support (through the event **Engage**), the AI will fly towards the Engage Zone.
-- Any target that is detected in the Engage Zone will be reported and will be destroyed by the AI. -- Any target that is detected in the Engage Zone will be reported and will be destroyed by the AI.
-- --
-- Note that the AI does not know when the Engage Zone is cleared, and therefore will keep circling in the zone -- ![Engage Event](..\Presentations\AI_Cas\Dia6.JPG)
-- until it is notified through the event **Accomplish**, which is to be triggered by an observing party: --
-- The AI will detect the targets and will only destroy the targets within the Engage Zone.
--
-- ![Engage Event](..\Presentations\AI_Cas\Dia7.JPG)
--
-- Every target that is destroyed, is reported< by the AI.
--
-- ![Engage Event](..\Presentations\AI_Cas\Dia8.JPG)
--
-- Note that the AI does not know when the Engage Zone is cleared, and therefore will keep circling in the zone.
--
-- ![Engage Event](..\Presentations\AI_Cas\Dia9.JPG)
--
-- Until it is notified through the event **Accomplish**, which is to be triggered by an observing party:
-- --
-- * a FAC -- * a FAC
-- * a timed event -- * a timed event
@ -30,12 +51,18 @@
-- * a condition -- * a condition
-- * others ... -- * others ...
-- --
-- ![Engage Event](..\Presentations\AI_Cas\Dia10.JPG)
--
-- When the AI has accomplished the CAS, it will fly back to the Patrol Zone. -- When the AI has accomplished the CAS, it will fly back to the Patrol Zone.
--
-- ![Engage Event](..\Presentations\AI_Cas\Dia11.JPG)
--
-- It will keep patrolling there, until it is notified to RTB or move to another CAS Zone. -- It will keep patrolling there, until it is notified to RTB or move to another CAS Zone.
-- It can be notified to go RTB through the **RTB** event. -- It can be notified to go RTB through the **RTB** event.
-- --
-- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land. -- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.
-- --
-- ![Engage Event](..\Presentations\AI_Cas\Dia12.JPG)
-- --
-- # 1.1) AI_CAS_ZONE constructor -- # 1.1) AI_CAS_ZONE constructor
-- --
@ -83,12 +110,12 @@
-- --
-- * **[Quax](https://forums.eagle.ru/member.php?u=90530)**: Concept, Advice & Testing. -- * **[Quax](https://forums.eagle.ru/member.php?u=90530)**: Concept, Advice & Testing.
-- * **[Pikey](https://forums.eagle.ru/member.php?u=62835)**: Concept, Advice & Testing. -- * **[Pikey](https://forums.eagle.ru/member.php?u=62835)**: Concept, Advice & Testing.
-- * **[Gunterlund](http://forums.eagle.ru:8080/member.php?u=75036)**: Test case revision.
-- --
-- ### Authors: -- ### Authors:
-- --
-- * **FlightControl**: Concept, Design & Programming. -- * **FlightControl**: Concept, Design & Programming.
-- --
--
-- @module AI_Cas -- @module AI_Cas
@ -115,7 +142,7 @@ AI_CAS_ZONE = {
function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone ) function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE local self = BASE:Inherit( self, AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE
self.EngageZone = EngageZone self.EngageZone = EngageZone
self.Accomplished = false self.Accomplished = false
@ -284,6 +311,22 @@ function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude
end end
--- Set the Engage Zone where the AI is performing CAS. Note that if the EngageZone is changed, the AI needs to re-detect targets.
-- @param #AI_PATROL_ZONE self
-- @param Core.Zone#ZONE EngageZone The zone where the AI is performing CAS.
-- @return #AI_PATROL_ZONE self
function AI_CAS_ZONE:SetEngageZone( EngageZone )
self:F2()
if EngageZone then
self.EngageZone = EngageZone
else
self.EngageZone = nil
end
end
--- onafter State Transition for Event Start. --- onafter State Transition for Event Start.
-- @param #AI_CAS_ZONE self -- @param #AI_CAS_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.

View File

@ -6,30 +6,30 @@
-- --
-- === -- ===
-- --
-- # 1) @{#AI_PATROLZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE} -- # 1) @{#AI_PATROL_ZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE}
-- --
-- The @{#AI_PATROLZONE} class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}. -- The @{#AI_PATROL_ZONE} class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}.
-- The AI_PATROLZONE is assigned a @(Group) and this must be done before the AI_PATROLZONE process can be started. -- The AI_PATROL_ZONE is assigned a @(Group) and this must be done before the AI_PATROL_ZONE process can be started.
-- The AI will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits. -- The AI will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits.
-- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. -- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits.
-- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. -- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB.
-- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land. -- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.
-- --
-- ## 1.1) AI_PATROLZONE constructor -- ## 1.1) AI_PATROL_ZONE constructor
-- --
-- * @{#AI_PATROLZONE.New}(): Creates a new AI_PATROLZONE object. -- * @{#AI_PATROL_ZONE.New}(): Creates a new AI_PATROL_ZONE object.
-- --
-- ## 1.2) AI_PATROLZONE is a FSM -- ## 1.2) AI_PATROL_ZONE is a FSM
-- --
-- ![Process](..\Presentations\AI_Patrol\Dia2.JPG) -- ![Process](..\Presentations\AI_Patrol\Dia2.JPG)
-- --
-- ### 1.2.1) AI_PATROLZONE States -- ### 1.2.1) AI_PATROL_ZONE States
-- --
-- * **None** ( Group ): The process is not started yet. -- * **None** ( Group ): The process is not started yet.
-- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone. -- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone.
-- * **Returning** ( Group ): The AI is returning to Base.. -- * **Returning** ( Group ): The AI is returning to Base..
-- --
-- ### 1.2.2) AI_PATROLZONE Events: -- ### 1.2.2) AI_PATROL_ZONE Events:
-- --
-- * **Start** ( Group ): Start the process. -- * **Start** ( Group ): Start the process.
-- * **Route** ( Group ): Route the AI to a new random 3D point within the Patrol Zone. -- * **Route** ( Group ): Route the AI to a new random 3D point within the Patrol Zone.
@ -40,13 +40,13 @@
-- --
-- ## 1.3) Set or Get the AI controllable -- ## 1.3) Set or Get the AI controllable
-- --
-- * @{#AI_PATROLZONE.SetControllable}(): Set the AIControllable. -- * @{#AI_PATROL_ZONE.SetControllable}(): Set the AIControllable.
-- * @{#AI_PATROLZONE.GetControllable}(): Get the AIControllable. -- * @{#AI_PATROL_ZONE.GetControllable}(): Get the AIControllable.
-- --
-- ## 1.4) Set the Speed and Altitude boundaries of the AI controllable -- ## 1.4) Set the Speed and Altitude boundaries of the AI controllable
-- --
-- * @{#AI_PATROLZONE.SetSpeed}(): Set the patrol speed boundaries of the AI, for the next patrol. -- * @{#AI_PATROL_ZONE.SetSpeed}(): Set the patrol speed boundaries of the AI, for the next patrol.
-- * @{#AI_PATROLZONE.SetAltitude}(): Set altitude boundaries of the AI, for the next patrol. -- * @{#AI_PATROL_ZONE.SetAltitude}(): Set altitude boundaries of the AI, for the next patrol.
-- --
-- ## 1.5) Manage the detection process of the AI controllable -- ## 1.5) Manage the detection process of the AI controllable
-- --
@ -54,31 +54,31 @@
-- Detection requires an amount of CPU power, which has an impact on your mission performance. -- Detection requires an amount of CPU power, which has an impact on your mission performance.
-- Only put detection on when absolutely necessary, and the frequency of the detection can also be set. -- Only put detection on when absolutely necessary, and the frequency of the detection can also be set.
-- --
-- * @{#AI_PATROLZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets. -- * @{#AI_PATROL_ZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets.
-- * @{#AI_PATROLZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased. -- * @{#AI_PATROL_ZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased.
-- --
-- The detection frequency can be set with @{#AI_PATROLZONE.SetDetectionInterval}( seconds ), where the amount of seconds specify how much seconds will be waited before the next detection. -- The detection frequency can be set with @{#AI_PATROL_ZONE.SetDetectionInterval}( seconds ), where the amount of seconds specify how much seconds will be waited before the next detection.
-- Use the method @{#AI_PATROLZONE.GetDetectedUnits}() to obtain a list of the @{Unit}s detected by the AI. -- Use the method @{#AI_PATROL_ZONE.GetDetectedUnits}() to obtain a list of the @{Unit}s detected by the AI.
-- --
-- The detection can be filtered to potential targets in a specific zone. -- The detection can be filtered to potential targets in a specific zone.
-- Use the method @{#AI_PATROLZONE.SetDetectionZone}() to set the zone where targets need to be detected. -- Use the method @{#AI_PATROL_ZONE.SetDetectionZone}() to set the zone where targets need to be detected.
-- Note that when the zone is too far away, or the AI is not heading towards the zone, or the AI is too high, no targets may be detected -- Note that when the zone is too far away, or the AI is not heading towards the zone, or the AI is too high, no targets may be detected
-- according the weather conditions. -- according the weather conditions.
-- --
-- ## 1.6) Manage the "out of fuel" in the AI_PATROLZONE -- ## 1.6) Manage the "out of fuel" in the AI_PATROL_ZONE
-- --
-- When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. -- When the AI is out of fuel, it is required that a new AI is started, before the old AI 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. -- 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 AI will continue for a given time its patrol task in orbit, -- When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit,
-- while a new AI is targetted to the AI_PATROLZONE. -- while a new AI is targetted to the AI_PATROL_ZONE.
-- Once the time is finished, the old AI will return to the base. -- Once the time is finished, the old AI will return to the base.
-- Use the method @{#AI_PATROLZONE.ManageFuel}() to have this proces in place. -- Use the method @{#AI_PATROL_ZONE.ManageFuel}() to have this proces in place.
-- --
-- ## 1.7) Manage "damage" behaviour of the AI in the AI_PATROLZONE -- ## 1.7) Manage "damage" behaviour of the AI in the AI_PATROL_ZONE
-- --
-- When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on. -- When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on.
-- Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB). -- Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB).
-- Use the method @{#AI_PATROLZONE.ManageDamage}() to have this proces in place. -- Use the method @{#AI_PATROL_ZONE.ManageDamage}() to have this proces in place.
-- --
-- ==== -- ====
-- --
@ -91,7 +91,7 @@
-- --
-- Hereby the change log: -- Hereby the change log:
-- --
-- 2016-01-15: Complete revision. AI_PATROLZONE is the base class for other AI_PATROL like classes. -- 2016-01-15: Complete revision. AI_PATROL_ZONE is the base class for other AI_PATROL like classes.
-- --
-- 2016-09-01: Initial class and API. -- 2016-09-01: Initial class and API.
-- --
@ -110,8 +110,8 @@
-- --
-- @module AI_Patrol -- @module AI_Patrol
--- AI_PATROLZONE class --- AI_PATROL_ZONE class
-- @type AI_PATROLZONE -- @type AI_PATROL_ZONE
-- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. -- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling.
-- @field Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. -- @field Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @field Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @field Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
@ -120,27 +120,27 @@
-- @field Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @field Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @field Functional.Spawn#SPAWN CoordTest -- @field Functional.Spawn#SPAWN CoordTest
-- @extends Core.Fsm#FSM_CONTROLLABLE -- @extends Core.Fsm#FSM_CONTROLLABLE
AI_PATROLZONE = { AI_PATROL_ZONE = {
ClassName = "AI_PATROLZONE", ClassName = "AI_PATROL_ZONE",
} }
--- Creates a new AI_PATROLZONE object --- Creates a new AI_PATROL_ZONE object
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. -- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
-- @usage -- @usage
-- -- Define a new AI_PATROLZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h. -- -- Define a new AI_PATROL_ZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
-- PatrolZone = ZONE:New( 'PatrolZone' ) -- PatrolZone = ZONE:New( 'PatrolZone' )
-- PatrolSpawn = SPAWN:New( 'Patrol Group' ) -- PatrolSpawn = SPAWN:New( 'Patrol Group' )
-- PatrolArea = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 600, 900 ) -- PatrolArea = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 600, 900 )
function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) function AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- #AI_PATROLZONE local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- #AI_PATROL_ZONE
self.PatrolZone = PatrolZone self.PatrolZone = PatrolZone
@ -163,8 +163,8 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
self:AddTransition( "None", "Start", "Patrolling" ) self:AddTransition( "None", "Start", "Patrolling" )
--- OnBefore Transition Handler for Event Start. --- OnBefore Transition Handler for Event Start.
-- @function [parent=#AI_PATROLZONE] OnBeforeStart -- @function [parent=#AI_PATROL_ZONE] OnBeforeStart
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -172,25 +172,25 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Start. --- OnAfter Transition Handler for Event Start.
-- @function [parent=#AI_PATROLZONE] OnAfterStart -- @function [parent=#AI_PATROL_ZONE] OnAfterStart
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Start. --- Synchronous Event Trigger for Event Start.
-- @function [parent=#AI_PATROLZONE] Start -- @function [parent=#AI_PATROL_ZONE] Start
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Start. --- Asynchronous Event Trigger for Event Start.
-- @function [parent=#AI_PATROLZONE] __Start -- @function [parent=#AI_PATROL_ZONE] __Start
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
--- OnLeave Transition Handler for State Patrolling. --- OnLeave Transition Handler for State Patrolling.
-- @function [parent=#AI_PATROLZONE] OnLeavePatrolling -- @function [parent=#AI_PATROL_ZONE] OnLeavePatrolling
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -198,18 +198,18 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnEnter Transition Handler for State Patrolling. --- OnEnter Transition Handler for State Patrolling.
-- @function [parent=#AI_PATROLZONE] OnEnterPatrolling -- @function [parent=#AI_PATROL_ZONE] OnEnterPatrolling
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
self:AddTransition( "Patrolling", "Route", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "Patrolling", "Route", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Route. --- OnBefore Transition Handler for Event Route.
-- @function [parent=#AI_PATROLZONE] OnBeforeRoute -- @function [parent=#AI_PATROL_ZONE] OnBeforeRoute
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -217,27 +217,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Route. --- OnAfter Transition Handler for Event Route.
-- @function [parent=#AI_PATROLZONE] OnAfterRoute -- @function [parent=#AI_PATROL_ZONE] OnAfterRoute
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Route. --- Synchronous Event Trigger for Event Route.
-- @function [parent=#AI_PATROLZONE] Route -- @function [parent=#AI_PATROL_ZONE] Route
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Route. --- Asynchronous Event Trigger for Event Route.
-- @function [parent=#AI_PATROLZONE] __Route -- @function [parent=#AI_PATROL_ZONE] __Route
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Status", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Status", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Status. --- OnBefore Transition Handler for Event Status.
-- @function [parent=#AI_PATROLZONE] OnBeforeStatus -- @function [parent=#AI_PATROL_ZONE] OnBeforeStatus
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -245,27 +245,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Status. --- OnAfter Transition Handler for Event Status.
-- @function [parent=#AI_PATROLZONE] OnAfterStatus -- @function [parent=#AI_PATROL_ZONE] OnAfterStatus
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Status. --- Synchronous Event Trigger for Event Status.
-- @function [parent=#AI_PATROLZONE] Status -- @function [parent=#AI_PATROL_ZONE] Status
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Status. --- Asynchronous Event Trigger for Event Status.
-- @function [parent=#AI_PATROLZONE] __Status -- @function [parent=#AI_PATROL_ZONE] __Status
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Detect", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Detect", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Detect. --- OnBefore Transition Handler for Event Detect.
-- @function [parent=#AI_PATROLZONE] OnBeforeDetect -- @function [parent=#AI_PATROL_ZONE] OnBeforeDetect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -273,27 +273,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Detect. --- OnAfter Transition Handler for Event Detect.
-- @function [parent=#AI_PATROLZONE] OnAfterDetect -- @function [parent=#AI_PATROL_ZONE] OnAfterDetect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Detect. --- Synchronous Event Trigger for Event Detect.
-- @function [parent=#AI_PATROLZONE] Detect -- @function [parent=#AI_PATROL_ZONE] Detect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Detect. --- Asynchronous Event Trigger for Event Detect.
-- @function [parent=#AI_PATROLZONE] __Detect -- @function [parent=#AI_PATROL_ZONE] __Detect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Detected", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Detected", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Detected. --- OnBefore Transition Handler for Event Detected.
-- @function [parent=#AI_PATROLZONE] OnBeforeDetected -- @function [parent=#AI_PATROL_ZONE] OnBeforeDetected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -301,27 +301,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Detected. --- OnAfter Transition Handler for Event Detected.
-- @function [parent=#AI_PATROLZONE] OnAfterDetected -- @function [parent=#AI_PATROL_ZONE] OnAfterDetected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Detected. --- Synchronous Event Trigger for Event Detected.
-- @function [parent=#AI_PATROLZONE] Detected -- @function [parent=#AI_PATROL_ZONE] Detected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Detected. --- Asynchronous Event Trigger for Event Detected.
-- @function [parent=#AI_PATROLZONE] __Detected -- @function [parent=#AI_PATROL_ZONE] __Detected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event RTB. --- OnBefore Transition Handler for Event RTB.
-- @function [parent=#AI_PATROLZONE] OnBeforeRTB -- @function [parent=#AI_PATROL_ZONE] OnBeforeRTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -329,25 +329,25 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event RTB. --- OnAfter Transition Handler for Event RTB.
-- @function [parent=#AI_PATROLZONE] OnAfterRTB -- @function [parent=#AI_PATROL_ZONE] OnAfterRTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event RTB. --- Synchronous Event Trigger for Event RTB.
-- @function [parent=#AI_PATROLZONE] RTB -- @function [parent=#AI_PATROL_ZONE] RTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event RTB. --- Asynchronous Event Trigger for Event RTB.
-- @function [parent=#AI_PATROLZONE] __RTB -- @function [parent=#AI_PATROL_ZONE] __RTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
--- OnLeave Transition Handler for State Returning. --- OnLeave Transition Handler for State Returning.
-- @function [parent=#AI_PATROLZONE] OnLeaveReturning -- @function [parent=#AI_PATROL_ZONE] OnLeaveReturning
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -355,8 +355,8 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnEnter Transition Handler for State Returning. --- OnEnter Transition Handler for State Returning.
-- @function [parent=#AI_PATROLZONE] OnEnterReturning -- @function [parent=#AI_PATROL_ZONE] OnEnterReturning
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -369,11 +369,11 @@ end
--- Sets (modifies) the minimum and maximum speed of the patrol. --- Sets (modifies) the minimum and maximum speed of the patrol.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed ) function AI_PATROL_ZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed )
self:F2( { PatrolMinSpeed, PatrolMaxSpeed } ) self:F2( { PatrolMinSpeed, PatrolMaxSpeed } )
self.PatrolMinSpeed = PatrolMinSpeed self.PatrolMinSpeed = PatrolMinSpeed
@ -383,24 +383,24 @@ end
--- Sets the floor and ceiling altitude of the patrol. --- Sets the floor and ceiling altitude of the patrol.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude ) function AI_PATROL_ZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude )
self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } ) self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } )
self.PatrolFloorAltitude = PatrolFloorAltitude self.PatrolFloorAltitude = PatrolFloorAltitude
self.PatrolCeilingAltitude = PatrolCeilingAltitude self.PatrolCeilingAltitude = PatrolCeilingAltitude
end end
-- * @{#AI_PATROLZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets. -- * @{#AI_PATROL_ZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets.
-- * @{#AI_PATROLZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased. -- * @{#AI_PATROL_ZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased.
--- Set the detection on. The AI will detect for targets. --- Set the detection on. The AI will detect for targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionOn() function AI_PATROL_ZONE:SetDetectionOn()
self:F2() self:F2()
self.DetectUnits = true self.DetectUnits = true
@ -408,9 +408,9 @@ end
--- Set the detection off. The AI will NOT detect for targets. --- Set the detection off. The AI will NOT detect for targets.
-- However, the list of already detected targets will be kept and can be enquired! -- However, the list of already detected targets will be kept and can be enquired!
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionOff() function AI_PATROL_ZONE:SetDetectionOff()
self:F2() self:F2()
self.DetectUnits = false self.DetectUnits = false
@ -421,10 +421,10 @@ end
-- Newly detected targets will be added, but already detected targets that were -- Newly detected targets will be added, but already detected targets that were
-- not detected in this cycle, will NOT be removed! -- not detected in this cycle, will NOT be removed!
-- The default interval is 30 seconds. -- The default interval is 30 seconds.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Seconds The interval in seconds. -- @param #number Seconds The interval in seconds.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionInterval( Seconds ) function AI_PATROL_ZONE:SetDetectionInterval( Seconds )
self:F2() self:F2()
if Seconds then if Seconds then
@ -435,10 +435,10 @@ function AI_PATROLZONE:SetDetectionInterval( Seconds )
end end
--- Set the detection zone where the AI is detecting targets. --- Set the detection zone where the AI is detecting targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Core.Zone#ZONE DetectionZone The zone where to detect targets. -- @param Core.Zone#ZONE DetectionZone The zone where to detect targets.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionZone( DetectionZone ) function AI_PATROL_ZONE:SetDetectionZone( DetectionZone )
self:F2() self:F2()
if DetectionZone then if DetectionZone then
@ -451,9 +451,9 @@ end
--- Gets a list of @{Wrapper.Unit#UNIT}s that were detected by the AI. --- Gets a list of @{Wrapper.Unit#UNIT}s that were detected by the AI.
-- No filtering is applied, so, ANY detected UNIT can be in this list. -- No filtering is applied, so, ANY detected UNIT can be in this list.
-- It is up to the mission designer to use the @{Unit} class and methods to filter the targets. -- It is up to the mission designer to use the @{Unit} class and methods to filter the targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #table The list of @{Wrapper.Unit#UNIT}s -- @return #table The list of @{Wrapper.Unit#UNIT}s
function AI_PATROLZONE:GetDetectedUnits() function AI_PATROL_ZONE:GetDetectedUnits()
self:F2() self:F2()
return self.DetectedUnits return self.DetectedUnits
@ -462,13 +462,13 @@ end
--- When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. --- When the AI is out of fuel, it is required that a new AI is started, before the old AI 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. -- 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 AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROLZONE. -- When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE.
-- Once the time is finished, the old AI will return to the base. -- Once the time is finished, the old AI will return to the base.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel. -- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.
-- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel AIControllable will orbit before returning to the base. -- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel AIControllable will orbit before returning to the base.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime ) function AI_PATROL_ZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime )
self.PatrolManageFuel = true self.PatrolManageFuel = true
self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage
@ -483,10 +483,10 @@ end
-- the AI will return immediately to the home base (RTB). -- the AI will return immediately to the home base (RTB).
-- Note that for groups, the average damage of the complete group will be calculated. -- Note that for groups, the average damage of the complete group will be calculated.
-- So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25. -- So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number PatrolDamageTreshold The treshold in percentage (between 0 and 1) when the AI is considered to be damaged. -- @param #number PatrolDamageTreshold The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:ManageDamage( PatrolDamageTreshold ) function AI_PATROL_ZONE:ManageDamage( PatrolDamageTreshold )
self.PatrolManageDamage = true self.PatrolManageDamage = true
self.PatrolDamageTreshold = PatrolDamageTreshold self.PatrolDamageTreshold = PatrolDamageTreshold
@ -495,13 +495,13 @@ function AI_PATROLZONE:ManageDamage( PatrolDamageTreshold )
end end
--- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings. --- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
function AI_PATROLZONE:onafterStart( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterStart( Controllable, From, Event, To )
self:F2() self:F2()
self:Route() -- Route to the patrol point. self:Route() -- Route to the patrol point.
@ -514,16 +514,16 @@ function AI_PATROLZONE:onafterStart( Controllable, From, Event, To )
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
--- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @param Wrapper.Controllable#CONTROLLABLE Controllable
function AI_PATROLZONE:onbeforeDetect( Controllable, From, Event, To ) function AI_PATROL_ZONE:onbeforeDetect( Controllable, From, Event, To )
return self.DetectUnits return self.DetectUnits
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
--- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @param Wrapper.Controllable#CONTROLLABLE Controllable
function AI_PATROLZONE:onafterDetect( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterDetect( Controllable, From, Event, To )
local DetectedTargets = Controllable:GetDetectedTargets() local DetectedTargets = Controllable:GetDetectedTargets()
for TargetID, Target in pairs( DetectedTargets ) do for TargetID, Target in pairs( DetectedTargets ) do
@ -552,18 +552,18 @@ end
function _NewPatrolRoute( AIControllable ) function _NewPatrolRoute( AIControllable )
AIControllable:T( "NewPatrolRoute" ) AIControllable:T( "NewPatrolRoute" )
local PatrolZone = AIControllable:GetState( AIControllable, "PatrolZone" ) -- PatrolCore.Zone#AI_PATROLZONE local PatrolZone = AIControllable:GetState( AIControllable, "PatrolZone" ) -- PatrolCore.Zone#AI_PATROL_ZONE
PatrolZone:Route() PatrolZone:Route()
end end
--- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings. --- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
function AI_PATROLZONE:onafterRoute( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterRoute( Controllable, From, Event, To )
self:F2() self:F2()
@ -666,14 +666,14 @@ function AI_PATROLZONE:onafterRoute( Controllable, From, Event, To )
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onbeforeStatus() function AI_PATROL_ZONE:onbeforeStatus()
return self.CheckStatus return self.CheckStatus
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onafterStatus() function AI_PATROL_ZONE:onafterStatus()
self:F2() self:F2()
if self.Controllable and self.Controllable:IsAlive() then if self.Controllable and self.Controllable:IsAlive() then
@ -707,8 +707,8 @@ function AI_PATROLZONE:onafterStatus()
end end
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onafterRTB() function AI_PATROL_ZONE:onafterRTB()
self:F2() self:F2()
if self.Controllable and self.Controllable:IsAlive() then if self.Controllable and self.Controllable:IsAlive() then

View File

@ -24581,30 +24581,30 @@ end
-- --
-- === -- ===
-- --
-- # 1) @{#AI_PATROLZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE} -- # 1) @{#AI_PATROL_ZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE}
-- --
-- The @{#AI_PATROLZONE} class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}. -- The @{#AI_PATROL_ZONE} class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}.
-- The AI_PATROLZONE is assigned a @(Group) and this must be done before the AI_PATROLZONE process can be started. -- The AI_PATROL_ZONE is assigned a @(Group) and this must be done before the AI_PATROL_ZONE process can be started.
-- The AI will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits. -- The AI will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits.
-- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. -- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits.
-- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. -- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB.
-- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land. -- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.
-- --
-- ## 1.1) AI_PATROLZONE constructor -- ## 1.1) AI_PATROL_ZONE constructor
-- --
-- * @{#AI_PATROLZONE.New}(): Creates a new AI_PATROLZONE object. -- * @{#AI_PATROL_ZONE.New}(): Creates a new AI_PATROL_ZONE object.
-- --
-- ## 1.2) AI_PATROLZONE is a FSM -- ## 1.2) AI_PATROL_ZONE is a FSM
-- --
-- ![Process](..\Presentations\AI_Patrol\Dia2.JPG) -- ![Process](..\Presentations\AI_Patrol\Dia2.JPG)
-- --
-- ### 1.2.1) AI_PATROLZONE States -- ### 1.2.1) AI_PATROL_ZONE States
-- --
-- * **None** ( Group ): The process is not started yet. -- * **None** ( Group ): The process is not started yet.
-- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone. -- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone.
-- * **Returning** ( Group ): The AI is returning to Base.. -- * **Returning** ( Group ): The AI is returning to Base..
-- --
-- ### 1.2.2) AI_PATROLZONE Events: -- ### 1.2.2) AI_PATROL_ZONE Events:
-- --
-- * **Start** ( Group ): Start the process. -- * **Start** ( Group ): Start the process.
-- * **Route** ( Group ): Route the AI to a new random 3D point within the Patrol Zone. -- * **Route** ( Group ): Route the AI to a new random 3D point within the Patrol Zone.
@ -24615,13 +24615,13 @@ end
-- --
-- ## 1.3) Set or Get the AI controllable -- ## 1.3) Set or Get the AI controllable
-- --
-- * @{#AI_PATROLZONE.SetControllable}(): Set the AIControllable. -- * @{#AI_PATROL_ZONE.SetControllable}(): Set the AIControllable.
-- * @{#AI_PATROLZONE.GetControllable}(): Get the AIControllable. -- * @{#AI_PATROL_ZONE.GetControllable}(): Get the AIControllable.
-- --
-- ## 1.4) Set the Speed and Altitude boundaries of the AI controllable -- ## 1.4) Set the Speed and Altitude boundaries of the AI controllable
-- --
-- * @{#AI_PATROLZONE.SetSpeed}(): Set the patrol speed boundaries of the AI, for the next patrol. -- * @{#AI_PATROL_ZONE.SetSpeed}(): Set the patrol speed boundaries of the AI, for the next patrol.
-- * @{#AI_PATROLZONE.SetAltitude}(): Set altitude boundaries of the AI, for the next patrol. -- * @{#AI_PATROL_ZONE.SetAltitude}(): Set altitude boundaries of the AI, for the next patrol.
-- --
-- ## 1.5) Manage the detection process of the AI controllable -- ## 1.5) Manage the detection process of the AI controllable
-- --
@ -24629,31 +24629,31 @@ end
-- Detection requires an amount of CPU power, which has an impact on your mission performance. -- Detection requires an amount of CPU power, which has an impact on your mission performance.
-- Only put detection on when absolutely necessary, and the frequency of the detection can also be set. -- Only put detection on when absolutely necessary, and the frequency of the detection can also be set.
-- --
-- * @{#AI_PATROLZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets. -- * @{#AI_PATROL_ZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets.
-- * @{#AI_PATROLZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased. -- * @{#AI_PATROL_ZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased.
-- --
-- The detection frequency can be set with @{#AI_PATROLZONE.SetDetectionInterval}( seconds ), where the amount of seconds specify how much seconds will be waited before the next detection. -- The detection frequency can be set with @{#AI_PATROL_ZONE.SetDetectionInterval}( seconds ), where the amount of seconds specify how much seconds will be waited before the next detection.
-- Use the method @{#AI_PATROLZONE.GetDetectedUnits}() to obtain a list of the @{Unit}s detected by the AI. -- Use the method @{#AI_PATROL_ZONE.GetDetectedUnits}() to obtain a list of the @{Unit}s detected by the AI.
-- --
-- The detection can be filtered to potential targets in a specific zone. -- The detection can be filtered to potential targets in a specific zone.
-- Use the method @{#AI_PATROLZONE.SetDetectionZone}() to set the zone where targets need to be detected. -- Use the method @{#AI_PATROL_ZONE.SetDetectionZone}() to set the zone where targets need to be detected.
-- Note that when the zone is too far away, or the AI is not heading towards the zone, or the AI is too high, no targets may be detected -- Note that when the zone is too far away, or the AI is not heading towards the zone, or the AI is too high, no targets may be detected
-- according the weather conditions. -- according the weather conditions.
-- --
-- ## 1.6) Manage the "out of fuel" in the AI_PATROLZONE -- ## 1.6) Manage the "out of fuel" in the AI_PATROL_ZONE
-- --
-- When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. -- When the AI is out of fuel, it is required that a new AI is started, before the old AI 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. -- 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 AI will continue for a given time its patrol task in orbit, -- When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit,
-- while a new AI is targetted to the AI_PATROLZONE. -- while a new AI is targetted to the AI_PATROL_ZONE.
-- Once the time is finished, the old AI will return to the base. -- Once the time is finished, the old AI will return to the base.
-- Use the method @{#AI_PATROLZONE.ManageFuel}() to have this proces in place. -- Use the method @{#AI_PATROL_ZONE.ManageFuel}() to have this proces in place.
-- --
-- ## 1.7) Manage "damage" behaviour of the AI in the AI_PATROLZONE -- ## 1.7) Manage "damage" behaviour of the AI in the AI_PATROL_ZONE
-- --
-- When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on. -- When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on.
-- Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB). -- Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB).
-- Use the method @{#AI_PATROLZONE.ManageDamage}() to have this proces in place. -- Use the method @{#AI_PATROL_ZONE.ManageDamage}() to have this proces in place.
-- --
-- ==== -- ====
-- --
@ -24666,7 +24666,7 @@ end
-- --
-- Hereby the change log: -- Hereby the change log:
-- --
-- 2016-01-15: Complete revision. AI_PATROLZONE is the base class for other AI_PATROL like classes. -- 2016-01-15: Complete revision. AI_PATROL_ZONE is the base class for other AI_PATROL like classes.
-- --
-- 2016-09-01: Initial class and API. -- 2016-09-01: Initial class and API.
-- --
@ -24685,8 +24685,8 @@ end
-- --
-- @module AI_Patrol -- @module AI_Patrol
--- AI_PATROLZONE class --- AI_PATROL_ZONE class
-- @type AI_PATROLZONE -- @type AI_PATROL_ZONE
-- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. -- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling.
-- @field Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. -- @field Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @field Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @field Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
@ -24695,27 +24695,27 @@ end
-- @field Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @field Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @field Functional.Spawn#SPAWN CoordTest -- @field Functional.Spawn#SPAWN CoordTest
-- @extends Core.Fsm#FSM_CONTROLLABLE -- @extends Core.Fsm#FSM_CONTROLLABLE
AI_PATROLZONE = { AI_PATROL_ZONE = {
ClassName = "AI_PATROLZONE", ClassName = "AI_PATROL_ZONE",
} }
--- Creates a new AI_PATROLZONE object --- Creates a new AI_PATROL_ZONE object
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. -- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
-- @usage -- @usage
-- -- Define a new AI_PATROLZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h. -- -- Define a new AI_PATROL_ZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
-- PatrolZone = ZONE:New( 'PatrolZone' ) -- PatrolZone = ZONE:New( 'PatrolZone' )
-- PatrolSpawn = SPAWN:New( 'Patrol Group' ) -- PatrolSpawn = SPAWN:New( 'Patrol Group' )
-- PatrolArea = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 600, 900 ) -- PatrolArea = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 600, 900 )
function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) function AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- #AI_PATROLZONE local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- #AI_PATROL_ZONE
self.PatrolZone = PatrolZone self.PatrolZone = PatrolZone
@ -24738,8 +24738,8 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
self:AddTransition( "None", "Start", "Patrolling" ) self:AddTransition( "None", "Start", "Patrolling" )
--- OnBefore Transition Handler for Event Start. --- OnBefore Transition Handler for Event Start.
-- @function [parent=#AI_PATROLZONE] OnBeforeStart -- @function [parent=#AI_PATROL_ZONE] OnBeforeStart
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24747,25 +24747,25 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Start. --- OnAfter Transition Handler for Event Start.
-- @function [parent=#AI_PATROLZONE] OnAfterStart -- @function [parent=#AI_PATROL_ZONE] OnAfterStart
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Start. --- Synchronous Event Trigger for Event Start.
-- @function [parent=#AI_PATROLZONE] Start -- @function [parent=#AI_PATROL_ZONE] Start
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Start. --- Asynchronous Event Trigger for Event Start.
-- @function [parent=#AI_PATROLZONE] __Start -- @function [parent=#AI_PATROL_ZONE] __Start
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
--- OnLeave Transition Handler for State Patrolling. --- OnLeave Transition Handler for State Patrolling.
-- @function [parent=#AI_PATROLZONE] OnLeavePatrolling -- @function [parent=#AI_PATROL_ZONE] OnLeavePatrolling
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24773,18 +24773,18 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnEnter Transition Handler for State Patrolling. --- OnEnter Transition Handler for State Patrolling.
-- @function [parent=#AI_PATROLZONE] OnEnterPatrolling -- @function [parent=#AI_PATROL_ZONE] OnEnterPatrolling
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
self:AddTransition( "Patrolling", "Route", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "Patrolling", "Route", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Route. --- OnBefore Transition Handler for Event Route.
-- @function [parent=#AI_PATROLZONE] OnBeforeRoute -- @function [parent=#AI_PATROL_ZONE] OnBeforeRoute
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24792,27 +24792,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Route. --- OnAfter Transition Handler for Event Route.
-- @function [parent=#AI_PATROLZONE] OnAfterRoute -- @function [parent=#AI_PATROL_ZONE] OnAfterRoute
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Route. --- Synchronous Event Trigger for Event Route.
-- @function [parent=#AI_PATROLZONE] Route -- @function [parent=#AI_PATROL_ZONE] Route
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Route. --- Asynchronous Event Trigger for Event Route.
-- @function [parent=#AI_PATROLZONE] __Route -- @function [parent=#AI_PATROL_ZONE] __Route
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Status", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Status", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Status. --- OnBefore Transition Handler for Event Status.
-- @function [parent=#AI_PATROLZONE] OnBeforeStatus -- @function [parent=#AI_PATROL_ZONE] OnBeforeStatus
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24820,27 +24820,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Status. --- OnAfter Transition Handler for Event Status.
-- @function [parent=#AI_PATROLZONE] OnAfterStatus -- @function [parent=#AI_PATROL_ZONE] OnAfterStatus
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Status. --- Synchronous Event Trigger for Event Status.
-- @function [parent=#AI_PATROLZONE] Status -- @function [parent=#AI_PATROL_ZONE] Status
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Status. --- Asynchronous Event Trigger for Event Status.
-- @function [parent=#AI_PATROLZONE] __Status -- @function [parent=#AI_PATROL_ZONE] __Status
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Detect", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Detect", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Detect. --- OnBefore Transition Handler for Event Detect.
-- @function [parent=#AI_PATROLZONE] OnBeforeDetect -- @function [parent=#AI_PATROL_ZONE] OnBeforeDetect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24848,27 +24848,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Detect. --- OnAfter Transition Handler for Event Detect.
-- @function [parent=#AI_PATROLZONE] OnAfterDetect -- @function [parent=#AI_PATROL_ZONE] OnAfterDetect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Detect. --- Synchronous Event Trigger for Event Detect.
-- @function [parent=#AI_PATROLZONE] Detect -- @function [parent=#AI_PATROL_ZONE] Detect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Detect. --- Asynchronous Event Trigger for Event Detect.
-- @function [parent=#AI_PATROLZONE] __Detect -- @function [parent=#AI_PATROL_ZONE] __Detect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Detected", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Detected", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Detected. --- OnBefore Transition Handler for Event Detected.
-- @function [parent=#AI_PATROLZONE] OnBeforeDetected -- @function [parent=#AI_PATROL_ZONE] OnBeforeDetected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24876,27 +24876,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Detected. --- OnAfter Transition Handler for Event Detected.
-- @function [parent=#AI_PATROLZONE] OnAfterDetected -- @function [parent=#AI_PATROL_ZONE] OnAfterDetected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Detected. --- Synchronous Event Trigger for Event Detected.
-- @function [parent=#AI_PATROLZONE] Detected -- @function [parent=#AI_PATROL_ZONE] Detected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Detected. --- Asynchronous Event Trigger for Event Detected.
-- @function [parent=#AI_PATROLZONE] __Detected -- @function [parent=#AI_PATROL_ZONE] __Detected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event RTB. --- OnBefore Transition Handler for Event RTB.
-- @function [parent=#AI_PATROLZONE] OnBeforeRTB -- @function [parent=#AI_PATROL_ZONE] OnBeforeRTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24904,25 +24904,25 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event RTB. --- OnAfter Transition Handler for Event RTB.
-- @function [parent=#AI_PATROLZONE] OnAfterRTB -- @function [parent=#AI_PATROL_ZONE] OnAfterRTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event RTB. --- Synchronous Event Trigger for Event RTB.
-- @function [parent=#AI_PATROLZONE] RTB -- @function [parent=#AI_PATROL_ZONE] RTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event RTB. --- Asynchronous Event Trigger for Event RTB.
-- @function [parent=#AI_PATROLZONE] __RTB -- @function [parent=#AI_PATROL_ZONE] __RTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
--- OnLeave Transition Handler for State Returning. --- OnLeave Transition Handler for State Returning.
-- @function [parent=#AI_PATROLZONE] OnLeaveReturning -- @function [parent=#AI_PATROL_ZONE] OnLeaveReturning
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24930,8 +24930,8 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnEnter Transition Handler for State Returning. --- OnEnter Transition Handler for State Returning.
-- @function [parent=#AI_PATROLZONE] OnEnterReturning -- @function [parent=#AI_PATROL_ZONE] OnEnterReturning
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24944,11 +24944,11 @@ end
--- Sets (modifies) the minimum and maximum speed of the patrol. --- Sets (modifies) the minimum and maximum speed of the patrol.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed ) function AI_PATROL_ZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed )
self:F2( { PatrolMinSpeed, PatrolMaxSpeed } ) self:F2( { PatrolMinSpeed, PatrolMaxSpeed } )
self.PatrolMinSpeed = PatrolMinSpeed self.PatrolMinSpeed = PatrolMinSpeed
@ -24958,24 +24958,24 @@ end
--- Sets the floor and ceiling altitude of the patrol. --- Sets the floor and ceiling altitude of the patrol.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude ) function AI_PATROL_ZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude )
self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } ) self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } )
self.PatrolFloorAltitude = PatrolFloorAltitude self.PatrolFloorAltitude = PatrolFloorAltitude
self.PatrolCeilingAltitude = PatrolCeilingAltitude self.PatrolCeilingAltitude = PatrolCeilingAltitude
end end
-- * @{#AI_PATROLZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets. -- * @{#AI_PATROL_ZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets.
-- * @{#AI_PATROLZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased. -- * @{#AI_PATROL_ZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased.
--- Set the detection on. The AI will detect for targets. --- Set the detection on. The AI will detect for targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionOn() function AI_PATROL_ZONE:SetDetectionOn()
self:F2() self:F2()
self.DetectUnits = true self.DetectUnits = true
@ -24983,9 +24983,9 @@ end
--- Set the detection off. The AI will NOT detect for targets. --- Set the detection off. The AI will NOT detect for targets.
-- However, the list of already detected targets will be kept and can be enquired! -- However, the list of already detected targets will be kept and can be enquired!
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionOff() function AI_PATROL_ZONE:SetDetectionOff()
self:F2() self:F2()
self.DetectUnits = false self.DetectUnits = false
@ -24996,10 +24996,10 @@ end
-- Newly detected targets will be added, but already detected targets that were -- Newly detected targets will be added, but already detected targets that were
-- not detected in this cycle, will NOT be removed! -- not detected in this cycle, will NOT be removed!
-- The default interval is 30 seconds. -- The default interval is 30 seconds.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Seconds The interval in seconds. -- @param #number Seconds The interval in seconds.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionInterval( Seconds ) function AI_PATROL_ZONE:SetDetectionInterval( Seconds )
self:F2() self:F2()
if Seconds then if Seconds then
@ -25010,10 +25010,10 @@ function AI_PATROLZONE:SetDetectionInterval( Seconds )
end end
--- Set the detection zone where the AI is detecting targets. --- Set the detection zone where the AI is detecting targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Core.Zone#ZONE DetectionZone The zone where to detect targets. -- @param Core.Zone#ZONE DetectionZone The zone where to detect targets.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionZone( DetectionZone ) function AI_PATROL_ZONE:SetDetectionZone( DetectionZone )
self:F2() self:F2()
if DetectionZone then if DetectionZone then
@ -25026,9 +25026,9 @@ end
--- Gets a list of @{Wrapper.Unit#UNIT}s that were detected by the AI. --- Gets a list of @{Wrapper.Unit#UNIT}s that were detected by the AI.
-- No filtering is applied, so, ANY detected UNIT can be in this list. -- No filtering is applied, so, ANY detected UNIT can be in this list.
-- It is up to the mission designer to use the @{Unit} class and methods to filter the targets. -- It is up to the mission designer to use the @{Unit} class and methods to filter the targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #table The list of @{Wrapper.Unit#UNIT}s -- @return #table The list of @{Wrapper.Unit#UNIT}s
function AI_PATROLZONE:GetDetectedUnits() function AI_PATROL_ZONE:GetDetectedUnits()
self:F2() self:F2()
return self.DetectedUnits return self.DetectedUnits
@ -25037,13 +25037,13 @@ end
--- When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. --- When the AI is out of fuel, it is required that a new AI is started, before the old AI 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. -- 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 AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROLZONE. -- When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE.
-- Once the time is finished, the old AI will return to the base. -- Once the time is finished, the old AI will return to the base.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel. -- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.
-- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel AIControllable will orbit before returning to the base. -- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel AIControllable will orbit before returning to the base.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime ) function AI_PATROL_ZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime )
self.PatrolManageFuel = true self.PatrolManageFuel = true
self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage
@ -25058,10 +25058,10 @@ end
-- the AI will return immediately to the home base (RTB). -- the AI will return immediately to the home base (RTB).
-- Note that for groups, the average damage of the complete group will be calculated. -- Note that for groups, the average damage of the complete group will be calculated.
-- So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25. -- So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number PatrolDamageTreshold The treshold in percentage (between 0 and 1) when the AI is considered to be damaged. -- @param #number PatrolDamageTreshold The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:ManageDamage( PatrolDamageTreshold ) function AI_PATROL_ZONE:ManageDamage( PatrolDamageTreshold )
self.PatrolManageDamage = true self.PatrolManageDamage = true
self.PatrolDamageTreshold = PatrolDamageTreshold self.PatrolDamageTreshold = PatrolDamageTreshold
@ -25070,13 +25070,13 @@ function AI_PATROLZONE:ManageDamage( PatrolDamageTreshold )
end end
--- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings. --- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
function AI_PATROLZONE:onafterStart( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterStart( Controllable, From, Event, To )
self:F2() self:F2()
self:Route() -- Route to the patrol point. self:Route() -- Route to the patrol point.
@ -25089,16 +25089,16 @@ function AI_PATROLZONE:onafterStart( Controllable, From, Event, To )
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
--- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @param Wrapper.Controllable#CONTROLLABLE Controllable
function AI_PATROLZONE:onbeforeDetect( Controllable, From, Event, To ) function AI_PATROL_ZONE:onbeforeDetect( Controllable, From, Event, To )
return self.DetectUnits return self.DetectUnits
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
--- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @param Wrapper.Controllable#CONTROLLABLE Controllable
function AI_PATROLZONE:onafterDetect( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterDetect( Controllable, From, Event, To )
local DetectedTargets = Controllable:GetDetectedTargets() local DetectedTargets = Controllable:GetDetectedTargets()
for TargetID, Target in pairs( DetectedTargets ) do for TargetID, Target in pairs( DetectedTargets ) do
@ -25127,18 +25127,18 @@ end
function _NewPatrolRoute( AIControllable ) function _NewPatrolRoute( AIControllable )
AIControllable:T( "NewPatrolRoute" ) AIControllable:T( "NewPatrolRoute" )
local PatrolZone = AIControllable:GetState( AIControllable, "PatrolZone" ) -- PatrolCore.Zone#AI_PATROLZONE local PatrolZone = AIControllable:GetState( AIControllable, "PatrolZone" ) -- PatrolCore.Zone#AI_PATROL_ZONE
PatrolZone:Route() PatrolZone:Route()
end end
--- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings. --- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
function AI_PATROLZONE:onafterRoute( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterRoute( Controllable, From, Event, To )
self:F2() self:F2()
@ -25241,14 +25241,14 @@ function AI_PATROLZONE:onafterRoute( Controllable, From, Event, To )
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onbeforeStatus() function AI_PATROL_ZONE:onbeforeStatus()
return self.CheckStatus return self.CheckStatus
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onafterStatus() function AI_PATROL_ZONE:onafterStatus()
self:F2() self:F2()
if self.Controllable and self.Controllable:IsAlive() then if self.Controllable and self.Controllable:IsAlive() then
@ -25282,8 +25282,8 @@ function AI_PATROLZONE:onafterStatus()
end end
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onafterRTB() function AI_PATROL_ZONE:onafterRTB()
self:F2() self:F2()
if self.Controllable and self.Controllable:IsAlive() then if self.Controllable and self.Controllable:IsAlive() then
@ -26351,9 +26351,9 @@ end -- AI_CARGO_GROUPED
-- --
-- === -- ===
-- --
-- # 1) @{#AI_CAS_ZONE} class, extends @{AI.AI_Patrol#AI_PATROLZONE} -- # 1) @{#AI_CAS_ZONE} class, extends @{AI.AI_Patrol#AI_PATROL_ZONE}
-- --
-- @{#AI_CAS_ZONE} derives from the @{AI.AI_Patrol#AI_PATROLZONE}, inheriting its methods and behaviour. -- @{#AI_CAS_ZONE} derives from the @{AI.AI_Patrol#AI_PATROL_ZONE}, inheriting its methods and behaviour.
-- --
-- The @{#AI_CAS_ZONE} class implements the core functions to provide Close Air Support in an Engage @{Zone} by an AIR @{Controllable} or @{Group}. -- The @{#AI_CAS_ZONE} class implements the core functions to provide Close Air Support in an Engage @{Zone} by an AIR @{Controllable} or @{Group}.
-- The AI_CASE_ZONE is assigned a @(Group) and this must be done before the AI_CAS_ZONE process can be started through the **Start** event. -- The AI_CASE_ZONE is assigned a @(Group) and this must be done before the AI_CAS_ZONE process can be started through the **Start** event.
@ -26460,7 +26460,7 @@ AI_CAS_ZONE = {
function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone ) function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE local self = BASE:Inherit( self, AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE
self.EngageZone = EngageZone self.EngageZone = EngageZone
self.Accomplished = false self.Accomplished = false

View File

@ -24581,30 +24581,30 @@ end
-- --
-- === -- ===
-- --
-- # 1) @{#AI_PATROLZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE} -- # 1) @{#AI_PATROL_ZONE} class, extends @{Core.Fsm#FSM_CONTROLLABLE}
-- --
-- The @{#AI_PATROLZONE} class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}. -- The @{#AI_PATROL_ZONE} class implements the core functions to patrol a @{Zone} by an AI @{Controllable} or @{Group}.
-- The AI_PATROLZONE is assigned a @(Group) and this must be done before the AI_PATROLZONE process can be started. -- The AI_PATROL_ZONE is assigned a @(Group) and this must be done before the AI_PATROL_ZONE process can be started.
-- The AI will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits. -- The AI will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits.
-- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. -- Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits.
-- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. -- This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB.
-- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land. -- When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.
-- --
-- ## 1.1) AI_PATROLZONE constructor -- ## 1.1) AI_PATROL_ZONE constructor
-- --
-- * @{#AI_PATROLZONE.New}(): Creates a new AI_PATROLZONE object. -- * @{#AI_PATROL_ZONE.New}(): Creates a new AI_PATROL_ZONE object.
-- --
-- ## 1.2) AI_PATROLZONE is a FSM -- ## 1.2) AI_PATROL_ZONE is a FSM
-- --
-- ![Process](..\Presentations\AI_Patrol\Dia2.JPG) -- ![Process](..\Presentations\AI_Patrol\Dia2.JPG)
-- --
-- ### 1.2.1) AI_PATROLZONE States -- ### 1.2.1) AI_PATROL_ZONE States
-- --
-- * **None** ( Group ): The process is not started yet. -- * **None** ( Group ): The process is not started yet.
-- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone. -- * **Patrolling** ( Group ): The AI is patrolling the Patrol Zone.
-- * **Returning** ( Group ): The AI is returning to Base.. -- * **Returning** ( Group ): The AI is returning to Base..
-- --
-- ### 1.2.2) AI_PATROLZONE Events: -- ### 1.2.2) AI_PATROL_ZONE Events:
-- --
-- * **Start** ( Group ): Start the process. -- * **Start** ( Group ): Start the process.
-- * **Route** ( Group ): Route the AI to a new random 3D point within the Patrol Zone. -- * **Route** ( Group ): Route the AI to a new random 3D point within the Patrol Zone.
@ -24615,13 +24615,13 @@ end
-- --
-- ## 1.3) Set or Get the AI controllable -- ## 1.3) Set or Get the AI controllable
-- --
-- * @{#AI_PATROLZONE.SetControllable}(): Set the AIControllable. -- * @{#AI_PATROL_ZONE.SetControllable}(): Set the AIControllable.
-- * @{#AI_PATROLZONE.GetControllable}(): Get the AIControllable. -- * @{#AI_PATROL_ZONE.GetControllable}(): Get the AIControllable.
-- --
-- ## 1.4) Set the Speed and Altitude boundaries of the AI controllable -- ## 1.4) Set the Speed and Altitude boundaries of the AI controllable
-- --
-- * @{#AI_PATROLZONE.SetSpeed}(): Set the patrol speed boundaries of the AI, for the next patrol. -- * @{#AI_PATROL_ZONE.SetSpeed}(): Set the patrol speed boundaries of the AI, for the next patrol.
-- * @{#AI_PATROLZONE.SetAltitude}(): Set altitude boundaries of the AI, for the next patrol. -- * @{#AI_PATROL_ZONE.SetAltitude}(): Set altitude boundaries of the AI, for the next patrol.
-- --
-- ## 1.5) Manage the detection process of the AI controllable -- ## 1.5) Manage the detection process of the AI controllable
-- --
@ -24629,31 +24629,31 @@ end
-- Detection requires an amount of CPU power, which has an impact on your mission performance. -- Detection requires an amount of CPU power, which has an impact on your mission performance.
-- Only put detection on when absolutely necessary, and the frequency of the detection can also be set. -- Only put detection on when absolutely necessary, and the frequency of the detection can also be set.
-- --
-- * @{#AI_PATROLZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets. -- * @{#AI_PATROL_ZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets.
-- * @{#AI_PATROLZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased. -- * @{#AI_PATROL_ZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased.
-- --
-- The detection frequency can be set with @{#AI_PATROLZONE.SetDetectionInterval}( seconds ), where the amount of seconds specify how much seconds will be waited before the next detection. -- The detection frequency can be set with @{#AI_PATROL_ZONE.SetDetectionInterval}( seconds ), where the amount of seconds specify how much seconds will be waited before the next detection.
-- Use the method @{#AI_PATROLZONE.GetDetectedUnits}() to obtain a list of the @{Unit}s detected by the AI. -- Use the method @{#AI_PATROL_ZONE.GetDetectedUnits}() to obtain a list of the @{Unit}s detected by the AI.
-- --
-- The detection can be filtered to potential targets in a specific zone. -- The detection can be filtered to potential targets in a specific zone.
-- Use the method @{#AI_PATROLZONE.SetDetectionZone}() to set the zone where targets need to be detected. -- Use the method @{#AI_PATROL_ZONE.SetDetectionZone}() to set the zone where targets need to be detected.
-- Note that when the zone is too far away, or the AI is not heading towards the zone, or the AI is too high, no targets may be detected -- Note that when the zone is too far away, or the AI is not heading towards the zone, or the AI is too high, no targets may be detected
-- according the weather conditions. -- according the weather conditions.
-- --
-- ## 1.6) Manage the "out of fuel" in the AI_PATROLZONE -- ## 1.6) Manage the "out of fuel" in the AI_PATROL_ZONE
-- --
-- When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. -- When the AI is out of fuel, it is required that a new AI is started, before the old AI 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. -- 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 AI will continue for a given time its patrol task in orbit, -- When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit,
-- while a new AI is targetted to the AI_PATROLZONE. -- while a new AI is targetted to the AI_PATROL_ZONE.
-- Once the time is finished, the old AI will return to the base. -- Once the time is finished, the old AI will return to the base.
-- Use the method @{#AI_PATROLZONE.ManageFuel}() to have this proces in place. -- Use the method @{#AI_PATROL_ZONE.ManageFuel}() to have this proces in place.
-- --
-- ## 1.7) Manage "damage" behaviour of the AI in the AI_PATROLZONE -- ## 1.7) Manage "damage" behaviour of the AI in the AI_PATROL_ZONE
-- --
-- When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on. -- When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on.
-- Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB). -- Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB).
-- Use the method @{#AI_PATROLZONE.ManageDamage}() to have this proces in place. -- Use the method @{#AI_PATROL_ZONE.ManageDamage}() to have this proces in place.
-- --
-- ==== -- ====
-- --
@ -24666,7 +24666,7 @@ end
-- --
-- Hereby the change log: -- Hereby the change log:
-- --
-- 2016-01-15: Complete revision. AI_PATROLZONE is the base class for other AI_PATROL like classes. -- 2016-01-15: Complete revision. AI_PATROL_ZONE is the base class for other AI_PATROL like classes.
-- --
-- 2016-09-01: Initial class and API. -- 2016-09-01: Initial class and API.
-- --
@ -24685,8 +24685,8 @@ end
-- --
-- @module AI_Patrol -- @module AI_Patrol
--- AI_PATROLZONE class --- AI_PATROL_ZONE class
-- @type AI_PATROLZONE -- @type AI_PATROL_ZONE
-- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling. -- @field Wrapper.Controllable#CONTROLLABLE AIControllable The @{Controllable} patrolling.
-- @field Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. -- @field Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @field Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @field Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
@ -24695,27 +24695,27 @@ end
-- @field Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @field Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @field Functional.Spawn#SPAWN CoordTest -- @field Functional.Spawn#SPAWN CoordTest
-- @extends Core.Fsm#FSM_CONTROLLABLE -- @extends Core.Fsm#FSM_CONTROLLABLE
AI_PATROLZONE = { AI_PATROL_ZONE = {
ClassName = "AI_PATROLZONE", ClassName = "AI_PATROL_ZONE",
} }
--- Creates a new AI_PATROLZONE object --- Creates a new AI_PATROL_ZONE object
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed. -- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
-- @usage -- @usage
-- -- Define a new AI_PATROLZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h. -- -- Define a new AI_PATROL_ZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
-- PatrolZone = ZONE:New( 'PatrolZone' ) -- PatrolZone = ZONE:New( 'PatrolZone' )
-- PatrolSpawn = SPAWN:New( 'Patrol Group' ) -- PatrolSpawn = SPAWN:New( 'Patrol Group' )
-- PatrolArea = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 600, 900 ) -- PatrolArea = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 600, 900 )
function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) function AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- #AI_PATROLZONE local self = BASE:Inherit( self, FSM_CONTROLLABLE:New() ) -- #AI_PATROL_ZONE
self.PatrolZone = PatrolZone self.PatrolZone = PatrolZone
@ -24738,8 +24738,8 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
self:AddTransition( "None", "Start", "Patrolling" ) self:AddTransition( "None", "Start", "Patrolling" )
--- OnBefore Transition Handler for Event Start. --- OnBefore Transition Handler for Event Start.
-- @function [parent=#AI_PATROLZONE] OnBeforeStart -- @function [parent=#AI_PATROL_ZONE] OnBeforeStart
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24747,25 +24747,25 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Start. --- OnAfter Transition Handler for Event Start.
-- @function [parent=#AI_PATROLZONE] OnAfterStart -- @function [parent=#AI_PATROL_ZONE] OnAfterStart
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Start. --- Synchronous Event Trigger for Event Start.
-- @function [parent=#AI_PATROLZONE] Start -- @function [parent=#AI_PATROL_ZONE] Start
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Start. --- Asynchronous Event Trigger for Event Start.
-- @function [parent=#AI_PATROLZONE] __Start -- @function [parent=#AI_PATROL_ZONE] __Start
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
--- OnLeave Transition Handler for State Patrolling. --- OnLeave Transition Handler for State Patrolling.
-- @function [parent=#AI_PATROLZONE] OnLeavePatrolling -- @function [parent=#AI_PATROL_ZONE] OnLeavePatrolling
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24773,18 +24773,18 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnEnter Transition Handler for State Patrolling. --- OnEnter Transition Handler for State Patrolling.
-- @function [parent=#AI_PATROLZONE] OnEnterPatrolling -- @function [parent=#AI_PATROL_ZONE] OnEnterPatrolling
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
self:AddTransition( "Patrolling", "Route", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "Patrolling", "Route", "Patrolling" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Route. --- OnBefore Transition Handler for Event Route.
-- @function [parent=#AI_PATROLZONE] OnBeforeRoute -- @function [parent=#AI_PATROL_ZONE] OnBeforeRoute
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24792,27 +24792,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Route. --- OnAfter Transition Handler for Event Route.
-- @function [parent=#AI_PATROLZONE] OnAfterRoute -- @function [parent=#AI_PATROL_ZONE] OnAfterRoute
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Route. --- Synchronous Event Trigger for Event Route.
-- @function [parent=#AI_PATROLZONE] Route -- @function [parent=#AI_PATROL_ZONE] Route
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Route. --- Asynchronous Event Trigger for Event Route.
-- @function [parent=#AI_PATROLZONE] __Route -- @function [parent=#AI_PATROL_ZONE] __Route
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Status", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Status", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Status. --- OnBefore Transition Handler for Event Status.
-- @function [parent=#AI_PATROLZONE] OnBeforeStatus -- @function [parent=#AI_PATROL_ZONE] OnBeforeStatus
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24820,27 +24820,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Status. --- OnAfter Transition Handler for Event Status.
-- @function [parent=#AI_PATROLZONE] OnAfterStatus -- @function [parent=#AI_PATROL_ZONE] OnAfterStatus
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Status. --- Synchronous Event Trigger for Event Status.
-- @function [parent=#AI_PATROLZONE] Status -- @function [parent=#AI_PATROL_ZONE] Status
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Status. --- Asynchronous Event Trigger for Event Status.
-- @function [parent=#AI_PATROLZONE] __Status -- @function [parent=#AI_PATROL_ZONE] __Status
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Detect", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Detect", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Detect. --- OnBefore Transition Handler for Event Detect.
-- @function [parent=#AI_PATROLZONE] OnBeforeDetect -- @function [parent=#AI_PATROL_ZONE] OnBeforeDetect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24848,27 +24848,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Detect. --- OnAfter Transition Handler for Event Detect.
-- @function [parent=#AI_PATROLZONE] OnAfterDetect -- @function [parent=#AI_PATROL_ZONE] OnAfterDetect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Detect. --- Synchronous Event Trigger for Event Detect.
-- @function [parent=#AI_PATROLZONE] Detect -- @function [parent=#AI_PATROL_ZONE] Detect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Detect. --- Asynchronous Event Trigger for Event Detect.
-- @function [parent=#AI_PATROLZONE] __Detect -- @function [parent=#AI_PATROL_ZONE] __Detect
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "Detected", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "Detected", "*" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event Detected. --- OnBefore Transition Handler for Event Detected.
-- @function [parent=#AI_PATROLZONE] OnBeforeDetected -- @function [parent=#AI_PATROL_ZONE] OnBeforeDetected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24876,27 +24876,27 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event Detected. --- OnAfter Transition Handler for Event Detected.
-- @function [parent=#AI_PATROLZONE] OnAfterDetected -- @function [parent=#AI_PATROL_ZONE] OnAfterDetected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event Detected. --- Synchronous Event Trigger for Event Detected.
-- @function [parent=#AI_PATROLZONE] Detected -- @function [parent=#AI_PATROL_ZONE] Detected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event Detected. --- Asynchronous Event Trigger for Event Detected.
-- @function [parent=#AI_PATROLZONE] __Detected -- @function [parent=#AI_PATROL_ZONE] __Detected
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
self:AddTransition( "*", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROLZONE. self:AddTransition( "*", "RTB", "RTB" ) -- FSM_CONTROLLABLE Transition for type #AI_PATROL_ZONE.
--- OnBefore Transition Handler for Event RTB. --- OnBefore Transition Handler for Event RTB.
-- @function [parent=#AI_PATROLZONE] OnBeforeRTB -- @function [parent=#AI_PATROL_ZONE] OnBeforeRTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24904,25 +24904,25 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnAfter Transition Handler for Event RTB. --- OnAfter Transition Handler for Event RTB.
-- @function [parent=#AI_PATROLZONE] OnAfterRTB -- @function [parent=#AI_PATROL_ZONE] OnAfterRTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
--- Synchronous Event Trigger for Event RTB. --- Synchronous Event Trigger for Event RTB.
-- @function [parent=#AI_PATROLZONE] RTB -- @function [parent=#AI_PATROL_ZONE] RTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
--- Asynchronous Event Trigger for Event RTB. --- Asynchronous Event Trigger for Event RTB.
-- @function [parent=#AI_PATROLZONE] __RTB -- @function [parent=#AI_PATROL_ZONE] __RTB
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Delay The delay in seconds. -- @param #number Delay The delay in seconds.
--- OnLeave Transition Handler for State Returning. --- OnLeave Transition Handler for State Returning.
-- @function [parent=#AI_PATROLZONE] OnLeaveReturning -- @function [parent=#AI_PATROL_ZONE] OnLeaveReturning
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24930,8 +24930,8 @@ function AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitu
-- @return #boolean Return false to cancel Transition. -- @return #boolean Return false to cancel Transition.
--- OnEnter Transition Handler for State Returning. --- OnEnter Transition Handler for State Returning.
-- @function [parent=#AI_PATROLZONE] OnEnterReturning -- @function [parent=#AI_PATROL_ZONE] OnEnterReturning
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
@ -24944,11 +24944,11 @@ end
--- Sets (modifies) the minimum and maximum speed of the patrol. --- Sets (modifies) the minimum and maximum speed of the patrol.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMinSpeed The minimum speed of the @{Controllable} in km/h.
-- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h. -- @param Dcs.DCSTypes#Speed PatrolMaxSpeed The maximum speed of the @{Controllable} in km/h.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed ) function AI_PATROL_ZONE:SetSpeed( PatrolMinSpeed, PatrolMaxSpeed )
self:F2( { PatrolMinSpeed, PatrolMaxSpeed } ) self:F2( { PatrolMinSpeed, PatrolMaxSpeed } )
self.PatrolMinSpeed = PatrolMinSpeed self.PatrolMinSpeed = PatrolMinSpeed
@ -24958,24 +24958,24 @@ end
--- Sets the floor and ceiling altitude of the patrol. --- Sets the floor and ceiling altitude of the patrol.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolFloorAltitude The lowest altitude in meters where to execute the patrol.
-- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol. -- @param Dcs.DCSTypes#Altitude PatrolCeilingAltitude The highest altitude in meters where to execute the patrol.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude ) function AI_PATROL_ZONE:SetAltitude( PatrolFloorAltitude, PatrolCeilingAltitude )
self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } ) self:F2( { PatrolFloorAltitude, PatrolCeilingAltitude } )
self.PatrolFloorAltitude = PatrolFloorAltitude self.PatrolFloorAltitude = PatrolFloorAltitude
self.PatrolCeilingAltitude = PatrolCeilingAltitude self.PatrolCeilingAltitude = PatrolCeilingAltitude
end end
-- * @{#AI_PATROLZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets. -- * @{#AI_PATROL_ZONE.SetDetectionOn}(): Set the detection on. The AI will detect for targets.
-- * @{#AI_PATROLZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased. -- * @{#AI_PATROL_ZONE.SetDetectionOff}(): Set the detection off, the AI will not detect for targets. The existing target list will NOT be erased.
--- Set the detection on. The AI will detect for targets. --- Set the detection on. The AI will detect for targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionOn() function AI_PATROL_ZONE:SetDetectionOn()
self:F2() self:F2()
self.DetectUnits = true self.DetectUnits = true
@ -24983,9 +24983,9 @@ end
--- Set the detection off. The AI will NOT detect for targets. --- Set the detection off. The AI will NOT detect for targets.
-- However, the list of already detected targets will be kept and can be enquired! -- However, the list of already detected targets will be kept and can be enquired!
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionOff() function AI_PATROL_ZONE:SetDetectionOff()
self:F2() self:F2()
self.DetectUnits = false self.DetectUnits = false
@ -24996,10 +24996,10 @@ end
-- Newly detected targets will be added, but already detected targets that were -- Newly detected targets will be added, but already detected targets that were
-- not detected in this cycle, will NOT be removed! -- not detected in this cycle, will NOT be removed!
-- The default interval is 30 seconds. -- The default interval is 30 seconds.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number Seconds The interval in seconds. -- @param #number Seconds The interval in seconds.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionInterval( Seconds ) function AI_PATROL_ZONE:SetDetectionInterval( Seconds )
self:F2() self:F2()
if Seconds then if Seconds then
@ -25010,10 +25010,10 @@ function AI_PATROLZONE:SetDetectionInterval( Seconds )
end end
--- Set the detection zone where the AI is detecting targets. --- Set the detection zone where the AI is detecting targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Core.Zone#ZONE DetectionZone The zone where to detect targets. -- @param Core.Zone#ZONE DetectionZone The zone where to detect targets.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:SetDetectionZone( DetectionZone ) function AI_PATROL_ZONE:SetDetectionZone( DetectionZone )
self:F2() self:F2()
if DetectionZone then if DetectionZone then
@ -25026,9 +25026,9 @@ end
--- Gets a list of @{Wrapper.Unit#UNIT}s that were detected by the AI. --- Gets a list of @{Wrapper.Unit#UNIT}s that were detected by the AI.
-- No filtering is applied, so, ANY detected UNIT can be in this list. -- No filtering is applied, so, ANY detected UNIT can be in this list.
-- It is up to the mission designer to use the @{Unit} class and methods to filter the targets. -- It is up to the mission designer to use the @{Unit} class and methods to filter the targets.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #table The list of @{Wrapper.Unit#UNIT}s -- @return #table The list of @{Wrapper.Unit#UNIT}s
function AI_PATROLZONE:GetDetectedUnits() function AI_PATROL_ZONE:GetDetectedUnits()
self:F2() self:F2()
return self.DetectedUnits return self.DetectedUnits
@ -25037,13 +25037,13 @@ end
--- When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. --- When the AI is out of fuel, it is required that a new AI is started, before the old AI 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. -- 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 AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROLZONE. -- When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE.
-- Once the time is finished, the old AI will return to the base. -- Once the time is finished, the old AI will return to the base.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel. -- @param #number PatrolFuelTresholdPercentage The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.
-- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel AIControllable will orbit before returning to the base. -- @param #number PatrolOutOfFuelOrbitTime The amount of seconds the out of fuel AIControllable will orbit before returning to the base.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime ) function AI_PATROL_ZONE:ManageFuel( PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime )
self.PatrolManageFuel = true self.PatrolManageFuel = true
self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage self.PatrolFuelTresholdPercentage = PatrolFuelTresholdPercentage
@ -25058,10 +25058,10 @@ end
-- the AI will return immediately to the home base (RTB). -- the AI will return immediately to the home base (RTB).
-- Note that for groups, the average damage of the complete group will be calculated. -- Note that for groups, the average damage of the complete group will be calculated.
-- So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25. -- So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param #number PatrolDamageTreshold The treshold in percentage (between 0 and 1) when the AI is considered to be damaged. -- @param #number PatrolDamageTreshold The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
function AI_PATROLZONE:ManageDamage( PatrolDamageTreshold ) function AI_PATROL_ZONE:ManageDamage( PatrolDamageTreshold )
self.PatrolManageDamage = true self.PatrolManageDamage = true
self.PatrolDamageTreshold = PatrolDamageTreshold self.PatrolDamageTreshold = PatrolDamageTreshold
@ -25070,13 +25070,13 @@ function AI_PATROLZONE:ManageDamage( PatrolDamageTreshold )
end end
--- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings. --- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @return #AI_PATROLZONE self -- @return #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
function AI_PATROLZONE:onafterStart( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterStart( Controllable, From, Event, To )
self:F2() self:F2()
self:Route() -- Route to the patrol point. self:Route() -- Route to the patrol point.
@ -25089,16 +25089,16 @@ function AI_PATROLZONE:onafterStart( Controllable, From, Event, To )
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
--- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @param Wrapper.Controllable#CONTROLLABLE Controllable
function AI_PATROLZONE:onbeforeDetect( Controllable, From, Event, To ) function AI_PATROL_ZONE:onbeforeDetect( Controllable, From, Event, To )
return self.DetectUnits return self.DetectUnits
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
--- @param Wrapper.Controllable#CONTROLLABLE Controllable --- @param Wrapper.Controllable#CONTROLLABLE Controllable
function AI_PATROLZONE:onafterDetect( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterDetect( Controllable, From, Event, To )
local DetectedTargets = Controllable:GetDetectedTargets() local DetectedTargets = Controllable:GetDetectedTargets()
for TargetID, Target in pairs( DetectedTargets ) do for TargetID, Target in pairs( DetectedTargets ) do
@ -25127,18 +25127,18 @@ end
function _NewPatrolRoute( AIControllable ) function _NewPatrolRoute( AIControllable )
AIControllable:T( "NewPatrolRoute" ) AIControllable:T( "NewPatrolRoute" )
local PatrolZone = AIControllable:GetState( AIControllable, "PatrolZone" ) -- PatrolCore.Zone#AI_PATROLZONE local PatrolZone = AIControllable:GetState( AIControllable, "PatrolZone" ) -- PatrolCore.Zone#AI_PATROL_ZONE
PatrolZone:Route() PatrolZone:Route()
end end
--- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings. --- Defines a new patrol route using the @{Process_PatrolZone} parameters and settings.
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM. -- @param Wrapper.Controllable#CONTROLLABLE Controllable The Controllable Object managed by the FSM.
-- @param #string From The From State string. -- @param #string From The From State string.
-- @param #string Event The Event string. -- @param #string Event The Event string.
-- @param #string To The To State string. -- @param #string To The To State string.
function AI_PATROLZONE:onafterRoute( Controllable, From, Event, To ) function AI_PATROL_ZONE:onafterRoute( Controllable, From, Event, To )
self:F2() self:F2()
@ -25241,14 +25241,14 @@ function AI_PATROLZONE:onafterRoute( Controllable, From, Event, To )
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onbeforeStatus() function AI_PATROL_ZONE:onbeforeStatus()
return self.CheckStatus return self.CheckStatus
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onafterStatus() function AI_PATROL_ZONE:onafterStatus()
self:F2() self:F2()
if self.Controllable and self.Controllable:IsAlive() then if self.Controllable and self.Controllable:IsAlive() then
@ -25282,8 +25282,8 @@ function AI_PATROLZONE:onafterStatus()
end end
end end
--- @param #AI_PATROLZONE self --- @param #AI_PATROL_ZONE self
function AI_PATROLZONE:onafterRTB() function AI_PATROL_ZONE:onafterRTB()
self:F2() self:F2()
if self.Controllable and self.Controllable:IsAlive() then if self.Controllable and self.Controllable:IsAlive() then
@ -26351,9 +26351,9 @@ end -- AI_CARGO_GROUPED
-- --
-- === -- ===
-- --
-- # 1) @{#AI_CAS_ZONE} class, extends @{AI.AI_Patrol#AI_PATROLZONE} -- # 1) @{#AI_CAS_ZONE} class, extends @{AI.AI_Patrol#AI_PATROL_ZONE}
-- --
-- @{#AI_CAS_ZONE} derives from the @{AI.AI_Patrol#AI_PATROLZONE}, inheriting its methods and behaviour. -- @{#AI_CAS_ZONE} derives from the @{AI.AI_Patrol#AI_PATROL_ZONE}, inheriting its methods and behaviour.
-- --
-- The @{#AI_CAS_ZONE} class implements the core functions to provide Close Air Support in an Engage @{Zone} by an AIR @{Controllable} or @{Group}. -- The @{#AI_CAS_ZONE} class implements the core functions to provide Close Air Support in an Engage @{Zone} by an AIR @{Controllable} or @{Group}.
-- The AI_CASE_ZONE is assigned a @(Group) and this must be done before the AI_CAS_ZONE process can be started through the **Start** event. -- The AI_CASE_ZONE is assigned a @(Group) and this must be done before the AI_CAS_ZONE process can be started through the **Start** event.
@ -26460,7 +26460,7 @@ AI_CAS_ZONE = {
function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone ) function AI_CAS_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed, EngageZone )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE local self = BASE:Inherit( self, AI_PATROL_ZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) ) -- #AI_CAS_ZONE
self.EngageZone = EngageZone self.EngageZone = EngageZone
self.Accomplished = false self.Accomplished = false

View File

@ -39,7 +39,7 @@ function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup ) local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
PatrolZones[AIGroup] = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 400, 600 ) PatrolZones[AIGroup] = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
PatrolZones[AIGroup]:ManageFuel( 0.2, 60 ) PatrolZones[AIGroup]:ManageFuel( 0.2, 60 )
PatrolZones[AIGroup]:SetControllable( AIGroup ) PatrolZones[AIGroup]:SetControllable( AIGroup )
PatrolZones[AIGroup]:__Start( 5 ) PatrolZones[AIGroup]:__Start( 5 )

View File

@ -15,10 +15,10 @@ US_AI_Balancer = AI_BALANCER:New( US_PlanesClientSet, US_PlanesSpawn )
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Blue" ) --local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Blue" )
--local PatrolZoneBlue = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup ) --local PatrolZoneBlue = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
--local PatrolZoneB = AI_PATROLZONE:New( PatrolZoneBlue, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 ) --local PatrolZoneB = AI_PATROL_ZONE:New( PatrolZoneBlue, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
--US_AI_Balancer:SetPatrolZone( PatrolZoneB ) --US_AI_Balancer:SetPatrolZone( PatrolZoneB )
-- --
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Red" ) --local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Red" )
--local PatrolZoneRed = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup ) --local PatrolZoneRed = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
--local PatrolZoneR = AI_PATROLZONE:New( PatrolZoneRed, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 ) --local PatrolZoneR = AI_PATROL_ZONE:New( PatrolZoneRed, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
--RU_AI_Balancer:SetPatrolZone( PatrolZoneR ) --RU_AI_Balancer:SetPatrolZone( PatrolZoneR )

View File

@ -38,7 +38,7 @@ function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup ) local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
local Patrol = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 400, 600 ) local Patrol = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
Patrol:ManageFuel( 0.2, 60 ) Patrol:ManageFuel( 0.2, 60 )
Patrol:SetControllable( AIGroup ) Patrol:SetControllable( AIGroup )
Patrol:__Start( 5 ) Patrol:__Start( 5 )

View File

@ -43,7 +43,7 @@ local PatrolZoneArray = { PatrolZone1, PatrolZone2 }
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup ) function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
local Patrol = AI_PATROLZONE:New( PatrolZoneArray[math.random( 1, 2 )], 3000, 6000, 400, 600 ) local Patrol = AI_PATROL_ZONE:New( PatrolZoneArray[math.random( 1, 2 )], 3000, 6000, 400, 600 )
Patrol:ManageFuel( 0.2, 60 ) Patrol:ManageFuel( 0.2, 60 )
Patrol:SetControllable( AIGroup ) Patrol:SetControllable( AIGroup )
Patrol:__Start( 5 ) Patrol:__Start( 5 )

View File

@ -35,7 +35,7 @@ local PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup ) function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
local Patrol = AI_PATROLZONE:New( PatrolZone1, 3000, 6000, 400, 600 ) local Patrol = AI_PATROL_ZONE:New( PatrolZone1, 3000, 6000, 400, 600 )
Patrol:ManageFuel( 0.2, 60 ) Patrol:ManageFuel( 0.2, 60 )
Patrol:SetControllable( AIGroup ) Patrol:SetControllable( AIGroup )
Patrol:__Start( 5 ) Patrol:__Start( 5 )

View File

@ -1,6 +1,6 @@
-- This test mission models the behaviour of the AI_PATROLZONE class. -- This test mission models the behaviour of the AI_PATROL_ZONE class.
-- --
-- It creates a 2 AI_PATROLZONE objects with the name Patrol1 and Patrol2. -- It creates a 2 AI_PATROL_ZONE objects with the name Patrol1 and Patrol2.
-- Patrol1 will govern a GROUP object to patrol the zone defined by PatrolZone1, within 3000 meters and 6000 meters, within a speed of 400 and 600 km/h. -- Patrol1 will govern a GROUP object to patrol the zone defined by PatrolZone1, within 3000 meters and 6000 meters, within a speed of 400 and 600 km/h.
-- When the GROUP object that is assigned to Patrol has fuel below 20%, the GROUP object will orbit for 60 secondes, before returning to base. -- When the GROUP object that is assigned to Patrol has fuel below 20%, the GROUP object will orbit for 60 secondes, before returning to base.
-- --
@ -23,16 +23,16 @@ local PatrolZone2 = ZONE_POLYGON:New( "Patrol Zone 2", PatrolZoneGroup2 )
local PatrolSpawn = SPAWN:New( "Patrol Group" ) local PatrolSpawn = SPAWN:New( "Patrol Group" )
local PatrolGroup = PatrolSpawn:Spawn() local PatrolGroup = PatrolSpawn:Spawn()
local Patrol1 = AI_PATROLZONE:New( PatrolZone1, 3000, 6000, 400, 600 ) local Patrol1 = AI_PATROL_ZONE:New( PatrolZone1, 3000, 6000, 400, 600 )
Patrol1:ManageFuel( 0.2, 60 ) Patrol1:ManageFuel( 0.2, 60 )
Patrol1:SetControllable( PatrolGroup ) Patrol1:SetControllable( PatrolGroup )
Patrol1:__Start( 5 ) Patrol1:__Start( 5 )
local Patrol2 = AI_PATROLZONE:New( PatrolZone2, 600, 1000, 300, 400 ) local Patrol2 = AI_PATROL_ZONE:New( PatrolZone2, 600, 1000, 300, 400 )
Patrol2:ManageFuel( 0.2, 0 ) Patrol2:ManageFuel( 0.2, 0 )
--- State transition function for the PROCESS\_PATROLZONE **Patrol1** object --- State transition function for the PROCESS\_PATROLZONE **Patrol1** object
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Group#GROUP AIGroup -- @param Wrapper.Group#GROUP AIGroup
-- @return #boolean If false is returned, then the OnAfter state transition function will not be called. -- @return #boolean If false is returned, then the OnAfter state transition function will not be called.
function Patrol1:OnLeaveRTB( AIGroup ) function Patrol1:OnLeaveRTB( AIGroup )
@ -40,7 +40,7 @@ function Patrol1:OnLeaveRTB( AIGroup )
end end
--- State transition function for the PROCESS\_PATROLZONE **Patrol1** object --- State transition function for the PROCESS\_PATROLZONE **Patrol1** object
-- @param Process_PatrolCore.Zone#AI_PATROLZONE self -- @param Process_PatrolCore.Zone#AI_PATROL_ZONE self
-- @param Wrapper.Group#GROUP AIGroup -- @param Wrapper.Group#GROUP AIGroup
function Patrol1:OnAfterRTB( AIGroup ) function Patrol1:OnAfterRTB( AIGroup )
local NewGroup = PatrolSpawn:Spawn() local NewGroup = PatrolSpawn:Spawn()
@ -49,14 +49,14 @@ function Patrol1:OnAfterRTB( AIGroup )
end end
--- State transition function for the PROCESS\_PATROLZONE **Patrol1** object --- State transition function for the PROCESS\_PATROLZONE **Patrol1** object
-- @param Process_PatrolCore.Zone#AI_PATROLZONE self -- @param Process_PatrolCore.Zone#AI_PATROL_ZONE self
-- @param Wrapper.Group#GROUP AIGroup -- @param Wrapper.Group#GROUP AIGroup
function Patrol1:OnEnterPatrol( AIGroup ) function Patrol1:OnEnterPatrol( AIGroup )
AIGroup:MessageToRed( "Patrolling in zone " .. PatrolZone1:GetName() , 20 ) AIGroup:MessageToRed( "Patrolling in zone " .. PatrolZone1:GetName() , 20 )
end end
--- State transition function for the PROCESS\_PATROLZONE **Patrol2** object --- State transition function for the PROCESS\_PATROLZONE **Patrol2** object
-- @param #AI_PATROLZONE self -- @param #AI_PATROL_ZONE self
-- @param Wrapper.Group#GROUP AIGroup -- @param Wrapper.Group#GROUP AIGroup
-- @return #boolean If false is returned, then the OnEnter state transition function will not be called. -- @return #boolean If false is returned, then the OnEnter state transition function will not be called.
function Patrol2:OnBeforeRTB( AIGroup ) function Patrol2:OnBeforeRTB( AIGroup )
@ -64,7 +64,7 @@ function Patrol2:OnBeforeRTB( AIGroup )
end end
--- State transition function for the PROCESS\_PATROLZONE **Patrol2** object --- State transition function for the PROCESS\_PATROLZONE **Patrol2** object
-- @param Process_PatrolCore.Zone#AI_PATROLZONE self -- @param Process_PatrolCore.Zone#AI_PATROL_ZONE self
-- @param Wrapper.Group#GROUP AIGroup -- @param Wrapper.Group#GROUP AIGroup
function Patrol2:OnEnterRTB( AIGroup ) function Patrol2:OnEnterRTB( AIGroup )
local NewGroup = PatrolSpawn:Spawn() local NewGroup = PatrolSpawn:Spawn()
@ -73,7 +73,7 @@ function Patrol2:OnEnterRTB( AIGroup )
end end
--- State transition function for the PROCESS\_PATROLZONE **Patrol2** object --- State transition function for the PROCESS\_PATROLZONE **Patrol2** object
-- @param Process_PatrolCore.Zone#AI_PATROLZONE self -- @param Process_PatrolCore.Zone#AI_PATROL_ZONE self
-- @param Wrapper.Group#GROUP AIGroup -- @param Wrapper.Group#GROUP AIGroup
function Patrol2:OnEnterPatrol( AIGroup ) function Patrol2:OnEnterPatrol( AIGroup )
AIGroup:MessageToRed( "Patrolling in zone " .. PatrolZone2:GetName() , 20 ) AIGroup:MessageToRed( "Patrolling in zone " .. PatrolZone2:GetName() , 20 )

View File

@ -79,23 +79,44 @@
<hr/> <hr/>
<h1>1) <a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> class, extends <a href="AI.AI_Patrol.html##(AI_PATROLZONE)">AI.AI<em>Patrol#AI</em>PATROLZONE</a></h1> <h1>1) <a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> class, extends <a href="AI.AI_Patrol.html##(AI_PATROL_ZONE)">AI.AI<em>Patrol#AI</em>PATROL_ZONE</a></h1>
<p><a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> derives from the <a href="AI.AI_Patrol.html##(AI_PATROLZONE)">AI.AI<em>Patrol#AI</em>PATROLZONE</a>, inheriting its methods and behaviour.</p> <p><a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> derives from the <a href="AI.AI_Patrol.html##(AI_PATROL_ZONE)">AI.AI<em>Patrol#AI</em>PATROL_ZONE</a>, inheriting its methods and behaviour.</p>
<p>The <a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> class implements the core functions to provide Close Air Support in an Engage <a href="Zone.html">Zone</a> by an AIR <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>. <p>The <a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> class implements the core functions to provide Close Air Support in an Engage <a href="Zone.html">Zone</a> by an AIR <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>.
The AI<em>CASE</em>ZONE is assigned a @(Group) and this must be done before the AI<em>CAS</em>ZONE process can be started through the <strong>Start</strong> event. </p> The AI<em>CAS</em>ZONE runs a process. It holds an AI in a Patrol Zone and when the AI is commanded to engage, it will fly to an Engage Zone.</p>
<p><img src="..\Presentations\AI_Cas\Dia3.JPG" alt="HoldAndEngage"/></p>
<p>The AI<em>CAS</em>ZONE is assigned a @(Group) and this must be done before the AI<em>CAS</em>ZONE process can be started through the <strong>Start</strong> event.</p>
<p><img src="..\Presentations\AI_Cas\Dia4.JPG" alt="Start Event"/></p>
<p>Upon started, The AI will <strong>Route</strong> itself towards the random 3D point within a patrol zone, <p>Upon started, The AI will <strong>Route</strong> itself towards the random 3D point within a patrol zone,
using a random speed within the given altitude and speed limits. using a random speed within the given altitude and speed limits.
Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits.
This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB.</p> This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB.</p>
<p><img src="..\Presentations\AI_Cas\Dia5.JPG" alt="Route Event"/></p>
<p>When the AI is commanded to provide Close Air Support (through the event <strong>Engage</strong>), the AI will fly towards the Engage Zone. <p>When the AI is commanded to provide Close Air Support (through the event <strong>Engage</strong>), the AI will fly towards the Engage Zone.
Any target that is detected in the Engage Zone will be reported and will be destroyed by the AI.</p> Any target that is detected in the Engage Zone will be reported and will be destroyed by the AI.</p>
<p>Note that the AI does not know when the Engage Zone is cleared, and therefore will keep circling in the zone <p><img src="..\Presentations\AI_Cas\Dia6.JPG" alt="Engage Event"/></p>
until it is notified through the event <strong>Accomplish</strong>, which is to be triggered by an observing party:</p>
<p>The AI will detect the targets and will only destroy the targets within the Engage Zone.</p>
<p><img src="..\Presentations\AI_Cas\Dia7.JPG" alt="Engage Event"/></p>
<p>Every target that is destroyed, is reported&lt; by the AI.</p>
<p><img src="..\Presentations\AI_Cas\Dia8.JPG" alt="Engage Event"/></p>
<p>Note that the AI does not know when the Engage Zone is cleared, and therefore will keep circling in the zone. </p>
<p><img src="..\Presentations\AI_Cas\Dia9.JPG" alt="Engage Event"/></p>
<p>Until it is notified through the event <strong>Accomplish</strong>, which is to be triggered by an observing party:</p>
<ul> <ul>
<li>a FAC</li> <li>a FAC</li>
@ -105,12 +126,18 @@ until it is notified through the event <strong>Accomplish</strong>, which is to
<li>others ...</li> <li>others ...</li>
</ul> </ul>
<p>When the AI has accomplished the CAS, it will fly back to the Patrol Zone. <p><img src="..\Presentations\AI_Cas\Dia10.JPG" alt="Engage Event"/></p>
It will keep patrolling there, until it is notified to RTB or move to another CAS Zone.
<p>When the AI has accomplished the CAS, it will fly back to the Patrol Zone.</p>
<p><img src="..\Presentations\AI_Cas\Dia11.JPG" alt="Engage Event"/></p>
<p>It will keep patrolling there, until it is notified to RTB or move to another CAS Zone.
It can be notified to go RTB through the <strong>RTB</strong> event.</p> It can be notified to go RTB through the <strong>RTB</strong> event.</p>
<p>When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> <p>When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_Cas\Dia12.JPG" alt="Engage Event"/></p>
<h1>1.1) AI<em>CAS</em>ZONE constructor</h1> <h1>1.1) AI<em>CAS</em>ZONE constructor</h1>
@ -336,6 +363,12 @@ It can be notified to go RTB through the <strong>RTB</strong> event.</p>
<td class="name" nowrap="nowrap"><a href="##(AI_CAS_ZONE).OnLeaveEngaging">AI_CAS_ZONE:OnLeaveEngaging(Controllable, From, Event, To)</a></td> <td class="name" nowrap="nowrap"><a href="##(AI_CAS_ZONE).OnLeaveEngaging">AI_CAS_ZONE:OnLeaveEngaging(Controllable, From, Event, To)</a></td>
<td class="summary"> <td class="summary">
<p>OnLeave Transition Handler for State Engaging.</p> <p>OnLeave Transition Handler for State Engaging.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_CAS_ZONE).SetEngageZone">AI_CAS_ZONE:SetEngageZone(EngageZone)</a></td>
<td class="summary">
<p>Set the Engage Zone where the AI is performing CAS.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -402,6 +435,16 @@ It can be notified to go RTB through the <strong>RTB</strong> event.</p>
<td class="name" nowrap="nowrap"><a href="##(AI_CAS_ZONE).onbeforeEngage">AI_CAS_ZONE:onbeforeEngage(Controllable, From, Event, To)</a></td> <td class="name" nowrap="nowrap"><a href="##(AI_CAS_ZONE).onbeforeEngage">AI_CAS_ZONE:onbeforeEngage(Controllable, From, Event, To)</a></td>
<td class="summary"> <td class="summary">
</td>
</tr>
</table>
<h2><a id="#(AI_PATROL_ZONE)">Type <code>AI_PATROL_ZONE</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROL_ZONE).EngageZone">AI_PATROL_ZONE.EngageZone</a></td>
<td class="summary">
</td> </td>
</tr> </tr>
</table> </table>
@ -1169,6 +1212,36 @@ The To State string.</p>
<p><em>#boolean:</em> <p><em>#boolean:</em>
Return false to cancel Transition.</p> Return false to cancel Transition.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_CAS_ZONE).SetEngageZone" >
<strong>AI_CAS_ZONE:SetEngageZone(EngageZone)</strong>
</a>
</dt>
<dd>
<p>Set the Engage Zone where the AI is performing CAS.</p>
<p>Note that if the EngageZone is changed, the AI needs to re-detect targets.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Core.Zone.html##(ZONE)">Core.Zone#ZONE</a> EngageZone </em></code>:
The zone where the AI is performing CAS.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_PATROL_ZONE)">#AI<em>PATROL</em>ZONE</a>:</em>
self</p>
</dd> </dd>
</dl> </dl>
<dl class="function"> <dl class="function">
@ -1498,6 +1571,23 @@ The To State string.</p>
</li> </li>
</ul> </ul>
</dd>
</dl>
<h2><a id="#(AI_PATROL_ZONE)" >Type <code>AI_PATROL_ZONE</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_PATROL_ZONE).EngageZone" >
<strong>AI_PATROL_ZONE.EngageZone</strong>
</a>
</dt>
<dd>
</dd> </dd>
</dl> </dl>

File diff suppressed because it is too large Load Diff

View File

@ -2412,7 +2412,6 @@ The UNIT carrying the package.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(AI_CARGO_UNIT).CargoCarrier" > <a id="#(AI_CARGO_UNIT).CargoCarrier" >
<strong>AI_CARGO_UNIT.CargoCarrier</strong> <strong>AI_CARGO_UNIT.CargoCarrier</strong>
</a> </a>

View File

@ -1487,7 +1487,7 @@ A string defining the start state.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em> <em>#string</em>
<a id="#(FSM)._StartState" > <a id="#(FSM)._StartState" >
<strong>FSM._StartState</strong> <strong>FSM._StartState</strong>
</a> </a>
@ -1781,7 +1781,6 @@ A string defining the start state.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em></em>
<a id="#(FSM).current" > <a id="#(FSM).current" >
<strong>FSM.current</strong> <strong>FSM.current</strong>
</a> </a>

View File

@ -2170,7 +2170,7 @@ when nothing was spawned.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em>#number</em> <em></em>
<a id="#(SPAWN).SpawnMaxGroups" > <a id="#(SPAWN).SpawnMaxGroups" >
<strong>SPAWN.SpawnMaxGroups</strong> <strong>SPAWN.SpawnMaxGroups</strong>
</a> </a>
@ -2187,7 +2187,7 @@ when nothing was spawned.</p>
<dl class="function"> <dl class="function">
<dt> <dt>
<em>#number</em> <em></em>
<a id="#(SPAWN).SpawnMaxUnitsAlive" > <a id="#(SPAWN).SpawnMaxUnitsAlive" >
<strong>SPAWN.SpawnMaxUnitsAlive</strong> <strong>SPAWN.SpawnMaxUnitsAlive</strong>
</a> </a>
@ -2490,7 +2490,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
<p> Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.</p> <p> When the first Spawn executes, all the Groups need to be made visible before start.</p>
</dd> </dd>
</dl> </dl>