X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fclientmap.h;h=91f58a70c5dbd125e59efb92247437b1f5946bb4;hb=86a0f5603b9e936b8527ae22c4aeaf5714c9d279;hp=aead670c11590cf06e513b9296e35b4562687c62;hpb=58bed83d03bbe53f8286640fbc33043800e1c318;p=oweals%2Fminetest.git diff --git a/src/clientmap.h b/src/clientmap.h index aead670c1..91f58a70c 100644 --- a/src/clientmap.h +++ b/src/clientmap.h @@ -1,18 +1,18 @@ /* -Minetest-c55 -Copyright (C) 2010-2012 celeron55, Perttu Ahola +Minetest +Copyright (C) 2010-2013 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU Lesser General Public License for more details. -You should have received a copy of the GNU General Public License along +You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ @@ -20,8 +20,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef CLIENTMAP_HEADER #define CLIENTMAP_HEADER -#include "common_irrlicht.h" +#include "irrlichttypes_extrabloated.h" #include "map.h" +#include "camera.h" +#include +#include struct MapDrawControl { @@ -31,7 +34,8 @@ struct MapDrawControl wanted_max_blocks(0), wanted_min_range(0), blocks_drawn(0), - blocks_would_have_drawn(0) + blocks_would_have_drawn(0), + farthest_drawn(0) { } // Overrides limits by drawing everything @@ -46,6 +50,8 @@ struct MapDrawControl 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; }; class Client; @@ -81,12 +87,13 @@ public: ISceneNode::drop(); } - void updateCamera(v3f pos, v3f dir, f32 fov) + void updateCamera(v3f pos, v3f dir, f32 fov, v3s16 offset) { JMutexAutoLock lock(m_camera_mutex); m_camera_position = pos; m_camera_direction = dir; m_camera_fov = fov; + m_camera_offset = offset; } /* @@ -113,10 +120,14 @@ public: { return m_box; } - + + void updateDrawList(video::IVideoDriver* driver); void renderMap(video::IVideoDriver* driver, s32 pass); - void renderPostFx(); + int getBackgroundBrightness(float max_d, u32 daylight_factor, + int oldvalue, bool *sunlight_seen_result); + + void renderPostFx(CameraMode cam_mode); // For debug printing virtual void PrintInfo(std::ostream &out); @@ -124,7 +135,7 @@ public: // Check if sector was drawn on last render() bool sectorWasDrawn(v2s16 p) { - return (m_last_drawn_sectors.find(p) != NULL); + return (m_last_drawn_sectors.find(p) != m_last_drawn_sectors.end()); } private: @@ -137,9 +148,12 @@ private: v3f m_camera_position; v3f m_camera_direction; f32 m_camera_fov; + v3s16 m_camera_offset; JMutex m_camera_mutex; + + std::map m_drawlist; - core::map m_last_drawn_sectors; + std::set m_last_drawn_sectors; }; #endif