#ifndef OPENMB_APPS_OPENMB_SCENE_GRIDSYSTEM_H #define OPENMB_APPS_OPENMB_SCENE_GRIDSYSTEM_H #include namespace scene { class GridSystem { public: GridSystem(); ~GridSystem() = default; float getCellSize() const; float getFloorY() const; int getGridWidth() const; int getGridDepth() const; int getWallHeight() const; glm::vec3 gridToWorld( int gridX, int gridZ, float y ) const; glm::vec3 gridToWorldFloor( int gridX, int gridZ ) const; bool worldToGrid( const glm::vec3& worldPos, int& outGridX, int& outGridZ ) const; glm::vec3 getCellCenter( int gridX, int gridZ, int cellY ) const; float getMinWorldX() const; float getMaxWorldX() const; float getMinWorldZ() const; float getMaxWorldZ() const; float getHalfWidth() const; float getHalfDepth() const; float getFrontWallZ() const; float getBackWallZ() const; float getLeftWallX() const; float getRightWallX() const; float getWallMinY() const; float getWallMaxY() const; float getWallBaseY() const; private: float mCellSize; float mFloorY; int mGridWidth; int mGridDepth; int mWallHeight; }; } // namespace scene #endif