3.1 KiB
VECTOR
An N-dimensional vector of floating-point numbers. In practice, used for two- or three-dimensional coordinates — engine games use vectors mostly in physics-flavoured minigames (reflection, movement-direction normalisation).
The variable's value is the vector's Euclidean length, i.e. sqrt(x1² + x2² + … + xN²).
Fields
SIZE
INTEGER SIZE
The number of vector components. Typical values in shipping games are 2 or 3.
VALUE
DOUBLE, DOUBLE, [DOUBLE...] VALUE
Initial values of each component. The number of entries should match SIZE.
Methods
ADD
void ADD(STRING|VECTOR vectorName)
Adds another vector to this one component-wise. The result is stored in the vector the method was called on.
Parameters
vectorName— the vector to add; either aSTRING(variable name) or aVECTOR.
Examples
VTEMP2^ADD("VTOCENTER");
VTEMP2^ADD(VTOCENTER);
ASSIGN
void ASSIGN(DOUBLE x1, DOUBLE x2, [DOUBLE...])
Assigns new component values. The number of arguments dictates how many components are overwritten — any beyond that retain their previous values. If more arguments are supplied than the vector has components, the vector is extended.
Parameters
x1, x2, …— the new component values.
Examples
VTEMP1^ASSIGN(0.0,0.0);
VTEMP1^ASSIGN(ARRDIRX^GET(VARPLAYER),ARRDIRY^GET(VARPLAYER));
VNORMAL^ASSIGN([ARRPOSX^GET(VARPLAYER)+ARRHWIDTH^GET(VARPLAYER)],[ARRPOSY^GET(VARPLAYER)+ARRHHEIGHT^GET(VARPLAYER)]);
GET
DOUBLE GET(INTEGER index)
Returns the value of the component at the given (zero-based) index. Returns 0.0 for out-of-range indices.
Parameters
index— component index, zero-based.
Returns: DOUBLE — the component value or 0.0.
Examples
VTEMP1^GET(0);
VTEMP1^GET(1);
LEN
DOUBLE LEN()
Returns the vector's Euclidean length.
Returns: DOUBLE — the vector length.
MUL
void MUL(DOUBLE scalar)
Multiplies every component by the given scalar.
Parameters
scalar— the multiplier.
Examples
VTEMP1^MUL(10.0);
VTEMP1^MUL(ARRSPEED^GET(VARPLAYER));
VTEMP2^MUL(-1);
NORMALIZE
void NORMALIZE()
Normalises the vector to length 1 (divides each component by the current length). Calling this on a zero-length vector leaves the vector unchanged.
Examples
VNORMAL^NORMALIZE();
VTEMP1^NORMALIZE();
REFLECT
void REFLECT(STRING|VECTOR normalVector, STRING|VECTOR resultVector)
Reflects this vector about the given normal vector and writes the result into the result vector. The original vector is unchanged.
Parameters
normalVector— normal vector of the surface to reflect against.resultVector— vector that will receive the result.
Examples
VINCIDENT^REFLECT("VNORMAL","VREFLECT");
VINCIDENT^REFLECT(VNORMAL,VREFLECT);
Signals
ONINIT
Fired when the object is initialised.
ONSIGNAL
Fired when a signal arrives (see Events and signals).