Graphics/TileMap: Add support for isometric tilemaps

Former-commit-id: f89318c22ae2dcdab159f46dcfcbdb778af00ae6 [formerly 9912b85867bbb46cd785af9f3fe3a1dc72180149] [formerly a82344e574762f14805ea6c831a0a314cfe36a20 [formerly c234ec3cebd016381a38cd13f7d411511ae98164]]
Former-commit-id: d170f0897b77bf29f984a8ddf9e5b193d63a5e60 [formerly 54a8819656b3c626c1485dbf5ccc8f015ad005f4]
Former-commit-id: 0b0bf65c250219c29b27067b315a3735d8fbbd70
This commit is contained in:
Lynix
2016-09-19 13:07:55 +02:00
parent 48eb9ee3b5
commit e5218301b5
3 changed files with 40 additions and 2 deletions

View File

@@ -25,7 +25,8 @@ namespace Nz
m_tiles(mapSize.x * mapSize.y),
m_layers(materialCount),
m_mapSize(mapSize),
m_tileSize(tileSize)
m_tileSize(tileSize),
m_isometricModeEnabled(false)
{
NazaraAssert(m_tiles.size() != 0U, "Invalid map size");
NazaraAssert(m_tileSize.x != 0U && m_tileSize.y != 0U, "Invalid tile size");
@@ -108,6 +109,22 @@ namespace Nz
InvalidateInstanceData(invalidatedLayers);
}
/*!
* \brief Enable/Disable isometric mode
*
* If enabled, every odd line will overlap by half the tile size with the upper line
*
* \param isometric Should the isometric mode be enabled for this TileMap
*
* \see IsIsometricModeEnabled
*/
inline void TileMap::EnableIsometricMode(bool isometric)
{
m_isometricModeEnabled = isometric;
InvalidateInstanceData(0xFFFFFFFF);
}
/*!
* \brief Enable and sets the tile at position tilePos
*
@@ -387,6 +404,17 @@ namespace Nz
return m_tileSize;
}
/*!
* \brief Gets the actual state of the isometric mode
* \return True if the isometric mode is enabled
*
* \see EnableIsometricMode
*/
inline bool TileMap::IsIsometricModeEnabled() const
{
return m_isometricModeEnabled;
}
/*!
* \brief Sets a material of the TileMap
*