public void DetectCollision(IDynamicObject dynamic1)
        {
            foreach (IDynamicObject dynamic2 in Level.Instance.DynamicObjects)
            {
                // Make sure that dynamic1 is not the same object as dynamic2, and dynamic1 is on screen, and they're intersecting (might change second check to if the objects are near each other)
                if (dynamic1 != dynamic2 && Math.Abs(dynamic2.Position.X - Mario.Instance.Position.X) <= GameValues.CollisionManagerDetectCollisionMax && dynamic1.CollisionRectangle.Intersects(dynamic2.CollisionRectangle))
                {
                    dynamicCollisionStruct = CalculateCollisionDirection(dynamic1, dynamic2);

                    dynamic1.HandleDynamicCollision(dynamicCollisionStruct.firstObjectCollisionDirection, dynamic2);
                    dynamic2.HandleDynamicCollision(dynamicCollisionStruct.secondObjectCollisionDirection, dynamic1);
                }
            }

            foreach (IStaticObject staticObject in Level.Instance.StaticObjects)
            {
                if (dynamic1.CollisionRectangle.Intersects(staticObject.CollisionRectangle))
                {
                    staticCollisionStruct = CalculateCollisionDirection(dynamic1, staticObject);

                    dynamic1.HandleStaticCollision(staticCollisionStruct.firstObjectCollisionDirection, staticObject);
                }
            }
        }