Implemented Part 3

Todo: Fix raycasting on part 1 2 and 3 (make it more accurate).
and optimize