private void PrepareCollisionMatrix()
{
var gridSize = GridSpace.GetGridCoord(Size);
_mCollisionMatrix = new List<GameObject>[(int)gridSize.Y][];
for (var i = 0; i < gridSize.Y; i++)
{
_mCollisionMatrix[i] = new List<GameObject>[(int)gridSize.X];
for (var j = 0; j < gridSize.X; j++)
_mCollisionMatrix[i][j] = new List<GameObject>();
}
//Adds each object into the collision matrix. Special case is for walls, in which it must extend over for it to be continuously
//considered as collidable
foreach (var obj in _mObjects)
{
var gridLoc = GridSpace.GetGridCoord(obj.MPosition);
if (!(obj is Wall))
_mCollisionMatrix[(int)gridLoc.Y][(int)gridLoc.X].Add(obj);
else
{
var wall = (Wall)obj;
for (var i = 0; i < wall.Walls.Count; i+=2)
{
gridLoc = GridSpace.GetGridCoord(wall.Walls[i].MPosition);
_mCollisionMatrix[(int)gridLoc.Y][(int)gridLoc.X].Add(obj);
}
}
}
}