Skip to main content
Version: latest - a1.19.x βš–οΈ

πŸ–ΌοΈ Canvas

Canvas is an entity which you can draw onto it.

πŸ’‚Authority
This class can only be spawned on 🟧 Client.

πŸŽ’ Examples​

Client/Index.lua
-- Spawns a Canvas
local my_canvas = Canvas(
true,
Color.TRANSPARENT,
0,
true
)

-- Subscribes for Update, we can only Draw inside this event
my_canvas:Subscribe("Update", function(self, width, height)
-- Draws a Text in the middle of the screen
self:DrawText("Hello World!", Vector2D(width / 2, height / 2))

-- Draws a red line Horizontally
self:DrawLine(Vector2D(0, height / 2), Vector2D(width, height / 2), 10, Color.RED)
end)

-- Forces the canvas to repaint, this will make it trigger the Update event
my_canvas:Repaint()

-- Applies the Canvas material into a Prop
any_prop:SetMaterialFromCanvas(my_canvas)
tip

You can use the output Texture from a Canvas with :SetMaterialFromCanvas() method!

πŸ—οΈ Constructor​

local my_canvas = Canvas(is_visible?, clear_color?, auto_repaint_rate?, should_clear_before_update?, auto_resize?, width?, height?)
TypeNameDefaultDescription
boolean is_visibletrueWhether to draw it on screen
Color clear_colorColor.TRANSPARENTColor to clear with (background color)
number auto_repaint_rate-1Rate to auto repaint (call Update event), pass 0 for every frame, -1 to disable
boolean should_clear_before_updatetrueWhether to clear with Clear Color before updates
boolean auto_resizetrueAuto resize with screen's size
number width0If not using auto_resize
number height0If not using auto_resize

🦠 Functions​

ReturnsNameDescription
DrawBoxDraws an unfilled box on the Canvas
DrawLineDraws a line on the Canvas
DrawMaterialDraws a Material on the Canvas
DrawMaterialFromWebUIDraws a WebUI on the Canvas
DrawMaterialFromSceneCaptureDraws a SceneCapture on the Canvas
DrawTextDraws a Text on the Canvas
DrawTextureDraws a Texture on the Canvas
DrawPolygonDraws a N-Polygon on the Canvas
DrawRectDraws a filled Rect on the Canvas
SetAutoRepaintRateSets the repaint rate
SetVisibleSets if it's visible on screen
RepaintForces the repaint
ClearClear the Canvas with a specific Color

DrawBox​

Draws an unfilled box on the Canvas

This method can only be called from inside Update event
my_canvas:DrawBox(screen_position, screen_size, thickness, render_color?, blend_mode?)
TypeParameterDefaultDescription
Vector2D screen_position
Vector2D screen_size
number thickness
Color render_color?Color.WHITE
BlendModeblend_mode?BlendMode.Opaque

DrawLine​

Draws a line on the Canvas

This method can only be called from inside Update event
my_canvas:DrawLine(screen_position_a, screen_position_b, thickness, render_color, blend_mode?)
TypeParameterDefaultDescription
Vector2D screen_position_a
Vector2D screen_position_b
number thickness
Color render_color
BlendModeblend_mode?BlendMode.Opaque

DrawMaterial​

Draws a Material on the Canvas

This method can only be called from inside Update event

Note: Due how Unreal handles Render Targets, drawing material on Canvas result on a weird translucent effect. Hope in the future to be improved.
my_canvas:DrawMaterial(material_path, screen_position, screen_size, coordinate_position, coordinate_size?, rotation?, pivot_point?, blend_mode?)
TypeParameterDefaultDescription
Material Reference material_path
Vector2D screen_position
Vector2D screen_size
Vector2D coordinate_position
Vector2D coordinate_size?Vector2D(1, 1)
number rotation?0
Vector2D pivot_point?Vector2D(0.5, 0.5)
BlendModeblend_mode?BlendMode.Opaque

DrawMaterialFromWebUI​

Draws a WebUI on the Canvas

This method can only be called from inside Update event

Note: Due how Unreal handles Render Targets, drawing material on Canvas result on a weird translucent effect. Hope in the future to be improved.
my_canvas:DrawMaterialFromWebUI(webui_entity, screen_position, screen_size, coordinate_position, coordinate_size?, rotation?, pivot_point?, blend_mode?)
TypeParameterDefaultDescription
WebUI webui_entity
Vector2D screen_position
Vector2D screen_size
Vector2D coordinate_position
Vector2D coordinate_size?Vector2D(1, 1)
number rotation?0
Vector2D pivot_point?Vector2D(0.5, 0.5)
BlendModeblend_mode?BlendMode.Opaque

DrawMaterialFromSceneCapture​

Draws a SceneCapture on the Canvas

This method can only be called from inside Update event

Note: Due how Unreal handles Render Targets, drawing material on Canvas result on a weird translucent effect. Hope in the future to be improved.
my_canvas:DrawMaterialFromSceneCapture(scenecapture_entity, screen_position, screen_size, coordinate_position, coordinate_size?, rotation?, pivot_point?, blend_mode?)
TypeParameterDefaultDescription
SceneCapture scenecapture_entity
Vector2D screen_position
Vector2D screen_size
Vector2D coordinate_position
Vector2D coordinate_size?Vector2D(1, 1)
number rotation?0
Vector2D pivot_point?Vector2D(0.5, 0.5)
BlendModeblend_mode?BlendMode.Opaque

DrawText​

Draws a Text on the Canvas

This method can only be called from inside Update event

Shadow and Outline won't work properly with Transparent clear_color
my_canvas:DrawText(text, screen_position, font_type?, font_size?, text_color?, kerning?, center_x?, center_y?, shadow_color?, shadow_offset?, outlined?, outline_color?)
TypeParameterDefaultDescription
string text
Vector2D screen_position
FontTypefont_type?FontType.Roboto
number font_size?12
Color text_color?Color.WHITE
number kerning?0
boolean center_x?false
boolean center_y?false
Color shadow_color?Color.TRANSPARENT
Vector2D shadow_offset?Vector2D(1, 1)
boolean outlined?false
Color outline_color?Color.BLACK

DrawTexture​

Draws a Texture on the Canvas

This method can only be called from inside Update event
my_canvas:DrawTexture(texture_path, screen_position, screen_size, coordinate_position, coordinate_size?, render_color?, blend_mode?, rotation?, pivot_point?)
TypeParameterDefaultDescription
Image Path texture_path
Vector2D screen_position
Vector2D screen_size
Vector2D coordinate_position
Vector2D coordinate_size?Vector2D(1, 1)
Color render_color?Color.WHITE
BlendModeblend_mode?BlendMode.Opaque
number rotation?0
Vector2D pivot_point?Vector2D(0.5, 0.5)

DrawPolygon​

Draws a N-Polygon on the Canvas

This method can only be called from inside Update event
my_canvas:DrawPolygon(texture_path, screen_position, radius?, number_of_sides?, render_color?, blend_mode?)
TypeParameterDefaultDescription
Image Path texture_pathPass empty to use default white Texture
Vector2D screen_position
Vector2D radius?Vector2D(1, 1)
number number_of_sides?3
Color render_color?Color.WHITE
BlendModeblend_mode?BlendMode.Opaque

DrawRect​

Draws a fille Rect on the Canvas

This method can only be called from inside Update event
my_canvas:DrawRect(texture_path, screen_position, screen_size, render_color?, blend_mode?)
TypeParameterDefaultDescription
Image Path texture_pathPass empty to use default white Texture
Vector2D screen_position
Vector2D screen_size
Color render_color?Color.WHITE
BlendModeblend_mode?BlendMode.Opaque

SetAutoRepaintRate​

Sets it to -1 to stop auto repainting or 0 to repaint every frame
my_canvas:SetAutoRepaintRate(auto_repaint_rate)
TypeParameterDefaultDescription
boolean auto_repaint_rate

SetVisible​

Sets if it's visible on screen
my_canvas:SetVisible(visible)
TypeParameterDefaultDescription
boolean visible

Repaint​

Forces the repaint, this will trigger Update event
my_canvas:Repaint()

Clear​

Clear the Canvas with a specific Color
my_canvas:Clear(clear_color)
TypeParameterDefaultDescription
Color clear_color

πŸš€ Events​

NameDescription
UpdateCalled when the Canvas needs to be painted

You can only call :Draw...() methods from inside this event

Update​

Called when the Canvas needs to be painted

You can only call :Draw...() methods from inside this event
Canvas.Subscribe("Update", function(self, width, height)

end)
TypeArgumentDescription
Canvas self
number width
number height