1
0

QtBiomeVisualiser: Added mouse hover info.

This commit is contained in:
Mattes D
2014-10-03 19:41:42 +02:00
parent f625b33d56
commit 0aa1b5667e
7 changed files with 228 additions and 147 deletions

View File

@@ -42,8 +42,9 @@ BiomeView::BiomeView(QWidget * parent) :
// Add a chunk-update callback mechanism:
connect(&m_Cache, SIGNAL(chunkAvailable(int, int)), this, SLOT(chunkAvailable(int, int)));
// Allow keyboard interaction:
// Allow mouse and keyboard interaction:
setFocusPolicy(Qt::StrongFocus);
setMouseTracking(true);
}
@@ -296,6 +297,12 @@ void BiomeView::mousePressEvent(QMouseEvent * a_Event)
void BiomeView::mouseMoveEvent(QMouseEvent * a_Event)
{
// If there's no data displayed, bail out:
if (!hasData())
{
return;
}
if (m_IsMouseDragging)
{
// The user is dragging the mouse, move the view around:
@@ -307,7 +314,15 @@ void BiomeView::mouseMoveEvent(QMouseEvent * a_Event)
return;
}
// TODO: Update the status bar info for the biome currently pointed at
// Update the status bar info text:
int blockX = floor((a_Event->x() - width() / 2) / m_Zoom + m_X);
int blockZ = floor((a_Event->y() - height() / 2) / m_Zoom + m_Z);
int chunkX, chunkZ;
int relX = blockX, relY, relZ = blockZ;
cChunkDef::AbsoluteToRelative(relX, relY, relZ, chunkX, chunkZ);
auto chunk = m_Cache.fetch(chunkX, chunkZ);
int biome = (chunk.get() != nullptr) ? chunk->getBiome(relX, relZ) : biInvalidBiome;
emit hoverChanged(blockX, blockZ, biome);
}