-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPhysics.cpp
More file actions
31 lines (27 loc) · 1.1 KB
/
Physics.cpp
File metadata and controls
31 lines (27 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "Physics.h"
#include <cstdlib>
Vec2 Physics::GetOverlap(std::shared_ptr<Entity> a, std::shared_ptr<Entity> b)
{
Vec2 aPos = a->getComponent<CTransform>().pos;
Vec2 bPos = b->getComponent<CTransform>().pos;
Vec2 aHalfSize = a->getComponent<CBoundingBox>().halfSize;
Vec2 bHalfSize = b->getComponent<CBoundingBox>().halfSize;
Vec2 delta(abs(bPos.x - aPos.x), abs(bPos.y - aPos.y));
Vec2 overlap;
overlap.x = (aHalfSize.x + bHalfSize.x) - delta.x;
overlap.y = (aHalfSize.y + bHalfSize.y) - delta.y;
return overlap;
}
//Get overlap on previous frame
Vec2 Physics::GetPreviousOverlap(std::shared_ptr<Entity> a, std::shared_ptr<Entity> b)
{
Vec2 aPos = a->getComponent<CTransform>().prevPos;
Vec2 bPos = b->getComponent<CTransform>().prevPos;
Vec2 aHalfSize = a->getComponent<CBoundingBox>().halfSize;
Vec2 bHalfSize = b->getComponent<CBoundingBox>().halfSize;
Vec2 delta(abs(bPos.x - aPos.x), abs(bPos.y - aPos.y));
Vec2 overlap;
overlap.x = (aHalfSize.x + bHalfSize.x) - delta.x;
overlap.y = (aHalfSize.y + bHalfSize.y) - delta.y;
return overlap;
}