projects
/
oweals
/
minetest.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Node highlighting.
[oweals/minetest.git]
/
src
/
drawscene.cpp
diff --git
a/src/drawscene.cpp
b/src/drawscene.cpp
index 491101563cbe72a95a74c9c6c5b5a5cd6d578b67..08b08990830adebd0f05edbed4550517778b01e9 100644
(file)
--- a/
src/drawscene.cpp
+++ b/
src/drawscene.cpp
@@
-21,6
+21,7
@@
with this program; if not, write to the Free Software Foundation, Inc.,
#include "main.h" // for g_settings
#include "settings.h"
#include "clouds.h"
#include "main.h" // for g_settings
#include "settings.h"
#include "clouds.h"
+#include "clientmap.h"
#include "util/timetaker.h"
typedef enum {
#include "util/timetaker.h"
typedef enum {
@@
-130,18
+131,12
@@
void draw_anaglyph_3d_mode(Camera& camera, bool show_hud, Hud& hud,
void init_texture(video::IVideoDriver* driver, const v2u32& screensize,
video::ITexture** texture)
{
void init_texture(video::IVideoDriver* driver, const v2u32& screensize,
video::ITexture** texture)
{
- static v2u32 last_screensize = v2u32(0,0);
-
- if (( *texture == NULL ) || (screensize != last_screensize))
+ if (*texture != NULL)
{
{
- if (*texture != NULL)
- {
- driver->removeTexture(*texture);
- }
- *texture = driver->addRenderTargetTexture(
- core::dimension2d<u32>(screensize.X, screensize.Y));
- last_screensize = screensize;
+ driver->removeTexture(*texture);
}
}
+ *texture = driver->addRenderTargetTexture(
+ core::dimension2d<u32>(screensize.X, screensize.Y));
}
video::ITexture* draw_image(const v2u32& screensize,
}
video::ITexture* draw_image(const v2u32& screensize,
@@
-153,16
+148,16
@@
video::ITexture* draw_image(const v2u32& screensize,
video::SColor skycolor )
{
static video::ITexture* images[2] = { NULL, NULL };
video::SColor skycolor )
{
static video::ITexture* images[2] = { NULL, NULL };
+ static v2u32 last_screensize = v2u32(0,0);
video::ITexture* image = NULL;
video::ITexture* image = NULL;
- if (psign == RIGHT)
- {
+ if (screensize != last_screensize) {
init_texture(driver, screensize, &images[1]);
image = images[1];
init_texture(driver, screensize, &images[1]);
image = images[1];
- } else {
init_texture(driver, screensize, &images[0]);
image = images[0];
init_texture(driver, screensize, &images[0]);
image = images[0];
+ last_screensize = screensize;
}
driver->setRenderTarget(image, true, true,
}
driver->setRenderTarget(image, true, true,
@@
-274,7
+269,11
@@
void draw_interlaced_3d_mode(Camera& camera, bool show_hud,
guienv->drawAll();
for (unsigned int i = 0; i < screensize.Y; i+=2 ) {
guienv->drawAll();
for (unsigned int i = 0; i < screensize.Y; i+=2 ) {
+#if (IRRLICHT_VERSION_MAJOR >= 1) && (IRRLICHT_VERSION_MINOR >= 8)
+ driver->draw2DImage(left_image, irr::core::position2d<s32>(0, i),
+#else
driver->draw2DImage(left_image, irr::core::position2d<s32>(0, screensize.Y-i),
driver->draw2DImage(left_image, irr::core::position2d<s32>(0, screensize.Y-i),
+#endif
irr::core::rect<s32>(0, i,screensize.X, i+1), 0,
irr::video::SColor(255, 255, 255, 255),
false);
irr::core::rect<s32>(0, i,screensize.X, i+1), 0,
irr::video::SColor(255, 255, 255, 255),
false);
@@
-401,6
+400,7
@@
void draw_plain(Camera& camera, bool show_hud, Hud& hud,
std::vector<aabb3f> hilightboxes, video::IVideoDriver* driver,
bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv)
{
std::vector<aabb3f> hilightboxes, video::IVideoDriver* driver,
bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv)
{
+ driver->setTransform(video::ETS_WORLD, core::IdentityMatrix);
draw_selectionbox(driver, hud, hilightboxes, show_hud);
draw_selectionbox(driver, hud, hilightboxes, show_hud);
@@
-425,6
+425,13
@@
void draw_scene(video::IVideoDriver* driver, scene::ISceneManager* smgr,
bool draw_crosshair = ((player->hud_flags & HUD_FLAG_CROSSHAIR_VISIBLE) &&
(camera.getCameraMode() != CAMERA_MODE_THIRD_FRONT));
bool draw_crosshair = ((player->hud_flags & HUD_FLAG_CROSSHAIR_VISIBLE) &&
(camera.getCameraMode() != CAMERA_MODE_THIRD_FRONT));
+#ifdef HAVE_TOUCHSCREENGUI
+ try {
+ draw_crosshair = !g_settings->getBool("touchtarget");
+ }
+ catch(SettingNotFoundException) {}
+#endif
+
std::string draw_mode = g_settings->get("3d_mode");
smgr->drawAll();
std::string draw_mode = g_settings->get("3d_mode");
smgr->drawAll();
@@
-457,6
+464,14
@@
void draw_scene(video::IVideoDriver* driver, scene::ISceneManager* smgr,
draw_plain(camera, show_hud, hud, hilightboxes, driver,
draw_wield_tool, client, guienv);
}
draw_plain(camera, show_hud, hud, hilightboxes, driver,
draw_wield_tool, client, guienv);
}
+
+ /*
+ Post effects
+ */
+ {
+ client.getEnv().getClientMap().renderPostFx(camera.getCameraMode());
+ }
+
//TODO how to make those 3d too
if (show_hud)
{
//TODO how to make those 3d too
if (show_hud)
{
@@
-464,10
+479,10
@@
void draw_scene(video::IVideoDriver* driver, scene::ISceneManager* smgr,
hud.drawCrosshair();
hud.drawHotbar(client.getPlayerItem());
hud.drawLuaElements(camera.getOffset());
hud.drawCrosshair();
hud.drawHotbar(client.getPlayerItem());
hud.drawLuaElements(camera.getOffset());
-
- guienv->drawAll();
}
}
+ guienv->drawAll();
+
scenetime = timer.stop(true);
}
scenetime = timer.stop(true);
}