From 454405b564351509f7a8fce2f962d2e9d70336a9 Mon Sep 17 00:00:00 2001 From: nek0 Date: Sun, 27 Dec 2020 05:19:51 +0100 Subject: [PATCH] add typeclass for collidible objects --- src/Classes/Physics/Collidible.hs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/Classes/Physics/Collidible.hs diff --git a/src/Classes/Physics/Collidible.hs b/src/Classes/Physics/Collidible.hs new file mode 100644 index 0000000..7453430 --- /dev/null +++ b/src/Classes/Physics/Collidible.hs @@ -0,0 +1,22 @@ +module Classes.Physics.Collidible where + +import Linear + +-- | 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 + ) + + velocity :: c -> V2 Double + + -- | This Function is called for every collision for both colliding objects. + collide + -> c -- ^ Original object + -> c -- ^ Collision partner + -> c -- ^ Updated original object