Utilities

LittleJS Utility Classes and Functions

  • General purpose math library
  • Vector2 - fast, simple, easy 2D vector class
  • Color - holds a rgba color with some math functions
  • Timer - tracks time automatically
  • RandomGenerator - seeded random number generator

Members

(static, constant) BLACK :Color

Color - Black #000000

Type:
  • Color

(static, constant) BLUE :Color

Color - Blue #0000ff

Type:
  • Color

(static, constant) CLEAR_BLACK :Color

Color - Clear Black #000000 with 0 alpha

Type:
  • Color

(static, constant) CLEAR_WHITE :Color

Color - Clear White #757474ff with 0 alpha

Type:
  • Color

(static, constant) CYAN :Color

Color - Cyan #00ffff

Type:
  • Color

(static, constant) GRAY :Color

Color - Gray #808080

Type:
  • Color

(static, constant) GREEN :Color

Color - Green #00ff00

Type:
  • Color

(static, constant) MAGENTA :Color

Color - Magenta #ff00ff

Type:
  • Color

(static, constant) ORANGE :Color

Color - Orange #ff8000

Type:
  • Color

(static, constant) PI :number

The value of PI

Type:
  • number
Default Value
  • Math.PI

(static, constant) PURPLE :Color

Color - Purple #8000ff

Type:
  • Color

(static, constant) RED :Color

Color - Red #ff0000

Type:
  • Color

(static, constant) WHITE :Color

Color - White #ffffff

Type:
  • Color

(static, constant) YELLOW :Color

Color - Yellow #ffff00

Type:
  • Color

(static, constant) abs

Returns absolute value of value passed in

(static, constant) atan2

Returns atan2 of values passed in

(static, constant) ceil

Returns ceiled value of value passed in

(static, constant) cos

Returns cos of value passed in

(static, constant) floor

Returns floored value of value passed in

(static, constant) hypot

Returns hypotenuse of values passed in

(static, constant) log2

Returns log2 of value passed in

(static, constant) max

Returns highest value passed in

(static, constant) min

Returns lowest value passed in

(static, constant) round

Returns rounded value passed in

(static, constant) sign

Returns the sign of value passed in

(static, constant) sin

Returns sin of value passed in

(static, constant) tan

Returns tan of value passed in

Methods

(static) clamp(value, minopt, maxopt) → {number}

Clamps the value between max and min

Parameters:
NameTypeAttributesDefaultDescription
valuenumber
minnumber<optional>
0
maxnumber<optional>
1
Returns:
Type: 
number

(static) distanceAngle(angleA, angleB) → {number}

Returns signed wrapped distance between the two angles passed in

Parameters:
NameTypeDescription
angleAnumber
angleBnumber
Returns:
Type: 
number

(static) distanceWrap(valueA, valueB, wrapSizeopt) → {number}

Returns signed wrapped distance between the two values passed in

Parameters:
NameTypeAttributesDefaultDescription
valueAnumber
valueBnumber
wrapSizenumber<optional>
1
Returns:
Type: 
number

(async, static) fetchJSON(url) → {Promise.<object>}

Fetches a JSON file from a URL and returns the parsed JSON object. Must be used with await!

Parameters:
NameTypeDescription
urlstring

URL of JSON file

Returns:
Type: 
Promise.<object>

(static) formatTime(t) → {string}

Formats seconds to mm:ss style for display purposes

Parameters:
NameTypeDescription
tnumber

time in seconds

Returns:
Type: 
string

(static) hsl(hopt, sopt, lopt, aopt) → {Color}

Create a color object with HSLA values, white by default

Parameters:
NameTypeAttributesDefaultDescription
hnumber<optional>
0

hue

snumber<optional>
0

saturation

lnumber<optional>
1

lightness

anumber<optional>
1

alpha

Returns:
Type: 
Color

(static) isArray(a) → {boolean}

Check if object is an array

Parameters:
NameTypeDescription
aany
Returns:
Type: 
boolean

(static) isColor(c) → {boolean}

Check if object is a valid Color

Parameters:
NameTypeDescription
cany
Returns:
Type: 
boolean

(static) isIntersecting(start, end, pos, size) → {boolean}

Returns true if a line segment is intersecting an axis aligned box

Parameters:
NameTypeDescription
startVector2

Start of raycast

endVector2

End of raycast

posVector2

Center of box

sizeVector2

Size of box

Returns:
  • True if intersecting
Type: 
boolean

(static) isNumber(n) → {boolean}

Check if object is a valid number, not NaN or undefined, but it may be infinite

Parameters:
NameTypeDescription
nany
Returns:
Type: 
boolean

(static) isOverlapping(posA, sizeA, posB, sizeBopt) → {boolean}

Returns true if two axis aligned bounding boxes are overlapping this can be used for simple collision detection between objects

Parameters:
NameTypeAttributesDefaultDescription
posAVector2

Center of box A

sizeAVector2

Size of box A

posBVector2

Center of box B

sizeBVector2<optional>
(0,0)

Size of box B, uses a point if undefined

Returns:
  • True if overlapping
Type: 
boolean

(static) isPowerOfTwo(value) → {boolean}

Checks if the value passed in is a power of two

Parameters:
NameTypeDescription
valuenumber
Returns:
Type: 
boolean

(static) isString(s) → {boolean}

Check if object is a valid string or can be converted to one

Parameters:
NameTypeDescription
sany
Returns:
Type: 
boolean

(static) isVector2(v) → {boolean}

Check if object is a valid Vector2

Parameters:
NameTypeDescription
vany
Returns:
Type: 
boolean

(static) lerp(valueA, valueB, percent) → {number}

Linearly interpolates between values passed in using percent

Parameters:
NameTypeDescription
valueAnumber
valueBnumber
percentnumber
Returns:
Type: 
number

(static) lerpAngle(angleA, angleB, percent) → {number}

Linearly interpolates between the angles passed in with wrapping

Parameters:
NameTypeDescription
angleAnumber
angleBnumber
percentnumber
Returns:
Type: 
number

(static) lerpWrap(valueA, valueB, percent, wrapSizeopt) → {number}

Linearly interpolates between values passed in with wrapping

Parameters:
NameTypeAttributesDefaultDescription
valueAnumber
valueBnumber
percentnumber
wrapSizenumber<optional>
1
Returns:
Type: 
number

(static) lineTest(posStart, posEnd, testFunction, normalopt) → {Vector2|undefined}

Casts a ray and returns position of the first collision found, or undefined if none are found

Parameters:
NameTypeAttributesDescription
posStartVector2
posEndVector2
testFunctionLineTestFunction

Check if colliding

normalVector2<optional>

Optional vector to store the normal

Returns:
  • Position of the collision or undefined if none found
Type: 
Vector2 | undefined

(static) mod(dividend, divisoropt) → {number}

Returns first parm modulo the second param, but adjusted so negative numbers work as expected

Parameters:
NameTypeAttributesDefaultDescription
dividendnumber
divisornumber<optional>
1
Returns:
Type: 
number

(static) nearestPowerOfTwo(value) → {number}

Returns the nearest power of two not less than the value

Parameters:
NameTypeDescription
valuenumber
Returns:
Type: 
number

(static) percent(value, valueA, valueB) → {number}

Returns what percentage the value is between valueA and valueB

Parameters:
NameTypeDescription
valuenumber
valueAnumber
valueBnumber
Returns:
Type: 
number

(static) percentLerp(value, percentA, percentB, lerpA, lerpB) → {number}

Gets percent between percentA and percentB and linearly interpolates between lerpA and lerpB A shortcut for lerp(lerpA, lerpB, percent(value, percentA, percentB))

Parameters:
NameTypeDescription
valuenumber
percentAnumber
percentBnumber
lerpAnumber
lerpBnumber
Returns:
Type: 
number

(static) rgb(ropt, gopt, bopt, aopt) → {Color}

Create a color object with RGBA values, white by default

Parameters:
NameTypeAttributesDefaultDescription
rnumber<optional>
1

red

gnumber<optional>
1

green

bnumber<optional>
1

blue

anumber<optional>
1

alpha

Returns:
Type: 
Color

(static) smoothStep(percent) → {number}

Applies smoothstep function to the percentage value

Parameters:
NameTypeDescription
percentnumber
Returns:
Type: 
number

(static) vec2(xopt, yopt) → {Vector2}

Create a 2d vector, can take 1 or 2 scalar values

Parameters:
NameTypeAttributesDefaultDescription
xnumber<optional>
0
ynumber<optional>

if y is undefined, x is used for both

Returns:
Type: 
Vector2
Example
let a = vec2(0, 1); // vector with coordinates (0, 1)
a = vec2(5);        // set a to (5, 5)
b = vec2();         // set b to (0, 0)

(static) wave(frequencyopt, amplitudeopt, topt, offsetopt) → {number}

Returns an oscillating wave between 0 and amplitude with frequency of 1 Hz by default

Parameters:
NameTypeAttributesDefaultDescription
frequencynumber<optional>
1

Frequency of the wave in Hz

amplitudenumber<optional>
1

Amplitude (max height) of the wave

tnumber<optional>
time

Value to use for time of the wave

offsetnumber<optional>
0

Value to use for time offset of the wave

Returns:
  • Value waving between 0 and amplitude
Type: 
number