diff --git a/sonic-radiance.love/birb/modules/world/actors/actor2D.lua b/sonic-radiance.love/birb/modules/world/actors/actor2D.lua index 185323d..9bbcdc4 100644 --- a/sonic-radiance.love/birb/modules/world/actors/actor2D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/actor2D.lua @@ -57,21 +57,10 @@ end -- PHYSICS FUNCTIONS -- Handle movement and collisions. -function Actor2D:autoMove(dt) - self:updateHitboxes() - self.onGround = false - self:applyGravity(dt) - +function Actor2D:moveToFuturePosition(dt) local dx, dy = self:getFuturePosition(dt) - local newx, newy, cols, colNumber = self:move(dx, dy) - - -- apply after the movement the friction, until the player stop - -- note: the friction is applied according to the delta time, - -- thus the friction should be how much speed is substracted in 1 second - - self:solveAllCollisions(cols) - - self:applyFriction(dt) + local _, _, cols, colNumber = self:move(dx, dy) + return cols, colNumber end function Actor2D:changeSpeedToCollisionNormal(normal) diff --git a/sonic-radiance.love/birb/modules/world/actors/actor3D.lua b/sonic-radiance.love/birb/modules/world/actors/actor3D.lua index 1c0d527..d1e93d2 100644 --- a/sonic-radiance.love/birb/modules/world/actors/actor3D.lua +++ b/sonic-radiance.love/birb/modules/world/actors/actor3D.lua @@ -67,21 +67,10 @@ end -- PHYSICS FUNCTIONS -- Handle movement and collisions. -function Actor3D:autoMove(dt) - self:updateHitboxes() - self.onGround = false - self:applyGravity(dt) - +function Actor3D:moveToFuturePosition(dt) local dx, dy, dz = self:getFuturePosition(dt) - local newx, newy, newz, cols, colNumber = self:move(dx, dy, dz) - - -- apply after the movement the friction, until the player stop - -- note: the friction is applied according to the delta time, - -- thus the friction should be how much speed is substracted in 1 second - - self:solveAllCollisions(cols) - - self:applyFriction(dt) + local _, _, _, cols, colNumber = self:move(dx, dy, dz) + return cols, colNumber end function Actor3D:changeSpeedToCollisionNormal(normal) 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 eb898cc..2b221c9 100644 --- a/sonic-radiance.love/birb/modules/world/actors/mixins/physics.lua +++ b/sonic-radiance.love/birb/modules/world/actors/mixins/physics.lua @@ -127,9 +127,19 @@ function PhysicalActor:checkGround() end function PhysicalActor:autoMove(dt) - -- The base actor don't have coordinate - -- so the autoMove is only usefull to its - -- 2D and 3D childrens + self:updateHitboxes() + self.onGround = false + self:applyGravity(dt) + + local cols, colNumber = self:moveToFuturePosition(dt) + + -- apply after the movement the friction, until the player stop + -- note: the friction is applied according to the delta time, + -- thus the friction should be how much speed is substracted in 1 second + + self:solveAllCollisions(cols) + + self:applyFriction(dt) end -- HITBOX FUNCTIONS