56 lines
937 B
Odin
56 lines
937 B
Odin
package main
|
|
|
|
import rl "vendor:raylib"
|
|
|
|
Graphics :: union {
|
|
GfxNone,
|
|
GfxCircle,
|
|
GfxRect,
|
|
GfxRing,
|
|
GfxCircleLines,
|
|
GfxTexture,
|
|
}
|
|
|
|
GfxNone :: struct {}
|
|
|
|
GfxCircle :: struct {
|
|
pos: rl.Vector2,
|
|
radius: f32,
|
|
color: rl.Color,
|
|
}
|
|
|
|
GfxRect :: struct {
|
|
pos: rl.Vector2,
|
|
size: rl.Vector2,
|
|
color: rl.Color,
|
|
}
|
|
|
|
GfxRing :: struct {
|
|
pos: rl.Vector2,
|
|
inner_radius: f32,
|
|
outer_radius: f32,
|
|
color: rl.Color,
|
|
}
|
|
|
|
GfxCircleLines :: struct {
|
|
pos: rl.Vector2,
|
|
radius: f32,
|
|
color: rl.Color,
|
|
}
|
|
|
|
GfxTexture :: struct {
|
|
}
|
|
|
|
gfx_draw :: proc(pos: rl.Vector2, g: Graphics) {
|
|
#partial switch v in g {
|
|
case GfxCircle:
|
|
rl.DrawCircleV(pos + v.pos, v.radius, v.color)
|
|
case GfxRect:
|
|
rl.DrawRectangleV(pos - v.size / 2 + v.pos, v.size, v.color)
|
|
case GfxRing:
|
|
rl.DrawRing(pos + v.pos, v.inner_radius, v.outer_radius, 0, 360, 0, v.color)
|
|
case GfxCircleLines:
|
|
rl.DrawCircleLinesV(pos + v.pos, v.radius, v.color)
|
|
}
|
|
}
|