From 05976abe6a620da85ad7a9f90cfa99703ed32240 Mon Sep 17 00:00:00 2001 From: iamcheeseman Date: Thu, 12 Mar 2026 18:28:55 -0400 Subject: Sprite offset --- src/sprite.lua | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'src/sprite.lua') diff --git a/src/sprite.lua b/src/sprite.lua index b7a7541..6cd8ede 100644 --- a/src/sprite.lua +++ b/src/sprite.lua @@ -1,9 +1,11 @@ Sprite = {} Sprite.__index = Sprite -function Sprite.new(tex_name) +function Sprite.new(tex_name, opts) local self = setmetatable({}, Sprite) + opts = opts or {} + self.tex = get_tex(tex_name) self.anim = get_anim(tex_name) @@ -16,11 +18,25 @@ function Sprite.new(tex_name) self.width = width / self.anim.frame_count self.height = height + local offsetx = opts.offsetx or 0 + local offsety = opts.offsety or 0 + + if offsetx < 1 and offsetx > -1 then + self.offsetx = self.width * offsetx + else + self.offsetx = offsetx + end + if offsety < 1 and offsety > -1 then + self.offsety = self.height * offsety + else + self.offsety = offsety + end + return self end -register_comp("Sprite", function(ent, tex_name) - ent.sprite = Sprite.new(tex_name) +register_comp("Sprite", function(ent, tex_name, opts) + ent.sprite = Sprite.new(tex_name, opts) end) function sprite_anim_sys(ent, dt) @@ -49,5 +65,10 @@ function sprite_draw_sys(ent) sprite.width, sprite.height, sprite.tex:getDimensions() ) - lg.draw(sprite.tex, q, ent.x or 0, ent.y or 0) + lg.draw( + sprite.tex, q, + ent.x or 0, ent.y or 0, + 0, 1, 1, + sprite.offsetx, sprite.offsety + ) end -- cgit v1.3-2-g0d8e From 1943aa1b865a36cb88564573cdcca71ac3554504 Mon Sep 17 00:00:00 2001 From: iamcheeseman Date: Thu, 12 Mar 2026 18:30:51 -0400 Subject: Use rotation scale and shear components for sprite rendering --- src/sprite.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/sprite.lua') diff --git a/src/sprite.lua b/src/sprite.lua index 6cd8ede..49a7dd2 100644 --- a/src/sprite.lua +++ b/src/sprite.lua @@ -68,7 +68,9 @@ function sprite_draw_sys(ent) lg.draw( sprite.tex, q, ent.x or 0, ent.y or 0, - 0, 1, 1, - sprite.offsetx, sprite.offsety + ent.rotation or 0, + ent.scalex or ent.scale or 1, ent.scaley or ent.scale or 1, + sprite.offsetx, sprite.offsety, + ent.shearx or 0, ent.sheary or 0 ) end -- cgit v1.3-2-g0d8e From 94141331ac0365c8eaa823d0ed1e8eb928f09dc6 Mon Sep 17 00:00:00 2001 From: iamcheeseman Date: Thu, 12 Mar 2026 19:14:19 -0400 Subject: Fix coloring --- main.lua | 1 + src/sprite.lua | 1 + 2 files changed, 2 insertions(+) (limited to 'src/sprite.lua') diff --git a/main.lua b/main.lua index 2453b53..96d6c09 100644 --- a/main.lua +++ b/main.lua @@ -57,6 +57,7 @@ function love.draw(dt) local scr_width, scr_height = lg.getDimensions() WindowScale = min(scr_width / SCR_WIDTH, scr_height / SCR_HEIGHT) + lg.setColor(1, 1, 1) lg.draw( viewport, scr_width / 2, scr_height / 2, 0, diff --git a/src/sprite.lua b/src/sprite.lua index 49a7dd2..79a38bf 100644 --- a/src/sprite.lua +++ b/src/sprite.lua @@ -65,6 +65,7 @@ function sprite_draw_sys(ent) sprite.width, sprite.height, sprite.tex:getDimensions() ) + lg.setColor(1, 1, 1) lg.draw( sprite.tex, q, ent.x or 0, ent.y or 0, -- cgit v1.3-2-g0d8e