Templates

This information is provided for customization. You get a finished VDGS device with your license, ready to be copied into your airport project.

Templates provide a way of connecting nodes (meshes) of a 3D object to the VDGS module to conditionally display various visual elements depending on the current situation.

Include Nool Aerosystems\DockingSystemV300.xml in your model XML file and tag nodes using the templates below.


Root node

All VDGS-related visual elements should be placed under root screen node and made invisible by default:

<Include ModelBehaviorFile="Asobo\Generic.xml"/>

<Component ID="screen" Node="screen">
  <UseTemplate Name="ASOBO_GT_Visibility_Code">
    <VISIBILITY_CODE>0</VISIBILITY_CODE>
  </UseTemplate>
</Component>

This ensures that VDGS display screens fail gracefully when the module is not available – without leaving any graphics visible. Do not use any custom templates here, as they also are not available when the module is not installed.


noolaero_vdgs_core

Initializes variables. Mandatory for every VDGS SimObject.

Example:

<Component ID="core">
  <UseTemplate Name="noolaero_vdgs_core"/>
</Component>

noolaero_conditional_visibility

Adds conditional visibility to a node. It is wrapped inside a new <Component> by default. Set INLINE=1 to use it inside an existing component.

Parameter Description
NODE The conditionally visible node
COND Visibility condition in MSFS RPN. Custom macros are also supported. Default: 1 (always visible).
INLINE Optional. Set 1 if this node must not be wrapped inside a component

This example makes msg_ok mesh appear only when @ShowOK macro is true (docking has completed and the device is showing OK message):

<UseTemplate Name="noolaero_conditional_visibility">
  <NODE>msg_ok</NODE>
  <COND>@ShowOK</COND>
</UseTemplate>

noolaero_vdgs_sprite

Universal sprite controller. Maps a range of values to a list of nodes, named sequentially from name_1 to name_N.

Parameter Description
NODE_PREFIX Naming prefix used by nodes that belong to this sprit group
NODE_COUNT Number of nodes in this group (1-based, eg 10 sprites = 10)
VAR Variable that drives sprites
VAR_START Value of the variable at the first node
VAR_END Value of the variable at the last node
COND Optional. Node visibility condition (default: 1, always visible)
OPERATOR Optional. The operator used when comparing node number to corresponding index calculated from the range between VAR_START and VAR_END (default: ==)
ROUND Optional. Rounding method (ceil, flr, near, default: near)
CLAMP_START Optional. Clamp variable value at the start (default: 1)
CLAMP_END Optional. Clamp variable alue at the end (default: 1)

This example simulates a moiré pattern using 89 sequentially named panels that represent the range between extreme left and extreme right:

<UseTemplate Name="noolaero_vdgs_sprite">
  <NODE_PREFIX>moire_</NODE_PREFIX>
  <NODE_COUNT>89</NODE_COUNT>
  <VAR>@EyepointX</VAR>
  <VAR_START>-4</VAR_START>
  <VAR_END>4</VAR_END>
  <COND>@InCapturingMode @InTrackingMode @InClosingMode or or</COND>
</UseTemplate>

Lateral eyepoint position @EyepointX is used as the input variable and the range between 4 meters left to 4 meters right is mapped to those 89 nodes, shown when the device is in capturing, tracking or closing mode. Only one panel is shown at the time (due to the default == operator) and clamping (on by default) leaves the extreme one visible even when eyepoint moves out of the -4..+4 m range.

This example creates a distance bar from 40 segments named dist_1..dist_40 over 0.0 .. 15.0 range of longitudal distance from docking target using @OffsetZ variable:

<UseTemplate Name="noolaero_vdgs_sprite">
  <NODE_PREFIX>dist_</NODE_PREFIX>
  <NODE_COUNT>40</NODE_COUNT>
  <VAR>@OffsetZ</VAR>
  <VAR_START>0.0</VAR_START>
  <VAR_END>15.0</VAR_END>
  <OPERATOR>&lt;=</OPERATOR>
  <COND>@ShowGuidance</COND>
</UseTemplate>

Distance gets recalculated from 0.0 .. 15.0 meters to a 1 .. 40 value. All segments at or below that value are visible due to the <= operator. At 7.5 m meters the number is 20 and dist_1..dist_20 nodes are visible.


noolaero_simple_anim

Simple animation controller. Drives a simple animation that only depends on time.

Parameter Description
NAME Animation name
INLINE Optional. Set 1 if this animated node must not be wrapped inside a new component (default: 0)
NODE Optional. Name of the animated node (if INLINE=0)
SPEED Optional. Animation speed (frames per second, default: 50)

noolaero_vdgs_anim

Universal animation controller. Maps a range of values to keyframes to drive an animation.

Parameter Description
NODE Name of the animated node
ANIM Animation name
VAR Variable that drives the animation
VAR_START Value of the variable at the first frame
VAR_END Value of the variable at the last frame
COND Optional. Node visibility condition (default: 1, always visible)
KEYFRAME_START Optional. First frame of the animation (default: 0)
KEYFRAME_END Optional. Last frame of the animation (default: 100)
SPEED Optional. Animation speed (frames per second, default: 50)

noolaero_vdgs_countdown

Digital distance countdown. Up to three groups of digits can be configured to represent digital distance countdown.

Parameter Description
COND Optional. Visibility condition (default: 1, always visible)
UNITS Optional. Countdown distance units (M or FT, default: M)

Additional parameters when UNITS = M

Parameter Description
NODE_10M_PREFIX Optional. Prefix of digit nodes that represent tens of meters
NODE_1M_PREFIX Optional. Prefix of digit nodes representing single meters
NODE_0M_PREFIX Optional. Prefix of digit nodes representing decimal meters
DECIMAL_DIST Optional. Decimal digits will start running below this distance threshold (default: 3.0 m)
DECIMAL_STEP Optional. Step of decimal digits (default: 2, meaning 0.0, 0.2, 0.4, 0.6, 0.8 m)

Additional parameters when UNITS = FT

Parameter Description
NODE_10FT_PREFIX Optional. Prefix of digit nodes that represent tens of feet
NODE_1FT_PREFIX Optional. Prefix of digit nodes representing single feet
DIST_4FT Optional. Above this distance (in feet) countdown runs in 4 ft steps (default: 30.0 ft)
DIST_2FT Optional. Above this distance (in feet) countdown runs in 2 ft steps (default: 10.0 ft)

Example. Assuming you have meshes named dist_10m_1, dist_10m_2, …:

<UseTemplate Name="noolaero_vdgs_countdown">
  <NODE_10M_PREFIX>dist_10m_</NODE_10M_PREFIX>
  <NODE_1M_PREFIX>dist_1m_</NODE_1M_PREFIX>
  <NODE_0M_PREFIX>dist_0m_</NODE_0M_PREFIX>
  <COND>@ShowClosingRate</COND>
</UseTemplate>

noolaero_vdgs_char_group

Ties a group of nodes (representing individual symbols) to a specific character in a string.

Nodes should be named:

  • char[n]_0 to char[n]_9,
  • char[n]_A to char[n]_Z,
  • and char[n]__dash, char[n]__dot, char[n]__slash, char[n]__colon for special symbols.
Parameter Description
NODE_PREFIX Node naming prefix
STR Encoded string (see macros)
POS N-th character represented by this group
COND Optional. Node visibility condition (default: 1, always visible)

Example. Let’s assume you have four groups of characters, each prefixed with char[n]_ and with overlapping meshes named char1_0, …, char1_Z representing individual symbols.

Define four groups with appropriate prefixed to turn them into an ICAO type display:

<UseTemplate Name="noolaero_vdgs_char_group">
  <NODE_PREFIX>char1_</NODE_PREFIX>
  <STR>@IcaoType</STR>
  <POS>1</POS>
</UseTemplate>

<UseTemplate Name="noolaero_vdgs_char_group">
  <NODE_PREFIX>char2_</NODE_PREFIX>
  <STR>@IcaoType</STR>
  <POS>2</POS>
</UseTemplate>

<UseTemplate Name="noolaero_vdgs_char_group">
  <NODE_PREFIX>char3_</NODE_PREFIX>
  <STR>@IcaoType</STR>
  <POS>3</POS>
</UseTemplate>

<UseTemplate Name="noolaero_vdgs_char_group">
  <NODE_PREFIX>char4_</NODE_PREFIX>
  <STR>@IcaoType</STR>
  <POS>4</POS>
</UseTemplate>