Home
Categories
Dictionary
Glossary
Download
Project Details
Changes Log
What Links Here
FAQ
License

tacticalEnv scenario


    1  Grammar
    2  Content of the scenario
       2.1  World configuration
       2.2  FEBA
       2.3  Couloirs
       2.4  Zones
       2.5  Targets
       2.6  Bases
       2.7  Threats
       2.8  Aircrafts
          2.8.1  Moving aircrafts
       2.9  Waypoints
       2.10  Flightplans
          2.10.1  Flightplans list of points
       2.11  Custom elements
       2.12  Definition of a point
       2.13  Elements description
    3  Custom properties
       3.1  Custom properties types
       3.2  Custom properties declaration
    4  Example
    5  References
    6  References list
    7  Notes
    8  See also

This article describes the content of the tactical environment scenario. Note that the scenario describes only fixed elements which will not move unless the scenario is updated.

Grammar

The schema of the scenario is: confInit.xsd.

Content of the scenario

The scenario contains:
  • A world configuration which allows to specify the reference of the scenario
  • a FEBA (Front Edge of Border Area)[1]
  • Couloirs (corridors)
  • Zones
  • Targets
  • Bases
  • Threats
  • Waypoints
  • Flightplans[2]
  • Aircrafts
  • Custom elements
Each of these elements can have custom properties. Also all elemetns can have an optional description.

World configuration

The worldConfig element allows to specify the reference of the scenario. For example, it can allow to specify the center of the map to show the elements.

The latitude and longitude are defined in degrees. For example:
      <worldConfig latitude="44.65982" longitude="4.7377534"/>

FEBA

The grammar of the feba element is the following:
      <xs:complexType name="feba">
         <xs:sequence>
            <xs:element name="point" type="point" maxOccurs="unbounded" minOccurs="0"/>
            <xs:element name="property" type="property" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
Each point is constituted of a latitude and longitude in degrees. For example:
      <feba>
         <point latitude="44.91" longitude="4.9659"/>
         <point latitude="45.91" longitude="4.9659"/>
         <point latitude="46.21" longitude="5.9659"/>
      </feba>

Couloirs

The grammar of the couloir elements is the following:
      <xs:complexType name="couloirs">
         <xs:sequence>
            <xs:element name="couloir" type="couloir" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name="couloir">
         <xs:sequence>
            <xs:element name="point" type="point" minOccurs="4" maxOccurs="4"/>
            <xs:element name="property" type="property" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
Each couloir has exactly 4 points which define the two sides of the couloir. See definition of a point for the definition of a point. For example:
      <couloir>
         <point latitude="44.91" longitude="4.9659"/>
         <point latitude="44.91" longitude="5.9659"/>
         <point latitude="46.21" longitude="4.9659"/>
         <point latitude="46.21" longitude="5.9659"/>
      </couloir>

Zones

The grammar of the zone elements is the following:
      <xs:simpleType name="zoneType">
         <xs:restriction base="xs:string">
            <xs:enumeration value="FRIEND"/>
            <xs:enumeration value="FOE"/>
         </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="zones">
         <xs:sequence>
            <xs:element name="zone" type="zone" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name="zone">
         <xs:sequence>
            <xs:element name="point" type="point" maxOccurs="unbounded" minOccurs="0"/>
            <xs:element name="property" type="property" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
         <xs:attribute name="name" type="xs:string"/>
         <xs:attribute name="type" type="zoneType"/>
         <xs:attribute name="nature" type="zoneNature"/>
      </xs:complexType>
A Zone type can be FRIEND, FOE, or NEUTRAL, and contain a list of points. See definition of a point for the definition of a point.

The nature of the Zone can be:
  • UNDEF: the default
  • REFUELING: for a Refueling Zone
  • SAM: for a Surface-to-air missile Zone
  • TASK: for a Zone corresponding to a task
  • RESPONSABILITY: for a Responsability Zone
  • DELIVER_WEAPON: for a Weapon delivery Zone
  • JTAC: for a Joint terminal attack controller
  • NSTL: for a No Strike List


Example:
      <zone type="FRIEND" nature="REFUELING">
         <point latitude="44.91" longitude="4.9659"/>
         <point latitude="45.91" longitude="4.9659"/>
         <point latitude="46.21" longitude="5.9659"/>
      </zone>

Targets

The grammar of the target elements is the following:
      <xs:complexType name="targets">
         <xs:sequence>
            <xs:element name="target" type="target" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name="target">
         <xs:sequence>
            <xs:element name="point" type="point" maxOccurs="1" minOccurs="1"/>
            <xs:element name="property" type="property" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
         <xs:attribute name="name" type="xs:string" use="required" />
         <xs:attribute name="type" type="xs:string" />
      </xs:complexType>
The type of the Target is a string which can be used by the subscribing modules as needed. A Target has one point specifying the position of this Target. See definition of a point for the definition of a point. For example:
      <target name="ucav1" type="UCAV">
         <point latitude="44.91" longitude="4.9659"/>
      </target>

Bases

The grammar of the base elements is the following:
      <xs:complexType name="bases">
         <xs:sequence>
            <xs:element name="base" type="base" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name="base">
         <xs:sequence>
            <xs:element name="point" type="point" maxOccurs="unbounded" minOccurs="0"/>
            <xs:element name="property" type="property" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
         <xs:attribute name="name" type="xs:string"/>
      </xs:complexType>
A Base has one point specifying the position of this Base. See definition of a point for the definition of a point. For example:
      <base name="base1">
         <point latitude="44.91" longitude="4.9659"/>
      </base>

Threats

The grammar of the threat elements is the following:
      <xs:complexType name="threats">
         <xs:sequence>
            <xs:element name="threat" type="threat" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name="threat">
         <xs:choice maxOccurs="unbounded" minOccurs="0">
            <xs:element name="elementRef" type="elementRef"/>
            <xs:element name="elementListRef" type="elementListRef"/>
            <xs:element name="point" type="point"/>
            <xs:element name="property" type="property"/>
         </xs:choice>
         <xs:attribute name="name" type="xs:string" use="required" />
         <xs:attribute name="type" type="zoneType"/>
         <xs:attribute name="radius" type="xs:decimal"/>
         <xs:attribute name="desc" type="xs:string"/>
      </xs:complexType>
A Threat type can be FRIEND, FOE, or NEUTRAL, and contain a list of points. See definition of a point for the definition of a point. The Threat has also a radius which is defined in meters. For example:
      <threat name="SA12" type="FOE" radius="1000">
         <point latitude="44.9139542570968" longitude="4.96594265297936"/>
      </threat>

Aircrafts

The grammar of the aircraft elements is the following:
      <xs:complexType name="aircrafts">
         <xs:sequence>
            <xs:element name="aircraft" type="aircraft" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name="aircraft">
         <xs:choice maxOccurs="unbounded" minOccurs="0">
            <xs:element name="elementRef" type="elementRef"/>
            <xs:element name="elementListRef" type="elementListRef"/>
            <xs:element name="point" type="point"/>
            <xs:element name="property" type="property"/>
            <xs:element name="flightplanDelta" type="point"/>
         </xs:choice>
         <xs:attribute name="name" type="xs:string" use="required" />
         <xs:attribute name="type" type="zoneType"/>
         <xs:attribute name="speedNorth" type="xs:decimal"/>
         <xs:attribute name="speedEast" type="xs:decimal"/>
         <xs:attribute name="speedVertical" type="xs:decimal"/>
         <xs:attribute name="flightplan" type="xs:string" />           
         <xs:attribute name="nextWaypoint" type="xs:string" />     
         <xs:attribute name="desc" type="xs:string"/>
      </xs:complexType>
An Aircraft type can be FRIEND, FOE, or NEUTRAL, and is defined by one position and optionally a speed. For example:
      <aircraft name="rafale" type="FRIEND">
         <point latitude="44.9139542570968" longitude="4.96594265297936" altitude="1000"/>
         <property name="tasked" value="true" />
      </aircraft>

Moving aircrafts


If the flightplan property exists and points to an existing Flightplan name then the aircraft will follow the flightplan if the activate boolean property is true. The nextWaypoint property will define the next waypoint to go to from start.

In that case the flightplanDelta child (if it exists) will specify a delta position (in latitude, longitude) of the aircraft relative to the Flighplan. This allows to specify several aircrafts which will share the same Flightplan. For example:
      <aircraft name="AC1" type="FRIEND" flightplan="fp1" nextWaypoint="WP1" >
         <point latitude="44.9139542570968" longitude="4.96594265297936" altitude="1000"/>
      </aircraft>
      <aircraft name="AC2" type="FRIEND" flightplan="fp1" nextWaypoint="WP1" >
         <flightplanDelta latitude="-0.12" longitude="0.02"/>
         <point latitude="44.9139542570968" longitude="4.96594265297936" altitude="1000"/>
      </aircraft>      
      <aircraft name="AC3" type="FRIEND" flightplan="fp1" nextWaypoint="WP1" >
         <flightplanDelta latitude="0.12" longitude="0.02"/>
         <point latitude="44.9139542570968" longitude="4.96594265297936" altitude="1000"/>
      </aircraft>

tacticalenvflightplandelta

Waypoints

The grammar of the waypoint elements is the following:
      <xs:complexType name="waypoints">
         <xs:sequence>
            <xs:element name="waypoint" type="waypoint" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name="waypoint">
         <xs:choice maxOccurs="unbounded" minOccurs="0">
            <xs:element name="elementRef" type="elementRef"/>
            <xs:element name="elementListRef" type="elementListRef"/>
            <xs:element name="property" type="property"/>
            <xs:element name="point" type="point"/>
         </xs:choice>
         <xs:attribute name="name" type="xs:string" use="required" />
         <xs:attribute name="type" type="xs:string" />
         <xs:attribute name="desc" type="xs:string"/>
      </xs:complexType>
A Waypoint is defined by one position and has a type (the type is a String which can be have any value and can be interpreted by the user modules). For example:
      <waypoints>
         <waypoint name="WP1">
            <point latitude="44.9139542570968" longitude="5.96594265297936"/>
         </waypoint>
         <waypoint name="WP2" type="ATT">
            <point latitude="44.9139542570968" longitude="4.96594265297936"/>
         </waypoint>
      </waypoints>

Flightplans

The grammar of the flightplan elements is the following:
      <xs:complexType name="flightplans">
         <xs:sequence>
            <xs:element name="flightplan" type="flightplan" maxOccurs="unbounded" minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:complexType name="flightplan">
         <xs:choice maxOccurs="unbounded" minOccurs="0">
            <xs:element name="elementRef" type="elementRef"/>
            <xs:element name="elementListRef" type="elementListRef"/>
            <xs:element name="waypoint" type="waypointRef"/>
            <xs:element name="point" type="point"/>
            <xs:element name="property" type="property"/>
         </xs:choice>
         <xs:attribute name="name" type="xs:string" use="required" />
         <xs:attribute name="currentWaypoint" type="xs:string" />
         <xs:attribute name="desc" type="xs:string"/>
      </xs:complexType>
      <xs:complexType name="waypointRef">
         <xs:attribute name="name" type="xs:string" use="required" />
      </xs:complexType>
A Flightplan is defined by an ordered list of points, and an ordered waypoints defined by their name[3]
It means that two Flightplans can share the same Waypoints
. For example:
      <flightplans>
         <flightplan name="fp1">
            <point latitude="44.9139542570968" longitude="5.96594265297936"/>
            <point latitude="44.9179542570968" longitude="4.96594265297936"/>
            <waypoint name="WP1" />
            <waypoint name="WP2" />
         </flightplan>
      </flightplans>
      <waypoints>
         <waypoint name="WP1">
            <point latitude="44.9139542570968" longitude="5.96594265297936"/>
         </waypoint>
         <waypoint name="WP2" type="ATT">
            <point latitude="44.9179542570968" longitude="4.96594265297936"/>
         </waypoint>
      </waypoints>

When the module is started, the module esnures that the waypoints are sent before the flightplans. So you can rely the waypoints referenced by the flightplan to be sent prior the the flightplan which reference them.

Flightplans list of points

The flightplan can have only points, onyl waypoints, or both. For example, all these definitions are valid:

Flightplan with only points:
      <flightplans>
         <flightplan name="fp1">
            <point latitude="44.9139542570968" longitude="5.96594265297936"/>
            <point latitude="44.9179542570968" longitude="4.96594265297936"/>
         </flightplan>
      </flightplans>
Flightplan with only waypoints:
      <flightplans>
         <flightplan name="fp1">
            <waypoint name="WP1" />
            <waypoint name="WP2" />
         </flightplan>
      </flightplans>
      <waypoints>
         <waypoint name="WP1">
            <point latitude="44.9139542570968" longitude="5.96594265297936"/>
         </waypoint>
         <waypoint name="WP2" type="ATT">
            <point latitude="44.9179542570968" longitude="4.96594265297936"/>
         </waypoint>
      </waypoints>
Flightplan with points and waypoints:
      <flightplans>
         <flightplan name="fp1">
            <point latitude="44.9139542570968" longitude="5.96594265297936"/>
            <point latitude="44.9179542570968" longitude="4.96594265297936"/>
            <waypoint name="WP1" />
            <waypoint name="WP2" />
         </flightplan>
      </flightplans>
      <waypoints>
         <waypoint name="WP1">
            <point latitude="44.9139542570968" longitude="5.96594265297936"/>
         </waypoint>
         <waypoint name="WP2" type="ATT">
            <point latitude="44.9179542570968" longitude="4.96594265297936"/>
         </waypoint>
      </waypoints>

Custom elements

It is possible to specify elements of any kinds under the elements node. For example, here we define two mission and two frequency elements:
      <elements>
         <element name="mission1" type="mission">
            <property name="tasked" value="true"/>
         </element>
         <element name="mission2" type="mission">
            <property name="tasked" value="true"/>
         </element>
         <element name="diamond12_UHF" type="frequency">
            <property name="frequency" value="239.650" />
            <property name="canal" value="12" />
         </element>
         <element name="diamond12_VHF" type="frequency">
            <property name="frequency" value="150.150" />
            <property name="canal" value="12" />
         </element>
      </elements>

Definition of a point

A point is constituted of a latitude and longitude in degrees. For example:
      <zone type="FRIEND">
         <point latitude="44.91" longitude="4.9659"/>
         <point latitude="45.91" longitude="4.9659"/>
         <point latitude="46.21" longitude="5.9659"/>
      </zone>
It is possible to define each point coordinates with two different patterns:
  • Directly in degrees. For example 44.91 specifies a value of 44.91 degrees
  • In degrees / minutes / 1000th of minutes. For example 44'30'500 specifies a value of 44 degrees, 30 minutes, and 500 1/1000th of minutes

Elements description

All the elements can have an optional description. This description is only use to document the scenario and will not be parsed. For example:
      <target name="ucav1" type="UCAV" desc="the mission target">
         <point latitude="44.91" longitude="4.9659"/>
      </target>

Custom properties

It is possible to define custom properties which can be used for any element. The declaration of these custom properties has two parts:
  • The declaration of the properties types at the beginning of the scenario file
  • The declaration of the properties for an element

Custom properties types


The custom properties types declaration defines how to decode the XML declaration for a property. The supported values are:
  • string
  • int
  • float
  • boolean
For example, in the following declaration:
      <propertyTypes>
         <propertyType name="video" type="int" />
      </propertyTypes>
We declare that the video property is an int.

Custom properties declaration


The properties for an element is an array of any:
      <arrayType name="propertyArray" type="property" />
      <structType name="property">
         <field name="name" type="string" />
         <field name="value" type="any" />
      </structType>
The type of a property will be the type defined for the property name in the custom properties types declaration. If this property has no defined type, it will be a string.

Example

      <configuration>
         <propertyTypes>
            <propertyType name="video" type="int" />
         </propertyTypes>
         <targets>
            <target name="SA_12_Bill_Board_47" type="bill board">
               <point latitude="44.913" longitude="4.965"/>
               <property name="video" value="47" />
            </target>
         </targets>
      </configuration>

References

All elements have an optional list of elementRef references to other elements. For example:
      <zone name="myZone" type="NEUTRAL" nature="JTAC">
         <point latitude="44.280514" longitude="5.33035"/>
         <point latitude="44.38048" longitude="5.33035"/>
         <point latitude="44.38048" longitude="5.430317"/>
         <point latitude="44.280514" longitude="5.430317"/>
         <elementRef name="frequency" eltType="frequency" eltName="diamond14"/>
      </zone>
      <elements>
         <element name="diamond14" type="frequency">
            <property name="frequency" value="251.175" />
            <property name="canal" value="12" />
         </element>
      </elements>
Note that an elementRef reference only refer to one element. If you want to specify one reference to a list of elements of the same type, you should rather use an elementListRef (see references list).

References list

An elementListRef element specifies a reference to a list of elemetns of the same type. For example here the element1 custom element uses a list of Zones:
      <configuration>
         <zones>
            <zone name="zone1" nature="TASK">
               <point latitude="0" longitude="0"/>
               <point latitude="2" longitude="2"/>
               <point latitude="3" longitude="3"/>
            </zone>
            <zone name="zone2" nature="TASK">
               <point latitude="0" longitude="0"/>
               <point latitude="2" longitude="2"/>
               <point latitude="3" longitude="3"/>
            </zone>
         </zones>
         <elements>
            <element name="element1" type="TheElement">
               <elementListRef name="theRef" type="Zone">
                  <ref eltName="zone1" />
                  <ref eltName="zone2" />
               </elementListRef>
            </element>
         </elements>
      </configuration>

Notes

  1. ^ See Front line
  2. ^ See Flight plan
  3. ^ It means that two Flightplans can share the same Waypoints

See also


Categories: builtin-applis

Copyright 2017-2020 Dassault Aviation. All Rights Reserved. Documentation and source under the LGPL v3 licence