Пример #1
0
 public Vector2 CheckCollision(World world, GeometryType ignore)
 {
     float xMove = 0;
     GeometryBox collisionBox = new GeometryBox();
     collisionBox.rect = _bbox;
     if (world.Collides(_bbox, ignore, collisionBox, out collisionBox)) {
         xMove = 5 * Math.Sign(_bbox.X - collisionBox.rect.X);
     }
     _position += new Vector2(xMove, 0);
     _bbox.X += (int)xMove;
     return new Vector2(xMove, 0);
 }
Пример #2
0
 public int Register(Rectangle rect, GeometryType type = GeometryType.None)
 {
     var box = new GeometryBox();
     box.rect = rect;
     box.type = type;
     _geometry.Add(box);
     return _geometry.Count - 1;
 }
Пример #3
0
 public bool Collides(Rectangle rect, GeometryType ignore, GeometryBox c, out GeometryBox collision)
 {
     collision = c;
     foreach (var r in _geometry) {
         if (rect.Intersects(r.rect) && r.type != ignore) {
             collision = r;
             return true;
         }
     }
     return false;
 }