ATC and Documentation

This commit is contained in:
funkyfranky 2017-09-22 16:53:55 +02:00
parent 2fa18ae6c7
commit 43a62ebf87
6 changed files with 670 additions and 107 deletions

View File

@ -40,13 +40,15 @@
--
-- # Demo Missions
--
-- ### [RAT Demo Missions](https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/Release/RAT%20-%20Random%20Air%20Traffic)
-- ### [ALL Demo Missions pack of the last release](https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases)
--
-- ====
--
-- # YouTube Channel
--
-- ### [RAT YouTube Channel](https://www.youtube.com/playlist?list=PL7ZUrU4zZUl1jirWIo4t4YxqN-HxjqRkL)
-- ### RAT videos are work in progress.
-- ### [MOOSE YouTube Channel](https://www.youtube.com/playlist?list=PL7ZUrU4zZUl1jirWIo4t4YxqN-HxjqRkL)
--
-- ===
--
@ -104,7 +106,8 @@
-- @field #number respawn_delay Delay in seconds until repawn happens after landing.
-- @field #table markerids Array with marker IDs.
-- @field #string livery Livery of the aircraft set by user.
-- @field #string skill Skill of AI.
-- @field #string skill Skill of AI.
-- @field #boolean ATC Enable ATC.
-- @extends Functional.Spawn#SPAWN
---# RAT class, extends @{Spawn#SPAWN}
@ -232,11 +235,25 @@
-- * @{#RAT.SetMinDistance}(100) will cause only random destination airports to be selected which are **at least** 100 km away from the departure airport.
-- * @{#RAT.SetMaxDistance}(150) will allow only destination airports which are **less than** 150 km away from the departure airport.
--
-- ![Process](..\Presentations\RAT\RAT_Gaussian.png)
--
-- By default planes get a cruise altitude of ~20,000 ft ASL. The actual altitude is sampled from a Gaussian distribution. The picture shows this distribution
-- if one would spawn 1000 planes. As can be seen most planes get a cruising alt of around FL200. Other values are possible but less likely the further away
-- one gets from the expectation value.
--
-- The expectation value, i.e. the altitude most aircraft get, can be set with the function @{#RAT.SetFLcruise}().
-- It is possible to restrict the minimum cruise altitude by @{#RAT.SetFLmin}() and the maximum cruise altitude by @{#RAT.SetFLmax}()
--
-- The cruise altitude can also be given in meters ASL by the functions @{#RAT.SetCruiseAltitude}(), @{#RAT.SetMinCruiseAltitude}() and @{#RAT.SetMaxCruiseAltitude}().
--
-- For example:
--
-- * @{#RAT.SetFLcruise}(300) will cause most planes fly around FL300.
-- * @{#RAT.SetFLmin}(100) restricts the cruising alt such that no plane will fly below FL100. Note that this automatically changes the minimum distance from departure to destination.
-- That means that only destinations are possible for which the aircraft has had enought time to reach that flight level and descent again.
-- * @{#RAT.SetFLmax}(200) will restrict the cruise alt to maximum FL200, i.e. no aircraft will travel above this height.
--
--
-- Certain other options like the flight level can also be specified. However, note that this might not be a good idea for random departures and/or destinations.
-- For example the random route might be too short to reach that altitude, which would result in very high climb and descent rates or strange flight plans.
--
--
-- @field #RAT
RAT={
ClassName = "RAT", -- Name of class: RAT = Random Air Traffic.
@ -284,6 +301,7 @@ RAT={
markerids={}, -- Array with marker IDs.
livery=nil, -- Livery of the aircraft.
skill="High", -- Skill of AI.
ATC=true, -- Enable ATC.
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ -448,7 +466,7 @@ function RAT:New(groupname, alias)
self:_GetAirportsOfMap()
-- Init RAT ATC if not already done.
if not RAT.ATC.init then
if self.ATC and not RAT.ATC.init then
RAT:_ATCInit(self.airports_map)
end
@ -800,6 +818,14 @@ function RAT:MenuName(name)
self.SubMenuName=tostring(name)
end
--- Enable ATC, which manages the landing queue for RAT aircraft if they arrive simultaniously at the same airport.
-- @param #RAT self
-- @param #boolean switch true=enable ATC, false=disable ATC.
function RAT:EnableATC(switch)
switch=switch or true
self.ATC=switch
end
--- Set minimum distance between departure and destination. Default is 5 km.
-- Minimum distance should not be smaller than maybe ~500 meters to ensure that departure and destination are different.
-- @param #RAT self
@ -858,7 +884,7 @@ end
--- Set max cruising altitude above sea level.
-- @param #RAT self
-- @param #number alt Altitude ASL in meters.
function RAT:SetMaCruiseAltitude(alt)
function RAT:SetMaxCruiseAltitude(alt)
self.FLmaxuser=alt
end
@ -1007,7 +1033,9 @@ function RAT:_SpawnWithRoute(_departure, _destination)
self.alive=self.alive+1
-- ATC is monitoring this flight.
RAT:_ATCAddFlight(group:GetName(), destination:GetName())
if self.ATC then
RAT:_ATCAddFlight(group:GetName(), destination:GetName())
end
-- Set ROE, default is "weapon hold".
self:_SetROE(group, self.roe)
@ -1774,7 +1802,7 @@ function RAT:Status(message, forID)
local Dholding=Pn:Get2DDistance(Hp)
-- If distance to holding point is less then 10 km we register the plane
if Dholding<10000 and self.ratcraft[i].status~="Holding" then
if self.ATC and Dholding<10000 and self.ratcraft[i].status~="Holding" then
RAT:_ATCRegisterFlight(group:GetName(), Tnow)
self.ratcraft[i].status="Holding"
end
@ -1801,7 +1829,9 @@ function RAT:Status(message, forID)
--text=text..string.format("Speed = %i km/h\n", vel)
text=text..string.format("Distance travelled = %6.1f km\n", self.ratcraft[i]["Distance"]/1000)
text=text..string.format("Distance to destination = %6.1f km\n", Ddestination/1000)
text=text..string.format("Distance to holding point = %6.1f km", Dholding/1000)
if self.ATC then
text=text..string.format("Distance to holding point = %6.1f km", Dholding/1000)
end
if not airborne then
text=text..string.format("\nTime on ground = %6.0f seconds\n", Tg)
text=text..string.format("Position change = %8.1f m since %3.0f seconds.", Dg, dTlast)
@ -2002,7 +2032,9 @@ function RAT:_OnLand(EventData)
self:_SetStatus(SpawnGroup, "Taxiing (after landing)")
-- ATC plane landed. Take it out of the queue and set runway to free.
RAT:_ATCFlightLanded(SpawnGroup:GetName())
if self.ATC then
RAT:_ATCFlightLanded(SpawnGroup:GetName())
end
if self.respawn_at_landing then
text="Event: Group "..SpawnGroup:GetName().." will be respawned."
@ -2816,6 +2848,9 @@ end
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--- Initializes the ATC arrays and starts schedulers.
-- @param #RAT self
-- @param #table airports_map List of all airports of the map.
function RAT:_ATCInit(airports_map)
if not RAT.ATC.init then
env.info("Starting RAT ATC")
@ -2832,6 +2867,11 @@ function RAT:_ATCInit(airports_map)
end
end
--- Deletes a flight from ATC lists after it landed.
-- @param #RAT self
-- @param #table t Table.
-- @param #string entry Flight name which shall be deleted.
function RAT:_ATCDelFlight(t,entry)
for k,_ in pairs(t) do
if k==entry then
@ -2840,6 +2880,10 @@ function RAT:_ATCDelFlight(t,entry)
end
end
--- Adds andd initializes a new flight after it was spawned.
-- @param #RAT self
-- @param #string name Group name of the flight.
-- @param #string dest Name of the destination airport.
function RAT:_ATCAddFlight(name, dest)
env.info(string.format("ATC: Adding flight %s with destination %s.", name, dest))
RAT.ATC.flight[name]={}
@ -2847,6 +2891,10 @@ function RAT:_ATCAddFlight(name, dest)
RAT.ATC.flight[name].holding=-1
end
--- Registers a flight once it is near its holding point at the final destination.
-- @param #RAT self
-- @param #string name Group name of the flight.
-- @param #number time Time the fight first registered.
function RAT:_ATCRegisterFlight(name, time)
env.info("ATC: Reg name "..name)
env.info("ATC: Reg time "..time)
@ -2854,6 +2902,9 @@ function RAT:_ATCRegisterFlight(name, time)
RAT.ATC.flight[name].holding=0
end
--- Takes care of organisational stuff after a plane has landed.
-- @param #RAT self
-- @param #string name Group name of flight.
function RAT:_ATCFlightLanded(name)
-- Destination airport.
@ -2872,6 +2923,10 @@ function RAT:_ATCFlightLanded(name)
env.info(string.format("ATC: Flight %s landed at %s.", name, dest))
end
--- Giving landing clearance for aircraft by setting user flag.
-- @param #RAT self
-- @param #string airport Name of destination airport.
-- @param #string flight Group name of flight, which gets landing clearence.
function RAT:_ATCClearForLanding(airport, flight)
-- Flight is cleared for landing.
RAT.ATC.flight[flight].holding=RAT.ATC.onfinal
@ -2879,12 +2934,14 @@ function RAT:_ATCClearForLanding(airport, flight)
RAT.ATC.airport[airport].busy=true
-- Flight which is landing.
RAT.ATC.airport[airport].onfinal=flight
env.info("ATC: setting user flag "..flight.." to 1.")
-- Set user flag to 1 ==> stop condition for holding.
trigger.action.setUserFlag(flight, 1)
local flagvalue=trigger.misc.getUserFlag(flight)
env.info("ATC: user flag "..flight.." ="..flagvalue)
--local flagvalue=trigger.misc.getUserFlag(flight)
env.info(RAT.id.."ATC: Flight "..flight.."cleared for landing.")
end
--- ATC status report about flights.
-- @param #RAT self
function RAT:_ATCStatus()
for name,_ in pairs(RAT.ATC.flight) do
@ -2913,6 +2970,8 @@ function RAT:_ATCStatus()
end
--- Main ATC function. Updates the landing queue of all airports and inceases holding time for all flights.
-- @param #RAT self
function RAT:_ATCCheck()
-- Init queue of flights at all airports.
@ -2950,6 +3009,8 @@ function RAT:_ATCCheck()
end
end
--- Creates a landing queue for all flights holding at airports. Aircraft with longest holding time gets first permission to land.
-- @param #RAT self
function RAT:_ATCQueue()
--env.info("Queue:")
for airport,_ in pairs(RAT.ATC.airport) do

View File

@ -17,90 +17,7 @@
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AI_A2A.html">AI_A2A</a></li>
<li><a href="AI_A2A_Cap.html">AI_A2A_Cap</a></li>
<li><a href="AI_A2A_Dispatcher.html">AI_A2A_Dispatcher</a></li>
<li><a href="AI_A2A_GCI.html">AI_A2A_GCI</a></li>
<li><a href="AI_A2A_Patrol.html">AI_A2A_Patrol</a></li>
<li><a href="AI_Bai.html">AI_Bai</a></li>
<li><a href="AI_Balancer.html">AI_Balancer</a></li>
<li><a href="AI_Cap.html">AI_Cap</a></li>
<li><a href="AI_Cas.html">AI_Cas</a></li>
<li><a href="AI_Formation.html">AI_Formation</a></li>
<li><a href="AI_Patrol.html">AI_Patrol</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="DCSAirbase.html">DCSAirbase</a></li>
<li><a href="DCSCoalitionObject.html">DCSCoalitionObject</a></li>
<li><a href="DCSCommand.html">DCSCommand</a></li>
<li><a href="DCSController.html">DCSController</a></li>
<li><a href="DCSGroup.html">DCSGroup</a></li>
<li><a href="DCSObject.html">DCSObject</a></li>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSVec3.html">DCSVec3</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCSZone.html">DCSZone</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Designate.html">Designate</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</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="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="Movement.html">Movement</a></li>
<li><a href="Object.html">Object</a></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="Radio.html">Radio</a></li>
<li>Rat</li>
<li><a href="Route.html">Route</a></li>
<li><a href="Scenery.html">Scenery</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="Settings.html">Settings</a></li>
<li><a href="Smoke.html">Smoke</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="SpawnStatic.html">SpawnStatic</a></li>
<li><a href="Spot.html">Spot</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2A.html">Task_A2A</a></li>
<li><a href="Task_A2A_Dispatcher.html">Task_A2A_Dispatcher</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_A2G_Dispatcher.html">Task_A2G_Dispatcher</a></li>
<li><a href="Task_Cargo.html">Task_Cargo</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</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="env.html">env</a></li>
<li><a href="land.html">land</a></li>
<li><a href="routines.html">routines</a></li>
</ul>
</div>
<div id="content">
@ -155,13 +72,15 @@
<h1>Demo Missions</h1>
<h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/Release/RAT%20-%20Random%20Air%20Traffic">RAT Demo Missions</a></h3>
<h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases">ALL Demo Missions pack of the last release</a></h3>
<hr/>
<h1>YouTube Channel</h1>
<h3><a href="https://www.youtube.com/playlist?list=PL7ZUrU4zZUl1jirWIo4t4YxqN-HxjqRkL">RAT YouTube Channel</a></h3>
<h3>RAT videos are work in progress.</h3>
<h3><a href="https://www.youtube.com/playlist?list=PL7ZUrU4zZUl1jirWIo4t4YxqN-HxjqRkL">MOOSE YouTube Channel</a></h3>
<hr/>
@ -184,6 +103,12 @@
<h2><a id="#(RAT)">Type <code>RAT</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).ATC">RAT.ATC</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).AlphaDescent">RAT.AlphaDescent</a></td>
<td class="summary">
<p>Default angle of descenti in degrees. A value of 3.6 follows the 3:1 rule of 3 miles of travel and 1000 ft descent.</p>
@ -193,6 +118,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).ClassName">RAT.ClassName</a></td>
<td class="summary">
<p>Name of the Class.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).ClearForLanding">RAT:ClearForLanding(name)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@ -223,6 +154,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).FLuser">RAT.FLuser</a></td>
<td class="summary">
<p>Flight level set by users explicitly.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).Livery">RAT:Livery(skins)</a></td>
<td class="summary">
<p>Set livery of aircraft.</p>
</td>
</tr>
<tr>
@ -283,6 +220,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).SetCoalition">RAT:SetCoalition(friendly)</a></td>
<td class="summary">
<p>Set the friendly coalitions from which the airports can be used as departure or destination.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).SetCruiseAltitude">RAT:SetCruiseAltitude(alt)</a></td>
<td class="summary">
<p>Set cruising altitude.</p>
</td>
</tr>
<tr>
@ -325,6 +268,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).SetFLmin">RAT:SetFLmin(height)</a></td>
<td class="summary">
<p>Set min flight level.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).SetMaxCruiseAltitude">RAT:SetMaxCruiseAltitude(alt)</a></td>
<td class="summary">
<p>Set max cruising altitude above sea level.</p>
</td>
</tr>
<tr>
@ -337,6 +286,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).SetMaxDistance">RAT:SetMaxDistance(dist)</a></td>
<td class="summary">
<p>Set maximum distance between departure and destination.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).SetMinCruiseAltitude">RAT:SetMinCruiseAltitude(alt)</a></td>
<td class="summary">
<p>Set min cruising altitude above sea level.</p>
</td>
</tr>
<tr>
@ -408,7 +363,7 @@
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).Tinactive">RAT.Tinactive</a></td>
<td class="summary">
<p>Time in seconds after which inactive units will be destroyed. Default is 180 seconds.</p>
<p>Time in seconds after which inactive units will be destroyed. Default is 300 seconds.</p>
</td>
</tr>
<tr>
@ -421,6 +376,60 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).Vcruisemax">RAT.Vcruisemax</a></td>
<td class="summary">
<p>Max cruise speed in m/s (250 m/s = 900 km/h = 486 kt) set by user.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCAddFlight">RAT:_ATCAddFlight(name, dest)</a></td>
<td class="summary">
<p>Adds andd initializes a new flight after it was spawned.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCCheck">RAT:_ATCCheck()</a></td>
<td class="summary">
<p>Main ATC function.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCClearForLanding">RAT:_ATCClearForLanding(airport, flight)</a></td>
<td class="summary">
<p>Giving landing clearance for aircraft by setting user flag.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCDelFlight">RAT:_ATCDelFlight(t, entry)</a></td>
<td class="summary">
<p>Deletes a flight from ATC lists after it landed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCFlightLanded">RAT:_ATCFlightLanded(name)</a></td>
<td class="summary">
<p>Takes care of organisational stuff after a plane has landed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCInit">RAT:_ATCInit(airports_map)</a></td>
<td class="summary">
<p>Initializes the ATC arrays and starts schedulers.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCQueue">RAT:_ATCQueue()</a></td>
<td class="summary">
<p>Creates a landing queue for all flights holding at airports.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCRegisterFlight">RAT:_ATCRegisterFlight(name, time)</a></td>
<td class="summary">
<p>Registers a flight once it is near its holding point at the final destination.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._ATCStatus">RAT:_ATCStatus()</a></td>
<td class="summary">
<p>ATC status report about flights.</p>
</td>
</tr>
<tr>
@ -493,6 +502,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT)._InitAircraft">RAT:_InitAircraft(DCSgroup)</a></td>
<td class="summary">
<p>Initialize basic parameters of the aircraft based on its (template) group in the mission editor.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT)._MinDistance">RAT:_MinDistance(alpha, beta, h)</a></td>
<td class="summary">
<p>Calculate min distance between departure and destination for given minimum flight level and climb/decent rates</p>
</td>
</tr>
<tr>
@ -739,12 +754,24 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).friendly">RAT.friendly</a></td>
<td class="summary">
<p>Possible departure/destination airport: all=blue+red+neutral, same=spawn+neutral, spawnonly=spawn, blue=blue+neutral, blueonly=blue, red=red+neutral, redonly=red.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).has_value">RAT:has_value(tab, val)</a></td>
<td class="summary">
<p>Utility function which checks if table contains a specific value.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).id">RAT.id</a></td>
<td class="summary">
<p>Some ID to identify who we are in output of the DCS.log file.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).livery">RAT.livery</a></td>
<td class="summary">
<p>Livery of the aircraft set by user.</p>
</td>
</tr>
<tr>
@ -775,6 +802,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).ngroups">RAT.ngroups</a></td>
<td class="summary">
<p>Number of groups to be spawned in total.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).onboard_num">RAT.onboard_num</a></td>
<td class="summary">
</td>
</tr>
<tr>
@ -829,6 +862,12 @@
<td class="name" nowrap="nowrap"><a href="##(RAT).rot">RAT.rot</a></td>
<td class="summary">
<p>ROT of spawned groups, default is no reaction. Possible: "noreaction", "passive", "evade".</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(RAT).skill">RAT.skill</a></td>
<td class="summary">
<p>Skill of AI. </p>
</td>
</tr>
<tr>
@ -902,7 +941,7 @@
<ul>
<li>A specific departure and/or destination airport can be chosen.</li>
<li>Valid coalitions can be set, e.g. only red, blue or neutral, all three <EFBFBD>colours<EFBFBD>.</li>
<li>Valid coalitions can be set, e.g. only red, blue or neutral, all three "colours".</li>
<li>It is possible to start in air within a zone defined in the mission editor or within a zone above an airport of the map.</li>
</ul>
@ -936,7 +975,7 @@
<li>Activate the "LATE ACTIVATION" tick box. Note that this aircraft will not be spawned itself but serves a template for each RAT aircraft spawned when the mission starts. </li>
</ul>
<p>Voil<EFBFBD>, your already done!</p>
<p>Voilà, your already done!</p>
<p>Optionally, you can set a specific livery for the aircraft or give it some weapons.
However, the aircraft will by default not engage any enemies. Think of them as beeing on a peaceful or ferry mission.</p>
@ -1023,9 +1062,25 @@ This setting can be changed using the <a href="##(RAT).SetTakeoff">RAT.SetTakeof
<li><a href="##(RAT).SetMaxDistance">RAT.SetMaxDistance</a>(150) will allow only destination airports which are <strong>less than</strong> 150 km away from the departure airport.</li>
</ul>
<p><img src="..\Presentations\RAT\RAT_Gaussian.png" alt="Process"/></p>
<p>Certain other options like the flight level can also be specified. However, note that this might not be a good idea for random departures and/or destinations.
For example the random route might be too short to reach that altitude, which would result in very high climb and descent rates or strange flight plans.</p>
<p>By default planes get a cruise altitude of ~20,000 ft ASL. The actual altitude is sampled from a Gaussian distribution. The picture shows this distribution
if one would spawn 1000 planes. As can be seen most planes get a cruising alt of around FL200. Other values are possible but less likely the further away
one gets from the expectation value.</p>
<p>The expectation value, i.e. the altitude most aircraft get, can be set with the function <a href="##(RAT).SetFLcruise">RAT.SetFLcruise</a>().
It is possible to restrict the minimum cruise altitude by <a href="##(RAT).SetFLmin">RAT.SetFLmin</a>() and the maximum cruise altitude by <a href="##(RAT).SetFLmax">RAT.SetFLmax</a>()</p>
<p>The cruise altitude can also be given in meters ASL by the functions <a href="##(RAT).SetCruiseAltitude">RAT.SetCruiseAltitude</a>(), <a href="##(RAT).SetMinCruiseAltitude">RAT.SetMinCruiseAltitude</a>() and <a href="##(RAT).SetMaxCruiseAltitude">RAT.SetMaxCruiseAltitude</a>().</p>
<p>For example:</p>
<ul>
<li><a href="##(RAT).SetFLcruise">RAT.SetFLcruise</a>(300) will cause most planes fly around FL300.</li>
<li><a href="##(RAT).SetFLmin">RAT.SetFLmin</a>(100) restricts the cruising alt such that no plane will fly below FL100. Note that this automatically changes the minimum distance from departure to destination.
That means that only destinations are possible for which the aircraft has had enought time to reach that flight level and descent again. </li>
<li><a href="##(RAT).SetFLmax">RAT.SetFLmax</a>(200) will restrict the cruise alt to maximum FL200, i.e. no aircraft will travel above this height.</li>
</ul>
@ -1043,6 +1098,20 @@ For example the random route might be too short to reach that altitude, which wo
<dl class="function">
<dt>
<em></em>
<a id="#(RAT).ATC" >
<strong>RAT.ATC</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(RAT).AlphaDescent" >
<strong>RAT.AlphaDescent</strong>
@ -1071,6 +1140,27 @@ For example the random route might be too short to reach that altitude, which wo
<dl class="function">
<dt>
<a id="#(RAT).ClearForLanding" >
<strong>RAT:ClearForLanding(name)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> name </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).Commute" >
<strong>RAT:Commute(switch)</strong>
</a>
@ -1158,6 +1248,31 @@ Turn journey on=true or off=false. If no value is given switch=true.</p>
<p>Flight level set by users explicitly.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).Livery" >
<strong>RAT:Livery(skins)</strong>
</a>
</dt>
<dd>
<p>Set livery of aircraft.</p>
<p>If more than one livery is specified in a table, the actually used one is chosen randomly from the selection.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#string skins </em></code>:
Name of livery or table of names of liveries.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
@ -1394,6 +1509,31 @@ Default is "same", so aircraft will use airports of the coalition their spawn te
<dl class="function">
<dt>
<a id="#(RAT).SetCruiseAltitude" >
<strong>RAT:SetCruiseAltitude(alt)</strong>
</a>
</dt>
<dd>
<p>Set cruising altitude.</p>
<p>This is still be checked for consitancy with selected route and prone to radomization.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#number alt </em></code>:
Cruising altitude ASL in meters.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).SetDeparture" >
<strong>RAT:SetDeparture(names)</strong>
</a>
@ -1580,6 +1720,28 @@ Maximum FL in hundrets of feet.</p>
<dl class="function">
<dt>
<a id="#(RAT).SetMaxCruiseAltitude" >
<strong>RAT:SetMaxCruiseAltitude(alt)</strong>
</a>
</dt>
<dd>
<p>Set max cruising altitude above sea level.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#number alt </em></code>:
Altitude ASL in meters.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).SetMaxCruiseSpeed" >
<strong>RAT:SetMaxCruiseSpeed(speed)</strong>
</a>
@ -1627,6 +1789,28 @@ Distance in km.</p>
<dl class="function">
<dt>
<a id="#(RAT).SetMinCruiseAltitude" >
<strong>RAT:SetMinCruiseAltitude(alt)</strong>
</a>
</dt>
<dd>
<p>Set min cruising altitude above sea level.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#number alt </em></code>:
Altitude ASL in meters.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).SetMinDistance" >
<strong>RAT:SetMinDistance(dist)</strong>
</a>
@ -1890,7 +2074,7 @@ true=on, false=off.</p>
<p>Set the time after which inactive groups will be destroyed.</p>
<p>Default is 180 seconds.</p>
<p>Default is 300 seconds.</p>
<h3>Parameter</h3>
<ul>
@ -1913,7 +2097,7 @@ Time in seconds.</p>
</dt>
<dd>
<p>Time in seconds after which inactive units will be destroyed. Default is 180 seconds.</p>
<p>Time in seconds after which inactive units will be destroyed. Default is 300 seconds.</p>
</dd>
</dl>
@ -1948,6 +2132,207 @@ Time in seconds.</p>
<dl class="function">
<dt>
<a id="#(RAT)._ATCAddFlight" >
<strong>RAT:_ATCAddFlight(name, dest)</strong>
</a>
</dt>
<dd>
<p>Adds andd initializes a new flight after it was spawned.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string name </em></code>:
Group name of the flight.</p>
</li>
<li>
<p><code><em>#string dest </em></code>:
Name of the destination airport.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCCheck" >
<strong>RAT:_ATCCheck()</strong>
</a>
</dt>
<dd>
<p>Main ATC function.</p>
<p>Updates the landing queue of all airports and inceases holding time for all flights.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCClearForLanding" >
<strong>RAT:_ATCClearForLanding(airport, flight)</strong>
</a>
</dt>
<dd>
<p>Giving landing clearance for aircraft by setting user flag.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string airport </em></code>:
Name of destination airport.</p>
</li>
<li>
<p><code><em>#string flight </em></code>:
Group name of flight, which gets landing clearence.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCDelFlight" >
<strong>RAT:_ATCDelFlight(t, entry)</strong>
</a>
</dt>
<dd>
<p>Deletes a flight from ATC lists after it landed.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#table t </em></code>:
Table.</p>
</li>
<li>
<p><code><em>#string entry </em></code>:
Flight name which shall be deleted.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCFlightLanded" >
<strong>RAT:_ATCFlightLanded(name)</strong>
</a>
</dt>
<dd>
<p>Takes care of organisational stuff after a plane has landed.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#string name </em></code>:
Group name of flight.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCInit" >
<strong>RAT:_ATCInit(airports_map)</strong>
</a>
</dt>
<dd>
<p>Initializes the ATC arrays and starts schedulers.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#table airports_map </em></code>:
List of all airports of the map.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCQueue" >
<strong>RAT:_ATCQueue()</strong>
</a>
</dt>
<dd>
<p>Creates a landing queue for all flights holding at airports.</p>
<p>Aircraft with longest holding time gets first permission to land.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCRegisterFlight" >
<strong>RAT:_ATCRegisterFlight(name, time)</strong>
</a>
</dt>
<dd>
<p>Registers a flight once it is near its holding point at the final destination.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string name </em></code>:
Group name of the flight.</p>
</li>
<li>
<p><code><em>#number time </em></code>:
Time the fight first registered.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ATCStatus" >
<strong>RAT:_ATCStatus()</strong>
</a>
</dt>
<dd>
<p>ATC status report about flights.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._AirportExists" >
<strong>RAT:_AirportExists(name)</strong>
</a>
@ -2140,7 +2525,7 @@ Height [m] of departure airport. Note we implicitly assume that the height diffe
<h3>Return value</h3>
<p><em>#number:</em>
Maximal flight level in meters.</p>
Maximal flight level in meters.</p>
</dd>
</dl>
@ -2274,6 +2659,45 @@ Group of the aircraft in the mission editor.</p>
<dl class="function">
<dt>
<a id="#(RAT)._MinDistance" >
<strong>RAT:_MinDistance(alpha, beta, h)</strong>
</a>
</dt>
<dd>
<p>Calculate min distance between departure and destination for given minimum flight level and climb/decent rates</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number alpha </em></code>:
Angle of climb [rad].</p>
</li>
<li>
<p><code><em>#number beta </em></code>:
Angle of descent [rad].</p>
</li>
<li>
<p><code><em>#number h </em></code>:
min height AGL.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#number:</em>
Minimum distance between departure and destiantion.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT)._ModifySpawnTemplate" >
<strong>RAT:_ModifySpawnTemplate(waypoints)</strong>
</a>
@ -3253,6 +3677,39 @@ Waypoints for DCS task route or spawn template.</p>
<p>Possible departure/destination airport: all=blue+red+neutral, same=spawn+neutral, spawnonly=spawn, blue=blue+neutral, blueonly=blue, red=red+neutral, redonly=red.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(RAT).has_value" >
<strong>RAT:has_value(tab, val)</strong>
</a>
</dt>
<dd>
<p>Utility function which checks if table contains a specific value.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#table tab </em></code>:
Table with elements to check.</p>
</li>
<li>
<p><code><em>#string val </em></code>:
The value we are looking for.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#boolean:</em>
True if element in the list, false otherwise. </p>
</dd>
</dl>
<dl class="function">
@ -3267,6 +3724,20 @@ Waypoints for DCS task route or spawn template.</p>
<p>Some ID to identify who we are in output of the DCS.log file.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(RAT).livery" >
<strong>RAT.livery</strong>
</a>
</dt>
<dd>
<p>Livery of the aircraft set by user.</p>
</dd>
</dl>
<dl class="function">
@ -3337,6 +3808,23 @@ Waypoints for DCS task route or spawn template.</p>
<p>Number of groups to be spawned in total.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(RAT).onboard_num" >
<strong>RAT.onboard_num</strong>
</a>
</dt>
<dd>
<p> Onboard number.</p>
</dd>
</dl>
<dl class="function">
@ -3463,6 +3951,20 @@ Waypoints for DCS task route or spawn template.</p>
<p>ROT of spawned groups, default is no reaction. Possible: "noreaction", "passive", "evade".</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(RAT).skill" >
<strong>RAT.skill</strong>
</a>
</dt>
<dd>
<p>Skill of AI. </p>
</dd>
</dl>
<dl class="function">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 KiB

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB