Added all necessary classes, and camera fixes
Some minor debug and code improvements
Safety check
Redesigned the way raycasts are done
Revert "Redesigned the way raycasts are done"

This reverts commit 27627908d9e384d7f2f3b604e351095a4988eabf.
Revert "Revert "Redesigned the way raycasts are done""

This reverts commit c221f4ec31509e8ed76de7ba4597d14626a0a3bf.
Again redesigned raycasts according to class