From 5be190b5a162a21c6869ac426a39f74778fb9491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bend=C3=ADk?= Date: Sat, 25 Aug 2012 13:27:40 +0200 Subject: [PATCH] Removed bad shadows. --- PixelAttributes.cpp | 5 +++++ PixelAttributes.h | 6 +++++- TileGenerator.cpp | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/PixelAttributes.cpp b/PixelAttributes.cpp index b610619..df9614b 100644 --- a/PixelAttributes.cpp +++ b/PixelAttributes.cpp @@ -8,7 +8,9 @@ */ #include "PixelAttributes.h" +#include +using namespace std; PixelAttributes::PixelAttributes() { @@ -25,5 +27,8 @@ void PixelAttributes::setWidth(int width) void PixelAttributes::scroll() { m_blockPixelAttributes[17] = m_blockPixelAttributes[1]; + for (size_t i = 1; i < 17; ++i) { + fill(m_blockPixelAttributes[i].begin(), m_blockPixelAttributes[i].end(), PixelAttribute()); + } } diff --git a/PixelAttributes.h b/PixelAttributes.h index 2029450..acdea1f 100644 --- a/PixelAttributes.h +++ b/PixelAttributes.h @@ -10,11 +10,15 @@ #ifndef PIXELATTRIBUTES_H_ADZ35GYF #define PIXELATTRIBUTES_H_ADZ35GYF +#include #include struct PixelAttribute { - PixelAttribute(): height(0) {}; + PixelAttribute(): height(std::numeric_limits::min()) {}; int height; + inline bool valid_height() { + return height != std::numeric_limits::min(); + } }; class PixelAttributes diff --git a/TileGenerator.cpp b/TileGenerator.cpp index 827b9fc..da4572a 100644 --- a/TileGenerator.cpp +++ b/TileGenerator.cpp @@ -475,6 +475,9 @@ inline void TileGenerator::renderShading(int zPos) continue; } for (int x = 0; x < m_mapWidth; ++x) { + if (!m_blockPixelAttributes.attribute(z, x).valid_height() || !m_blockPixelAttributes.attribute(z, x - 1).valid_height() || !m_blockPixelAttributes.attribute(z - 1, x).valid_height()) { + continue; + } int y = m_blockPixelAttributes.attribute(z, x).height; int y1 = m_blockPixelAttributes.attribute(z, x - 1).height; int y2 = m_blockPixelAttributes.attribute(z - 1, x).height;