| Home Page | Recent Changes | Preferences

# Wormbo/WUtils

For the full list of classes, methods, etc. go to the wUtils page.

## wString

### Methods

FloatToString (maybe in v105)
  Converts a float to string.

      static final function string FloatToString(float Value, optional int Precision)
      {
          local int IntPart;
          local float FloatPart;
          local string IntString, FloatString;

          Precision = Max(Precision, 1);  // otherwise a simple int cast should be used

          if ( Value < 0 ) {
              IntString = "-";
              Value *= -1;
          }
          IntPart = int(Value);
          FloatPart = Value - IntPart;
          IntString = IntString $ string(IntPart);
          FloatString = string(int(FloatPart * 10 ** Precision));
          while (Len(FloatString) < Precision)
              FloatString = "0" $ FloatString;

          return IntString$"."$FloatString;
      }

## wDraw

### Structs

MaterialRegion

      struct MaterialRegion {
          var Material Tex;
          var IntBox TexCoords;   // absolute material coordinates
          var FloatBox ScreenCoords;  // relative screen coordinates
          var ERenderStyle RenderStyle;
          var Color DrawColor;
      }

### Methods

DrawMaterialRegion
  Draws a MaterialRegion to a Canvas. The canvas' clipping region (determined by OrgX/Y and ClipX/Y) is used to convert the MaterialRegion's screen coordinates.

      static final function DrawMaterialRegion(Canvas C, MaterialRegion M,
              optional float ScaleX, optional float ScaleY, optional bool bClipped)
      {
          local byte OldStyle;
          local Color OldColor;
          local float X, Y, W, H, CenterX, CenterY;

          if ( ScaleX == 0 )
              ScaleX = 1.0;

          if ( ScaleY == 0 )
              ScaleY = ScaleX;

          X = M.ScreenCoords.X1 * C.ClipX;
          Y = M.ScreenCoords.Y1 * C.ClipY;
          W = (M.ScreenCoords.X2 - M.ScreenCoords.X1) * C.ClipX;
          H = (M.ScreenCoords.Y2 - M.ScreenCoords.Y1) * C.ClipY;
          CenterX = (M.ScreenCoords.X1 + M.ScreenCoords.X2) * 0.5 * C.ClipX;
          CenterY = (M.ScreenCoords.Y1 + M.ScreenCoords.Y2) * 0.5 * C.ClipY;

          W *= ScaleX;
          H *= ScaleY;
          X = CenterX - 0.5 * W;
          Y = CenterY - 0.5 * H;

          OldStyle = C.Style;
          OldColor = C.DrawColor;

          C.Style = M.RenderStyle;
          C.DrawColor = M.DrawColor;
          C.SetPos(X, Y);
          if ( !bClipped )
              C.DrawTile(M.Tex, W, H, M.TexCoords.X1, M.TexCoords.Y1,
                      M.TexCoords.X2 - M.TexCoords.X1, M.TexCoords.Y2 - M.TexCoords.Y1);
          else
              C.DrawTileClipped(M.Tex, W, H, M.TexCoords.X1, M.TexCoords.Y1,
                      M.TexCoords.X2 - M.TexCoords.X1, M.TexCoords.Y2 - M.TexCoords.Y1);

          C.Style = OldStyle;
          C.DrawColor = OldColor;
      }

DrawDecimalNumberAt (updated for v105)
  Draws a float value. The coordinates specify the upper left corner of the decimal point character, i.e. when you specify the upper right corner of the screen the decimal point would not be visible. (added optional int Precision and fixed draw position getting changed)

      static final function DrawDecimalNumberAt(Canvas C, float Value, float X, float Y, optional bool bClipped, optional int Precision)
      {
          local int IntPart;
          local float FloatPart;
          local float XL, YL, OldX, OldY;
          local string IntString, FloatString;

          OldX = C.CurX; OldY = C.CurY;

          if ( Precision == 0 )
              Precision = 2; // default UT2k3 setting
          else
              Precision = Max(Precision, 1);  // otherwise Canvas.DrawScreenText should be used

          if ( Value < 0 ) {
              IntString = "-";
              Value *= -1;
          }
          IntPart = int(Value);
          FloatPart = Value - IntPart;
          IntString = IntString $ string(IntPart);
          IntString = string(int(IntPart));
          FloatString = string(int(FloatPart * 10 ** Precision));
          while (Len(FloatString) < Precision)
              FloatString = "0" $ FloatString;

          C.TextSize(IntString, XL, YL);
          C.SetPos(X - XL, Y);
          if ( !bClipped )
              C.DrawText(IntString$"."$FloatString);
          else
              C.DrawTextClipped(IntString$"."$FloatString);

          C.SetPos(OldX, OldY);   // reset draw position
      }

FloatBox GetActorBox (Canvas C, Actor A)
  Calculates a box around an actor in relative screen coordinates.

      static final function FloatBox GetActorBox(Canvas C, Actor A)
      {
          local float Left, Right;
          local vector CamLoc, X, Y, Z;
          local rotator CamRot;
          local array<float> Height;
          local FloatBox box;

          if ( A == None )
              return box;

          C.GetCameraLocation(CamLoc, CamRot);
          GetAxes(CamRot, X, Y, Z);
          Right = C.WorldToScreen(A.Location + Y * A.CollisionRadius).X;
          Left = C.WorldToScreen(A.Location - Y * A.CollisionRadius).X;
          X = Normal(X * vect(1,1,0)) * A.CollisionRadius;
          Z = vect(0,0,1) * A.CollisionHeight;
          Height[0] = C.WorldToScreen(A.Location + X + Z).Y;
          Height[1] = C.WorldToScreen(A.Location - X + Z).Y;
          Height[2] = C.WorldToScreen(A.Location + X - Z).Y;
          Height[3] = C.WorldToScreen(A.Location - X - Z).Y;

          box.X1 = Left / C.SizeX;
          box.X2 = Right / C.SizeX;
          box.Y1 = class'wArray'.static.MinF(Height) / C.SizeY;
          box.Y2 = class'wArray'.static.MaxF(Height) / C.SizeY;

          return box;
      }

SetClipRegion (Canvas C, FloatBox ClipRegion)
  Sets the canvas' clipping region. Can use a FloatBox like it is returned by the GetActorBox method.

      static final function SetClipRegion(Canvas C, FloatBox ClipRegion)
      {
          C.SetOrigin(ClipRegion.X1 * C.SizeX, ClipRegion.Y1 * C.SizeY);
          C.SetClip((ClipRegion.X2 - ClipRegion.X1) * C.SizeX, (ClipRegion.Y2 - ClipRegion.Y1) * C.SizeY);
      }

ResetClipRegion (Canvas C)
  Resets the canvas' clipping region.

      static final function ResetClipRegion(Canvas C)
      {
          C.SetOrigin(C.Default.OrgX, C.Default.OrgY);
          C.SetClip(C.Default.ClipX, C.Default.ClipY);
      }

DrawBracket (Canvas C, float width, float height, float bracket_size) (maybe in v105)
  This function is a corrected version of the function with the same name in the Canvas class. The bracket drawn by the Canvas version will be two pixels wider and higher than specified and the bottom right corner misses a small 2x2 square.

      static final function DrawBracket(Canvas C, float width, float height, float bracket_size)
      {
          local float X, Y;
          X = C.CurX;
          Y = C.CurY;

          Width  = max(width,5);
          Height = max(height,5);

          // top left
          C.DrawLine(3, bracket_size);    // to left
          C.DrawLine(1, bracket_size);    // down

          // top right
          C.SetPos(X + width, Y);
          C.DrawLine(2, bracket_size);    // to right
          C.SetPos(X + width - 2, Y);
          C.DrawLine(1, bracket_size);    // down

          // bottom right
          C.SetPos(X + width - 2, Y + height);
          C.DrawLine(0, bracket_size);    // up
          C.SetPos(X + width, Y + height - 2);
          C.DrawLine(2, bracket_size);    // to right

          // bottom left
          C.SetPos(X, Y + height - 2);
          C.DrawLine(3, bracket_size);    // to left
          C.SetPos(X, Y + height);
          C.DrawLine( 0, bracket_size);   // up

          C.SetPos(X, Y);
      }

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In