This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
Indoor/grid/GridNode.h
2016-01-21 20:01:20 +01:00

47 lines
998 B
C++
Executable File

#ifndef GRIDNODE_H
#define GRIDNODE_H
#include "GridNodeBBox.h"
#include "GridPoint.h"
template<int, typename> class Grid;
/**
* INTERNAL DATASTRUCTURE
* this data-structure is internally used by the Grid
* to store additional information for each node besides
* the user's requested data-structure
*/
class GridNode {
template<int, typename> friend class Grid;
/** INTERNAL: array-index */
int _idx = -1;
/** INTERNAL: number of neighbors */
int _numNeighbors = 0;
/** INTERNAL: store neighbors (via index) */
int _neighbors[12] = {};
public:
GridNode() {;}
/** get the node's index within its grid */
int getIdx() const {return _idx;}
/** get the number of neighbors for this node */
int getNumNeighbors() const {return _numNeighbors;}
/** get the n-th neighbor for this node */
template <int gridSize_cm, typename T> inline T& getNeighbor(const int nth, const Grid<gridSize_cm, T>& grid) const {
return grid.getNeighbor(_idx, nth);
}
};
#endif // GRIDNODE_H