public void Update(GameTime gameTime) { for (int i = 0; i < _destroyQueue.Count; i++) { ColliderPartition.Remove(_destroyQueue[i]); } _collidersInArea.Clear(); //center // delta = 150 if (Camera.Instance == null) { throw new Exception("Camera not initialized"); } List <ICollider> tempColliders = ColliderPartition.Cells[ColliderPartition.PositionToIndex(Camera.Instance.center)].Members; if (tempColliders != null) { // TODO: SIMULATE EVERYTHING IN CAMERA BOUNDS loadedPartitions[0] = ColliderPartition.PositionToIndex(Camera.Instance.center); if (CellWithinBounds(loadedPartitions[0])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[0]].Members); } loadedPartitions[1] = ColliderPartition.PositionToIndex(Camera.Instance.center) + 150; if (CellWithinBounds(loadedPartitions[1])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[1]].GetMembers()); } loadedPartitions[2] = ColliderPartition.PositionToIndex(Camera.Instance.center) - 150; if (CellWithinBounds(loadedPartitions[2])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[2]].GetMembers()); } loadedPartitions[3] = ColliderPartition.PositionToIndex(Camera.Instance.center) - 151; if (CellWithinBounds(loadedPartitions[3])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[3]].GetMembers()); } loadedPartitions[4] = ColliderPartition.PositionToIndex(Camera.Instance.center) - 149; if (CellWithinBounds(loadedPartitions[4])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[4]].GetMembers()); } loadedPartitions[5] = ColliderPartition.PositionToIndex(Camera.Instance.center) + 149; if (CellWithinBounds(loadedPartitions[5])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[5]].GetMembers()); } loadedPartitions[6] = ColliderPartition.PositionToIndex(Camera.Instance.center) + 151; if (CellWithinBounds(loadedPartitions[6])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[6]].GetMembers()); } loadedPartitions[7] = ColliderPartition.PositionToIndex(Camera.Instance.center) + 1; if (CellWithinBounds(loadedPartitions[7])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[7]].GetMembers()); } loadedPartitions[8] = ColliderPartition.PositionToIndex(Camera.Instance.center) - 1; if (CellWithinBounds(loadedPartitions[8])) { _collidersInArea.AddRange(ColliderPartition .Cells[loadedPartitions[8]].GetMembers()); } } for (int i = 0; i < partitionsToUpdate.Count; i++) { _collidersInArea.AddRange(ColliderPartition .Cells[partitionsToUpdate[i]].GetMembers()); } UpdateParticles(_collidersInArea, gameTime); //CheckCollisions(_collidersInArea); partitionsToUpdate.Clear(); }