HUD

From Bohemia Interactive Community
Revision as of 00:44, 19 December 2006 by Hardrock (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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:

  • Blah