public bool DetectCollision(IGameObject Source, bool IgnoreSameTeam) { bool retVal = false; Parallel.ForEach(GameObjects, testItem => { if (!retVal) // Skip if a collision has been detected { if ((testItem != Source) && ((testItem.TeamNo() != Source.TeamNo()) || (!IgnoreSameTeam))) { bool Touching = true; if (testItem.Right() < Source.Left()) { Touching = false; } if (testItem.Left() > Source.Right()) { Touching = false; } if (testItem.Bottom() < Source.Top()) { Touching = false; } if (testItem.Top() > Source.Bottom()) { Touching = false; } if (Touching) { retVal = true; } } } }); return(retVal); }
public bool DetectCollision(IGameObject Source, bool IgnoreSameTeam) { bool retVal = false; Parallel.ForEach(GameObjects, testItem => { if (!retVal) // Skip if a collision has been detected { if ((testItem != Source) && ((testItem.TeamNo() != Source.TeamNo()) || (!IgnoreSameTeam))) { bool Touching = true; if (testItem.Right() < Source.Left()) Touching = false; if (testItem.Left() > Source.Right()) Touching = false; if (testItem.Bottom() < Source.Top()) Touching = false; if (testItem.Top() > Source.Bottom()) Touching = false; if (Touching) retVal = true; } } }); return retVal; }