+
+ void set_tracking_mode(unsigned int mode);
+ unsigned int get_tracking_mode() const;
+
+ void set_position(const Vec3 &p);
+ const Vec3 &get_position() const;
+
+ void set_body_rotation(float rot);
+ float get_body_rotation() const;
+ const Vec3 &get_body_fwd() const;
+ const Vec3 &get_body_right() const;
+
+ const Quat &get_head_rotation() const;
+
+ // set current head orientation when head-tracking
+ void tracked_head_rotation(const Quat &q);
+
+ // set current hand position/orientation when hand-tracking
+ void tracked_hand_position(int hand, const Vec3 &p);
+ void tracked_hand_rotation(int hand, const Quat &q);
+
+ // mouselook, or gamepad right-stick input
+ void mouselook(float horiz, float vert);
+
+ // calculate absolute walk direction based on forward and right
+ // magnituted, and the current mode and body orientation data
+ Vec3 calc_walk_dir(float fwd, float right) const;
+
+ // uses calc_walk_dir, then updates pos
+ void walk(float fwd, float right);