diff --git a/sonic-radiance.love/birb/modules/world/actors/actor2D.lua b/sonic-radiance.love/birb/modules/world/actors/actor2D.lua index 9c111bb..185323d 100644 --- a/sonic-radiance.love/birb/modules/world/actors/actor2D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/actor2D.lua @@ -145,25 +145,6 @@ function Actor2D:packForHitbox() return {0, 0, self.w, self.h} end -function Actor2D:checkHitboxCollisions(name, filter) - self:applyHitboxCollisionsAtPoint(name, self.x, self.y, filter) -end - -function Actor2D:applyHitboxCollisionsAtPoint(name, dx, dy, filter) - local x, y, cols, colNumber = dx, dy, {}, 0 - local filter = filter or self.filter - if (self.isDestroyed == false) and (self.hitboxes[name] ~= nil) then - x, y, cols, colNumber = self.hitboxes[name]:checkCollisionAtPoint(dx, dy, filter) - local type = self.hitboxes[name].type - - for i, col in ipairs(cols) do - self:hitboxResponse(name, type, col) - end - end - - return x, y, cols, colNumber -end - -- DRAW FUNCTIONS -- Draw the actors. diff --git a/sonic-radiance.love/birb/modules/world/actors/actor3D.lua b/sonic-radiance.love/birb/modules/world/actors/actor3D.lua index 9348803..1c0d527 100644 --- a/sonic-radiance.love/birb/modules/world/actors/actor3D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/actor3D.lua @@ -168,25 +168,6 @@ function Actor3D:packForHitbox() return {0, 0, 0, self.w, self.h, self.d} end -function Actor3D:checkHitboxCollisions(name, filter) - self:applyHitboxCollisionsAtPoint(name, self.x, self.y, self.z, filter) -end - -function Actor3D:applyHitboxCollisionsAtPoint(name, dx, dy, dz, filter) - local x, y, z, cols, colNumber = dx, dy, dz, {}, 0 - local filter = filter or self.filter - if (self.isDestroyed == false) and (self.hitboxes[name] ~= nil) then - x, y, z, cols, colNumber = self.hitboxes[name]:checkCollisionAtPoint(dx, dy, dz, filter) - local type = self.hitboxes[name].type - - for i, col in ipairs(cols) do - self:hitboxResponse(name, type, col) - end - end - - return x, y, z, cols, colNumber -end - -- SHADOW FUNCTIONS -- Handle everything related to shadow diff --git a/sonic-radiance.love/birb/modules/world/actors/mixins/physics.lua b/sonic-radiance.love/birb/modules/world/actors/mixins/physics.lua index 513ba0b..eb898cc 100644 --- a/sonic-radiance.love/birb/modules/world/actors/mixins/physics.lua +++ b/sonic-radiance.love/birb/modules/world/actors/mixins/physics.lua @@ -220,12 +220,27 @@ function PhysicalActor:updateHitboxes() end end -function PhysicalActor:checkHitboxesCollisions(filter) +function PhysicalActor:applyHitboxesCollisions(filter) for k, v in pairs(self.hitboxes) do - self:checkHitboxCollisions(k, filter) + self:applyHitboxCollisions(k, filter) end end +function PhysicalActor:applyHitboxCollisions(name, filter) + local cols, colNumber = {}, 0 + local filter = filter or self.filter + if (self.isDestroyed == false) and (self.hitboxes[name] ~= nil) then + cols, colNumber = self.hitboxes[name]:checkCollision(filter) + local type = self.hitboxes[name].type + + for i, col in ipairs(cols) do + self:hitboxResponse(name, type, col) + end + end + + return cols, colNumber +end + function PhysicalActor:hitboxResponse(name, type, collision) -- just a blank placeholder function end diff --git a/sonic-radiance.love/birb/modules/world/actors/utils/hitbox2D.lua b/sonic-radiance.love/birb/modules/world/actors/utils/hitbox2D.lua index a5a23ad..2452029 100644 --- a/sonic-radiance.love/birb/modules/world/actors/utils/hitbox2D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/utils/hitbox2D.lua @@ -119,6 +119,11 @@ end -- COLLISION FUNCTIONS -- Handle Hitbox position +function Hitbox2D:checkCollision(filter) + local _, _, cols, colNumber = self:checkCollisionAtPoint(self.owner.x, self.owner.y, filter) + return cols, colNumber +end + function Hitbox2D:checkCollisionAtPoint(dx, dy, filter) self:updatePosition() diff --git a/sonic-radiance.love/birb/modules/world/actors/utils/hitbox3D.lua b/sonic-radiance.love/birb/modules/world/actors/utils/hitbox3D.lua index 8a6b951..e49761b 100644 --- a/sonic-radiance.love/birb/modules/world/actors/utils/hitbox3D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/utils/hitbox3D.lua @@ -123,6 +123,11 @@ end -- COLLISION FUNCTIONS -- Handle Hitbox position +function Hitbox3D:checkCollision(filter) + local _, _, _, cols, colNumber = self:checkCollisionAtPoint(self.owner.x, self.owner.y, self.owner.z, filter) + return cols, colNumber +end + function Hitbox3D:checkCollisionAtPoint(dx, dy, dz, filter) self:updatePosition()