ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


hud_library

HUD Library

HUD Library is an advanced replacement for HudMessage. It uses HUD Library State instead of many function arguments and implements scaling and 3D HudMessages.

Here is an example:

HudResetState(); // Just like calling SetFont and SetHudSize before HudMessage.
HudSetPoint(320.0, 240.0);
HudDrawText(1, "Hello");

The only drawing functions in HUD Library are HudDrawText and HudDrawImage. They call SetHudSize, SetFont and then HudMessage(Bold) every time a message is drawn. This means that if you are mixing HUD Library with HudMesasge, then, after calling one of HudDraw* functions, your SetHudSize and SetFont settings are lost and you need to set them back.

Scaling

Scaling is implemented by calling SetHudSize with values that don't match those set in HudSetVirtualSize.

For example:

HudResetState();
HudSetVirtualSize(640.0, 480.0);
HudSetScale(0.5);
HudDrawText(1, "Hello")

Will result in the following sequence of calls to ZDoom's functions:

SetFont("SMALLFONT"); // Default HUD Library font
SetHudSize(1280, 1024, 0); // To implement 0.5 scale
HudMessage(s:"Hello"; HUDMSG_PLAIN, 1, etc);

3D messages

HUD Library supports an accurate projection of 3D messages. 3D messages are correctly projected in both software and OpenGL renderers.

Example:

HudResetState();
HudSetPoint3D(x, y, z);
HudSetCameraActor(0); // Set HUD Library camera to match the activator
HudDrawText(1, "Look here!")

HudSetPoint3D switches HUD Library to 3D drawing mode, while HudSetPoint switches it back to 2D mode. 3D messages support all features that 2D messages support, including scaling.

By default, 3D messages are automatically scaled with distance. You can disable this setting using HudSetAutoDistanceScale.

State operations

The whole HUD Library State can be reset to default using HudResetState. It can be saved and loaded using HudPushState and HudPopState to a stack. The stack can be cleared using HudClearStateStack.

hud_library.txt · Last modified: 2017/07/09 14:26 by korshun