| Home Page | Recent Changes | Preferences

# UnrealScript Language Reference/Language Functionality

## Language Functionality

### Built-In Operators And Their Precedence

UnrealScript provides a wide variety of C/C++/Java-style operators for such operations as adding numbers together, comaring values, and incrementing variables. The complete set of operators is defined in Object.u, but here is a recap. Here are the standard operators, in order of precedence. Note that all of the C style operators have the same precedence as they do in C.

Operator | Types it applies to | Meaning
`$` | string | String concatenation
`*=` | byte, int, float, vector, rotation | Multiply and assign
`/=` | byte, int, float, vector, rotation | Divide and assign
`+=` | byte, int, float, vector | Add and assign
`-=` | byte, int, float, vector | Subtract and assign
`||` | bool | Logical or
`&&` | bool | Logical and
`&` | int | Bitwise and
`|` | int | Bitwise or
`^` | int | Bitwise exlusive or
`!=` | all | Compare for inequality
`==` | all | Compare for equality
`<` | byte, int, float, string | Less than
`>` | byte, int, float, string | Greater than
`<=` | byte, int, float, string | Less than or equal to
`>=` | byte, int, float, string | Greater than or equal to
`~=` | float, string | Approximate equality (within 0.0001), case-insensitive equality
`<<` | int, vector | Left shift (int), Forward vector transformation (vector)
`>>` | int, vector | Right shift (int), Reverse vector transformation (vector)
`+` | byte, int, float, vector | Add
`-` | byte, int, float, vector | Subtract
`%` | float | Modulo (remainder after division)
`*` | byte, int, float, vector, rotation | Multiply
`/` | byte, int, float, vector, rotation | Divide
`dot` | vector | Vector dot product
`cross` | vector | Vector cross product
`**` | float | Exponentiation

The above table lists the operators in order of precedence (with operators of the same precedence grouped together). When you type in a complex expression like "1*2+3*4", UnrealScript automatically groups the operators by precedence. Since multiplication has a higher precedence than addition, the expression is evaluated as "(1*2)+(3*4)".

The "&&" (logical and) and "||" (logical or) operators are short-circuited: if the result of the expression can be determined solely from the first expression (for example, if the first argument of && is false), the second expression is not evaluated.

In addition, UnrealScript supports the following unary operators:

Operator | Types it applies to | Meaning
`!` | bool | Logical not
`-` | int, float | negation
`~` | int | bitwise negation
`++, --` | int, float | Increment or Decrement (either before or after a variable)

more on this topic in the Wiki: Operators

### General-Purpose Functions

Integer functions:

int Rand( int Max )
  Returns a random number from 0 to Max-1.
int Min( int A, int B )
  Returns the minimum of the two numbers.
int Max( int A, int B )
  Returns the maximum of the two numbers.
int Clamp( int V, int A, int B )
  Returns the first number clamped to the interval from A to B.

Floating point functions:

float Abs( float A )
  Returns the absolute value of the number.
float Sin( float A )
  Returns the sine of the number expressed in radius.
float Cos( float A )
  Returns the cosine of the number expressed in radians.
float Tan( float A )
  Returns the tangent of the number expressed in radians.
float Atan( float A )
  Returns the inverse tangent of the number expressed in radians.
float Exp( float A )
  Returns the constant "e" raised to the power of A.
float Loge( float A )
  Returns the log (to the base "e") of A.
float Sqrt( float A )
  Returns the square root of A.
float Square( float A )
  Returns the square of A = A*A.
float FRand()
  Returns a random number from 0.0 to 1.0.
float FMin( float A, float B )
  Returns the minimum of two numbers.
float FMax( float A, float B )
  Returns the maximum of two numbers.
float FClamp( float V, float A, float B )
  Returns the first number clamped to the interval from A to B.
float Lerp( float Alpha, float A, float B )
  Returns the linear interpolation between A and B.
float Smerp( float Alpha, float A, float B )
  Returns an Alpha-smooth nonlinear interpolation between A and B.

Unreal’s string functions have a distinct Basic look and feel:

int Len( coerce string[255] S )
  Returns the length of a string.
int InStr( coerce string[255] S, coerce string[255] t)
  Returns the offset into the first string of the second string if it exists, or -1 if not.
string[255] Mid ( coerce string[255] S, int i, optional int j )
  Returns the middle part of the string S, starting and character i and including j characters (or all of them if j is not specified).
string[255] Left ( coerce string[255] S, int i )
  Returns the i leftmost characters of s.
string[255] Right ( coerce string[255] S, int i )
  Returns the i rightmost characters of s.
string[255] Caps ( coerce string[255] S )
  Returns S converted to uppercase.

Vector functions:

float Size( vector A )
  Returns the euclidean size of the vector (the square root of the sum of the components squared).
vector Normal( vector A )
  Returns a vector of size 1.0, facing in the direction of the specified vector.
Invert ( out vector X, out vector Y, out vector Z )
  Inverts a coordinate system specified by three axis vectors.
vector VRand ( )
  Returns a uniformly distributed random vector.
float Dist ( vector A, vector B )
  Returns the euclidean distance between two points.
vector MirrorVectorByNormal( vector Vect, vector Normal )
  Mirrors a vector about a specified normal vector.

more on this topic in the Wiki: Global Function

Prev Page: /States – Section 7 of 9 – Next Page: /Advanced Language Features

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