Ir para o conteúdo principal
Version: bleeding-edge 🩸

🖼️ 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_visibletrue
Color clear_colorColor.TRANSPARENT
number auto_repaint_rate-1
boolean should_clear_before_updatetrue
boolean auto_resizetrue
number width0
number height0

🦠 Functions

ReturnsNameDescription
DrawBoxDraws an unfilled box on the Canvas
DrawLineDraws a line on the Canvas
DrawMaterialDraws a Material 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_entity:DrawBox(screen_position, screen_size, thickness, render_color?)
TypeParameterDefaultDescription
Vector2D screen_position
Vector2D screen_size
number thickness
Color render_color?Color.WHITE

DrawLine

Draws a line on the Canvas

This method can only be called from inside Update event
my_entity:DrawLine(screen_position_a, screen_position_b, thickness, render_color)
TypeParameterDefaultDescription
Vector2D screen_position_a
Vector2D screen_position_b
number thickness
Color render_color

DrawMaterial

Draws a Material on the Canvas

This method can only be called from inside Update event
my_entity:DrawMaterial(material_path, screen_position, screen_size, coordinate_position, coordinate_size?, rotation?, pivot_point?)
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)

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_entity: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_entity: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_entity:DrawPolygon(texture_path, screen_position, radius?, number_of_sides?, render_color?)
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

DrawRect

Draws a fille Rect on the Canvas

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

SetAutoRepaintRate

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

SetVisible

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

Repaint

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

Clear

Clear the Canvas with a specific Color
my_entity: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