Vector Shape Nodes

An asset by SquiggelSquirrel
The page banner background of a mountain and forest
Vector Shape Nodes hero image

Quick Information

0 ratings
Vector Shape Nodes icon image
SquiggelSquirrel
Vector Shape Nodes

These scripts allow vector shapes (i.e. curve path with fill and/or stroke) to be created and controlled by Node2D points and handles.This allows shapes to be tweened easily using AnimationPlayer, etc.The stroke width can also be set on each point.

Supported Engine Version
3.4
Version String
1.7.0
License Version
MIT
Support Level
community
Modified Date
1 year ago
Git URL
Issue URL

VectorNode

Create shapes with fill/stroke from Node2D control points

Note: As of 1.7.0 I recommend using with the Bit Flags Editor plugin: https://github.com/SquiggelSquirrel/BitFlagEditor

VectorPath

  • Defines the path to fill/stroke
  • Add VectorPoint nodes for each point on the path
  • Emits the shape_changed signal when the path changes
  • Emits the stroke_data_changed signal when the stroke widths and/or colors change
  • Sets the default bake interval for the shape
  • Has editor-preview-only color settings for handle-in, handle-out and path
  • Uses VectorPoint to define stroke widths & colors, and specific bake intervals
  • Can define an array of tag name strings (only for editor UI purposes), for use with VectorPoint "tags" bitmask

VectorPoint

  • Defines a single point in a vector path
  • Use as child of VectorPath or VectorPointGroup
  • Add VectorHandle nodes to define the vector in/out
  • Can specify a stroke width and/or color
    • (will only apply to VectorStroke nodes with use_data_nodes_width or use_data_nodes_color set
  • Can specify a bake interval for outgoing edge
    • When set to 0.0, use default value specified on VectorPath node
  • Supports different handle types:
    • NONE: no handles
    • IN: one handle, defines vector in only
    • OUT: one handle, defines vector out only
    • BOTH: two handles, first defines vector in, second defines vector out
    • MIRROR IN: one handle, defines vector in. Vector out is reflection of vector in
    • MIRROR OUT: one handle, defines vector out. Vector in is reflection of vector out
    • IN OUT: one handle, defines vector in and vector out as same vector
  • Points and handles use position relative to VectorPath, so rotating/scaling a VectorPoint can change the handle position
  • Has an integer bitmask of tags, which can be used by fill and stroke to filter for different sub-paths

VectorHandle

  • Defines vector in/out for a VectorPoint (see above)
  • Has an integer bitmask of tags, which can be used by fill and stroke to filter for different sub-paths

VectorControl

  • Abstract class defining shared behaviour of VectorPoint and VectorHandle

VectorPointGroup

  • Use as child of VectorPath or another VectorPointGroup
  • Usually contains one or more VectorPoints and/or other VectorPointGroups
  • Allows one or more VectorPoints to be moved, rotated, and/or scaled together

VectorFill

  • Fills a VectorPath
  • Set path_node_path to the NodePath of the VectorPath
  • Call update_fill to update
  • Commonly you would connect the VectorPath shape_changed signal to the update_fill method
  • Has an integer mask (normally I would only set one bit) to specify which VectorControls to use

VectorStroke

  • Strokes a VectorPath
  • Set path_node_path to the NodePath of the VectorPath
  • Call update_shape to update the shape
  • Call update_data to update stroke widths and/or colors:
    • (only if using use_data_nodes_width or use_data_nodes_color)
  • Extends Line2D, so also accepts textures, etc.
  • Can stroke part of a path - use start/end to define start and end points
    • These accept negative values and wrap
    • These also now accept floating values, and will interpolate along the path between points
  • Has start_pinch length and end_pinch_length, interpolate the width to 0.0 towards the start/end
    • Lengths are defined as fraction of total stroke length
  • Has use_close_fix, attempts to work around the fact that Line2D cannot be closed by creating a small overlap when the stroke is closed
  • Commonly you would connect the VectorPath shape_changed signal to the update_shape method
  • If using width/color, connect stroke_data_changed to update_data for automatic updates
  • Has an integer mask (normally I would only set one bit) to specify which VectorControls to use

VectorCollisionPolygon

  • Creates a collision polygon from a VectorPath
  • Almost identical to VectorFill
  • Call upadate_polygon to update
  • Connect shape_changed to update_polygon for automatic updates

These scripts allow vector shapes (i.e. curve path with fill and/or stroke) to be created and controlled by Node2D points and handles.
This allows shapes to be tweened easily using AnimationPlayer, etc.
The stroke width can also be set on each point.

Reviews

0 ratings

Your Rating

Headline must be at least 3 characters but not more than 50
Review must be at least 5 characters but not more than 500
Please sign in to add a review

Quick Information

0 ratings
Vector Shape Nodes icon image
SquiggelSquirrel
Vector Shape Nodes

These scripts allow vector shapes (i.e. curve path with fill and/or stroke) to be created and controlled by Node2D points and handles.This allows shapes to be tweened easily using AnimationPlayer, etc.The stroke width can also be set on each point.

Supported Engine Version
3.4
Version String
1.7.0
License Version
MIT
Support Level
community
Modified Date
1 year ago
Git URL
Issue URL

Open Source

Released under the AGPLv3 license

Plug and Play

Browse assets directly from Godot

Community Driven

Created by developers for developers