Advertisement
Guest User

Untitled

a guest
Sep 29th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. void CollisionManager::AddCollisionComponent(BoxCollider2D * Coll) {
  2. colliders.push_back(Coll);
  3.  
  4. Coll->owner->posChangeMultiDelegate.push_back([&](GameObject* GameObj, vec2* Pos) {
  5. BoxCollider2D* comp = GameObj->GetComponent<BoxCollider2D>();
  6. BoxCollider2D* coll = nullptr;
  7. if (CheckForCollision(comp, *coll)) {
  8. comp->CallOnCollisionCallback(coll);
  9. }
  10. });
  11. }
  12.  
  13. bool CollisionManager::CheckForCollision(BoxCollider2D * Coll, BoxCollider2D& CollidingColl) {
  14. for (int i = 0; i < colliders.size(); i++) {
  15. if (Coll->collider != colliders.at(i)->collider) {
  16. if (Math::RectIntersect(Coll->collider, colliders.at(i)->collider)) {
  17. CollidingColl = *colliders.at(i);
  18.  
  19. if (!CheckForElement(collidingColliders, Coll)) {
  20. collidingColliders.push_back(Coll);
  21. }
  22. }
  23. }
  24. }
  25. if (&CollidingColl != nullptr) {
  26. return true;
  27. }
  28. if (CheckForElement(collidingColliders, Coll)) {
  29. RemoveElement(collidingColliders, Coll);
  30. Coll->CallCollisionExitCallback();
  31. }
  32. return false;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement