added pulse-based rotation instead of camera shifting