public EStateType Update(float in_time) { float cur_velocity = _owner.GetCameraVelocity().magnitude; float deceleration = _owner.GetCameraDeceleration(); float break_distance = -(cur_velocity * cur_velocity) / (2 * deceleration); Debug.Log(string.Format("ACCELERATE: Break distance = {0}, Current Camera Velocity = {1}, Current Point Velocity = {2}, Distance Between Camera and Point = {3}", break_distance, cur_velocity, _owner.GetPointVelocity().magnitude, _owner.GetVectorBetweenCameraAndPoint().magnitude)); if (break_distance < _owner.GetVectorBetweenCameraAndPoint().magnitude) { return(EStateType.Accelerate); } else { Debug.Log(string.Format("GO TO GETSLOW; Distance = {0}", _owner.GetVectorBetweenCameraAndPoint().magnitude)); return(EStateType.GetSlow); } }