Skip to main content

Draw

Debug drawing library useful for debugging 3D abstractions. One of the more useful utility libraries.

These functions are incredibly easy to invoke for quick debugging. This can make debugging any sort of 3D geometry really easy.

-- A sample of a few API uses
Draw.point(Vector3.new(0, 0, 0))
Draw.terrainCell(Vector3.new(0, 0, 0))
Draw.cframe(CFrame.new(0, 10, 0))
Draw.text(Vector3.new(0, -10, 0), "Testing!")
TIP

This library should not be used to render things in production for normal players, as it is optimized for debug experience over performance.

Functions​

setColor​

Draw.setColor(
color: Color3--

The color to set

) → ()

Sets the Draw's drawing color.

resetColor​

Draw.resetColor() → ()

Resets the drawing color.

setRandomColor​

Draw.setRandomColor() → ()

Sets the Draw library to use a random color.

line​

Draw.line(
start: Vector3,
finish: Vector3,
color: Color3?,--

Optional

parent: Instance?,--

Optional

diameter: number?--

Optional

) → Instance

Draws a line between two points

Draw.line(Vector3.new(0, 0, 0), Vector3.new(0, 10, 0))

direction​

Draw.direction(
origin: Vector3,
direction: Vector3,
color: Color3?,--

Optional

parent: Instance?,--

Optional

diameter: number?--

Optional

) → Instance

Draws a line in a direction

Draw.direction(Vector3.new(0, 0, 0), Vector3.new(0, 10, 0))

shapecast​

Draw.shapecast(
part: BasePart,
origin: CFrameLike,
direction: Vector3Like,
color: Color3Like?
) → ()

Draws a shapecast

spherecast​

Draw.spherecast(
origin: Vector3,
radius: number,
direction: Vector3,
color: Color3?,
parent: Instance?
) → Folder

Draws a spherecast

TIP

Unlike WorldRoot:GetPartsInPart(), spherecast does not detect BaseParts that initially intersect the shape. So this draw doesn't render that initial sphere.

Draw.spherecast(Vector3.new(0, 0, 0), 10, Vector3.new(0, 10, 0))

blockcast​

Draw.blockcast(
cframe: CFrame,
size: Vector3,
direction: Vector3,
color: Color3?,
parent: Instance?
) → Folder

Draws a block cast

triangle​

Draw.triangle(
pointA: Vector3,
pointB: Vector3,
pointC: Vector3,
color: Color3?,--

Optional color3

parent: Instance?--

Optional parent

) → Folder

Draws a triangle between 3 points

raycast​

Draw.raycast(
origin: Vector3,
direction: Vector3,
color: Color3?,--

Optional

parent: Instance?,--

Optional

diameter: number?--

Optional

) → Instance

Draws a raycast for debugging

Draw.raycast(origin, direction)

ray​

Draw.ray(
ray: Ray,
color: Color3?,--

Optional color to draw in

parent: Instance?,--

Optional parent

diameter: number?--

Optional diameter

) → BasePart

Draws a ray for debugging.

local ray = Ray.new(Vector3.new(0, 0, 0), Vector3.new(0, 10, 0))
Draw.ray(ray)

updateRay​

Draw.updateRay(
rayPart: Instance,--

Ray part

ray: Ray,--

New ray

color: Color3?,--

New color

diameter: number?--

Number

) → ()

Updates the rendered ray to the new color and position. Used for certain scenarios when updating a ray on renderstepped would impact performance, even in debug mode.

local ray = Ray.new(Vector3.new(0, 0, 0), Vector3.new(0, 10, 0))
local drawn = Draw.ray(ray)

RunService.RenderStepped:Connect(function()
	local newRay = Ray.new(Vector3.new(0, 0, 0), Vector3.new(0, 10*math.sin(os.clock()), 0))
	Draw.updateRay(drawn, newRay Color3.new(1, 0.5, 0.5))
end)

text​

Draw.text(
adornee: Instance | Vector3,--

Adornee to render on

text: string,--

Text to render

color: Color3?--

Optional color to render

) → Instance

Render text in 3D for debugging. The text container will be sized to fit the text.

Draw.text(Vector3.new(0, 10, 0), "Point")

sphere​

Draw.sphere(
position: Vector3,--

Position of the sphere

radius: number,--

Radius of the sphere

color: Color3?,--

Optional color

parent: Instance?--

Optional parent

) → BasePart

Renders a sphere at the given point in 3D space.

Draw.sphere(Vector3.new(0, 10, 0), 10)

Great for debugging explosions and stuff.

point​

Draw.point(
position: Vector3 | CFrame,--

Point to Draw

color: Color3?,--

Optional color

parent: Instance?,--

Optional parent

diameter: number?--

Optional diameter

) → BasePart

Draws a point for debugging in 3D space.

Draw.point(Vector3.new(0, 25, 0), Color3.new(0.5, 1, 0.5))

labelledPoint​

Draw.labelledPoint(
position: Vector3 | CFrame,--

Position to render

label: string,--

Label to render on the point

color: Color3?,--

Optional color

parent: Instance?--

Optional parent

) → BasePart

Renders a point with a label in 3D space.

Draw.labelledPoint(Vector3.new(0, 10, 0), "AI target")

cframe​

Draw.cframe(cframe: CFrame) → Model

Renders a CFrame in 3D space. Includes each axis.

Draw.cframe(CFrame.Angles(0, math.pi/8, 0))

part​

Draw.part(
template: BasePart,
cframe: CFrame,
color: Color3?,
transparency: number?
) → BasePart

Draws a part in 3D space

Draw.part(part, Color3.new(1, 1, 1))

box​

Draw.box(
cframe: CFrame | Vector3,--

CFrame of the box

size: Vector3,--

Size of the box

color: Color3?--

Optional Color3

) → BasePart

Renders a box in 3D space. Great for debugging bounding boxes.

Draw.box(Vector3.new(0, 5, 0), Vector3.new(10, 10, 10))

region3​

Draw.region3(
region3: Region3,--

Region3 to render

color: Color3?--

Optional color3

) → BasePart

Renders a region3 in 3D space.

Draw.region3(Region3.new(Vector3.new(0, 0, 0), Vector3.new(10, 10, 10)))

terrainCell​

Draw.terrainCell(
position: Vector3,--

World space position

color: Color3?--

Optional color to render

) → BasePart

Renders a terrain cell in 3D space. Snaps the position to the nearest position.

Draw.terrainCell(Vector3.new(0, 0, 0))

screenPointLine​

Draw.screenPointLine(
parent: Instance?,
color: Color3Like
) → Frame

Draws a screen point line

screenPoint​

Draw.screenPoint(
position: Vector2,
parent: Instance?,
color: Color3Like?,
diameter: number?
) → Frame

Draws a screen point

vector​

Draw.vector(
position: Vector3,--

Position of the vector

direction: Vector3,--

Direction of the vector. Determines length.

color: Color3?,--

Optional color

parent: Instance?,--

Optional instance

meshDiameter: number?--

Optional diameter

) → BasePart

Draws a vector in 3D space.

Draw.vector(Vector3.new(0, 0, 0), Vector3.new(0, 1, 0))

ring​

Draw.ring(
position: Vector3,--

Position of the center of the ring

normal: Vector3,--

Direction of the ring.

radius: number?,--

Optional radius for the ring

color: Color3?,--

Optional color

parent: Instance?--

Optional instance

) → BasePart

Draws a ring in 3D space.

Draw.ring(Vector3.new(0, 0, 0), Vector3.new(0, 1, 0), 10)

getDefaultParent​

Draw.getDefaultParent() → Instance

Retrieves the default parent for the current execution context.

Show raw api
{
    "functions": [
        {
            "name": "setColor",
            "desc": "Sets the Draw's drawing color.",
            "params": [
                {
                    "name": "color",
                    "desc": "The color to set",
                    "lua_type": "Color3"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 41,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "resetColor",
            "desc": "Resets the drawing color.",
            "params": [],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 48,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "setRandomColor",
            "desc": "Sets the Draw library to use a random color.",
            "params": [],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 55,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "line",
            "desc": "Draws a line between two points\n\n```lua\nDraw.line(Vector3.new(0, 0, 0), Vector3.new(0, 10, 0))\n```",
            "params": [
                {
                    "name": "start",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "finish",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "Optional",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional",
                    "lua_type": "Instance?"
                },
                {
                    "name": "diameter",
                    "desc": "Optional",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Instance"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 73,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "direction",
            "desc": "Draws a line in a direction\n\n```lua\nDraw.direction(Vector3.new(0, 0, 0), Vector3.new(0, 10, 0))\n```",
            "params": [
                {
                    "name": "origin",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "direction",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "Optional",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional",
                    "lua_type": "Instance?"
                },
                {
                    "name": "diameter",
                    "desc": "Optional",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Instance"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 95,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "shapecast",
            "desc": "Draws a shapecast",
            "params": [
                {
                    "name": "part",
                    "desc": "",
                    "lua_type": "BasePart"
                },
                {
                    "name": "origin",
                    "desc": "",
                    "lua_type": "CFrameLike"
                },
                {
                    "name": "direction",
                    "desc": "",
                    "lua_type": "Vector3Like"
                },
                {
                    "name": "color",
                    "desc": "",
                    "lua_type": "Color3Like?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 112,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "spherecast",
            "desc": "Draws a spherecast\n\n:::tip\nUnlike WorldRoot:GetPartsInPart(), spherecast does not detect BaseParts\nthat initially intersect the shape. So this draw doesn't render that initial sphere.\n:::\n\n```lua\nDraw.spherecast(Vector3.new(0, 0, 0), 10, Vector3.new(0, 10, 0))\n```",
            "params": [
                {
                    "name": "origin",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "radius",
                    "desc": "",
                    "lua_type": "number"
                },
                {
                    "name": "direction",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "",
                    "lua_type": "Instance?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Folder\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 146,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "blockcast",
            "desc": "Draws a block cast",
            "params": [
                {
                    "name": "cframe",
                    "desc": "",
                    "lua_type": "CFrame"
                },
                {
                    "name": "size",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "direction",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "",
                    "lua_type": "Instance?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Folder\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 180,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "triangle",
            "desc": "Draws a triangle between 3 points",
            "params": [
                {
                    "name": "pointA",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "pointB",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "pointC",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "Optional color3",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional parent",
                    "lua_type": "Instance?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Folder"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 223,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "raycast",
            "desc": "Draws a raycast for debugging\n\n```lua\nDraw.raycast(origin, direction)\n```",
            "params": [
                {
                    "name": "origin",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "direction",
                    "desc": "",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "Optional",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional",
                    "lua_type": "Instance?"
                },
                {
                    "name": "diameter",
                    "desc": "Optional",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Instance"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 326,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "ray",
            "desc": "Draws a ray for debugging.\n\n```lua\nlocal ray = Ray.new(Vector3.new(0, 0, 0), Vector3.new(0, 10, 0))\nDraw.ray(ray)\n```",
            "params": [
                {
                    "name": "ray",
                    "desc": "",
                    "lua_type": "Ray"
                },
                {
                    "name": "color",
                    "desc": "Optional color to draw in",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional parent",
                    "lua_type": "Instance?"
                },
                {
                    "name": "diameter",
                    "desc": "Optional diameter",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 350,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "updateRay",
            "desc": "Updates the rendered ray to the new color and position.\nUsed for certain scenarios when updating a ray on\nrenderstepped would impact performance, even in debug mode.\n\n```lua\nlocal ray = Ray.new(Vector3.new(0, 0, 0), Vector3.new(0, 10, 0))\nlocal drawn = Draw.ray(ray)\n\nRunService.RenderStepped:Connect(function()\n\tlocal newRay = Ray.new(Vector3.new(0, 0, 0), Vector3.new(0, 10*math.sin(os.clock()), 0))\n\tDraw.updateRay(drawn, newRay Color3.new(1, 0.5, 0.5))\nend)\n```",
            "params": [
                {
                    "name": "rayPart",
                    "desc": "Ray part",
                    "lua_type": "Instance"
                },
                {
                    "name": "ray",
                    "desc": "New ray",
                    "lua_type": "Ray"
                },
                {
                    "name": "color",
                    "desc": "New color",
                    "lua_type": "Color3?"
                },
                {
                    "name": "diameter",
                    "desc": "Number",
                    "lua_type": "number?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 422,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "text",
            "desc": "Render text in 3D for debugging. The text container will\nbe sized to fit the text.\n\n```lua\nDraw.text(Vector3.new(0, 10, 0), \"Point\")\n```",
            "params": [
                {
                    "name": "adornee",
                    "desc": "Adornee to render on",
                    "lua_type": "Instance | Vector3"
                },
                {
                    "name": "text",
                    "desc": "Text to render",
                    "lua_type": "string"
                },
                {
                    "name": "color",
                    "desc": "Optional color to render",
                    "lua_type": "Color3?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Instance"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 462,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "sphere",
            "desc": "Renders a sphere at the given point in 3D space.\n\n```lua\nDraw.sphere(Vector3.new(0, 10, 0), 10)\n```\n\nGreat for debugging explosions and stuff.",
            "params": [
                {
                    "name": "position",
                    "desc": "Position of the sphere",
                    "lua_type": "Vector3"
                },
                {
                    "name": "radius",
                    "desc": "Radius of the sphere",
                    "lua_type": "number"
                },
                {
                    "name": "color",
                    "desc": "Optional color",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional parent",
                    "lua_type": "Instance?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 566,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "point",
            "desc": "Draws a point for debugging in 3D space.\n\n```lua\nDraw.point(Vector3.new(0, 25, 0), Color3.new(0.5, 1, 0.5))\n```",
            "params": [
                {
                    "name": "position",
                    "desc": "Point to Draw",
                    "lua_type": "Vector3 | CFrame"
                },
                {
                    "name": "color",
                    "desc": "Optional color",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional parent",
                    "lua_type": "Instance?"
                },
                {
                    "name": "diameter",
                    "desc": "Optional diameter",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 583,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "labelledPoint",
            "desc": "Renders a point with a label in 3D space.\n\n```lua\nDraw.labelledPoint(Vector3.new(0, 10, 0), \"AI target\")\n```",
            "params": [
                {
                    "name": "position",
                    "desc": "Position to render",
                    "lua_type": "Vector3 | CFrame"
                },
                {
                    "name": "label",
                    "desc": "Label to render on the point",
                    "lua_type": "string"
                },
                {
                    "name": "color",
                    "desc": "Optional color",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional parent",
                    "lua_type": "Instance?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 634,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "cframe",
            "desc": "Renders a CFrame in 3D space. Includes each axis.\n\n```lua\nDraw.cframe(CFrame.Angles(0, math.pi/8, 0))\n```",
            "params": [
                {
                    "name": "cframe",
                    "desc": "",
                    "lua_type": "CFrame"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Model"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 655,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "part",
            "desc": "Draws a part in 3D space\n\n```lua\nDraw.part(part, Color3.new(1, 1, 1))\n```",
            "params": [
                {
                    "name": "template",
                    "desc": "",
                    "lua_type": "BasePart"
                },
                {
                    "name": "cframe",
                    "desc": "",
                    "lua_type": "CFrame"
                },
                {
                    "name": "color",
                    "desc": "",
                    "lua_type": "Color3?"
                },
                {
                    "name": "transparency",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 691,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "box",
            "desc": "Renders a box in 3D space. Great for debugging bounding boxes.\n\n```lua\nDraw.box(Vector3.new(0, 5, 0), Vector3.new(10, 10, 10))\n```",
            "params": [
                {
                    "name": "cframe",
                    "desc": "CFrame of the box",
                    "lua_type": "CFrame | Vector3"
                },
                {
                    "name": "size",
                    "desc": "Size of the box",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "Optional Color3",
                    "lua_type": "Color3?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 751,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "region3",
            "desc": "Renders a region3 in 3D space.\n\n```lua\nDraw.region3(Region3.new(Vector3.new(0, 0, 0), Vector3.new(10, 10, 10)))\n```",
            "params": [
                {
                    "name": "region3",
                    "desc": "Region3 to render",
                    "lua_type": "Region3"
                },
                {
                    "name": "color",
                    "desc": "Optional color3",
                    "lua_type": "Color3?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 797,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "terrainCell",
            "desc": "Renders a terrain cell in 3D space. Snaps the position\nto the nearest position.\n\n```lua\nDraw.terrainCell(Vector3.new(0, 0, 0))\n```",
            "params": [
                {
                    "name": "position",
                    "desc": "World space position",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "Optional color to render",
                    "lua_type": "Color3?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 815,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "screenPointLine",
            "desc": "Draws a screen point line",
            "params": [
                {
                    "name": "a",
                    "desc": "",
                    "lua_type": "Vector2"
                },
                {
                    "name": "b",
                    "desc": "",
                    "lua_type": "Vector2"
                },
                {
                    "name": "parent",
                    "desc": "",
                    "lua_type": "Instance?"
                },
                {
                    "name": "color",
                    "desc": "",
                    "lua_type": "Color3Like"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Frame\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 833,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "screenPoint",
            "desc": "Draws a screen point",
            "params": [
                {
                    "name": "position",
                    "desc": "",
                    "lua_type": "Vector2"
                },
                {
                    "name": "parent",
                    "desc": "",
                    "lua_type": "Instance?"
                },
                {
                    "name": "color",
                    "desc": "",
                    "lua_type": "Color3Like?"
                },
                {
                    "name": "diameter",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Frame\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 875,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "vector",
            "desc": "Draws a vector in 3D space.\n\n```lua\nDraw.vector(Vector3.new(0, 0, 0), Vector3.new(0, 1, 0))\n```",
            "params": [
                {
                    "name": "position",
                    "desc": "Position of the vector",
                    "lua_type": "Vector3"
                },
                {
                    "name": "direction",
                    "desc": "Direction of the vector. Determines length.",
                    "lua_type": "Vector3"
                },
                {
                    "name": "color",
                    "desc": "Optional color",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional instance",
                    "lua_type": "Instance?"
                },
                {
                    "name": "meshDiameter",
                    "desc": "Optional diameter",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 911,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "ring",
            "desc": "Draws a ring in 3D space.\n\n```lua\nDraw.ring(Vector3.new(0, 0, 0), Vector3.new(0, 1, 0), 10)\n```",
            "params": [
                {
                    "name": "position",
                    "desc": "Position of the center of the ring",
                    "lua_type": "Vector3"
                },
                {
                    "name": "normal",
                    "desc": "Direction of the ring.",
                    "lua_type": "Vector3"
                },
                {
                    "name": "radius",
                    "desc": "Optional radius for the ring",
                    "lua_type": "number?"
                },
                {
                    "name": "color",
                    "desc": "Optional color",
                    "lua_type": "Color3?"
                },
                {
                    "name": "parent",
                    "desc": "Optional instance",
                    "lua_type": "Instance?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "BasePart"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 939,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        },
        {
            "name": "getDefaultParent",
            "desc": "Retrieves the default parent for the current execution context.",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Instance"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 1044,
                "path": "src/draw/src/Shared/Draw.lua"
            }
        }
    ],
    "properties": [],
    "types": [],
    "name": "Draw",
    "desc": "Debug drawing library useful for debugging 3D abstractions. One of\nthe more useful utility libraries.\n\nThese functions are incredibly easy to invoke for quick debugging.\nThis can make debugging any sort of 3D geometry really easy.\n\n```lua\n-- A sample of a few API uses\nDraw.point(Vector3.new(0, 0, 0))\nDraw.terrainCell(Vector3.new(0, 0, 0))\nDraw.cframe(CFrame.new(0, 10, 0))\nDraw.text(Vector3.new(0, -10, 0), \"Testing!\")\n```\n\n:::tip\nThis library should not be used to render things in production for\nnormal players, as it is optimized for debug experience over performance.\n:::",
    "source": {
        "line": 24,
        "path": "src/draw/src/Shared/Draw.lua"
    }
}