You move an object however you like, checks whether the object ended up overlapping anything you registered as a solid and pushes out of it + support for Stepping and sliding on Walls
Push Out Example