diff options
Diffstat (limited to 'src/client/render')
-rw-r--r-- | src/client/render/core.cpp | 11 | ||||
-rw-r--r-- | src/client/render/core.h | 7 | ||||
-rw-r--r-- | src/client/render/factory.cpp | 16 | ||||
-rw-r--r-- | src/client/render/factory.h | 2 | ||||
-rw-r--r-- | src/client/render/interlaced.cpp | 4 | ||||
-rw-r--r-- | src/client/render/interlaced.h | 2 | ||||
-rw-r--r-- | src/client/render/plain.cpp | 4 | ||||
-rw-r--r-- | src/client/render/plain.h | 2 | ||||
-rw-r--r-- | src/client/render/sidebyside.cpp | 4 | ||||
-rw-r--r-- | src/client/render/sidebyside.h | 2 | ||||
-rw-r--r-- | src/client/render/stereo.cpp | 4 | ||||
-rw-r--r-- | src/client/render/stereo.h | 2 |
12 files changed, 34 insertions, 26 deletions
diff --git a/src/client/render/core.cpp b/src/client/render/core.cpp index 92a7137ea..3c5aa8eff 100644 --- a/src/client/render/core.cpp +++ b/src/client/render/core.cpp @@ -24,11 +24,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "client/clientmap.h" #include "client/hud.h" #include "client/minimap.h" +#include "gui/tracers.h" -RenderingCore::RenderingCore(IrrlichtDevice *_device, Client *_client, Hud *_hud) +RenderingCore::RenderingCore(IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers) : device(_device), driver(device->getVideoDriver()), smgr(device->getSceneManager()), guienv(device->getGUIEnvironment()), client(_client), camera(client->getCamera()), - mapper(client->getMinimap()), hud(_hud) + mapper(client->getMinimap()), hud(_hud), tracers(_tracers) { screensize = driver->getScreenSize(); virtual_size = screensize; @@ -53,7 +54,7 @@ void RenderingCore::updateScreenSize() } void RenderingCore::draw(video::SColor _skycolor, bool _show_hud, bool _show_minimap, - bool _draw_wield_tool, bool _draw_crosshair) + bool _draw_wield_tool, bool _draw_crosshair, bool _draw_tracers) { v2u32 ss = driver->getScreenSize(); if (screensize != ss) { @@ -65,6 +66,7 @@ void RenderingCore::draw(video::SColor _skycolor, bool _show_hud, bool _show_min show_minimap = _show_minimap; draw_wield_tool = _draw_wield_tool; draw_crosshair = _draw_crosshair; + draw_tracers = _draw_tracers; beforeDraw(); drawAll(); @@ -72,11 +74,14 @@ void RenderingCore::draw(video::SColor _skycolor, bool _show_hud, bool _show_min void RenderingCore::draw3D() { + smgr->drawAll(); driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); if (!show_hud) return; hud->drawSelectionMesh(); + if (draw_tracers) + tracers->draw(driver, client); if (draw_wield_tool) camera->drawWieldedTool(); } diff --git a/src/client/render/core.h b/src/client/render/core.h index 52ea8f99f..89c6a8511 100644 --- a/src/client/render/core.h +++ b/src/client/render/core.h @@ -25,6 +25,7 @@ class Camera; class Client; class Hud; class Minimap; +class Tracers; class RenderingCore { @@ -36,6 +37,7 @@ protected: bool show_minimap; bool draw_wield_tool; bool draw_crosshair; + bool draw_tracers; IrrlichtDevice *device; video::IVideoDriver *driver; @@ -46,6 +48,7 @@ protected: Camera *camera; Minimap *mapper; Hud *hud; + Tracers *tracers; void updateScreenSize(); virtual void initTextures() {} @@ -59,7 +62,7 @@ protected: void drawPostFx(); public: - RenderingCore(IrrlichtDevice *_device, Client *_client, Hud *_hud); + RenderingCore(IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers); RenderingCore(const RenderingCore &) = delete; RenderingCore(RenderingCore &&) = delete; virtual ~RenderingCore(); @@ -69,7 +72,7 @@ public: void initialize(); void draw(video::SColor _skycolor, bool _show_hud, bool _show_minimap, - bool _draw_wield_tool, bool _draw_crosshair); + bool _draw_wield_tool, bool _draw_crosshair, bool _draw_tracers); inline v2u32 getVirtualSize() const { return virtual_size; } }; diff --git a/src/client/render/factory.cpp b/src/client/render/factory.cpp index 30f9480fc..06376742d 100644 --- a/src/client/render/factory.cpp +++ b/src/client/render/factory.cpp @@ -27,23 +27,23 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "sidebyside.h" RenderingCore *createRenderingCore(const std::string &stereo_mode, IrrlichtDevice *device, - Client *client, Hud *hud) + Client *client, Hud *hud, Tracers *tracers) { if (stereo_mode == "none") - return new RenderingCorePlain(device, client, hud); + return new RenderingCorePlain(device, client, hud, tracers); if (stereo_mode == "anaglyph") - return new RenderingCoreAnaglyph(device, client, hud); + return new RenderingCoreAnaglyph(device, client, hud, tracers); if (stereo_mode == "interlaced") - return new RenderingCoreInterlaced(device, client, hud); + return new RenderingCoreInterlaced(device, client, hud, tracers); #ifdef STEREO_PAGEFLIP_SUPPORTED if (stereo_mode == "pageflip") - return new RenderingCorePageflip(device, client, hud); + return new RenderingCorePageflip(device, client, hud, tracers); #endif if (stereo_mode == "sidebyside") - return new RenderingCoreSideBySide(device, client, hud); + return new RenderingCoreSideBySide(device, client, hud, tracers); if (stereo_mode == "topbottom") - return new RenderingCoreSideBySide(device, client, hud, true); + return new RenderingCoreSideBySide(device, client, hud, tracers, true); if (stereo_mode == "crossview") - return new RenderingCoreSideBySide(device, client, hud, false, true); + return new RenderingCoreSideBySide(device, client, hud, tracers, false, true); throw std::invalid_argument("Invalid rendering mode: " + stereo_mode); } diff --git a/src/client/render/factory.h b/src/client/render/factory.h index e3339a836..cd1845bd2 100644 --- a/src/client/render/factory.h +++ b/src/client/render/factory.h @@ -24,4 +24,4 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "core.h" RenderingCore *createRenderingCore(const std::string &stereo_mode, IrrlichtDevice *device, - Client *client, Hud *hud); + Client *client, Hud *hud, Tracers *tracers); diff --git a/src/client/render/interlaced.cpp b/src/client/render/interlaced.cpp index 2aadadc17..ae9d0d358 100644 --- a/src/client/render/interlaced.cpp +++ b/src/client/render/interlaced.cpp @@ -24,8 +24,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "client/tile.h" RenderingCoreInterlaced::RenderingCoreInterlaced( - IrrlichtDevice *_device, Client *_client, Hud *_hud) - : RenderingCoreStereo(_device, _client, _hud) + IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers) + : RenderingCoreStereo(_device, _client, _hud, _tracers) { initMaterial(); } diff --git a/src/client/render/interlaced.h b/src/client/render/interlaced.h index 71815fd70..94ccc61f8 100644 --- a/src/client/render/interlaced.h +++ b/src/client/render/interlaced.h @@ -38,6 +38,6 @@ protected: void merge(); public: - RenderingCoreInterlaced(IrrlichtDevice *_device, Client *_client, Hud *_hud); + RenderingCoreInterlaced(IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers); void drawAll() override; }; diff --git a/src/client/render/plain.cpp b/src/client/render/plain.cpp index a130a14eb..f1966a4b2 100644 --- a/src/client/render/plain.cpp +++ b/src/client/render/plain.cpp @@ -27,8 +27,8 @@ inline u32 scaledown(u32 coef, u32 size) } RenderingCorePlain::RenderingCorePlain( - IrrlichtDevice *_device, Client *_client, Hud *_hud) - : RenderingCore(_device, _client, _hud) + IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers) + : RenderingCore(_device, _client, _hud, _tracers) { scale = g_settings->getU16("undersampling"); } diff --git a/src/client/render/plain.h b/src/client/render/plain.h index 80c17ed9f..afac62dee 100644 --- a/src/client/render/plain.h +++ b/src/client/render/plain.h @@ -33,6 +33,6 @@ protected: void upscale(); public: - RenderingCorePlain(IrrlichtDevice *_device, Client *_client, Hud *_hud); + RenderingCorePlain(IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers); void drawAll() override; }; diff --git a/src/client/render/sidebyside.cpp b/src/client/render/sidebyside.cpp index ed08810db..1b86fff3e 100644 --- a/src/client/render/sidebyside.cpp +++ b/src/client/render/sidebyside.cpp @@ -23,8 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "client/hud.h" RenderingCoreSideBySide::RenderingCoreSideBySide( - IrrlichtDevice *_device, Client *_client, Hud *_hud, bool _horizontal, bool _flipped) - : RenderingCoreStereo(_device, _client, _hud), horizontal(_horizontal), flipped(_flipped) + IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers, bool _horizontal, bool _flipped) + : RenderingCoreStereo(_device, _client, _hud, _tracers), horizontal(_horizontal), flipped(_flipped) { } diff --git a/src/client/render/sidebyside.h b/src/client/render/sidebyside.h index f8ed256b3..10c3919d1 100644 --- a/src/client/render/sidebyside.h +++ b/src/client/render/sidebyside.h @@ -37,7 +37,7 @@ protected: void resetEye() override; public: - RenderingCoreSideBySide(IrrlichtDevice *_device, Client *_client, Hud *_hud, + RenderingCoreSideBySide(IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers, bool _horizontal = false, bool _flipped = false); void drawAll() override; }; diff --git a/src/client/render/stereo.cpp b/src/client/render/stereo.cpp index 967b5a78f..d826eca59 100644 --- a/src/client/render/stereo.cpp +++ b/src/client/render/stereo.cpp @@ -24,8 +24,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "settings.h" RenderingCoreStereo::RenderingCoreStereo( - IrrlichtDevice *_device, Client *_client, Hud *_hud) - : RenderingCore(_device, _client, _hud) + IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers) + : RenderingCore(_device, _client, _hud, _tracers) { eye_offset = BS * g_settings->getFloat("3d_paralax_strength"); } diff --git a/src/client/render/stereo.h b/src/client/render/stereo.h index c8b07e146..3494f2512 100644 --- a/src/client/render/stereo.h +++ b/src/client/render/stereo.h @@ -34,5 +34,5 @@ protected: void renderBothImages(); public: - RenderingCoreStereo(IrrlichtDevice *_device, Client *_client, Hud *_hud); + RenderingCoreStereo(IrrlichtDevice *_device, Client *_client, Hud *_hud, Tracers *_tracers); }; |