Fit the camera to a rectangle in world space by setting cameraPos and cameraScale
- worldMargin pads the content rectangle in world units, so the gap scales with the content on resize
- screenInset reserves space in screen pixels on each viewport edge (for example a HUD band) and
re-centers the content away from that edge, so the reserved band stays a fixed pixel size on resize
- worldMargin and screenInset may each be a number for all sides, a Vector2 (x=left/right, y=top/bottom),
or an object with any of {top, right, bottom, left}
center Vector2Center of the rectangle in world space
size Vector2Size of the rectangle in world space
worldMargin number|Vector2|CameraFitSides optionalWorld space padding added around the content rectangle
screenInset number|Vector2|CameraFitSides optionalScreen space padding in pixels reserved on each viewport edge
- Returns
Shake the camera, for a hit or an explosion: adds to the shake, which fades on its own by cameraShakeDecay
- The view moves by smooth noise scaled by the shake squared, so a small one is gentle and a big one is wild,
up to cameraShakeDistance and cameraShakeAngle
- It moves only what is drawn, in 2D and in 3D: cameraPos and cameraAngle are the game's own between frames
- It holds while the game is paused or at a time scale of 0
amount number optional, default 0.5How much to add, the shake is at most 1
Combines LittleJS canvases onto the main canvas
This is necessary for things like screenshots and video
drawCanvas2D(pos, size, angle, mirror, drawFunction, screenSpace, context)engineDraw.js:1268Draw directly to a 2d canvas context in world space.
The Y axis is flipped so world-Y-up coordinates render right-side up
(matches the WebGL path). Callers whose drawing depends on Y direction
(e.g. linear gradients) should flip their own Y endpoints accordingly.
pos Vector2size Vector2angle number optional, default 0mirror boolean optional, default falsedrawFunction Canvas2DDrawFunction optionalNeeded, marked optional only because the ones before it are
screenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional, default drawContext
drawCircle(pos, size, color, lineWidth, lineColor, useWebGL, screenSpace, context)engineDraw.js:1148Draw colored circle using passed in point
pos Vector2size number optional, default 1Diameter
color Color optional, default WHITElineWidth number optional, default 0lineColor Color optional, default BLACKuseWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawCircleGradient(pos, size, colorInner, colorOuter, useWebGL, screenSpace, context)engineDraw.js:1244Draw a circle filled with a radial gradient from the center to the rim
- Best when batched with other untextured polys
- If drawing mostly textured sprites, bake the gradient into a texture and use drawTile instead
- Stacking gradients at the exact same position may show a faint vertical artifact
pos Vector2size number optional, default 1Diameter
colorInner Color optional, default WHITEcolorOuter Color optional, default CLEAR_WHITEuseWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawEllipse(pos, size, color, angle, lineWidth, lineColor, useWebGL, screenSpace, context)engineDraw.js:1074Draw colored ellipse using passed in point
pos Vector2size Vector2 optional, default vec2(1)Width and height diameter
color Color optional, default WHITEangle number optional, default 0lineWidth number optional, default 0lineColor Color optional, default BLACKuseWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawEllipseGradient(pos, size, colorInner, colorOuter, angle, useWebGL, screenSpace, context)engineDraw.js:1168Draw an ellipse filled with a radial gradient from the center to the rim
- Best when batched with other untextured polys
- If drawing mostly textured sprites, bake the gradient into a texture and use drawTile instead
- Stacking gradients at the exact same position may show a faint vertical artifact
pos Vector2size Vector2 optional, default vec2(1)Width and height diameter
colorInner Color optional, default WHITEcolorOuter Color optional, default CLEAR_WHITEangle number optional, default 0useWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawLine(posA, posB, width, color, pos, angle, useWebGL, screenSpace, context)engineDraw.js:954Draw colored line between two points
posA Vector2posB Vector2width number optional, default 0.1color Color optional, default WHITEpos Vector2 optional, default vec2()Offset to apply
angle number optional, default 0Angle to rotate by
useWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawLineList(points, width, color, wrap, pos, angle, useWebGL, screenSpace, context)engineDraw.js:895Draw connected lines between a series of points
points Array<Vector2>width number optional, default 0.1color Color optional, default WHITEwrap boolean optional, default falseShould the last point connect to the first?
pos Vector2 optional, default vec2()Offset to apply
angle number optional, default 0Angle to rotate by
useWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawPoly(points, color, lineWidth, lineColor, pos, angle, useWebGL, screenSpace, context)engineDraw.js:1012Draw colored polygon using passed in points
- WebGL fills a polygon whose edges do not cross, concave or not; a self crossing one, like a star through its
outer points, fills wrong there, so draw it as its simple outline or in parts
points Array<Vector2>Array of Vector2 points
color Color optional, default WHITElineWidth number optional, default 0lineColor Color optional, default BLACKpos Vector2 optional, default vec2()Offset to apply
angle number optional, default 0Angle to rotate by
useWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
Draw colored rect centered on pos
pos Vector2size Vector2 optional, default vec2(1)color Color optional, default WHITEangle number optionaluseWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawRectGradient(pos, size, colorTop, colorBottom, angle, useWebGL, screenSpace, context)engineDraw.js:720Draw a rect centered on pos with a gradient from top to bottom
pos Vector2size Vector2 optional, default vec2(1)colorTop Color optional, default WHITEcolorBottom Color optional, default CLEAR_WHITEangle number optional, default 0useWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawRegularPoly(pos, size, sides, color, lineWidth, lineColor, angle, useWebGL, screenSpace, context)engineDraw.js:978Draw colored regular polygon using passed in number of sides
pos Vector2size Vector2 optional, default vec2(1)sides number optional, default 3color Color optional, default WHITElineWidth number optional, default 0lineColor Color optional, default BLACKangle number optional, default 0useWebGL boolean optional, default glEnablescreenSpace boolean optional, default drawScreenSpacecontext CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional
drawText(text, pos, size, color, lineWidth, lineColor, textAlign, font, fontStyle, maxWidth, angle, context)engineDraw.js:1309Draw text on main canvas in world space
Automatically splits new lines into rows
text string|numberpos Vector2size number optional, default 1color Color optional, default WHITElineWidth number optional, default 0lineColor Color optional, default BLACKtextAlign 'left'|'center'|'right' optional, default centerfont string optional, default fontDefaultfontStyle string optionalmaxWidth number optionalangle number optional, default 0context CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional, default drawContext
drawTextScreen(text, pos, size, color, lineWidth, lineColor, textAlign, font, fontStyle, maxWidth, angle, context)engineDraw.js:1408Draw text in screen space
Automatically splits new lines into rows
text string|numberpos Vector2size numbercolor Color optional, default WHITElineWidth number optional, default 0lineColor Color optional, default BLACKtextAlign 'left'|'center'|'right' optional, default centerfont string optional, default fontDefaultfontStyle string optionalmaxWidth number optionalangle number optional, default 0Clockwise, like the other screen space draws
context CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optional, default drawContext
drawTextureWrapped(pos, size, wrapCount, texture, color, angle, additiveColor, useWebGL, screenSpace, context)engineDraw.js:787Draw a texture tiled (wrapped) across a rectangle in world space.
Useful for backgrounds, repeating patterns, and seamless fills.
The whole texture is tiled — sub-region (TileInfo) wrapping is not supported.
pos Vector2Center of the rect in world space
size Vector2Size of the rect in world space
wrapCount Vector2How many times the texture repeats (x, y)
texture TextureInfo|number optional, default 0TextureInfo or texture index into textureInfos
color Color optional, default WHITEColor to modulate with
angle number optional, default 0Angle to rotate by
additiveColor Color optionalAdditive color to be applied if any
useWebGL boolean optional, default glEnableUse accelerated WebGL rendering?
screenSpace boolean optional, default drawScreenSpaceAre pos and size in screen space?
context CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optionalCanvas 2D context to draw to
drawTile(pos, size, tileInfo, color, angle, mirror, additiveColor, useWebGL, screenSpace, context)engineDraw.js:608Draw textured tile centered in world space
pos Vector2Center of the tile in world space
size Vector2 optional, default vec2(1)Size of the tile in world space
tileInfo TileInfo optionalTile info to use, untextured if undefined
color Color optional, default WHITEColor to modulate with
angle number optional, default 0Angle to rotate by
mirror boolean optionalIs the image flipped left to right?
additiveColor Color optionalAdditive color to be applied if any
useWebGL boolean optional, default glEnableUse accelerated WebGL rendering?
screenSpace boolean optional, default drawScreenSpaceAre the pos and size in screen space?
context CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D optionalCanvas 2D context to draw to
Get the size of the camera window in world space
Returns true if fullscreen mode is active
Check if a box, point, or circle is on screen with a circle test
If size is a Vector2, uses the length as diameter
This can be used to cull offscreen objects from render or update
pos Vector2world space position
size Vector2|number optional, default 0world space size or diameter
Load a texture at a specific index after engineInit, the images passed to engineInit load this way
textureIndex numberIndex to store the texture at, an unused one
src string optionalImage source path
- Returns
Resolves to the texture info once the image loads, or fails to with a warning
Convert from screen to world space coordinates
screenPos Vector2
Convert from screen to world space coordinates for a directional vector (no translation)
screenDelta Vector2
Set an extra canvas to composite behind the engine canvases when combining
Plugins that insert their own canvas below the LittleJS canvases should set
this so it appears in screenshots
canvas HTMLCanvasElement optional
Set the Shader that 2D draws use from now on, none for the engine's own
- The object render loop sets each object's own shader, so this is for draws in gameRender and gameRenderPost
shader Shader optional
Create a tile info object using a grid based system
- This can take vecs or floats for easier use and conversion
- If an index is passed in, the tile size and index will determine the position
index Vector2|number optional, default 0Index of the tile in 1d or 2d form
size Vector2|number optionalSize of tile in pixels
texture TextureInfo|number optional, default 0Texture index or info to use
padding number optionalHow many pixels padding around tiles
bleed number optionalHow many pixels smaller to draw tiles
tile(2) // a tile at index 2 using the default tile size of 16
tile(5, 8) // a tile at index 5 using a tile size of 8
tile(1, 16, 3) // a tile at index 1 of size 16 on texture 3
tile(vec2(4,8), vec2(30,10)) // a tile at index (4,8) with a size of (30,10)
Convert from world to screen space coordinates
worldPos Vector2
Convert from world to screen space coordinates for a directional vector (no translation)
worldDelta Vector2
Extra canvas to composite behind the engine canvases when combining canvases
Set by plugins that render to their own canvas below the LittleJS canvases
drawContext : CanvasRenderingContext2D|OffscreenCanvasRenderingContext2DengineDraw.js:41The default 2d context to use for drawing, usually mainContext
Keeps track of how many draw calls there were each frame for debugging
Engine font image, 8x8 font provided by the engine
The primary 2D canvas visible to the user
The size of the main canvas (and other secondary canvases) in css pixels
- This is the screen space coordinate system, matching mousePos
- With canvasPixelRatio set the backing store is larger than this
2d context for mainCanvas
- Scaled by canvasPixelRatio, so drawing to it is in css pixels
- getImageData and putImageData ignore that scale and work in backing store
pixels, so use workReadCanvas to read pixels back instead of this
Keeps track of how many primitives were drawn each frame for debugging
A single draw call can render many primitives (e.g. a WebGL sprite batch).
Array containing texture info for batch rendering system
Offscreen canvas that can be used for image processing
Offscreen canvas that can be used for image processing
Offscreen canvas with willReadFrequently that can be used for image processing
Offscreen canvas with willReadFrequently that can be used for image processing
Padding for each side of a rectangle, the sides left out are 0
top number optionalright number optionalbottom number optionalleft number optional