X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fminimap.h;h=63a0541ab1a2538982bec18d7a79116e61f58f71;hb=f231112cc4f0c1fe7f8bb937a49e4469157a2fa7;hp=c50530335082bcf80c45be4130af51b88e7d860f;hpb=e80a83d1cb9d01273ddca1c075c25cd01c291ca7;p=dragonfireclient.git diff --git a/src/minimap.h b/src/minimap.h index c50530335..63a0541ab 100644 --- a/src/minimap.h +++ b/src/minimap.h @@ -17,23 +17,22 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef MINIMAP_HEADER -#define MINIMAP_HEADER +#pragma once #include "irrlichttypes_extrabloated.h" -#include "client.h" +#include "util/thread.h" #include "voxel.h" -#include "threading/mutex.h" -#include "threading/semaphore.h" #include #include #include -#include "camera.h" + +class Client; +class ITextureSource; +class IShaderSource; #define MINIMAP_MAX_SX 512 #define MINIMAP_MAX_SY 512 - enum MinimapMode { MINIMAP_MODE_OFF, MINIMAP_MODE_SURFACEx1, @@ -64,7 +63,7 @@ struct MinimapPixel { }; struct MinimapMapblock { - void getMinimapNodes(VoxelManipulator *vmanip, v3s16 pos); + void getMinimapNodes(VoxelManipulator *vmanip, const v3s16 &pos); MinimapPixel data[MAP_BLOCKSIZE * MAP_BLOCKSIZE]; }; @@ -79,21 +78,19 @@ struct MinimapData { MinimapPixel minimap_scan[MINIMAP_MAX_SX * MINIMAP_MAX_SY]; bool map_invalidated; bool minimap_shape_round; - video::IImage *minimap_image; - video::IImage *heightmap_image; - video::IImage *minimap_mask_round; - video::IImage *minimap_mask_square; - video::ITexture *texture; - video::ITexture *heightmap_texture; - video::ITexture *minimap_overlay_round; - video::ITexture *minimap_overlay_square; - video::ITexture *player_marker; - video::ITexture *object_marker_red; + video::IImage *minimap_mask_round = nullptr; + video::IImage *minimap_mask_square = nullptr; + video::ITexture *texture = nullptr; + video::ITexture *heightmap_texture = nullptr; + video::ITexture *minimap_overlay_round = nullptr; + video::ITexture *minimap_overlay_square = nullptr; + video::ITexture *player_marker = nullptr; + video::ITexture *object_marker_red = nullptr; }; struct QueuedMinimapUpdate { v3s16 pos; - MinimapMapblock *data; + MinimapMapblock *data = nullptr; }; class MinimapUpdateThread : public UpdateThread { @@ -106,20 +103,20 @@ class MinimapUpdateThread : public UpdateThread { bool pushBlockUpdate(v3s16 pos, MinimapMapblock *data); bool popBlockUpdate(QueuedMinimapUpdate *update); - MinimapData *data; + MinimapData *data = nullptr; protected: virtual void doUpdate(); private: - Mutex m_queue_mutex; + std::mutex m_queue_mutex; std::deque m_update_queue; std::map m_blocks_cache; }; class Minimap { public: - Minimap(IrrlichtDevice *device, Client *client); + Minimap(Client *client); ~Minimap(); void addBlock(v3s16 pos, MinimapMapblock *data); @@ -161,8 +158,6 @@ class Minimap { bool m_enable_shaders; u16 m_surface_mode_scan_height; f32 m_angle; - Mutex m_mutex; + std::mutex m_mutex; std::list m_active_markers; }; - -#endif