Guest User

grid collsions 3

a guest
Sep 21st, 2015
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.72 KB | None | 0 0
  1. void TestSquareCollision(ref Vector2 positionOffset, Vector2 topLeftOld, Vector2 bottomRightOld, Vector2 topLeftB, Vector2 bottomRightB)
  2. {
  3.     Vector2 topLeftNew = topLeftOld + positionOffset;
  4.     Vector2 bottomRightNew = bottomRightOld + positionOffset;
  5.  
  6.     if (topLeftB.X < bottomRightNew.X &&
  7.             topLeftNew.X < bottomRightB.X &&
  8.             topLeftB.Y < bottomRightNew.Y &&
  9.             topLeftNew.Y < bottomRightB.Y)
  10.     {
  11.         if (positionOffset.X == 0 || (topLeftB.X < bottomRightOld.X && topLeftOld.X < bottomRightB.X))
  12.         {
  13.             if (positionOffset.Y < 0)
  14.             {
  15.                 positionOffset.Y += bottomRightB.Y - topLeftNew.Y;
  16.                 if (positionOffset.Y > 0)
  17.                     positionOffset.Y = 0;
  18.             }
  19.             else if (positionOffset.Y > 0)
  20.             {
  21.                 positionOffset.Y -= bottomRightNew.Y - topLeftB.Y;
  22.                 if (positionOffset.Y < 0)
  23.                     positionOffset.Y = 0;
  24.             }
  25.         }
  26.         else if (positionOffset.Y == 0 || (topLeftB.Y < bottomRightOld.Y && topLeftOld.Y < bottomRightB.Y))
  27.         {
  28.             if (positionOffset.X < 0)
  29.             {
  30.                 positionOffset.X += bottomRightB.X - topLeftNew.X;
  31.                 if (positionOffset.X > 0)
  32.                     positionOffset.X = 0;
  33.             }
  34.             else if (positionOffset.X > 0)
  35.             {
  36.                 positionOffset.X -= bottomRightNew.X - topLeftB.X;
  37.                 if (positionOffset.X < 0)
  38.                     positionOffset.X = 0;
  39.             }
  40.         } // TODO: Replace this with a log error
  41.         else throw new NotImplementedException("Encountered a corner case in square collision detection.");
  42.     }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment