| --- Miscellaneous functions : math, console, graphics, translation and etc. | |
| --- Prints the given text to the console | |
| -- @cstyle void ConsolePrint(string text). | |
| -- @param text string; the text to print. | |
| function ConsolePrint(text) | |
| end | |
| --- Shows the given text in the the development environment (does not appear in the console log) | |
| -- @cstyle void OutputDebugString(string text). | |
| -- @param text string; the text to print. | |
| function OutputDebugString(text) | |
| end | |
| --- Asynchronous random, mainly for use in async scripts. | |
| -- @cstyle int AsyncRand(). | |
| -- @cstyle int AsyncRand(int max). | |
| -- @cstyle int AsyncRand(int min, int max). | |
| -- @cstyle int AsyncRand(array arr). | |
| -- @return int/value rand; any random, random in the interval[0, max - 1], random in the interval [min, max], OR a random element from arr. | |
| function AsyncRand(...) | |
| end | |
| --- Asynchronous random, mainly for use in async scripts. | |
| -- @cstyle int BraidRandom(int seed). | |
| -- @cstyle int BraidRandom(int seed, int max). | |
| -- @cstyle int BraidRandom(int seed, int min, int max). | |
| -- @cstyle int BraidRandom(int seed, array arr). | |
| -- @return int/value rand; any random, random in the interval[0, max - 1], random in the interval [min, max], OR a random element from arr. | |
| -- @return int seed; a new seed. | |
| function BraidRandom(seed, ...) | |
| end | |
| --- Returns the result from the xxhash algorithm performed over its arguments | |
| -- @cstyle int xxhash(type arg1, ...). | |
| -- @param arg<i> can be any simple type or a userdata | |
| -- @return int | |
| function xxhash(arg1, arg2, arg3, ...) | |
| end | |
| --- Same as xxhash but accepts all parameter types. Tables, functions and threads are converted to memory addresses. Thus results will be different between game sessions. | |
| -- @return int | |
| function xxhash_session(arg1, arg2, arg3, ...) | |
| end | |
| --- Returns the absolute value of the given number. | |
| -- @cstyle int abs(int nValue). | |
| -- @param nValue int; the number for which to calculate the absolute value. | |
| -- @return int; the absolute value of nValue. | |
| function abs(nValue) | |
| end | |
| --- Returns the square root of the given number. | |
| -- @cstyle int sqrt(int nValue). | |
| -- @param nValue int; the number for which to calculate the square root. | |
| -- @return int; the square root of nValue rounded to nearest integer smaller then the real square root. | |
| function sqrt(nValue) | |
| end | |
| -- Translates a value from a linear set to a value in an exponential set with a matching start and end points, and a given exponent for t | |
| -- @cstyle int LinearToExponential(uint value, uint exponent, uint min, uint max). | |
| -- @param value uint; (min <= value <= max) The exponential value to be tranformed. | |
| -- @param exponent uint; (exponent > 0) The exponent of t in the interpolation formula. | |
| -- @param min uint; (min < max) The minimum value of both sets (start). | |
| -- @param max uint; (max > min) The maximum value of both sets (end). | |
| -- @return uint; | |
| function LinearToExponential(value, exponent, min, max) | |
| end | |
| -- Reverses the translation done by LinearToExponential(). | |
| -- @cstyle int ExponentialToLinear(uint value, uint exponent, uint min, uint max). | |
| -- @param value uint; (min <= value <= max) The exponential value to be tranformed. | |
| -- @param exponent uint; (exponent > 0) The exponent of t in the interpolation formula. | |
| -- @param min uint; (min < max) The minimum value of both sets (start). | |
| -- @param max uint; (max > min) The maximum value of both sets (end). | |
| -- @return uint; | |
| function ExponentialToLinear(value, exponent, min, max) | |
| end | |
| --- Returns angle given normalized from -180*60 to 180*60. | |
| -- @cstyle int AngleNormalize(int angle). | |
| -- @param angle int; angle to normalize in minutes. | |
| -- @return int. | |
| function AngleNormalize(angle) | |
| end | |
| --- Returns the arcsine of the value given divided by 4096. | |
| -- @cstyle int sin(int nValue). | |
| -- @param nValue int; the value is between -4096 and 4096, and represents the interval -1..1. | |
| -- @return int; Returns the arcsine in minutes. Safe to use in synched code, does not use floats. | |
| function asin(nValue) | |
| end | |
| --- Returns the sine of the given angle. | |
| -- @cstyle int sin(int nAngle). | |
| -- @param nAngle the angle in minutes for which to calculate the sine. | |
| -- @return int; Returns the sine of angle multiplied by 4096. Safe to use in synched code, does not use floats. | |
| function sin(nAngle) | |
| end | |
| --- Returns the cosine of the given angle. | |
| -- @cstyle int cos(int nAngle). | |
| -- @param nAngle int; the angle in minutes for which to calculate the cosine. | |
| -- @return int; Returns the cosine of angle multiplied by 4096. Safe to use in synched code, does not use floats. | |
| function cos(nAngle) | |
| end | |
| --- Returns the angle corresponding to the given tangent | |
| -- @cstyle int atan(int y, int x). | |
| -- @param y int; can be the y coordinate, the tangent value scaled by 4096 or a point. | |
| -- @param x int; the x coordinate, optional | |
| -- @return int; Returns the angle multiplied by 4096. Safe to use in synched code, does not use floats. | |
| function atan(mul, div) | |
| end | |
| --- Rounds a number according to the provided granularity. | |
| -- @cstyle int round(int number, int granularity). | |
| -- @param number int; the number to round. | |
| -- @param number granularity; the granularity to use. | |
| -- @return int; The rounded number. | |
| function round(number, granularity) | |
| end | |
| --- Tests if a ray intersects a sphere. | |
| -- @cstyle bool TestRaySphere(point rayOrg, point rayDir, point sphereCenter, int sphereRadius). | |
| -- @param rayOrg point; origin of the ray. | |
| -- @param rayDir point; direction of the ray. | |
| -- @param sphereCenter point; center of the sphere. | |
| -- @param sphereRadius int; radius of the sphere. | |
| -- @return bool; true if the ray intersects the sphere, false otherwise. | |
| function TestRaySphere(rayOrg, rayDir, sphereCenter, sphereRadius) | |
| end | |
| --- Checks and returns the result if a ray intersects an axis aligned bounding box. | |
| -- @cstyle bool RayIntersectsSphere(point rayOrg, point rayDir, box b). | |
| -- @param rayOrg point; origin of the ray. | |
| -- @param rayDir point; destination(not direction) of the ray. | |
| -- @param b box. | |
| -- @return point/nil; Returns the intersection point if the ray intersects the box, nil otherwise. | |
| function RayIntersectsAABB(rayOrg, rayDest, b) | |
| end | |
| --- Checks and returns the result if a segment intersects an axis aligned bounding box. | |
| -- @cstyle bool, point SegmentIntersectsAABB(point pt1, point pt2, box b). | |
| -- @param pt1 point; first vertex of the segment. | |
| -- @param pt2 point; second vertex of the segment. | |
| -- @param b box. | |
| -- @return bool, point; Returns true, intersection if the ray intersects the box, false otherwise. | |
| function SegmentIntersectsAABB(pt1, pt2, b) | |
| end | |
| --- Checks and returns the result if a ray intersects a sphere. | |
| -- @cstyle bool RayIntersectsSphere(point rayOrg, point rayDir, point sphereCenter, int sphereRadius). | |
| -- @param rayOrg point; origin of the ray. | |
| -- @param rayDir point; direction of the ray. | |
| -- @param sphereCenter point; center of the sphere. | |
| -- @param sphereRadius int; radius of the sphere. | |
| -- @return bool, point; Returns true, intersection if the ray intersects the sphere, false otherwise. | |
| function RayIntersectsSphere(rayOrg, rayDir, sphereCenter, sphereRadius) | |
| end | |
| --- Checks and returns the result if a segment intersects a sphere. | |
| -- @cstyle bool, point SegmentIntersectsSphere(point pt1, point pt2, point sphereCenter, int sphereRadius). | |
| -- @param pt1 point; first vertex of the segment. | |
| -- @param pt2 point; second vertex of the segment. | |
| -- @param sphereCenter point; center of the sphere. | |
| -- @param sphereRadius int; radius of the sphere. | |
| -- @return bool, point; Returns true, intersection if the ray intersects the sphere, false otherwise. | |
| function SegmentIntersectsSphere(pt1, pt2, sphereCenter, sphereRadius) | |
| end | |
| --- Tests if a sphere intersects another sphere. | |
| -- @cstyle bool SphereTestSphere(point ptCenter1, int nRadius1, point ptCenter2, int nRadius2). | |
| -- @param ptCenter1 point; center of the first sphere. | |
| -- @param nRadius1 int; radius of the first sphere. | |
| -- @param ptCenter2 point; center of the second sphere. | |
| -- @param nRadius2 int; radius of the second sphere. | |
| -- @return bool; true if the spheres intersect, false otherwise. | |
| function SphereTestSphere(ptCenter11, nRadius1, ptCenter2, nRadius2) | |
| end | |
| --- Tests if a axis aligned bounding box intersects sphere. | |
| -- @cstyle bool SphereTestSphere(box b, point ptCenter1, int nRadius1). | |
| -- @param b box. | |
| -- @param ptCenter1 point; center of the sphere. | |
| -- @param nRadius1 int; radius of the sphere. | |
| -- @return bool; true if the sphere intersect the box, false otherwise. | |
| function AABBTestSphere(b, ptCenter1, nRadius1) | |
| end | |
| --- Tests if a axis aligned bounding box intersects another axis aligned bounding box. | |
| -- @cstyle bool AABBTestAABB(box b1, box b2). | |
| -- @param box b1. | |
| -- @param box b2. | |
| -- @return bool; true if the boxes intersect, false otherwise. | |
| function AABBTestAABB(b, ptCenter1, nRadius1) | |
| end | |
| --- Performs a Hermite spline interpolation from position p1 with tangent m1 to position p2 and tangent m2. | |
| -- @cstyle point/int HermiteSpline(point/int p1, point/int m1, point/int p2, point/int m2, int t, int scale = 65536). | |
| -- @param p1 point/int; start control point. | |
| -- @param m1 point/int; tangent at the start control point. | |
| -- @param p2 point/int; end control point. | |
| -- @param m2 point/int; tangent at the end control point. | |
| -- @param t int; weighting factor between [0,scale]. | |
| -- @param scale int; factor scale, 65536 by default. | |
| -- @return point/int; the interpolated point between control points according to t. | |
| function HermiteSpline(p1, m1, p2, m2, t, scale) | |
| end | |
| --- Performs a Catmull-Rom spline interpolation using the 4 control points. | |
| -- @cstyle point CatmullRomSpline(point p1, point p2, point p3, point p4, int t, int scale = 65536). | |
| -- @param point p1; start control point. | |
| -- @param point p2; second control point. | |
| -- @param point p3; third control point. | |
| -- @param point p4; fourth control point. | |
| -- @param int t; weighting factor between [0,scale]. | |
| -- @param scale int; factor scale, 65536 by default. | |
| -- @return point; the interpolated point between control points according to t. | |
| function CatmullRomSpline(p1, p2, p3, p4, t, scale) | |
| end | |
| --- Returns bitwise AND of its arguments. | |
| -- @cstyle int band(int n1, int n2, ...). | |
| -- @param n1 int; | |
| -- @return int; bitwise AND of the arguments. | |
| function band(n1, n2, ...) | |
| end | |
| --- Returns bitwise OR of its arguments. | |
| -- @cstyle int bor(int n1, int n2, ...). | |
| -- @param n1 int; | |
| -- @return int; bitwise OR of the arguments. | |
| function bor(n1, n2, ...) | |
| end | |
| --- Returns bitwise XOR of its arguments. | |
| -- @cstyle int bxor(int n1, int n2, ...). | |
| -- @param n1 int; | |
| -- @return int; bitwise XOR of the arguments. | |
| function bxor(n1, n2, ...) | |
| end | |
| --- Returns bitwise NOT of its argument. | |
| -- @cstyle int bnot(int n). | |
| -- @param n int; | |
| -- @return int; bitwise NOT of the argument. | |
| function bnot(n) | |
| end | |
| --- Returns (flags & ~mask) | (value & mask). | |
| -- @cstyle int maskset(int flags, int mask, int value). | |
| -- @param flags int; | |
| -- @param mask int; | |
| -- @param value int; | |
| -- @return int; | |
| function maskset(flags, mask, value) | |
| end | |
| --- Logical left or right shift (not arithmetic). For right shift use negative count. | |
| -- @cstyle unsigned int shift(unsigned int value, int count). | |
| -- @param value unsigned int; | |
| -- @param count int; | |
| -- @return unsigned int; Returns (count > 0 ? (value << count) : (value >> -count)). | |
| function shift(value, shift) | |
| end | |
| --- Returns whether any bits present in mask are present in flags. (bitwise and) | |
| -- @cstyle bool IsFlagSet(int flags, int mask). | |
| -- @param flags int; | |
| -- @param mask int; the bits(s) to be tested. | |
| -- @return bool; true if any of the bit(s) are set in the flags. | |
| -- @see SetFlag. | |
| function IsFlagSet(flags, mask) | |
| end | |
| --- Returns the less of the integers. | |
| -- @cstyle int Min(int i1, int i2). | |
| -- @param i1 int; the first number. | |
| -- @param i2 int; the second number. | |
| -- @return int; the smaller of i1 and i2. | |
| function Min(i1, i2) | |
| end | |
| --- Returns the greater of the integers. | |
| -- @cstyle int Max(int i1, int i2). | |
| -- @param i1 int; the first number. | |
| -- @param i2 int; the second number. | |
| -- @return int; the bigger from i1 and i2. | |
| function Max(i1, i2) | |
| end | |
| --- Returns the min & max of all provided parameters | |
| function MinMax(i1, i2, ...) | |
| end | |
| --- Get the red, green and blue components from a RGB color variable. | |
| -- @cstyle int, int, int GetRGB(int argb). | |
| -- @param argb int; a RGB color variable. | |
| -- @return int, int, int; red, green, blue triple of the RGB component. | |
| function GetRGB(argb) | |
| end | |
| --- Get the red, green, blue and alpha components from a RGBA color variable. | |
| -- @cstyle int, int, int, int GetRGBA(int argb). | |
| -- @param argb a RGBA color variable. | |
| -- @return int, int, int, int; red, green, blue, aplha four of the RGBA component. | |
| function GetRGBA(argb) | |
| end | |
| --- Set the red component of a RGB color variable. | |
| -- @cstyle int SetR(int argb, int r). | |
| -- @param argb int; RGB color variable for which to set the red component. | |
| -- @param r int; value of the red component. | |
| -- @return int; RGB color variable with the new red component. | |
| function SetR(argb, r) | |
| end | |
| --- Set the green component of a RGB color variable. | |
| -- @cstyle int SetG(int argb, int g). | |
| -- @param argb int; RGB color variable for which to set the green component. | |
| -- @param g int; value of the green component. | |
| -- @return int; RGB color variable with the new green component. | |
| function SetG(argb, g) | |
| end | |
| --- Set the blue component of a RGB color variable. | |
| -- @cstyle int SetB(int argb, int b). | |
| -- @param argb int; RGB color variable for which to set the blue component. | |
| -- @param b int; value of the blue component. | |
| -- @return int; RGB color variable with the new blue component. | |
| function SetB(argb, b) | |
| end | |
| --- Set the alpha component of a RGBA color variable. | |
| -- @cstyle int SetA(int argb, int a). | |
| -- @param argb int; RGBA color variable for which to set the alpha component. | |
| -- @param a int; value of the alpha component. | |
| -- @return int; RGBA color variable with the new alpha component. | |
| function SetA(argb, b) | |
| end | |
| --- Combines r, g and b color channels into a single number used wherever an int rgb parameter is needed. | |
| -- @cstyle int RGB(int r, int g, int b). | |
| -- @param r int; intensity of the red component. | |
| -- @param g int; intensity of the green component. | |
| -- @param b int; intensity of the blue component. | |
| -- @return int; RGB color variable with the corresponding components set. | |
| function RGB(r, g, b) | |
| end | |
| --- Combines r, g, b and a color channels into a single number used wherever an int rgba parameter is needed. | |
| -- @cstyle int RGBA(int r, int g, int b, int a). | |
| -- @param r int; intensity of the red component. | |
| -- @param g int; intensity of the green component. | |
| -- @param b int; intensity of the blue component. | |
| -- @param a int; intensity of the alpha component. | |
| -- @return int; RGBA color variable with the corresponding components set. | |
| function RGBA(r, g, b, a) | |
| end | |
| --- Interpolates linearly rgb0 to rgb1 as p goes from 0 to q. | |
| -- @cstyle int InterpolateRGB(int rgb0, int rgb1, int p, int q). | |
| -- @param rgb0 int; the starting RGB color variable. | |
| -- @param rgb1 int; the final RGB color variable. | |
| -- @param p int; the numerator. | |
| -- @param q int; the divisor. | |
| -- @return int; RGB color variable which is rgb0 + (p / q) * (rgb1 - rgb0). | |
| function InterpolateRGB(rgb0, rgb1, p, q) | |
| end | |
| --- Compose a random opaque color with the given luminosity and maximum saturation level. | |
| -- @cstyle int RandColor(int hue_seed = AsyncRand(), int lum_seed = AsyncRand()) | |
| -- @param hue_seed int. The random seed for hue (random number by default) | |
| -- @param lum_seed int. The random seed for luminosity (random number by default) | |
| -- @return int; RGB color. | |
| function RandColor(hue_seed, lum_seed) | |
| end | |
| --- Get the color distance between two colors. | |
| -- @cstyle int ColorDiff(int col1, int col2) | |
| -- @return int; color dist. | |
| function ColorDist(col1, col2) | |
| end | |
| --- Gets the current language used in the | |
| -- @cstyle string GetLanguage(). | |
| -- @return sting; the language currently used by the | |
| function GetLanguage() | |
| end | |
| --- Returns the current system tick count. | |
| -- @cstyle int GetClock(). | |
| -- @return int. | |
| function GetClock() | |
| end | |
| --- Returns v * m / d calculated with 64 bit integers. Truncates the result similar to plain division. Works on a point or a box as well. | |
| -- @cstyle int/point MulDivTrunc(int/point/box v, int m, int d). | |
| -- @param v int/point/box. | |
| -- @param m int. | |
| -- @param d int. | |
| -- @return int. | |
| function MulDivTrunc(v, m, d) | |
| end | |
| --- Returns v * m / d ROUNDED to the nearest integer, calculated with 64 bit integers as the C function MulDiv. Works on a point or a box as well. | |
| -- @cstyle int/point MulDivRound(int/point/box v, int m, int d). | |
| -- @param v int/point/box. | |
| -- @param m int. | |
| -- @param d int. | |
| -- @return int. | |
| function MulDivRound(v, m, d) | |
| end | |
| --- Returns m / d ROUNDED to the nearest integer | |
| -- @cstyle int DivRound(int m, int d). | |
| -- @param m int. | |
| -- @param d int. | |
| -- @return int. | |
| function DivRound(m, d) | |
| end | |
| -- @cstyle bool IsPowerOf2(int v). | |
| function IsPowerOf2(v) | |
| end | |
| --- Checks if the file creation date is older than specified days. | |
| -- @cstyle bool FileAgeOlderThanDays(string filename, int days). | |
| -- @param filename; string with the file to be checked. | |
| -- @param days; specifies the period in days to check. | |
| -- @return bool; false if the file was created before given days, true otherwise or if error occured during checking. | |
| function FileAgeOlderThanDays(filename, days) | |
| end | |
| --- Check presence of internet connection. | |
| -- @cstyle bool IsThereInternetConnection(). | |
| -- @return bool; true if internet connection exists, false otherwise. | |
| function IsThereInternetConnection() | |
| end | |
| --- Ends antialiased and/or motion blurred screenshot | |
| -- @cstyle void EndAAMotionBlurScreenshot(string filename, int samples) | |
| -- @param filename; the target filename to save the screenshot | |
| -- @param samples; the total number of samples added for this screenshot | |
| function EndAAMotionBlurScreenshot(filename, samples) | |
| end | |
| --- Check the class of an object | |
| -- @cstyle bool IsKindOf(table object, string class). | |
| -- @return bool; | |
| function IsKindOf(object, class) | |
| end | |
| --- Returns the first object from a given class in a list | |
| -- @cstyle object FindFirstIsKindOf(table objects, string class). | |
| -- @return object; | |
| function FindFirstIsKindOf(objects, class) | |
| end | |
| function ConvertToOSPath(game_path) | |
| end | |
| function PlaneFromPoints(pt1, pt2, pt3, local_space) | |
| end | |
| --- Returns a value computed after following a list of instructions | |
| -- @cstyle any compute(any initial_value, any instruction, ...). | |
| -- @param initial_value; the initial value to start from. Returned if no instruction is given. | |
| -- @param instruction; depending on the type of instruction: | |
| -- type string, number, boolean: return compute(value[instruction], ...) | |
| -- type table: return compute(instruction[value], ...) | |
| -- type function: return instruction(value, ...) | |
| -- any other type: return value | |
| -- @return any; | |
| function compute(value, instruction, ...) | |
| --[[ | |
| if type(instruction) == "string" or type(instruction) == "number" or type(instruction) == "boolean" then | |
| if type(value) == "table" then | |
| return compute(value[instruction], ...) | |
| end | |
| return | |
| elseif type(instruction) == "function" then | |
| return instruction(value, ...) | |
| elseif type(instruction) == "table" then | |
| return compute(instruction[value], ...) | |
| end | |
| return value | |
| ]] | |
| end | |
| --- Pseudo-random permutation generator based on prime number addition. Can generate only a small set of all permutations. | |
| -- Usage: for _, n in permute(size, seed) do ... end | |
| -- The value of n is in the range (1 .. size) in a random permutation (each value will be returned exacly once) order. | |
| -- The value of _ is for internal use. | |
| -- @cstyle void permute(int size, int/string/nil seed). | |
| -- @param size - permutes the integers in the range (1 .. size) | |
| -- @param int seed - initial seed, which defines the permutation order | |
| -- @param string seed - InteractionRand(nil, seed) is used to get the seed | |
| -- @param nil seed - AsyncRand() is used to get the seed | |
| function permute(size, seed) | |
| end | |