osb/doc/lua/utility.md
2023-06-20 14:33:09 +10:00

5.5 KiB

The sb table contains miscellaneous utility functions that don't directly relate to any assets or content of the game.


double sb.nrand([double standardDeviation], [double mean])

Returns a randomized value with a normal distribution using the specified standard deviation (default is 1.0) and mean (default is 0).


String sb.makeUuid()

Returns a String representation of a new, randomly-created Uuid.


void sb.logInfo(String formatString, [LuaValue formatValues ...])

Logs the specified formatted string, optionally using the formatted replacement values, to the log file and console with the Info log level.


void sb.logWarn(String formatString, [LuaValue formatValues ...])

Logs the specified formatted string, optionally using the formatted replacement values, to the log file and console with the Warn log level.


void sb.logError(String formatString, [LuaValue formatValues ...])

Logs the specified formatted string, optionally using the formatted replacement values, to the log file and console with the Error log level.


void sb.setLogMap(String key, String formatString, [LuaValue formatValues ...])

Sets an entry in the debug log map (visible while in debug mode) using the specified format string and optional formatted replacement values.


String sb.printJson(Json value, [bool pretty])

Returns a human-readable string representation of the specified JSON value. If pretty is true, objects and arrays will have whitespace added for readability.


String sb.print(LuaValue value)

Returns a human-readable string representation of the specified LuaValue.


Variant<Vec2F, double> sb.interpolateSinEase(double offset, Variant<Vec2F, double> value1, Variant<Vec2F, double> value2)

Returns an interpolated Vec2F or double between the two specified values using a sin ease function.


String sb.replaceTags(String string, Map<String, String> tags)

Replaces all tags in the specified string with the specified tag replacement values.


Json sb.jsonMerge(Json a, Json b)

Returns the result of merging the contents of b on top of a.


Json sb.jsonQuery(Json content, String path, Json default)

Attempts to extract the value in the specified content at the specified path, and returns the found value or the specified default if no such value exists.


int sb.staticRandomI32([LuaValue hashValues ...])

Returns a statically randomized 32-bit signed integer based on the given list of seed values.


int sb.staticRandomI32Range(int min, int max, [LuaValue hashValues ...])

Returns a statically randomized 32-bit signed integer within the specified range based on the given list of seed values.


double sb.staticRandomDouble([LuaValue hashValues ...])

Returns a statically randomized double based on the given list of seed values.


double sb.staticRandomDoubleRange(double min, double max, [LuaValue hashValues ...])

Returns a statically randomized double within the specified range based on the given list of seed values.


RandomSource sb.makeRandomSource([unsigned seed])

Creates and returns a Lua UserData value which can be used as a random source, initialized with the specified seed. The RandomSource has the following methods:

void init([unsigned seed])

Reinitializes the random source, optionally using the specified seed.

void addEntropy([unsigned seed])

Adds entropy to the random source, optionally using the specified seed.

unsigned randu32()

Returns a random 32-bit unsigned integer value.

unsigned randu64()

Returns a random 64-bit unsigned integer value.

int randi32()

Returns a random 32-bit signed integer value.

int randi64()

Returns a random 64-bit signed integer value.

float randf([float min], [float max])

Returns a random float value within the specified range, or between 0 and 1 if no range is specified.

double randf([double min], [double max])

Returns a random double value within the specified range, or between 0 and 1 if no range is specified.

unsigned randf(unsigned minOrMax, [unsigned max])

Returns a random unsigned integer value between minOrMax and max, or between 0 and minOrMax if no max is specified.

int randf([int min], [int max])

Returns a random signed integer value between minOrMax and max, or between 0 and minOrMax if no max is specified.

bool randb()

Returns a random bool value.


PerlinSource sb.makePerlinSource(Json config)

Creates and returns a Lua UserData value which can be used as a Perlin noise source. The configuration for the PerlinSource should be a JSON object and can include the following keys:

  • unsigned seed - Seed value used to initialize the source.
  • String type - Type of noise to use. Valid types are "perlin", "billow" or "ridgedMulti".
  • int octaves - Number of octaves of noise to use. Defaults to 1.
  • double frequency - Defaults to 1.0.
  • double amplitude - Defaults to 1.0.
  • double bias - Defaults to 0.0.
  • double alpha - Defaults to 2.0.
  • double beta - Defaults to 2.0.
  • double offset - Defaults to 1.0.
  • double gain - Defaults to 2.0.

The PerlinSource has only one method:

float get(float x, [float y], [float z])

Returns a float value from the Perlin source using 1, 2, or 3 dimensions of input.