diff --git a/Engine/Src/Imp/CPP/Components/TileMapComponent.cpp b/Engine/Src/Imp/CPP/Components/TileMapComponent.cpp index b1b6815..683b277 100644 --- a/Engine/Src/Imp/CPP/Components/TileMapComponent.cpp +++ b/Engine/Src/Imp/CPP/Components/TileMapComponent.cpp @@ -43,7 +43,7 @@ namespace ia::iae TextureComponent::FixedUpdate(); } - VOID TileMapComponent::Setup(IN InitializerList tileDescs, IN INT32 tileWidth, IN INT32 tileHeight, + VOID TileMapComponent::Setup(IN CONST Vector &tileDescs, IN INT32 tileWidth, IN INT32 tileHeight, IN INT32 tileCountX, IN INT32 tileCountY) { Vector textures; @@ -57,12 +57,17 @@ namespace ia::iae m_tileEntries.reserve(tileDescs.size()); for (const auto &td : tileDescs) { - const auto tileSet = (TileSet*)Engine::GetTileSet(td.TileSetName); - textures.pushBack(tileSet->GetTileTexture(td.TileIndex)); + if (td.TileTexture != INVALID_HANDLE) + textures.pushBack(td.TileTexture); + else + { + const auto tileSet = (TileSet *) Engine::GetTileSet(td.TileSetName); + textures.pushBack(tileSet->GetTileTexture(td.TileIndex)); + } m_tileEntries.pushBack(TileEntry{.IsWalkable = td.IsWalkable}); } - if(m_mapTexture != INVALID_HANDLE) + if (m_mapTexture != INVALID_HANDLE) Engine::DestroyImage(m_mapTexture); m_mapTexture = Engine::CombineImages(textures, m_tileWidth, m_tileHeight, m_tileCountX, m_tileCountY); SetTexture(m_mapTexture); @@ -70,11 +75,13 @@ namespace ia::iae BOOL TileMapComponent::CanWalkX(IN Vec2 pixelPosition, IN FLOAT32 d) { - return true; + const auto p = pixelPosition.x + d; + return GetTileEntry((INT32)(p/m_tileWidth), (INT32)(pixelPosition.y/m_tileHeight)).IsWalkable; } BOOL TileMapComponent::CanWalkY(IN Vec2 pixelPosition, IN FLOAT32 d) { - return true; + const auto p = pixelPosition.y + d; + return GetTileEntry((INT32)(pixelPosition.x/m_tileWidth), (INT32)(p/m_tileHeight)).IsWalkable; } } // namespace ia::iae \ No newline at end of file diff --git a/Engine/Src/Inc/IAEngine/Components/TileMapComponent.hpp b/Engine/Src/Inc/IAEngine/Components/TileMapComponent.hpp index 4e55535..2e1cd8a 100644 --- a/Engine/Src/Inc/IAEngine/Components/TileMapComponent.hpp +++ b/Engine/Src/Inc/IAEngine/Components/TileMapComponent.hpp @@ -34,6 +34,7 @@ namespace ia::iae BOOL IsWalkable{}; INT32 TileIndex{}; String TileSetName{}; + Handle TileTexture{INVALID_HANDLE}; }; public: @@ -50,7 +51,7 @@ namespace ia::iae VIRTUAL VOID FixedUpdate(); public: - VOID Setup(IN InitializerList tileDescs, + VOID Setup(IN CONST Vector& tileDescs, IN INT32 tileWidth, IN INT32 tileHeight, IN INT32 tileCountX, IN INT32 tileCountY); TileEntry &GetTileEntry(IN INT32 index)