private void updateIndexes(Body b, List<int> _ar) { foreach (int i in b.gridIndex) { removeIndex(b, i); } //b.gridIndex.splice( 0, b.gridIndex.length ); b.gridIndex.Clear(); foreach (int i in _ar) { addIndex(b, i); } }
public void addBody(Body b) { addIndex(b, getIndex1DVec(clampToGridVec(b.x, b.y))); }
// changed from CellObject private void removeIndex(Body b, int _pos) { grid[_pos].Remove(b); }
// changed from CellObject private void removeIndexes(Body b) { foreach (int i in b.gridIndex) { removeIndex(b, i); } //b.gridIndex.splice( 0, b.gridIndex.length ); b.gridIndex.Clear(); }
private void addIndex(Body b, int _cellPos) { grid[_cellPos].Add(b); b.gridIndex.Add(_cellPos); }
public void updateBody(Body b) { updateIndexes(b, aabbToGrid(b.aabb.min, b.aabb.max)); }
public void removeBody(Body b) { removeIndexes(b); }
public bool isBodySharingAnyCell(Body body) { foreach (int i in body.gridIndex) { if (grid[i].Count == 0) continue; foreach (var cbd in grid[i].ToArray()) { if (cbd == body) continue; return true; } } return false; }
public List<Body> getAllBodiesSharingCellsWithBody(Body body) { var collidingBodies = new List<Body>(); foreach (int i in body.gridIndex) { if (grid[i].Count == 0) continue; foreach (var cbd in grid[i].ToArray()) { if (cbd == body) continue; collidingBodies.Add(cbd); } } return collidingBodies; }