updates based on time not frame rate