geom

GeomPolyline2D

Inherits: Node2D

A path on the canvas.

Drawing it

The code behind the picture above, where vp is the picture's size, c is its centre, r is 30% of its height.

var path := GeomPolylinePath.new()
GeomDraw.polyline_join = Geom.JOIN_ROUND
GeomDraw.thickness = vp.y * 0.085
GeomDraw.color = VIOLET
for i in 25:
	var u := i / 24.0
	path.add_point_2d(c + Vector2(-r * 1.15 + u * r * 2.3, -sin(u * TAU) * r * 0.62))
GeomDraw.polyline_2d(path, false)

Properties

BlendMode blend_mode Geom.BLEND_TRANSPARENT
bool closed false
Color color Color(1, 1, 1, 1)
PolylineJoin join Geom.JOIN_MITER
PackedVector2Array points PackedVector2Array()
float thickness 8.0
ThicknessSpace thickness_space Geom.SPACE_METERS

Enumerations

enum Geom.ThicknessSpace

Geom.SPACE_METERS = 0
Thickness in world units; shrinks on screen with distance.
Geom.SPACE_PIXELS = 1
Thickness in screen pixels; constant on-screen size.
Geom.SPACE_VIEWPORT = 2
A fraction of the viewport: 100 span its shorter side, so 1 is one percent of it and about 11 pixels at 1080p. The same idea as CSS vmin. Radii and sizes here are whole-ish numbers; strokes come out below 1, and a stroke that should stay a fixed pixel width wants SPACE_PIXELS instead.

enum Geom.PolylineJoin

Geom.JOIN_SIMPLE = 0
Corners at plain half-width; the outside of a corner pinches inward.
Geom.JOIN_MITER = 1
Corners extended to where the edges meet, clamped on sharp turns.
Geom.JOIN_ROUND = 2
As simple, with a disc laid over each joint.
Geom.JOIN_BEVEL = 3
The outside of a corner cut off square.

enum Geom.BlendMode

Geom.BLEND_OPAQUE = 0
Writes depth and sorts against other geometry; hard edges, no fade.
Geom.BLEND_TRANSPARENT = 1
Standard alpha compositing. The default.
Geom.BLEND_ADDITIVE = 2
Brightens what is behind. Good for glows.
Geom.BLEND_MULTIPLY = 3
Darkens what is behind. Good for tints.
Geom.BLEND_SUBTRACT = 4
Subtracts this color from the background.
Geom.BLEND_TRANSPARENT_DEPTH = 5
Transparent, but writing depth so shapes occlude by position.

Property descriptions

BlendMode blend_mode = Geom.BLEND_TRANSPARENT

How the shape combines with what is behind it. Transparent Depth is a 3D idea and behaves exactly like Transparent here, a canvas having no depth buffer.

bool closed = false

Join the last point back to the first.

Color color = Color(1, 1, 1, 1)

Fill color, or the wall's color for an outline.

PolylineJoin join = Geom.JOIN_MITER

How corners are shaped: Simple, Miter, or Round.

PackedVector2Array points = PackedVector2Array()

The path, in the node's own space. Fewer than two points draws nothing.

float thickness = 8.0

How wide the strip is drawn.

ThicknessSpace thickness_space = Geom.SPACE_METERS

Whether thickness is measured in canvas units or in pixels. Canvas units zoom with the view like ordinary 2D content; pixels hold their size on screen through a zoom, which is what a HUD wants. Either way the node's scale multiplies it.