]> git.lizzy.rs Git - minetest.git/blob - src/client/render/core.h
Render copyright notice: Fix name spelling (#7042)
[minetest.git] / src / client / render / core.h
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();
51         virtual void initTextures() {}
52         virtual void clearTextures() {}
53
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
74         inline v2u32 getVirtualSize() const { return virtual_size; }
75 };