Utilities
These are convenience functions that you can use inside of any scriptfunc.
Math
| Function | Summary | Example | 
|---|---|---|
| vec2 | create a vector with x & y components | vec2(10f, playerPos.y) | 
| sin | sine (returns from -1 to 1) | sin(stageTime * 2f) | 
| cos | cosine | cos(bulletTime * 8f) | 
| fastSin | not as expensive as sinand not as precise | 0.5f + cos(stageTime * 2f) * 0.5f | 
| sqrt | square root | |
| dot | returns the dot product (useful to determine how similar two directions are) | dot(playerFacingDir, playerGunDir)returns -1 if the vectors are facing different directions, 1 if they are facing the same, etc | 
| pow | raises a number to the power of another number | pow(radius, 2f) | 
| normalize | gets the unit vector of a vector (length of 1) | normalize(unitPos - playerPos) | 
| dist | finds the magnitude of a vector | dist(playerPos - corePos) | 
| distSqr | finds the square magnitude of a vector (less expensive) | distSqr(playerPos - corePos) | 
| abs | gets the absolute value (non-negative) | abs(playerPos.x - unitPos.x) | 
| float | converts an integer to a float (useful in division sometimes to prevent loss of precision) | bulletNum / float(numBullets - 1) | 
| isNan | returns whether a number is NaN (likely the result of a divide-by-zero) | isNan(playerPos.x) | 
Angles
| Function | Summary | Example | 
|---|---|---|
| angleToVec | converts an angle (degrees) to a vector | angleToVec(360f * (bulletNum / 5f)) | 
| vecToAngle | converts a vector to an angle | vecToAngle(playerPos - bulletPos) | 
| angleBetween | returns the closest angular distance between two angles | angleBetween(playerFacingAngle, playerGunAngle) | 
| rotateAround | rotates a point around an anchor: rotateAround(pos, anchor, degrees). Leave outanchorto rotate around origin:rotateAround(pos, degrees) | |
| rotateVec | rotates a vector around the origin: rotateVec(vec, degrees) | |
| perp | gets a vector perpendicular to the input | perp(facingDir) | 
| reflect | reflects a vector across a normal vector | reflect(dir, outOfBoundsNormal)- will find the angle a bullet should bounce off the arena boundary | 
| getRotationStrength | determines how much a force would rotate an object: getRotationStrength(hit position, force direction, pivot position, max distance expected) | getRotationStrength(hitPos, bullet.FacingDirection, unitPos, 20f) | 
| isLeftOfLine | whether a point is to the "left" of a line: isLeftOfLine(point, lineStart, lineEnd) | |
| projectPointOntoLine | finds the nearest spot on a line to a certain point: projectPointOntoLine(point, line0, line1) | projectPointOntoLine(playerPos, bulletPos, bulletPos + facingDir) | 
| doesLineIntersectCircle | doesLineIntersectCircle(line0, line1, circle position, circle radius) | 
Rounding
| Function | Summary | Example | 
|---|---|---|
| round | returns float rounded to the nearest whole number | round(unitPos.x) | 
| floor | rounds down to next whole number | floor(unitPos.x) | 
| ceil | rounds up to next whole number | ceil(unitPos.x) | 
| roundToInt | returns integer rounded to the nearest whole number | roundToInt(unitPos.x) | 
| floorToInt | rounds down to next whole number, returns integer | floorToInt(unitPos.x) | 
| ceilToInt | rounds up to next whole number, returns integer | ceilToInt(unitPos.x) | 
| min | returns smaller of two numbers | min(patternNum, 2) | 
| max | returns larger of two numbers | max(roundToInt(damageDealt), 1f) | 
| truncate | discards the decimal portion of a number | truncate(-5.125f)returns-5f | 
| clamp | clamps a value between a min and a max: clamp(value, min, max) | clamp(patternPos.y, yMin + 5f, yMax - 5f) | 
| clamp01 | clamps a value between 0 and 1: clamp(value) | clamp01(cloudFlashGlowPercent + 0.25f) | 
Rects
| Function | Summary | Example | 
|---|---|---|
| clamp | clamps a position within a rect: clamp(pos, rect) | clamp(playerPos, adjustRect(stageBounds, -5f)) | 
| adjustRect | modifies the bounds of a rect | adjustRect(stageBounds, -5f)oradjustRect(stageBounds, vec2(10f, -5f)) | 
| rect | creates a rectangle: rect(top left x, top left y, width, height) | |
| rectCenter | creates a rectangle: rect(vec2 centerPosition, vec2 size) | 
Easing
| Function | Summary | Example | 
|---|---|---|
| map | maps a number from one range to another - map(value, a, b, c, d)returns a value fromctodbased on how far alongvalueis fromatob | map(patternProgress, 0f, 1f, 1f, 10f)(as patternProgress increases from 0 to 1, map returns a value from 1 to 10) | 
| map | map can also take an easing type | map(distSqr(playerPos - bulletPos), 0f, 100f * 100f, 0f, 3f, 'QuadIn') | 
| mapReturn | maps a number from one range to another and back again | mapReturn(implodeProgress, 0f, 1f, 1f, 0.1f, 'QuadOut')(as implodeProgress changes from 0f to 1f, return a value changing from 1f to 0.1f (halfway) then back to 1f) | 
| ease | ease toward a value | ease(cloudFlashGlowPercent, 0f, 0.02f)- returns a value 2% of the way fromcloudFlashGlowPercentand0f | 
| ease | ease can be used with vectors as well | ease(vectorVar, playerVel, 0.05f) | 
| getEasingType | returns one of the 34 easing types (can be used for more variety) | getEasingType(numShotPatternsConstant % 34) | 
Strings
| Function | Summary | Example | 
|---|---|---|
| string | converts a value to a text string | string(dist(playerPos - (unitPos + unitFacingDir * -12f))) | 
| equals | compares two strings to see if they are identical | equals(bullet.DataPath, 'player/bullet/default') | 
| contains | whether a string contains a substring | contains(playerLastHitBullet, 'vine') | 
| concat | merges strings together (can take either 2 or 3 strings) | concat(myTauntString, '!!!')orconcat('You destroyed ', myPixelDestroyVariable, ' pixels!') | 
Color
| Function | Summary | Example | 
|---|---|---|
| color | creates a color | color(1f, 0f, 0f) * 2f,color(1f, 1f, 0.1f, opacity) | 
| color255 | creates a color using 0-255 range rgb instead of 0-1 | color255(140, 255, 244) |