HUD

From Bohemia Interactive Community
Revision as of 14:53, 30 April 2006 by Planck (talk | contribs)
Jump to navigation Jump to search


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: