Difference between revisions of "HUD"

From Bohemia Interactive Community
Jump to navigation Jump to search
m
m
Line 14: Line 14:
 
   <font color="Blue">class MFD
 
   <font color="Blue">class MFD
 
   {
 
   {
     <font color="Sea grey">class MFD1 {...};
+
     <font color="DarkGrey">class MFD1 {...};
 
     class MFD2 {...};
 
     class MFD2 {...};
 
     ...
 
     ...
 
     </font><font color="Blue">
 
     </font><font color="Blue">
 
   };</font>
 
   };</font>
<font color="Seagrey">Optional.</font>
+
<font color="DarkGrey">Optional.</font>
  
 
<font color="Black">with class MFD1 of the following structure:</font>
 
<font color="Black">with class MFD1 of the following structure:</font>
 
   <font color="Blue">class MFD1
 
   <font color="Blue">class MFD1
 
   {
 
   {
     topLeft = "HUD LH"; //Those 3 points define the displayarea. These points need
+
     topLeft = "HUD LH"; //Those 3 points define the displayarea. These  
     topRight = "HUD PH"; //to be present in model of vehicle.
+
     topRight = "HUD PH"; //points need to be present in model of vehicle.
 
     bottomLeft = "HUD LD";
 
     bottomLeft = "HUD LD";
 
    
 
    
     borderLeft = 0.05; //Offsets used to finetune the actual displayarea. The values
+
     borderLeft = 0.05; //Offsets used to finetune the actual displayarea.
     borderRight = 0.05; //can vary from 0 - 1.
+
     borderRight = 0.05; //The values can vary from 0 - 1.
 
     borderTop = 0.02;
 
     borderTop = 0.02;
 
     borderBottom = 0.1;
 
     borderBottom = 0.1;
 
  
 
  
     color[]={0,1,0,0.1}; //obsolete, done over color values in class Draw, but at the moment still required.
+
     color[]={0,1,0,0.1}; //Obsolete, done over color values in class Draw,
 +
                        //but at the moment still required.
 +
 
     class Bones //List of all bones
 
     class Bones //List of all bones
 
     {
 
     {
Line 44: Line 46:
 
   };</font>
 
   };</font>
  
 +
 +
<font color="Black">
 
===Class Bones:===
 
===Class Bones:===
<font color="Black">
+
 
 
All bones that are used for positioning and animating of drawings.
 
All bones that are used for positioning and animating of drawings.
  
Line 63: Line 67:
 
       type = linear;
 
       type = linear;
 
       source = fuel;
 
       source = fuel;
       min = 0; //min value this bone can display
+
       min = 0;             //Min value this bone can display
       max = 1; //max value this bone can display
+
       max = 1;             //Max value this bone can display
 
       minPos[] = {0.5,0.2};
 
       minPos[] = {0.5,0.2};
 
       maxPos[] = {0.5,0.5};
 
       maxPos[] = {0.5,0.5};
Line 82: Line 86:
 
       type = vector;
 
       type = vector;
 
       source = velocity;
 
       source = velocity;
       pos0[] = {0.5,Pos0Center}; // position of 0-degree dive line
+
       pos0[] = {0.5,Pos0Center};         //Position of 0-degree dive line
       pos10[] = {0.5+0.9,Pos0Center+0.7}; // position of 10 degree bank and 10-degree dive (used to adjust scale)
+
       pos10[] = {0.5+0.9,Pos0Center+0.7}; //Position of 10 degree bank and
    };
+
    };                                    //10-deg dive (to adjust scale)
 +
 
     class ILS
 
     class ILS
 
     {
 
     {
 
       type = ils;
 
       type = ils;
       pos0[] = {0.5,0.4}; // position when centered
+
       pos0[] = {0.5,0.4}; //Position when centered
       pos3[] = {0.7,0.6}; // position when 3-degree off in both directions
+
       pos3[] = {0.7,0.6}; //Position when 3-degree off in both directions
 
     };
 
     };
 
     class Horizont
 
     class Horizont
 
     {
 
     {
 
       type = horizon;
 
       type = horizon;
       pos0[] = {0.5,0.27}; // position of 0-degree dive line
+
       pos0[] = {0.5,0.27}; //Position of 0-degree dive line
       pos10[] = {0.5+0.9,3.4}; // position of 10 degree bank and 10-degree dive (used to adjust scale)
+
       pos10[] = {0.5+0.9,3.4}; //Position of 10 degree bank and 10-degree
       angle = 0; // horizon angle to which this line corresponds to
+
                                //dive (used to adjust scale)
     };
+
       angle = 0;                 //Horizon angle to which this line
 +
     };                           //corresponds to
 
   };</font>
 
   };</font>
 +
 +
 +
<font color="Black">
 
===Class Draw:===
 
===Class Draw:===
<font color="Black">The class Draw is a "group", which consist of other groups or classes.
 
  
Every group can have its own alpha, color[], clipTL[], clipBR[] and condition values, which will be the valid for all classes/groups inside.
+
The class Draw is a "group", which consist of other groups or classes.
  
 +
Every group can have its own alpha, color[], clipTL[], clipBR[] and condition values, which will be valid for all classes/groups inside.
  
Format for a point(for points[],pos[],right[] and down[] entries):</font>
+
 
 +
Format for a point ''(for points[], pos[], right[] and down[] entries)'':</font>
  
 
<font color="Blue">{[bone1,] position1, blending weight1[, [bone2,] position2, blending weight2]...}</font>
 
<font color="Blue">{[bone1,] position1, blending weight1[, [bone2,] position2, blending weight2]...}</font>
Line 111: Line 121:
 
<font color="Black">entries with [] are optional.  
 
<font color="Black">entries with [] are optional.  
  
Points directly defined after each other are linked by a line, incase you don't want to link place an empty point {} between those points.
+
Points directly defined after each other are linked by a line, in case you don't want to link place an empty point {} between those points.
  
 
   <font color="Blue">class Draw
 
   <font color="Blue">class Draw
Line 117: Line 127:
 
     alpha = 0.8;
 
     alpha = 0.8;
 
     color[] = {0.2,1,0.1};
 
     color[] = {0.2,1,0.1};
     clipTL[] = {0.0,0.05}; //Defines the space in which the bone is drawn TL = Top Left BR = Bottom Right
+
     clipTL[] = {0.0,0.05};   //Defines the space in which the bone is drawn  
     clipBR[] = {1.0,0.90};
+
     clipBR[] = {1.0,0.90};   //TL = Top Left, BR = Bottom Right
 
     condition = "on";
 
     condition = "on";
 
  
 
  
Line 130: Line 140:
 
       type = text;
 
       type = text;
 
       align = left;
 
       align = left;
       scale = 1; // text size, obsolete (but still required)
+
       scale = 1; //Text size, obsolete (but still required)
 
       source = speed;
 
       source = speed;
       sourceScale = 3.6; // convert from m/s to km/h
+
       sourceScale = 3.6; //Convert from m/s to km/h
      //pos[],right[],down[] define the box (size) of the first letter.
+
       pos[]={SpdMove2,{-0.05,-0.03},1};   //pos[],right[],down[] define the
       pos[]={SpdMove2,{-0.05,-0.03},1};  
+
       right[]={SpdMove2,{0.01,-0.03},1}; //box (size) of the first letter.
       right[]={SpdMove2,{0.01,-0.03},1};
 
 
       down[]={SpdMove2,{-0.05,0.03},1};
 
       down[]={SpdMove2,{-0.05,0.03},1};
 
     };
 
     };
 
   };</font>
 
   };</font>
  
===Short Reference:===
 
  
<font color="Black">Available Sources:
+
==Short Reference:==
 +
 
 +
===Available Sources:===
 +
 
 +
====Vectors:====
 +
 
 +
*velocity: Velocity vector
 +
*weapon: Current weapon aim vector
 +
*target: Vector to current target
 +
 
  
Vectors:
+
====Scalar:====
  *velocity: velocity vector
+
 
  *weapon: current weapon aim vector
+
*altitudeAGL: Above ground level altitude (m)  
  *target: vector to current target
+
*altitudeASL: Above sea level altitude (m)  
 
+
*speed: Speed (m/s)
Scalar:
+
*vspeed: Vertical speed (m/s)  
  *altitudeAGL: above ground level altitude (m)  
+
*targetDist: Distance to current target  
  *altitudeASL: above sea level altitude (m)  
+
*rpm: Current engine rpm (0..1)  
  *speed: speed (m/s) vspeed: vertical speed (m/s)  
+
*fuel: Fuel tank state (0..1)
  *targetDist: distance to current target  
+
 
  *rpm: current engine rpm (0..1)  
+
 
  *fuel: fuel tank state (0..1)
+
===Available Bone Types:===
 +
 
 +
*fixed: Non moving bone
 +
*linear: Linear moving bone
 +
*rotational: Rotating bone
 +
*vector: Vector bone
 +
*ils: Instrument landing system
 +
*horizon: Artifical horizon
 +
 
 +
 
 +
===Available Draw Types:===
 +
 
 +
*group: If no type is defined, type is assumed to be group
 +
*line: Drawing a line
 +
*text: Drawing text
  
Available Bone Types:
 
*fixed: non moving bone
 
*linear: linear moving bone
 
*rotational: rotating bone
 
*vector: vector bone
 
*ils: instrumented landing system
 
*horizon: artifical horizont
 
  
Available Draw Types:
+
===Available Conditions:===
*group: if no type is defined, type is assumed to be group
+
*line: drawing a line
+
====Aircraft:====
*text: drawing text
 
  
Available Conditions:
+
*on: Engine on  
Aircrafts:
+
*ils: Gear down  
  *on: engine on  
+
*mgun: Current weapon is a mgun  
  *ils: gear down  
+
*missile: Current weapon is a missile  
  *mgun: current weapon is a mgun  
 
  *missile: current weapon is a missile  
 
 
   
 
   
Landvehicles:
+
 
 +
====Landvehicles:====

Revision as of 15:52, 30 April 2006


Introduction:

The idea: 2D elements animated by bones, used for displays inside vehicles.

Main Structure:

Add class MFD to class cfgVehicles.Yourvehicle.

Subclasses of MFD you can name as you want.

 class MFD
 {
   class MFD1 {...};
   class MFD2 {...};
   ...
   
 };

Optional.

with class MFD1 of the following structure:

 class MFD1
 {
   topLeft = "HUD LH";	//Those 3 points define the displayarea. These 
   topRight = "HUD PH";	//points need to be present in model of vehicle.
   bottomLeft = "HUD LD";
 
   borderLeft = 0.05;	//Offsets used to finetune the actual displayarea.
   borderRight = 0.05;	//The values can vary from 0 - 1.
   borderTop = 0.02;
   borderBottom = 0.1;
 	 	
   color[]={0,1,0,0.1};	//Obsolete, done over color values in class Draw,
                        //but at the moment still required.

   class Bones		//List of all bones
   {
     ...
   };
   class Draw		//List of all drawingmethods
   {
     ...
   };
 };


Class Bones:

All bones that are used for positioning and animating of drawings.

Defined positions are relative to position the bone is binded to (by default {0,0} of display area).

Codesamples for each possible bone, with all needed values:

 class Bones
 {
   class Fixed
   {
     type = fixed;
     pos[] = {0.05,0.9};
   };
   class Linear
   {
     type = linear;
     source = fuel;
     min = 0;	            //Min value this bone can display
     max = 1;	            //Max value this bone can display
     minPos[] = {0.5,0.2};
     maxPos[] = {0.5,0.5};
   };
   class Rotational
   {
     type = rotational;
     source = targetDist;
     center[] = {0,0};
     min = 100;
     max = 3000;
     minAngle = -120;
     maxAngle = +120;
   };
   class Vector
   {
     type = vector;
     source = velocity;
     pos0[] = {0.5,Pos0Center};	         //Position of 0-degree dive line
     pos10[] = {0.5+0.9,Pos0Center+0.7}; //Position of 10 degree bank and
   };                                    //10-deg dive (to adjust scale)

   class ILS
   {
     type = ils;
     pos0[] = {0.5,0.4};  //Position when centered
     pos3[] = {0.7,0.6};  //Position when 3-degree off in both directions
   };
   class Horizont
   {
     type = horizon;
     pos0[] = {0.5,0.27};	//Position of 0-degree dive line
     pos10[] = {0.5+0.9,3.4};	//Position of 10 degree bank and 10-degree
                                //dive (used to adjust scale)
     angle = 0;	                //Horizon angle to which this line
   };                           //corresponds to
 };


Class Draw:

The class Draw is a "group", which consist of other groups or classes.

Every group can have its own alpha, color[], clipTL[], clipBR[] and condition values, which will be valid for all classes/groups inside.


Format for a point (for points[], pos[], right[] and down[] entries):

{[bone1,] position1, blending weight1[, [bone2,] position2, blending weight2]...}

entries with [] are optional.

Points directly defined after each other are linked by a line, in case you don't want to link place an empty point {} between those points.

 class Draw
 {
   alpha = 0.8;
   color[] = {0.2,1,0.1};
   clipTL[] = {0.0,0.05};   //Defines the space in which the bone is drawn 
   clipBR[] = {1.0,0.90};   //TL = Top Left, BR = Bottom Right
   condition = "on";
 	
   class Line
   {
     type = line;
     points[] = {{Bone1,1},{Bone2,1}};
   };
   class Text
   {
     type = text;
     align = left;
     scale = 1; 		//Text size, obsolete (but still required)
     source = speed;
     sourceScale = 3.6; 	//Convert from m/s to km/h
     pos[]={SpdMove2,{-0.05,-0.03},1};   //pos[],right[],down[] define the
     right[]={SpdMove2,{0.01,-0.03},1};  //box (size) of the first letter.
     down[]={SpdMove2,{-0.05,0.03},1};
   };	
 };


Short Reference:

Available Sources:

Vectors:

  • velocity: Velocity vector
  • weapon: Current weapon aim vector
  • target: Vector to current target


Scalar:

  • altitudeAGL: Above ground level altitude (m)
  • altitudeASL: Above sea level altitude (m)
  • speed: Speed (m/s)
  • vspeed: Vertical speed (m/s)
  • targetDist: Distance to current target
  • rpm: Current engine rpm (0..1)
  • fuel: Fuel tank state (0..1)


Available Bone Types:

  • fixed: Non moving bone
  • linear: Linear moving bone
  • rotational: Rotating bone
  • vector: Vector bone
  • ils: Instrument landing system
  • horizon: Artifical horizon


Available Draw Types:

  • group: If no type is defined, type is assumed to be group
  • line: Drawing a line
  • text: Drawing text


Available Conditions:

Aircraft:

  • on: Engine on
  • ils: Gear down
  • mgun: Current weapon is a mgun
  • missile: Current weapon is a missile


Landvehicles: