add camera movement support
convert camera to using quaternions
move transform logic to own class