public abstract void OnCollision(BaseShape other);
public override void OnCollision(BaseShape other) { throw new NotImplementedException(); }
public abstract bool CanOverlap(BaseShape other);