diff --git a/framework/scenes/world/actors/gfx.lua b/framework/scenes/world/actors/gfx.lua index d9b6442..23150db 100644 --- a/framework/scenes/world/actors/gfx.lua +++ b/framework/scenes/world/actors/gfx.lua @@ -41,9 +41,9 @@ function GFX:new(world, position, spritename, is3D, useMiddle) type = "gfx", dimensions = dimensions, isSolid = false, - visual = { - type = "sprite", - asset = spritename, + visuals = { + mode = "sprite", + assetName = spritename, clone = true, withCallbacks = true } diff --git a/framework/scenes/world/actors/visuals/init.lua b/framework/scenes/world/actors/visuals/init.lua index 09f01ff..f99702f 100644 --- a/framework/scenes/world/actors/visuals/init.lua +++ b/framework/scenes/world/actors/visuals/init.lua @@ -10,7 +10,7 @@ function Visual:_initVisual(def) if (self.visualMode == "box") then self:_initBox(def.color or {r = 0, g = 0, b = 0}) elseif (self.visualMode == "sprite") then - self:_initSprite(def.assetName, def.clone == true, def.origin or {}, def.getHitboxes == true) + self:_initSprite(def.assetName, def.clone == true, def.origin or {}, def.withCallbacks == true, def.getHitboxes == true) end if (self.visual ~= nil) then @@ -75,8 +75,8 @@ end -- SPRITE HANDLING -- Handle the sprite mode for visual -function Visual:_initSprite(name, isClone, origin, getHitboxes) - self.visual = Sprite(self, name, isClone, origin, getHitboxes) +function Visual:_initSprite(name, isClone, origin, withCallbacks, getHitboxes) + self.visual = Sprite(self, name, isClone, origin, withCallbacks, getHitboxes) end -- TILE HANDLING diff --git a/framework/scenes/world/actors/visuals/sprite.lua b/framework/scenes/world/actors/visuals/sprite.lua index 6a07c8b..1f2fb22 100644 --- a/framework/scenes/world/actors/visuals/sprite.lua +++ b/framework/scenes/world/actors/visuals/sprite.lua @@ -4,7 +4,7 @@ local Vector3D = require "framework.libs.brinevector3D" -- SPRITES FUNCTIONS -- Handle the sprite of the actor -function Sprite:new(owner, name, isClone, origin, getHitboxes) +function Sprite:new(owner, name, isClone, origin, withCallbacks, getHitboxes) self.owner = owner self.animators = self.owner.world.animators self.name = name or nil @@ -15,6 +15,9 @@ function Sprite:new(owner, name, isClone, origin, getHitboxes) if (isClone) then self:clone() end + if (withCallbacks) then + self:activateCallbacks() + end end function Sprite:clone() @@ -89,9 +92,9 @@ function Sprite:draw(position) local sx, sy = self.scale.x, self.scale.y if (self.spriteClone ~= nil) then - self.spriteClone:draw(x, y, 0, sx, sy) + self.spriteClone:draw(math.floor(x), math.floor(y), 0, sx, sy) else - self.animators:draw(self.name, x, y, 0, sx, sy) + self.animators:draw(self.name, math.floor(x), math.floor(y), 0, sx, sy) end end