HUD

From Bohemia Interactive Community
Revision as of 14:53, 30 April 2006 by Planck (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 points need
   topRight = "HUD PH";	//to be present in model of vehicle.
   bottomLeft = "HUD LD";
 
   borderLeft = 0.05;	//Offsets used to finetune the actual displayarea. The values
   borderRight = 0.05;	//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-degree dive (used 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 the 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, incase 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 TL = Top Left BR = Bottom Right
   clipBR[] = {1.0,0.90};
   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[],right[],down[] define the box (size) of the first letter.
     pos[]={SpdMove2,{-0.05,-0.03},1}; 
     right[]={SpdMove2,{0.01,-0.03},1};
     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: instrumented landing system
  • horizon: artifical horizont

Available Draw Types:

  • group: if no type is defined, type is assumed to be group
  • line: drawing a line
  • text: drawing text

Available Conditions:

Aircrafts:
 *on: engine on 
 *ils: gear down 
 *mgun: current weapon is a mgun 
 *missile: current weapon is a missile 

Landvehicles: