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