X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fclientmap.h;h=8402bb00d5d88e43fa56f99c7e8c394788a49a15;hb=644d0ab2bb44df8a3aefb387736930150b7d0aed;hp=cb686ff33c9ee4857290b2a8c5ff8db0e0fc2341;hpb=5dc61988788e44bc87e8c57c0beded97d4efdf05;p=oweals%2Fminetest.git diff --git a/src/clientmap.h b/src/clientmap.h index cb686ff33..8402bb00d 100644 --- a/src/clientmap.h +++ b/src/clientmap.h @@ -17,8 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef CLIENTMAP_HEADER -#define CLIENTMAP_HEADER +#pragma once #include "irrlichttypes_extrabloated.h" #include "map.h" @@ -28,30 +27,14 @@ with this program; if not, write to the Free Software Foundation, Inc., struct MapDrawControl { - MapDrawControl(): - range_all(false), - wanted_range(0), - wanted_max_blocks(0), - show_wireframe(false), - blocks_drawn(0), - blocks_would_have_drawn(0), - farthest_drawn(0) - { - } // Overrides limits by drawing everything - bool range_all; + bool range_all = false; // Wanted drawing range - float wanted_range; + float wanted_range = 0.0f; // Maximum number of blocks to draw - u32 wanted_max_blocks; + u32 wanted_max_blocks = 0; // show a wire frame for debugging - bool show_wireframe; - // Number of blocks rendered is written here by the renderer - u32 blocks_drawn; - // Number of blocks that would have been drawn in wanted_range - u32 blocks_would_have_drawn; - // Distance to the farthest block drawn - float farthest_drawn; + bool show_wireframe = false; }; class Client; @@ -59,7 +42,7 @@ class ITextureSource; /* ClientMap - + This is the only map class that is able to render itself on screen. */ @@ -68,14 +51,11 @@ class ClientMap : public Map, public scene::ISceneNode public: ClientMap( Client *client, - IGameDef *gamedef, MapDrawControl &control, - scene::ISceneNode* parent, - scene::ISceneManager* mgr, s32 id ); - ~ClientMap(); + virtual ~ClientMap() = default; s32 mapType() const { @@ -87,7 +67,7 @@ public: ISceneNode::drop(); } - void updateCamera(v3f pos, v3f dir, f32 fov, v3s16 offset) + void updateCamera(const v3f &pos, const v3f &dir, f32 fov, const v3s16 &offset) { m_camera_position = pos; m_camera_direction = dir; @@ -114,15 +94,15 @@ public: driver->setTransform(video::ETS_WORLD, AbsoluteTransformation); renderMap(driver, SceneManager->getSceneNodeRenderPass()); } - + virtual const aabb3f &getBoundingBox() const { return m_box; } - - void getBlocksInViewRange(v3s16 cam_pos_nodes, + + void getBlocksInViewRange(v3s16 cam_pos_nodes, v3s16 *p_blocks_min, v3s16 *p_blocks_max); - void updateDrawList(video::IVideoDriver* driver); + void updateDrawList(); void renderMap(video::IVideoDriver* driver, s32 pass); int getBackgroundBrightness(float max_d, u32 daylight_factor, @@ -132,35 +112,27 @@ public: // For debug printing virtual void PrintInfo(std::ostream &out); - - // Check if sector was drawn on last render() - bool sectorWasDrawn(v2s16 p) - { - return (m_last_drawn_sectors.find(p) != m_last_drawn_sectors.end()); - } const MapDrawControl & getControl() const { return m_control; } f32 getCameraFov() const { return m_camera_fov; } private: Client *m_client; - - aabb3f m_box; - + + aabb3f m_box = aabb3f(-BS * 1000000, -BS * 1000000, -BS * 1000000, + BS * 1000000, BS * 1000000, BS * 1000000); + MapDrawControl &m_control; - v3f m_camera_position; - v3f m_camera_direction; - f32 m_camera_fov; + v3f m_camera_position = v3f(0,0,0); + v3f m_camera_direction = v3f(0,0,1); + f32 m_camera_fov = M_PI; v3s16 m_camera_offset; std::map m_drawlist; - + std::set m_last_drawn_sectors; bool m_cache_trilinear_filter; bool m_cache_bilinear_filter; bool m_cache_anistropic_filter; }; - -#endif -