struct Nametag {
Nametag(scene::ISceneNode *a_parent_node,
const std::string &a_nametag_text,
- const video::SColor &a_nametag_color):
+ const video::SColor &a_nametag_color,
+ const v3f a_nametag_pos):
parent_node(a_parent_node),
nametag_text(a_nametag_text),
- nametag_color(a_nametag_color)
+ nametag_color(a_nametag_color),
+ nametag_pos(a_nametag_pos)
{
}
scene::ISceneNode *parent_node;
std::string nametag_text;
video::SColor nametag_color;
+ v3f nametag_pos;
};
enum CameraMode {CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT};
class Camera
{
public:
- Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
- Client *client);
+ Camera(MapDrawControl &draw_control, Client *client);
~Camera();
// Get camera scene node.
}
Nametag *addNametag(scene::ISceneNode *parent_node,
- std::string nametag_text, video::SColor nametag_color);
+ const std::string &nametag_text, video::SColor nametag_color,
+ const v3f &pos);
void removeNametag(Nametag *nametag);
void drawNametags();
+ inline void addArmInertia(f32 player_yaw);
+
private:
// Nodes
scene::ISceneNode *m_playernode = nullptr;
MapDrawControl& m_draw_control;
Client *m_client;
- video::IVideoDriver *m_driver;
// Absolute camera position
v3f m_camera_position;
// Camera offset
v3s16 m_camera_offset;
+ v2f m_wieldmesh_offset = v2f(55.0f, -35.0f);
+ v2f m_arm_dir;
+ v2f m_cam_vel;
+ v2f m_cam_vel_old;
+ v2f m_last_cam_pos;
+
// Field of view and aspect ratio stuff
f32 m_aspect = 1.0f;
f32 m_fov_x = 1.0f;
f32 m_cache_view_bobbing_amount;
f32 m_cache_fov;
f32 m_cache_zoom_fov;
+ bool m_arm_inertia;
std::list<Nametag *> m_nametags;
};