Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void CollisionManager::AddCollisionComponent(BoxCollider2D * Coll) {
- colliders.push_back(Coll);
- Coll->owner->posChangeMultiDelegate.push_back([&](GameObject* GameObj, vec2* Pos) {
- BoxCollider2D* comp = GameObj->GetComponent<BoxCollider2D>();
- BoxCollider2D* coll = nullptr;
- if (CheckForCollision(comp, *coll)) {
- comp->CallOnCollisionCallback(coll);
- }
- });
- }
- bool CollisionManager::CheckForCollision(BoxCollider2D * Coll, BoxCollider2D& CollidingColl) {
- for (int i = 0; i < colliders.size(); i++) {
- if (Coll->collider != colliders.at(i)->collider) {
- if (Math::RectIntersect(Coll->collider, colliders.at(i)->collider)) {
- CollidingColl = *colliders.at(i);
- if (!CheckForElement(collidingColliders, Coll)) {
- collidingColliders.push_back(Coll);
- }
- }
- }
- }
- if (&CollidingColl != nullptr) {
- return true;
- }
- if (CheckForElement(collidingColliders, Coll)) {
- RemoveElement(collidingColliders, Coll);
- Coll->CallCollisionExitCallback();
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement