Beispiel #1
0
        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);
              }
        }
Beispiel #2
0
 public void addBody(Body b)
 {
     addIndex(b, getIndex1DVec(clampToGridVec(b.x, b.y)));
 }
Beispiel #3
0
 // changed from CellObject
 private void removeIndex(Body b, int _pos)
 {
     grid[_pos].Remove(b);
 }
Beispiel #4
0
 // 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();
 }
Beispiel #5
0
 private void addIndex(Body b, int _cellPos)
 {
     grid[_cellPos].Add(b);
       b.gridIndex.Add(_cellPos);
 }
Beispiel #6
0
 public void updateBody(Body b)
 {
     updateIndexes(b, aabbToGrid(b.aabb.min, b.aabb.max));
 }
Beispiel #7
0
 public void removeBody(Body b)
 {
     removeIndexes(b);
 }
Beispiel #8
0
        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;
        }
Beispiel #9
0
        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;
        }