Add input events and refactor 3D Vector template class to be used as 3D point also

Signed-off-by: MHesham <mhesham.fcis@gmail.com>