pituicat/src/Classes/Physics/Collidible.hs

24 lines
724 B
Haskell

module Classes.Physics.Collidible where
import Linear
-- internal imports
import Classes.Physics.Mass
-- | Typeclass for implementing collision results on objects.
class Mass c => Collidible c where
-- | returns the top left and bottom right corners relative to the objects
-- positional vector of the axis alignes bounding box (AABB).
boundary
:: c -- Object
-> ( V2 Double -- Top left corner of AABB relative to position
, V2 Double -- Bottom right corner of AABB relative to position
)
-- | This Function is called for every collision for both colliding objects.
collide
:: c -- ^ Original object
-> c -- ^ Collision partner
-> c -- ^ Updated original object