]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/camera.h
Log unhandled exceptions in connectionthreads to errorstream
[dragonfireclient.git] / src / camera.h
index 645b9355d572758d639a0d51f94c1f49240f5b71..8831257cc8c2df3b8d7bf51989785779203d31e8 100644 (file)
@@ -33,6 +33,8 @@ class LocalPlayer;
 struct MapDrawControl;
 class IGameDef;
 
+enum CameraMode {CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT};
+
 /*
        Client camera class, manages the player and camera scene nodes, the viewing distance
        and performs view bobbing etc. It also displays the wielded tool in front of the
@@ -115,8 +117,7 @@ class Camera
        // Update the camera from the local player's position.
        // busytime is used to adjust the viewing range.
        void update(LocalPlayer* player, f32 frametime, f32 busytime,
-                       v2u32 screensize, f32 tool_reload_ratio,
-                       int current_camera_mode, ClientEnvironment &c_env);
+                       f32 tool_reload_ratio, ClientEnvironment &c_env);
 
        // Render distance feedback loop
        void updateViewingRange(f32 frametime_in, f32 busytime_in);
@@ -131,11 +132,26 @@ class Camera
        // Draw the wielded tool.
        // This has to happen *after* the main scene is drawn.
        // Warning: This clears the Z buffer.
-       void drawWieldedTool();
+       void drawWieldedTool(irr::core::matrix4* translation=NULL);
+
+       // Toggle the current camera mode
+       void toggleCameraMode() {
+               if (m_camera_mode == CAMERA_MODE_FIRST)
+                       m_camera_mode = CAMERA_MODE_THIRD;
+               else if (m_camera_mode == CAMERA_MODE_THIRD)
+                       m_camera_mode = CAMERA_MODE_THIRD_FRONT;
+               else
+                       m_camera_mode = CAMERA_MODE_FIRST;
+       }
+
+       //read the current camera mode
+       inline CameraMode getCameraMode()
+       {
+               return m_camera_mode;
+       }
 
 private:
-       // Scene manager and nodes
-       scene::ISceneManager* m_smgr;
+       // Nodes
        scene::ISceneNode* m_playernode;
        scene::ISceneNode* m_headnode;
        scene::ICameraSceneNode* m_cameranode;
@@ -195,6 +211,8 @@ class Camera
        scene::IMesh *m_wield_mesh_next;
        u16 m_previous_playeritem;
        std::string m_previous_itemname;
+
+       CameraMode m_camera_mode;
 };
 
 #endif