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 wantsSPACE_PIXELSinstead.
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.