Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void TestSquareCollision(ref Vector2 positionOffset, Vector2 topLeftOld, Vector2 bottomRightOld, Vector2 topLeftB, Vector2 bottomRightB)
- {
- Vector2 topLeftNew = topLeftOld + positionOffset;
- Vector2 bottomRightNew = bottomRightOld + positionOffset;
- if (topLeftB.X < bottomRightNew.X &&
- topLeftNew.X < bottomRightB.X &&
- topLeftB.Y < bottomRightNew.Y &&
- topLeftNew.Y < bottomRightB.Y)
- {
- if (positionOffset.X == 0 || (topLeftB.X < bottomRightOld.X && topLeftOld.X < bottomRightB.X))
- {
- if (positionOffset.Y < 0)
- {
- positionOffset.Y += bottomRightB.Y - topLeftNew.Y;
- if (positionOffset.Y > 0)
- positionOffset.Y = 0;
- }
- else if (positionOffset.Y > 0)
- {
- positionOffset.Y -= bottomRightNew.Y - topLeftB.Y;
- if (positionOffset.Y < 0)
- positionOffset.Y = 0;
- }
- }
- else if (positionOffset.Y == 0 || (topLeftB.Y < bottomRightOld.Y && topLeftOld.Y < bottomRightB.Y))
- {
- if (positionOffset.X < 0)
- {
- positionOffset.X += bottomRightB.X - topLeftNew.X;
- if (positionOffset.X > 0)
- positionOffset.X = 0;
- }
- else if (positionOffset.X > 0)
- {
- positionOffset.X -= bottomRightNew.X - topLeftB.X;
- if (positionOffset.X < 0)
- positionOffset.X = 0;
- }
- } // TODO: Replace this with a log error
- else throw new NotImplementedException("Encountered a corner case in square collision detection.");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment