4#include <unordered_map>
97 float tileWidth,
float tileHeight,
int numLayers = 1,
165 std::vector<std::vector<std::vector<TileProperties>>>
m_layers;
201 float tileWidth,
float tileHeight,
int numLayers = 1);
ComponentTypeID GetComponentTypeID_Static()
void LoadSector(int sectorX, int sectorY)
std::vector< std::vector< std::vector< TileProperties > > > m_layers
static const TileProperties s_emptyTile
void GridToWorld(int gridX, int gridY, float &outWorldX, float &outWorldY) const
void SetActiveLayer(CollisionLayer layer)
const TileProperties & GetTileProperties(int x, int y) const
CollisionLayer GetActiveLayer() const
void RegisterSector(int sectorX, int sectorY, int width, int height)
float GetTileHeight() const
CollisionLayer m_activeLayer
float GetTileWidth() const
void SetCollision(int x, int y, bool hasCollision)
void UpdateTileState(int x, int y, TileUpdateFunc updateFunc)
GridProjectionType GetProjection() const
const std::vector< std::vector< TileProperties > > & GetLayer(CollisionLayer layer) const
bool IsValidGridPosition(int x, int y) const
std::vector< Sector > m_sectors
void SetTileProperties(int x, int y, const TileProperties &props)
std::function< void(TileProperties &)> TileUpdateFunc
CollisionMap & operator=(const CollisionMap &)=delete
bool HasCollision(int x, int y) const
void Initialize(int width, int height, GridProjectionType projection, float tileWidth, float tileHeight, int numLayers=1, float tileOffsetX=0.0f, float tileOffsetY=0.0f)
GridProjectionType m_projection
void UnloadSector(int sectorX, int sectorY)
static CollisionMap & Get()
const std::vector< Sector > & GetSectors() const
void WorldToGrid(float worldX, float worldY, int &outGridX, int &outGridY) const
CollisionMap(const CollisionMap &)=delete
NavigationMap(const NavigationMap &)=delete
NavigationMap & operator=(const NavigationMap &)=delete
bool FindPath(int startX, int startY, int goalX, int goalY, std::vector< Vector > &outPath, CollisionLayer layer=CollisionLayer::Ground, int maxIterations=10000)
CollisionLayer GetActiveLayer() const
void WorldToGrid(float worldX, float worldY, int &outGridX, int &outGridY) const
void SetNavigable(int x, int y, bool isNavigable, float cost=1.0f)
bool GetRandomNavigablePoint(float centerX, float centerY, float radius, int maxAttempts, float &outX, float &outY, CollisionLayer layer=CollisionLayer::Ground) const
static NavigationMap & Get()
float Heuristic(int x1, int y1, int x2, int y2) const
float GetTraversalCost(int x, int y) const
bool IsValidGridPosition(int x, int y) const
CollisionLayer m_activeLayer
void Initialize(int width, int height, GridProjectionType projection, float tileWidth, float tileHeight, int numLayers=1)
bool IsNavigable(int x, int y) const
GridProjectionType GetProjection() const
void SetActiveLayer(CollisionLayer layer)
void GetNeighbors(int x, int y, std::vector< std::pair< int, int > > &outNeighbors) const
void GridToWorld(int gridX, int gridY, float &outWorldX, float &outWorldY) const
GridProjectionType m_projection
std::string onDestroyedState