public bool CheckAndResolveStaticTileStaticTileCollision(Tile obj1, Tile obj2, double px, double py, double dx, double dy,
                                                        out Vector obj1PosDp, out Vector obj1CollDirection,
                                                        out Vector obj2PosDp, out Vector obj2CollDirection)
        {
            Circle circle = (Circle)obj1;
            Rectangle rec = (Rectangle)obj2;

            double gridVert = 0;
            double gridHorz = 0;

            if (dx < (obj2.XW * -1))
            {
                gridHorz = -1; //circle1 is on left side of circle2
            }
            else if (obj2.XW < dx)
            {
                gridHorz = 1; //circle1 is on right side of circle2
            }

            if (dy < (obj2.YW * -1))
            {
                gridVert = -1; //circle1 is on top side of circle2
            }
            else if (obj2.YW < dy)
            {
                gridVert = 1; //circle1 is on bottom side of circle2
            }

            return CollisionDetection.ProjCircleRec(circle, rec, px, py, gridHorz, gridVert,
                  out obj1PosDp, out obj1CollDirection, out obj2PosDp, out obj2CollDirection);
        }
        private _2D.Speed _speed = new _2D.Speed(new _2D.Vector(0,0), new TimeSpan(1)); //distance over time

        #endregion Fields

        #region Constructors

        public Collidable2DBase(Tile[] objects)
        {
            _objects = new List<Tile>(objects);
        }