abstracting to engine package

This commit is contained in:
2026-07-28 21:20:47 -07:00
parent fc1c39f4f2
commit 742cfcff6a
5 changed files with 246 additions and 104 deletions
+51
View File
@@ -0,0 +1,51 @@
package engine
import sdl "vendor:sdl3"
Vec2 :: [2]f32
Sprite :: struct {
data: ^Character_Data,
position: Vec2,
clip: string,
frame: int,
}
spawn_sprite :: proc(
data: ^Character_Data,
position: Vec2,
clip: string = "idle",
frame: int = 0,
) -> Sprite {
return Sprite{data = data, position = position, clip = clip, frame = frame}
}
// stubbed for later
update_sprite :: proc(sprite: ^Sprite, dt: f32) {
_ = sprite
_ = dt
}
draw_sprite :: proc(renderer: ^sdl.Renderer, sprite: ^Sprite) {
assert(sprite.data != nil)
rect, ok := character_frame_rect(sprite.data, sprite.clip, sprite.frame)
if !ok {
return
}
w := f32(rect[2])
h := f32(rect[3])
dst := sdl.FRect {
x = sprite.position.x - w * 0.5,
y = sprite.position.y - h,
w = w,
h = h,
}
src := sdl.FRect {
x = f32(rect[0]),
y = f32(rect[1]),
w = w,
h = h,
}
sdl.RenderTexture(renderer, sprite.data.texture, &src, &dst)
}