mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
AI_BALANCER revised completely
-- Revised and Added documentation. -- Added pictures to documentation. -- Add/Exit clients is working. AI balances perfectly. -- FSM bug fixed. SUBS should not execute OnAfter, OnEnter
This commit is contained in:
@@ -68,42 +68,80 @@
|
||||
<div id="content">
|
||||
<h1>Module <code>AI_Balancer</code></h1>
|
||||
|
||||
<p>This module contains the AI_BALANCER class.</p>
|
||||
<p>SP:N MP:Y AI:Y HU:N TYP:A -- This module contains the AI_BALANCER class.</p>
|
||||
|
||||
|
||||
|
||||
<p>AI Balancing will replace in multi player missions non-occupied human slots with AI groups, in order to provide an
|
||||
engaging simulation environment, even when there are hardly any players in the mission.</p>
|
||||
|
||||
<p><img src="..\Presentations\AI_Balancer\Dia1.JPG" alt="Banner Image"/></p>
|
||||
|
||||
<hr/>
|
||||
|
||||
<h1>1) <a href="AI.AI_Balancer.html##(AI_BALANCER)">AI.AI<em>Balancer#AI</em>BALANCER</a> class, extends <a href="Core.Fsm.html##(FSM_SET)">Core.Fsm#FSM_SET</a></h1>
|
||||
|
||||
<p>The <a href="AI.AI_Balancer.html##(AI_BALANCER)">AI.AI<em>Balancer#AI</em>BALANCER</a> class monitors and manages as many AI GROUPS as there are
|
||||
CLIENTS in a SET<em>CLIENT collection not occupied by players.
|
||||
The AI</em>BALANCER class manages internally a collection of AI management objects, which govern the behaviour
|
||||
of the underlying AI GROUPS.</p>
|
||||
CLIENTS in a SET<em>CLIENT collection not occupied by human players.
|
||||
In other words, use AI</em>BALANCER to simulate human behaviour by spawning in replacement AI.</p>
|
||||
|
||||
<p>The parent class <a href="Core.Fsm.html##(FSM_SET)">Core.Fsm#FSM_SET</a> manages the functionality to control the Finite State Machine (FSM)
|
||||
<p>The AI_BALANCER class manages internally a collection of AI management objects, which govern the behaviour
|
||||
of the spawned AI <a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> manages the functionality to control the Finite State Machine (FSM)
|
||||
and calls for each event the state transition methods providing the internal <a href="Core.Fsm.html##(FSM_SET).Set">Core.Fsm#FSM_SET.Set</a> object containing the
|
||||
SET_GROUP and additional event parameters provided during the event.</p>
|
||||
AI and additional event parameters provided during the event.</p>
|
||||
|
||||
<h2>1.1) AI_BALANCER construction method</h2>
|
||||
<p>Create a new AI_BALANCER object with the <a href="##(AI_BALANCER).New">AI_BALANCER.New</a> method:</p>
|
||||
<h2>1.1) AI_BALANCER construction</h2>
|
||||
|
||||
<p>Create a new AI_BALANCER object with the <a href="##(AI_BALANCER).New">AI_BALANCER.New</a>() method:</p>
|
||||
|
||||
<h2>1.2) AI_BALANCER is a FSM</h2>
|
||||
|
||||
<p>The AI_BALANCER is a state machine: it manages the different events and states of the <a href="Core.Fsm.html##(FSM_SET).Set">Core.Fsm#FSM_SET.Set</a> it is governing.
|
||||
The AI_BALANCER has a default flow to manage the set.</p>
|
||||
|
||||
<p><img src="..\Presentations\AI_Balancer\Dia2.JPG" alt="Process"/></p>
|
||||
|
||||
|
||||
<h3>1.2.1) AI_BALANCER States</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="##(AI_BALANCER).New">AI_BALANCER.New</a>: Creates a new AI_BALANCER object.</li>
|
||||
<li><strong>Monitoring</strong> ( Set ): Monitoring the Set if all AI is spawned for the Clients.</li>
|
||||
<li><strong>Spawning</strong> ( Set, ClientName ): There is a new AI group spawned with ClientName as the name of reference.</li>
|
||||
<li><strong>Spawned</strong> ( Set, AIGroup ): A new AI has been spawned. You can handle this event to customize the AI behaviour with other AI FSMs or own processes.</li>
|
||||
<li><strong>Destroying</strong> ( Set, AIGroup ): The AI is being destroyed.</li>
|
||||
<li><strong>Returning</strong> ( Set, AIGroup ): The AI is returning to the airbase specified by the ReturnToAirbase methods. Handle this state to customize the return behaviour of the AI, if any.</li>
|
||||
</ul>
|
||||
|
||||
<h2>1.2) </h2>
|
||||
<p> * Add
|
||||
* Remove</p>
|
||||
|
||||
<h2>1.2) AI_BALANCER returns AI to Airbases</h2>
|
||||
<p>You can configure to have the AI to return to:</p>
|
||||
<h3>1.2.2) AI_BALANCER Events</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="##(AI_BALANCER).ReturnToHomeAirbase">AI_BALANCER.ReturnToHomeAirbase</a>: Returns the AI to the home <a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a>.</li>
|
||||
<li><a href="##(AI_BALANCER).ReturnToNearestAirbases">AI_BALANCER.ReturnToNearestAirbases</a>: Returns the AI to the nearest friendly <a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a>.
|
||||
--</li>
|
||||
<li><strong>Monitor</strong> ( Set ): Every 10 seconds, the Monitor event is triggered to monitor the Set.</li>
|
||||
<li><strong>Spawn</strong> ( Set, ClientName ): Triggers when there is a new AI group to be spawned with ClientName as the name of reference.</li>
|
||||
<li><strong>Spawned</strong> ( Set, AIGroup ): Triggers when a new AI has been spawned. You can handle this event to customize the AI behaviour with other AI FSMs or own processes.</li>
|
||||
<li><strong>Destroy</strong> ( Set, AIGroup ): The AI is being destroyed.</li>
|
||||
<li><strong>Return</strong> ( Set, AIGroup ): The AI is returning to the airbase specified by the ReturnToAirbase methods.</li>
|
||||
</ul>
|
||||
|
||||
<h2>1.3) AI_BALANCER spawn interval for replacement AI</h2>
|
||||
|
||||
<p>Use the method <a href="##(AI_BALANCER).InitSpawnInterval">AI_BALANCER.InitSpawnInterval</a>() to set the earliest and latest interval in seconds that is waited until a new replacement AI is spawned.</p>
|
||||
|
||||
<h2>1.4) AI_BALANCER returns AI to Airbases</h2>
|
||||
|
||||
<p>By default, When a human player joins a slot that is AI_BALANCED, the AI group will be destroyed by default.
|
||||
However, there are 2 additional options that you can use to customize the destroy behaviour.
|
||||
When a human player joins a slot, you can configure to let the AI return to:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="##(AI_BALANCER).ReturnToHomeAirbase">AI_BALANCER.ReturnToHomeAirbase</a>: Returns the AI to the <strong>home</strong> <a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a>.</li>
|
||||
<li><a href="##(AI_BALANCER).ReturnToNearestAirbases">AI_BALANCER.ReturnToNearestAirbases</a>: Returns the AI to the <strong>nearest friendly</strong> <a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a>.</li>
|
||||
</ul>
|
||||
|
||||
<p>Note that when AI returns to an airbase, it will trigger the <strong>Return</strong> event and will return,
|
||||
otherwise when the AI is destroyed, the <strong>Destroy</strong> event will be triggered.</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>
|
||||
@@ -115,32 +153,23 @@ SET_GROUP and additional event parameters provided during the event.</p>
|
||||
|
||||
<p>Hereby the change log:</p>
|
||||
|
||||
<p>2016-08-17: SPAWN:<strong>InitCleanUp</strong>( SpawnCleanUpInterval ) replaces SPAWN:<em>CleanUp</em>( SpawnCleanUpInterval )</p>
|
||||
|
||||
<ul>
|
||||
<li>Want to ensure that the methods starting with <strong>Init</strong> are the first called methods before any <em>Spawn</em> method is called!</li>
|
||||
<li>This notation makes it now more clear which methods are initialization methods and which methods are Spawn enablement methods.</li>
|
||||
</ul>
|
||||
<p>2017-01-08: AI_BALANCER:<strong>InitSpawnInterval( Earliest, Latest )</strong> added.</p>
|
||||
|
||||
<hr/>
|
||||
|
||||
<h1>AUTHORS and CONTRIBUTIONS</h1>
|
||||
<h1><strong>AUTHORS and CONTRIBUTIONS</strong></h1>
|
||||
|
||||
<h3>Contributions:</h3>
|
||||
|
||||
<ul>
|
||||
<li><p><strong>Dutch_Baron (James)</strong>: Who you can search on the Eagle Dynamics Forums. <br/>
|
||||
Working together with James has resulted in the creation of the AI_BALANCER class. <br/>
|
||||
James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)</p></li>
|
||||
<li><p><strong>SNAFU</strong>:
|
||||
Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE.
|
||||
None of the script code has been used however within the new AI_BALANCER moose class.</p></li>
|
||||
<li><p><strong><a href="https://forums.eagle.ru/member.php?u=112075">Dutch_Baron</a></strong>: Working together with James has resulted in the creation of the AI_BALANCER class. James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)</p></li>
|
||||
<li><p><strong>SNAFU</strong>: Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. None of the script code has been used however within the new AI_BALANCER moose class.</p></li>
|
||||
</ul>
|
||||
|
||||
<h3>Authors:</h3>
|
||||
|
||||
<ul>
|
||||
<li>FlightControl: Framework Design & Programming</li>
|
||||
<li>FlightControl: Framework Design & Programming and Documentation.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -165,6 +194,24 @@ SET_GROUP and additional event parameters provided during the event.</p>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).ClassName">AI_BALANCER.ClassName</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).Earliest">AI_BALANCER.Earliest</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).InitSpawnInterval">AI_BALANCER:InitSpawnInterval(Earliest, Latest)</a></td>
|
||||
<td class="summary">
|
||||
<p>Sets the earliest to the latest interval in seconds how long AI_BALANCER will wait to spawn a new AI.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).Latest">AI_BALANCER.Latest</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -207,6 +254,18 @@ SET_GROUP and additional event parameters provided during the event.</p>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).SetClient">AI_BALANCER.SetClient</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).SpawnAI">AI_BALANCER.SpawnAI</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).Test">AI_BALANCER.Test</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -222,7 +281,7 @@ SET_GROUP and additional event parameters provided during the event.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).onenterDestroying">AI_BALANCER:onenterDestroying(SetGroup, AIGroup, From, Event, To)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).onenterDestroying">AI_BALANCER:onenterDestroying(SetGroup, AIGroup, From, Event, To, ClientName)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
@@ -295,6 +354,70 @@ SET_GROUP and additional event parameters provided during the event.</p>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(AI_BALANCER).Earliest" >
|
||||
<strong>AI_BALANCER.Earliest</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_BALANCER).InitSpawnInterval" >
|
||||
<strong>AI_BALANCER:InitSpawnInterval(Earliest, Latest)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<p>Sets the earliest to the latest interval in seconds how long AI_BALANCER will wait to spawn a new AI.</p>
|
||||
|
||||
|
||||
<p>Provide 2 identical seconds if the interval should be a fixed amount of seconds.</p>
|
||||
|
||||
<h3>Parameters</h3>
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
<p><code><em>#number Earliest </em></code>:
|
||||
The earliest a new AI can be spawned in seconds.</p>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
|
||||
<p><code><em>#number Latest </em></code>:
|
||||
The latest a new AI can be spawned in seconds.</p>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<h3>Return value</h3>
|
||||
|
||||
|
||||
<p>self</p>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(AI_BALANCER).Latest" >
|
||||
<strong>AI_BALANCER.Latest</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -328,9 +451,6 @@ The default Spawn object to spawn new AI Groups when needed.</p>
|
||||
<p><em><a href="##(AI_BALANCER)">#AI_BALANCER</a>:</em></p>
|
||||
|
||||
|
||||
<h3>Usage:</h3>
|
||||
<pre class="example"><code>-- Define a new AI_BALANCER Object.</code></pre>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -437,6 +557,34 @@ The SET of <a href="Core.Set.html##(SET_AIRBASE)">Core.Set#SET_AIRBASE</a>s to e
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em><a href="Functional.Spawn.html##(SPAWN)">Functional.Spawn#SPAWN</a></em>
|
||||
<a id="#(AI_BALANCER).SpawnAI" >
|
||||
<strong>AI_BALANCER.SpawnAI</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a></em>
|
||||
<a id="#(AI_BALANCER).Test" >
|
||||
<strong>AI_BALANCER.Test</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -471,7 +619,7 @@ The SET of <a href="Core.Set.html##(SET_AIRBASE)">Core.Set#SET_AIRBASE</a>s to e
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_BALANCER).onenterDestroying" >
|
||||
<strong>AI_BALANCER:onenterDestroying(SetGroup, AIGroup, From, Event, To)</strong>
|
||||
<strong>AI_BALANCER:onenterDestroying(SetGroup, AIGroup, From, Event, To, ClientName)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
@@ -504,6 +652,11 @@ The SET of <a href="Core.Set.html##(SET_AIRBASE)">Core.Set#SET_AIRBASE</a>s to e
|
||||
|
||||
<p><code><em> To </em></code>: </p>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
|
||||
<p><code><em> ClientName </em></code>: </p>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
@@ -119,13 +119,13 @@ All derived classes from AI</em>CARGO follow the same state machine, expose the
|
||||
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>.
|
||||
<li><p><strong>Leaving</strong> the state.
|
||||
The state transition method needs to start with the name <strong>OnLeave + 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>.
|
||||
<li><p><strong>Entering</strong> the state.
|
||||
The state transition method needs to start with the name <strong>OnEnter + 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>
|
||||
|
||||
@@ -254,49 +254,49 @@ Use the event functions as described above to Load, UnLoad, Board, UnBoard the A
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnAfterBoarding">AI_CARGO:OnAfterBoarding(Controllable)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnEnterBoarding">AI_CARGO:OnEnterBoarding(Controllable)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnAfterLoaded">AI_CARGO:OnAfterLoaded(Controllable)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnEnterLoaded">AI_CARGO:OnEnterLoaded(Controllable)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnAfterUnBoarding">AI_CARGO:OnAfterUnBoarding(Controllable)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnEnterUnBoarding">AI_CARGO:OnEnterUnBoarding(Controllable)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnAfterUnLoaded">AI_CARGO:OnAfterUnLoaded(Controllable)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnEnterUnLoaded">AI_CARGO:OnEnterUnLoaded(Controllable)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnBeforeBoarding">AI_CARGO:OnBeforeBoarding(Controllable)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnLeaveBoarding">AI_CARGO:OnLeaveBoarding(Controllable)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnBeforeLoaded">AI_CARGO:OnBeforeLoaded(Controllable)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnLeaveLoaded">AI_CARGO:OnLeaveLoaded(Controllable)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnBeforeUnBoarding">AI_CARGO:OnBeforeUnBoarding(Controllable)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnLeaveUnBoarding">AI_CARGO:OnLeaveUnBoarding(Controllable)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnBeforeUnLoaded">AI_CARGO:OnBeforeUnLoaded(Controllable)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(AI_CARGO).OnLeaveUnLoaded">AI_CARGO:OnLeaveUnLoaded(Controllable)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
@@ -974,8 +974,8 @@ The Carrier that will hold the cargo.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_CARGO).OnAfterBoarding" >
|
||||
<strong>AI_CARGO:OnAfterBoarding(Controllable)</strong>
|
||||
<a id="#(AI_CARGO).OnEnterBoarding" >
|
||||
<strong>AI_CARGO:OnEnterBoarding(Controllable)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
@@ -995,8 +995,8 @@ The Carrier that will hold the cargo.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_CARGO).OnAfterLoaded" >
|
||||
<strong>AI_CARGO:OnAfterLoaded(Controllable)</strong>
|
||||
<a id="#(AI_CARGO).OnEnterLoaded" >
|
||||
<strong>AI_CARGO:OnEnterLoaded(Controllable)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
@@ -1016,8 +1016,8 @@ The Carrier that will hold the cargo.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_CARGO).OnAfterUnBoarding" >
|
||||
<strong>AI_CARGO:OnAfterUnBoarding(Controllable)</strong>
|
||||
<a id="#(AI_CARGO).OnEnterUnBoarding" >
|
||||
<strong>AI_CARGO:OnEnterUnBoarding(Controllable)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
@@ -1037,8 +1037,8 @@ The Carrier that will hold the cargo.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_CARGO).OnAfterUnLoaded" >
|
||||
<strong>AI_CARGO:OnAfterUnLoaded(Controllable)</strong>
|
||||
<a id="#(AI_CARGO).OnEnterUnLoaded" >
|
||||
<strong>AI_CARGO:OnEnterUnLoaded(Controllable)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
@@ -1058,8 +1058,8 @@ The Carrier that will hold the cargo.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_CARGO).OnBeforeBoarding" >
|
||||
<strong>AI_CARGO:OnBeforeBoarding(Controllable)</strong>
|
||||
<a id="#(AI_CARGO).OnLeaveBoarding" >
|
||||
<strong>AI_CARGO:OnLeaveBoarding(Controllable)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
@@ -1084,8 +1084,8 @@ The Carrier that will hold the cargo.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_CARGO).OnBeforeLoaded" >
|
||||
<strong>AI_CARGO:OnBeforeLoaded(Controllable)</strong>
|
||||
<a id="#(AI_CARGO).OnLeaveLoaded" >
|
||||
<strong>AI_CARGO:OnLeaveLoaded(Controllable)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
@@ -1110,8 +1110,8 @@ The Carrier that will hold the cargo.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_CARGO).OnBeforeUnBoarding" >
|
||||
<strong>AI_CARGO:OnBeforeUnBoarding(Controllable)</strong>
|
||||
<a id="#(AI_CARGO).OnLeaveUnBoarding" >
|
||||
<strong>AI_CARGO:OnLeaveUnBoarding(Controllable)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
@@ -1136,8 +1136,8 @@ The Carrier that will hold the cargo.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(AI_CARGO).OnBeforeUnLoaded" >
|
||||
<strong>AI_CARGO:OnBeforeUnLoaded(Controllable)</strong>
|
||||
<a id="#(AI_CARGO).OnLeaveUnLoaded" >
|
||||
<strong>AI_CARGO:OnLeaveUnLoaded(Controllable)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
@@ -464,12 +464,24 @@ YYYY-MM-DD: CLASS:<strong>NewFunction( Params )</strong> added</p>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).AddTransition">FSM:AddTransition(From, Event, To)</a></td>
|
||||
<td class="summary">
|
||||
<p>Add a new transition rule to the FSM.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).CallScheduler">FSM.CallScheduler</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).ClassName">FSM.ClassName</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).Events">FSM.Events</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -536,18 +548,48 @@ YYYY-MM-DD: CLASS:<strong>NewFunction( Params )</strong> added</p>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).New">FSM:New(FsmT)</a></td>
|
||||
<td class="summary">
|
||||
<p>Creates a new FSM object.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).Scores">FSM.Scores</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).SetStartState">FSM:SetStartState(State)</a></td>
|
||||
<td class="summary">
|
||||
<p>Sets the start state of the FSM.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM)._EndStates">FSM._EndStates</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM)._Processes">FSM._Processes</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM)._Scores">FSM._Scores</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM)._StartState">FSM._StartState</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM)._Transitions">FSM._Transitions</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -620,12 +662,30 @@ YYYY-MM-DD: CLASS:<strong>NewFunction( Params )</strong> added</p>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).current">FSM.current</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).endstates">FSM.endstates</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).is">FSM:is(state)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).options">FSM.options</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(FSM).subs">FSM.subs</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -1101,6 +1161,20 @@ The To state.</p>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM).CallScheduler" >
|
||||
<strong>FSM.CallScheduler</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -1115,6 +1189,20 @@ The To state.</p>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM).Events" >
|
||||
<strong>FSM.Events</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -1315,6 +1403,20 @@ A string containing the start state.</p>
|
||||
<p><em><a href="##(FSM)">#FSM</a>:</em></p>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM).Scores" >
|
||||
<strong>FSM.Scores</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -1343,6 +1445,48 @@ A string defining the start state.</p>
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM)._EndStates" >
|
||||
<strong>FSM._EndStates</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM)._Processes" >
|
||||
<strong>FSM._Processes</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM)._Scores" >
|
||||
<strong>FSM._Scores</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em>#string</em>
|
||||
<a id="#(FSM)._StartState" >
|
||||
<strong>FSM._StartState</strong>
|
||||
</a>
|
||||
@@ -1351,6 +1495,20 @@ A string defining the start state.</p>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM)._Transitions" >
|
||||
<strong>FSM._Transitions</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -1622,7 +1780,6 @@ A string defining the start state.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM).current" >
|
||||
<strong>FSM.current</strong>
|
||||
</a>
|
||||
@@ -1631,6 +1788,20 @@ A string defining the start state.</p>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM).endstates" >
|
||||
<strong>FSM.endstates</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -1652,6 +1823,33 @@ A string defining the start state.</p>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<a id="#(FSM).options" >
|
||||
<strong>FSM.options</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM).subs" >
|
||||
<strong>FSM.subs</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(OBJECT).New">OBJECT:New(ObjectName)</a></td>
|
||||
<td class="name" nowrap="nowrap"><a href="##(OBJECT).New">OBJECT:New(ObjectName, Test)</a></td>
|
||||
<td class="summary">
|
||||
<p>Create a new OBJECT from a DCSObject</p>
|
||||
</td>
|
||||
@@ -256,20 +256,25 @@ The DCS Object is not existing or alive. </p>
|
||||
<dt>
|
||||
|
||||
<a id="#(OBJECT).New" >
|
||||
<strong>OBJECT:New(ObjectName)</strong>
|
||||
<strong>OBJECT:New(ObjectName, Test)</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<p>Create a new OBJECT from a DCSObject</p>
|
||||
|
||||
<h3>Parameter</h3>
|
||||
<h3>Parameters</h3>
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
<p><code><em><a href="Dcs.DCSWrapper.Object.html##(Object)">Dcs.DCSWrapper.Object#Object</a> ObjectName </em></code>:
|
||||
The Object name</p>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
|
||||
<p><code><em> Test </em></code>: </p>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<h3>Return value</h3>
|
||||
|
||||
@@ -470,6 +470,12 @@ The following iterator methods are currently available within the SET</em>AIRBAS
|
||||
<td class="name" nowrap="nowrap"><a href="##(SET_BASE).AddObject">SET_BASE:AddObject(Object)</a></td>
|
||||
<td class="summary">
|
||||
<p>Adds a <a href="Core.Base.html##(BASE)">Core.Base#BASE</a> object in the <a href="Core.Set.html##(SET_BASE)">Core.Set#SET_BASE</a>, using the Object Name as the index.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(SET_BASE).CallScheduler">SET_BASE.CallScheduler</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -1600,6 +1606,20 @@ The added BASE Object.</p>
|
||||
<p><em><a href="Core.Base.html##(BASE)">Core.Base#BASE</a>:</em>
|
||||
The added BASE Object.</p>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em><a href="Core.Scheduler.html##(SCHEDULER)">Core.Scheduler#SCHEDULER</a></em>
|
||||
<a id="#(SET_BASE).CallScheduler" >
|
||||
<strong>SET_BASE.CallScheduler</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
|
||||
@@ -1692,6 +1692,9 @@ The group that was spawned. You can use this group for further actions.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p> Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.</p>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="AI_Balancer.html">AI_Balancer</a></td>
|
||||
<td class="summary">
|
||||
<p>This module contains the AI_BALANCER class.</p>
|
||||
<p>SP:N MP:Y AI:Y HU:N TYP:A -- This module contains the AI_BALANCER class.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
BIN
docs/Presentations/AI_Balancer/AI_BALANCER.pptx
Normal file
BIN
docs/Presentations/AI_Balancer/AI_BALANCER.pptx
Normal file
Binary file not shown.
BIN
docs/Presentations/AI_Balancer/Dia1.JPG
Normal file
BIN
docs/Presentations/AI_Balancer/Dia1.JPG
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 173 KiB |
BIN
docs/Presentations/AI_Balancer/Dia2.JPG
Normal file
BIN
docs/Presentations/AI_Balancer/Dia2.JPG
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 197 KiB |
Reference in New Issue
Block a user