1 /* 2 Minetest 3 Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com> 4 Copyright (C) 2017 numzero, Lobachevskiy Vitaliy <numzer0@yandex.ru> 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU Lesser General Public License as published by 8 the Free Software Foundation; either version 2.1 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public License along 17 with this program; if not, write to the Free Software Foundation, Inc., 18 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 */ 20 21 #pragma once 22 #include "irrlichttypes_extrabloated.h" 23 24 class Camera; 25 class Client; 26 class Hud; 27 class Minimap; 28 29 class RenderingCore 30 { 31 protected: 32 v2u32 screensize; 33 v2u32 virtual_size; 34 video::SColor skycolor; 35 bool show_hud; 36 bool show_minimap; 37 bool draw_wield_tool; 38 bool draw_crosshair; 39 40 IrrlichtDevice *device; 41 video::IVideoDriver *driver; 42 scene::ISceneManager *smgr; 43 gui::IGUIEnvironment *guienv; 44 45 Client *client; 46 Camera *camera; 47 Minimap *mapper; 48 Hud *hud; 49 50 void updateScreenSize(); initTextures()51 virtual void initTextures() {} clearTextures()52 virtual void clearTextures() {} 53 beforeDraw()54 virtual void beforeDraw() {} 55 virtual void drawAll() = 0; 56 57 void draw3D(); 58 void drawHUD(); 59 void drawPostFx(); 60 61 public: 62 RenderingCore(IrrlichtDevice *_device, Client *_client, Hud *_hud); 63 RenderingCore(const RenderingCore &) = delete; 64 RenderingCore(RenderingCore &&) = delete; 65 virtual ~RenderingCore(); 66 67 RenderingCore &operator=(const RenderingCore &) = delete; 68 RenderingCore &operator=(RenderingCore &&) = delete; 69 70 void initialize(); 71 void draw(video::SColor _skycolor, bool _show_hud, bool _show_minimap, 72 bool _draw_wield_tool, bool _draw_crosshair); 73 getVirtualSize()74 inline v2u32 getVirtualSize() const { return virtual_size; } 75 }; 76