]> git.lizzy.rs Git - minetest.git/blob - src/client/render/core.h
Initialize wield mesh colors when changing item. (#12254)
[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 ShadowRenderer;
25 class Camera;
26 class Client;
27 class Hud;
28 class Minimap;
29
30 class RenderingCore
31 {
32 protected:
33         v2u32 screensize;
34         v2u32 virtual_size;
35         video::SColor skycolor;
36         bool show_hud;
37         bool show_minimap;
38         bool draw_wield_tool;
39         bool draw_crosshair;
40
41         IrrlichtDevice *device;
42         video::IVideoDriver *driver;
43         scene::ISceneManager *smgr;
44         gui::IGUIEnvironment *guienv;
45
46         Client *client;
47         Camera *camera;
48         Minimap *mapper;
49         Hud *hud;
50
51         ShadowRenderer *shadow_renderer;
52
53         void updateScreenSize();
54         virtual void initTextures() {}
55         virtual void clearTextures() {}
56
57         virtual void beforeDraw() {}
58         virtual void drawAll() = 0;
59
60         void draw3D();
61         void drawHUD();
62         void drawPostFx();
63
64 public:
65         RenderingCore(IrrlichtDevice *_device, Client *_client, Hud *_hud);
66         RenderingCore(const RenderingCore &) = delete;
67         RenderingCore(RenderingCore &&) = delete;
68         virtual ~RenderingCore();
69
70         RenderingCore &operator=(const RenderingCore &) = delete;
71         RenderingCore &operator=(RenderingCore &&) = delete;
72
73         void initialize();
74         void draw(video::SColor _skycolor, bool _show_hud, bool _show_minimap,
75                         bool _draw_wield_tool, bool _draw_crosshair);
76
77         inline v2u32 getVirtualSize() const { return virtual_size; }
78
79         ShadowRenderer *get_shadow_renderer() { return shadow_renderer; };
80 };