List<Vector2>[] calculateCollision(Vector2[] endPos,Vector2[] v)
{
List<Vector2>[] result = new List<Vector2>[2];
// Look for map collision
for (int i=0; i<2; i++) {
if (bManager.isOccupied (endPos [i])){
print ("Map collision!");
return calculateMapCollision(endPos,v);
}
}
// Look for player collision
if (endPos [0] != endPos [1]){
result [0] = new List<Vector2>();
result [1] = new List<Vector2>();
result [0].Add (v [0]);
result [1].Add (v [1]);
return result;
} else if(endPos [0] == endPos [1] - v [1] && endPos [1] == endPos [0] - v [0]) {
// The tricky special case where players swap positions
result [0] = new List<Vector2>();
result [1] = new List<Vector2>();
// The 1/4 is just a magical number for the thing to look a little more realistic
result [0].Add (v [0]/4);
result [0].Add (-v [0]/4);
result [1].Add (v [1]/4);
result [1].Add (-v [1]/4);
return result;
} else {
print ("Player collision!");
return calculatePlayerCollision(endPos,v);
}
}