mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
772 lines
24 KiB
HTML
772 lines
24 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html>
|
|
<head>
|
|
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
|
|
</head>
|
|
<body>
|
|
<div id="container">
|
|
<div id="product">
|
|
<div id="product_logo"></div>
|
|
<div id="product_name"><big><b></b></big></div>
|
|
<div id="product_description"></div>
|
|
</div>
|
|
<div id="main">
|
|
<div id="navigation">
|
|
<h2>Modules</h2>
|
|
<ul><li>
|
|
<a href="index.html">index</a>
|
|
</li></ul>
|
|
<ul>
|
|
<li><a href="AI_Balancer.html">AI_Balancer</a></li>
|
|
<li><a href="Account.html">Account</a></li>
|
|
<li><a href="Airbase.html">Airbase</a></li>
|
|
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
|
|
<li><a href="Assign.html">Assign</a></li>
|
|
<li><a href="Base.html">Base</a></li>
|
|
<li><a href="Cargo.html">Cargo</a></li>
|
|
<li><a href="CleanUp.html">CleanUp</a></li>
|
|
<li><a href="Client.html">Client</a></li>
|
|
<li><a href="CommandCenter.html">CommandCenter</a></li>
|
|
<li><a href="Controllable.html">Controllable</a></li>
|
|
<li><a href="Database.html">Database</a></li>
|
|
<li><a href="Detection.html">Detection</a></li>
|
|
<li><a href="Escort.html">Escort</a></li>
|
|
<li><a href="Event.html">Event</a></li>
|
|
<li><a href="Fsm.html">Fsm</a></li>
|
|
<li><a href="Group.html">Group</a></li>
|
|
<li><a href="Identifiable.html">Identifiable</a></li>
|
|
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
|
|
<li><a href="Menu.html">Menu</a></li>
|
|
<li><a href="Message.html">Message</a></li>
|
|
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
|
|
<li><a href="Mission.html">Mission</a></li>
|
|
<li><a href="Object.html">Object</a></li>
|
|
<li>Patrol</li>
|
|
<li><a href="Point.html">Point</a></li>
|
|
<li><a href="Positionable.html">Positionable</a></li>
|
|
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
|
|
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
|
|
<li><a href="Route.html">Route</a></li>
|
|
<li><a href="ScheduleDispatcher.html">ScheduleDispatcher</a></li>
|
|
<li><a href="Scheduler.html">Scheduler</a></li>
|
|
<li><a href="Scoring.html">Scoring</a></li>
|
|
<li><a href="Sead.html">Sead</a></li>
|
|
<li><a href="Set.html">Set</a></li>
|
|
<li><a href="Smoke.html">Smoke</a></li>
|
|
<li><a href="Spawn.html">Spawn</a></li>
|
|
<li><a href="Static.html">Static</a></li>
|
|
<li><a href="Task.html">Task</a></li>
|
|
<li><a href="Task_A2G.html">Task_A2G</a></li>
|
|
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
|
|
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
|
|
<li><a href="Unit.html">Unit</a></li>
|
|
<li><a href="Utils.html">Utils</a></li>
|
|
<li><a href="Zone.html">Zone</a></li>
|
|
<li><a href="routines.html">routines</a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="content">
|
|
<h1>Module <code>Patrol</code></h1>
|
|
|
|
<p>(AI) (FSM) Make AI patrol routes or zones.</p>
|
|
|
|
|
|
|
|
<hr/>
|
|
|
|
<h1>1) <a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a> class, extends <a href="Core.Fsm.html##(FSM_CONTROLLABLE)">Core.Fsm#FSM_CONTROLLABLE</a></h1>
|
|
<p>The <a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AIR <a href="Controllable.html">Controllable</a> <a href="Group.html">Group</a>.
|
|
The patrol algorithm works that for each airplane patrolling, upon arrival at the patrol zone,
|
|
a random point is selected as the route point within the 3D space, within the given boundary limits.
|
|
The airplane 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 random 3D point, a new 3D random point will be selected within the patrol zone using the given limits.
|
|
This cycle will continue until a fuel treshold has been reached by the airplane.
|
|
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
|
|
|
|
<h2>1.1) AI_PATROLZONE constructor:</h2>
|
|
|
|
<ul>
|
|
<li><a href="##(AI_PATROLZONE).New">AI_PATROLZONE.New</a>(): Creates a new AI_PATROLZONE object.</li>
|
|
</ul>
|
|
|
|
<h2>1.2) AI_PATROLZONE state machine:</h2>
|
|
<p>The AI_PATROLZONE is a state machine: it manages the different events and states of the AIControllable it is controlling.</p>
|
|
|
|
<h3>1.2.1) AI_PATROLZONE Events:</h3>
|
|
|
|
<ul>
|
|
<li><a href="##(AI_PATROLZONE).Route">AI_PATROLZONE.Route</a>( AIControllable ): A new 3D route point is selected and the AIControllable will fly towards that point with the given speed.</li>
|
|
<li><a href="##(AI_PATROLZONE).Patrol">AI_PATROLZONE.Patrol</a>( AIControllable ): The AIControllable reports it is patrolling. This event is called every 30 seconds.</li>
|
|
<li><a href="##(AI_PATROLZONE).RTB">AI_PATROLZONE.RTB</a>( AIControllable ): The AIControllable will report return to base.</li>
|
|
<li><a href="##(AI_PATROLZONE).End">AI_PATROLZONE.End</a>( AIControllable ): The end of the AI_PATROLZONE process.</li>
|
|
<li><a href="##(AI_PATROLZONE).Dead">AI_PATROLZONE.Dead</a>( AIControllable ): The AIControllable is dead. The AI_PATROLZONE process will be ended.</li>
|
|
</ul>
|
|
|
|
<h3>1.2.2) AI_PATROLZONE States:</h3>
|
|
|
|
<ul>
|
|
<li><strong>Route</strong>: A new 3D route point is selected and the AIControllable will fly towards that point with the given speed.</li>
|
|
<li><strong>Patrol</strong>: The AIControllable is patrolling. This state is set every 30 seconds, so every 30 seconds, a state transition method can be used.</li>
|
|
<li><strong>RTB</strong>: The AIControllable reports it wants to return to the base.</li>
|
|
<li><strong>Dead</strong>: The AIControllable is dead ...</li>
|
|
<li><strong>End</strong>: The process has come to an end.</li>
|
|
</ul>
|
|
|
|
<h3>1.2.3) AI_PATROLZONE state transition methods:</h3>
|
|
|
|
<p>State transition functions can be set <strong>by the mission designer</strong> customizing or improving the behaviour of the state.
|
|
There are 2 moments when state transition methods will be called by the state machine:</p>
|
|
|
|
<ul>
|
|
<li><p><strong>Before</strong> the state transition.
|
|
The state transition method needs to start with the name <strong>OnBefore + the name of the state</strong>.
|
|
If the state transition method returns false, then the processing of the state transition will not be done!
|
|
If you want to change the behaviour of the AIControllable at this event, return false,
|
|
but then you'll need to specify your own logic using the AIControllable!</p></li>
|
|
<li><p><strong>After</strong> the state transition.
|
|
The state transition method needs to start with the name <strong>OnAfter + the name of the state</strong>.
|
|
These state transition methods need to provide a return value, which is specified at the function description.</p></li>
|
|
</ul>
|
|
|
|
<p>An example how to manage a state transition for an AI_PATROLZONE object <strong>Patrol</strong> for the state <strong>RTB</strong>:</p>
|
|
|
|
<pre><code> local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone" )
|
|
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
|
|
|
local PatrolSpawn = SPAWN:New( "Patrol Group" )
|
|
local PatrolGroup = PatrolSpawn:Spawn()
|
|
|
|
local Patrol = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 300, 600 )
|
|
Patrol:SetControllable( PatrolGroup )
|
|
Patrol:ManageFuel( 0.2, 60 )
|
|
</code></pre>
|
|
|
|
<p><strong>OnBefore</strong>RTB( AIGroup ) will be called by the AI<em>PATROLZONE object when the AIGroup reports RTB, but <strong>before</strong> the RTB default action is processed by the AI</em>PATROLZONE object.</p>
|
|
|
|
<pre><code> --- State transition function for the AI_PATROLZONE **Patrol** object
|
|
-- @param #AI_PATROLZONE self
|
|
-- @param Wrapper.Controllable#CONTROLLABLE AIGroup
|
|
-- @return #boolean If false is returned, then the OnAfter state transition method will not be called.
|
|
function Patrol:OnBeforeRTB( AIGroup )
|
|
AIGroup:MessageToRed( "Returning to base", 20 )
|
|
end
|
|
</code></pre>
|
|
|
|
<p><strong>OnAfter</strong>RTB( AIGroup ) will be called by the AI<em>PATROLZONE object when the AIGroup reports RTB, but <strong>after</strong> the RTB default action was processed by the AI</em>PATROLZONE object.</p>
|
|
|
|
<pre><code> --- State transition function for the AI_PATROLZONE **Patrol** object
|
|
-- @param #AI_PATROLZONE self
|
|
-- @param Wrapper.Controllable#CONTROLLABLE AIGroup
|
|
-- @return #Wrapper.Controllable#CONTROLLABLE The new AIGroup object that is set to be patrolling the zone.
|
|
function Patrol:OnAfterRTB( AIGroup )
|
|
return PatrolSpawn:Spawn()
|
|
end
|
|
</code></pre>
|
|
|
|
<h2>1.3) Manage the AI_PATROLZONE parameters:</h2>
|
|
<p>The following methods are available to modify the parameters of a AI_PATROLZONE object:</p>
|
|
|
|
<ul>
|
|
<li><a href="##(AI_PATROLZONE).SetControllable">AI_PATROLZONE.SetControllable</a>(): Set the AIControllable.</li>
|
|
<li><a href="##(AI_PATROLZONE).GetControllable">AI_PATROLZONE.GetControllable</a>(): Get the AIControllable.</li>
|
|
<li><a href="##(AI_PATROLZONE).SetSpeed">AI_PATROLZONE.SetSpeed</a>(): Set the patrol speed of the AI, for the next patrol.</li>
|
|
<li><a href="##(AI_PATROLZONE).SetAltitude">AI_PATROLZONE.SetAltitude</a>(): Set altitude of the AI, for the next patrol.</li>
|
|
</ul>
|
|
|
|
<h2>1.3) Manage the out of fuel in the AI_PATROLZONE:</h2>
|
|
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.
|
|
Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
|
|
When the fuel treshold is reached, the AIControllable will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROLZONE.
|
|
Once the time is finished, the old AIControllable will return to the base.
|
|
Use the method <a href="##(AI_PATROLZONE).ManageFuel">AI_PATROLZONE.ManageFuel</a>() to have this proces in place.</p>
|
|
|
|
<hr/>
|
|
|
|
<h1><strong>API CHANGE HISTORY</strong></h1>
|
|
|
|
<p>The underlying change log documents the API changes. Please read this carefully. The following notation is used:</p>
|
|
|
|
<ul>
|
|
<li><strong>Added</strong> parts are expressed in bold type face.</li>
|
|
<li><em>Removed</em> parts are expressed in italic type face.</li>
|
|
</ul>
|
|
|
|
<p>Hereby the change log:</p>
|
|
|
|
<p>2016-09-01: Initial class and API.</p>
|
|
|
|
<hr/>
|
|
|
|
<h1>AUTHORS and CONTRIBUTIONS</h1>
|
|
|
|
<h3>Contributions:</h3>
|
|
|
|
<ul>
|
|
<li><strong>DutchBaron</strong>: Testing.</li>
|
|
<li><strong>Pikey</strong>: Testing and API concept review.</li>
|
|
</ul>
|
|
|
|
<h3>Authors:</h3>
|
|
|
|
<ul>
|
|
<li><strong>FlightControl</strong>: Design & Programming.</li>
|
|
</ul>
|
|
|
|
|
|
|
|
<h2>Global(s)</h2>
|
|
<table class="function_list">
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="#AI_PATROLZONE">AI_PATROLZONE</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="#_NewPatrolRoute">_NewPatrolRoute(AIControllable)</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<h2><a id="#(AI_PATROLZONE)">Type <code>AI_PATROLZONE</code></a></h2>
|
|
<table class="function_list">
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).AIControllable">AI_PATROLZONE.AIControllable</a></td>
|
|
<td class="summary">
|
|
<p>The <a href="Controllable.html">Controllable</a> patrolling.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).ClassName">AI_PATROLZONE.ClassName</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).ManageFuel">AI_PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</a></td>
|
|
<td class="summary">
|
|
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).New">AI_PATROLZONE:New(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</a></td>
|
|
<td class="summary">
|
|
<p>Creates a new AI_PATROLZONE object</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).OnAfterRoute">AI_PATROLZONE:OnAfterRoute(Controllable)</a></td>
|
|
<td class="summary">
|
|
<p>OnAfter State Transition Function</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).OnBeforeRoute">AI_PATROLZONE:OnBeforeRoute(Controllable)</a></td>
|
|
<td class="summary">
|
|
<p>OnBefore State Transition Function</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolCeilingAltitude">AI_PATROLZONE.PatrolCeilingAltitude</a></td>
|
|
<td class="summary">
|
|
<p>The highest altitude in meters where to execute the patrol.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolFloorAltitude">AI_PATROLZONE.PatrolFloorAltitude</a></td>
|
|
<td class="summary">
|
|
<p>The lowest altitude in meters where to execute the patrol.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolFuelTresholdPercentage">AI_PATROLZONE.PatrolFuelTresholdPercentage</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolManageFuel">AI_PATROLZONE.PatrolManageFuel</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolMaxSpeed">AI_PATROLZONE.PatrolMaxSpeed</a></td>
|
|
<td class="summary">
|
|
<p>The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolMinSpeed">AI_PATROLZONE.PatrolMinSpeed</a></td>
|
|
<td class="summary">
|
|
<p>The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolOutOfFuelOrbitTime">AI_PATROLZONE.PatrolOutOfFuelOrbitTime</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolZone">AI_PATROLZONE.PatrolZone</a></td>
|
|
<td class="summary">
|
|
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).SetAltitude">AI_PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</a></td>
|
|
<td class="summary">
|
|
<p>Sets the floor and ceiling altitude of the patrol.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).SetSpeed">AI_PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</a></td>
|
|
<td class="summary">
|
|
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).onenterPatrol">AI_PATROLZONE:onenterPatrol()</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).onenterRoute">AI_PATROLZONE:onenterRoute()</a></td>
|
|
<td class="summary">
|
|
<p>Defines a new patrol route using the <a href="Process_PatrolZone.html">Process_PatrolZone</a> parameters and settings.</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h2>Global(s)</h2>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a></em>
|
|
<a id="AI_PATROLZONE" >
|
|
<strong>AI_PATROLZONE</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="_NewPatrolRoute" >
|
|
<strong>_NewPatrolRoute(AIControllable)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
<h3>Parameter</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> AIControllable </em></code>: </p>
|
|
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<h2><a id="#(Patrol)" >Type <code>Patrol</code></a></h2>
|
|
|
|
<h2><a id="#(AI_PATROLZONE)" >Type <code>AI_PATROLZONE</code></a></h2>
|
|
|
|
<p>AI_PATROLZONE class</p>
|
|
|
|
<h3>Field(s)</h3>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a></em>
|
|
<a id="#(AI_PATROLZONE).AIControllable" >
|
|
<strong>AI_PATROLZONE.AIControllable</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>The <a href="Controllable.html">Controllable</a> patrolling.</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em>#string</em>
|
|
<a id="#(AI_PATROLZONE).ClassName" >
|
|
<strong>AI_PATROLZONE.ClassName</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_PATROLZONE).ManageFuel" >
|
|
<strong>AI_PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.</p>
|
|
|
|
|
|
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
|
|
When the fuel treshold is reached, the AIControllable will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROLZONE.
|
|
Once the time is finished, the old AIControllable will return to the base.</p>
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em>#number PatrolFuelTresholdPercentage </em></code>:
|
|
The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em>#number PatrolOutOfFuelOrbitTime </em></code>:
|
|
The amount of seconds the out of fuel AIControllable will orbit before returning to the base.</p>
|
|
|
|
</li>
|
|
</ul>
|
|
<h3>Return value</h3>
|
|
|
|
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
|
|
self</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_PATROLZONE).New" >
|
|
<strong>AI_PATROLZONE:New(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>Creates a new AI_PATROLZONE object</p>
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Core.Zone.html##(ZONE_BASE)">Core.Zone#ZONE_BASE</a> PatrolZone </em></code>:
|
|
The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Altitude)">Dcs.DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
|
|
The lowest altitude in meters where to execute the patrol.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Altitude)">Dcs.DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
|
|
The highest altitude in meters where to execute the patrol.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
|
|
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
|
|
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
|
|
|
|
</li>
|
|
</ul>
|
|
<h3>Return value</h3>
|
|
|
|
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
|
|
self</p>
|
|
|
|
<h3>Usage:</h3>
|
|
<pre class="example"><code>-- 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.
|
|
PatrolZone = ZONE:New( 'PatrolZone' )
|
|
PatrolSpawn = SPAWN:New( 'Patrol Group' )
|
|
PatrolArea = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 600, 900 )</code></pre>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_PATROLZONE).OnAfterRoute" >
|
|
<strong>AI_PATROLZONE:OnAfterRoute(Controllable)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>OnAfter State Transition Function</p>
|
|
|
|
<h3>Parameter</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>: </p>
|
|
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_PATROLZONE).OnBeforeRoute" >
|
|
<strong>AI_PATROLZONE:OnBeforeRoute(Controllable)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>OnBefore State Transition Function</p>
|
|
|
|
<h3>Parameter</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>: </p>
|
|
|
|
</li>
|
|
</ul>
|
|
<h3>Return value</h3>
|
|
|
|
<p><em>#boolean:</em></p>
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Dcs.DCSTypes.html##(Altitude)">Dcs.DCSTypes#Altitude</a></em>
|
|
<a id="#(AI_PATROLZONE).PatrolCeilingAltitude" >
|
|
<strong>AI_PATROLZONE.PatrolCeilingAltitude</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>The highest altitude in meters where to execute the patrol.</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Dcs.DCSTypes.html##(Altitude)">Dcs.DCSTypes#Altitude</a></em>
|
|
<a id="#(AI_PATROLZONE).PatrolFloorAltitude" >
|
|
<strong>AI_PATROLZONE.PatrolFloorAltitude</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>The lowest altitude in meters where to execute the patrol.</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em></em>
|
|
<a id="#(AI_PATROLZONE).PatrolFuelTresholdPercentage" >
|
|
<strong>AI_PATROLZONE.PatrolFuelTresholdPercentage</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em>#boolean</em>
|
|
<a id="#(AI_PATROLZONE).PatrolManageFuel" >
|
|
<strong>AI_PATROLZONE.PatrolManageFuel</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a></em>
|
|
<a id="#(AI_PATROLZONE).PatrolMaxSpeed" >
|
|
<strong>AI_PATROLZONE.PatrolMaxSpeed</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a></em>
|
|
<a id="#(AI_PATROLZONE).PatrolMinSpeed" >
|
|
<strong>AI_PATROLZONE.PatrolMinSpeed</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em></em>
|
|
<a id="#(AI_PATROLZONE).PatrolOutOfFuelOrbitTime" >
|
|
<strong>AI_PATROLZONE.PatrolOutOfFuelOrbitTime</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Core.Zone.html##(ZONE_BASE)">Core.Zone#ZONE_BASE</a></em>
|
|
<a id="#(AI_PATROLZONE).PatrolZone" >
|
|
<strong>AI_PATROLZONE.PatrolZone</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_PATROLZONE).SetAltitude" >
|
|
<strong>AI_PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>Sets the floor and ceiling altitude of the patrol.</p>
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Altitude)">Dcs.DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
|
|
The lowest altitude in meters where to execute the patrol.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Altitude)">Dcs.DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
|
|
The highest altitude in meters where to execute the patrol.</p>
|
|
|
|
</li>
|
|
</ul>
|
|
<h3>Return value</h3>
|
|
|
|
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
|
|
self</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_PATROLZONE).SetSpeed" >
|
|
<strong>AI_PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
|
|
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Speed)">Dcs.DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
|
|
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
|
|
|
|
</li>
|
|
</ul>
|
|
<h3>Return value</h3>
|
|
|
|
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
|
|
self</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_PATROLZONE).onenterPatrol" >
|
|
<strong>AI_PATROLZONE:onenterPatrol()</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_PATROLZONE).onenterRoute" >
|
|
<strong>AI_PATROLZONE:onenterRoute()</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>Defines a new patrol route using the <a href="Process_PatrolZone.html">Process_PatrolZone</a> parameters and settings.</p>
|
|
|
|
<h3>Return value</h3>
|
|
|
|
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
|
|
self</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|