24 #define GRID_BOUNDS_DEBUG 0 26 #define GRID_BOUNDS_DEBUG 1 102 #if GRID_BOUNDS_DEBUG 105 for (
int i=0; i <
m_H*
m_W; ++i)
109 void set(
int i,
int j,
const T& value)
111 #if GRID_BOUNDS_DEBUG 117 T&
get(
int i,
int j)
const 119 #if GRID_BOUNDS_DEBUG 140 enum { BucketBits = 4, BucketSize = 1 << BucketBits };
144 size_t b = (j >> BucketBits) * m_BW + (i >> BucketBits);
147 m_Data[b] =
new T[BucketSize*BucketSize];
148 memset(
m_Data[b], 0, BucketSize*BucketSize*
sizeof(
T));
158 m_BW = (
u16)((
m_W + BucketSize-1) >> BucketBits);
159 m_BH = (
u16)((
m_H + BucketSize-1) >> BucketBits);
162 memset(
m_Data, 0, m_BW*m_BH*
sizeof(
T*));
173 for (
size_t i = 0; i < (size_t)(m_BW*m_BH); ++i)
176 memset(
m_Data, 0, m_BW*m_BH*
sizeof(
T*));
179 void set(
int i,
int j,
const T& value)
181 #if GRID_BOUNDS_DEBUG 184 GetBucket(i, j)[(j % BucketSize)*BucketSize + (i % BucketSize)] = value;
189 #if GRID_BOUNDS_DEBUG 192 return GetBucket(i, j)[(j % BucketSize)*BucketSize + (i % BucketSize)];
229 globallyDirty =
false;
230 globalRecompute =
false;
231 dirtinessGrid.
reset();
235 #endif // INCLUDED_GRID void swap(Grid &g)
Definition: Grid.h:80
#define NONCOPYABLE(className)
Indicates that a class is noncopyable (usually due to const or reference members, or because the clas...
Definition: code_annotation.h:217
Grid & operator=(const Grid &g)
Definition: Grid.h:55
Similar to Grid, except optimised for sparse usage (the grid is subdivided into buckets whose content...
Definition: Grid.h:136
Grid()
Definition: Grid.h:38
uint16_t u16
Definition: types.h:38
u16 m_H
Definition: Grid.h:125
static void swap(UniqueRange &p1, UniqueRange &p2)
Definition: unique_range.h:198
Grid(u16 w, u16 h)
Definition: Grid.h:42
Basic 2D array, intended for storing tile data, plus support for lazy updates by ICmpObstructionManag...
Definition: ICmpPathfinder.h:34
size_t m_DirtyID
Definition: Grid.h:128
void reset()
Definition: Grid.h:171
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
Definition: debug.h:287
SparseGrid(u16 w, u16 h)
Definition: Grid.h:154
void reset()
Definition: Grid.h:93
~Grid()
Definition: Grid.h:88
~SparseGrid()
Definition: Grid.h:165
#define T(string_literal)
Definition: secure_crt.cpp:76
void add(const Grid &g)
Definition: Grid.h:100
u16 m_W
Definition: Grid.h:195
T * m_Data
Definition: Grid.h:126
T ** m_Data
Definition: Grid.h:197
u16 m_W
Definition: Grid.h:125
size_t m_DirtyID
Definition: Grid.h:199
Grid(const Grid &g)
Definition: Grid.h:49
u16 m_BW
Definition: Grid.h:196
T * GetBucket(int i, int j)
Definition: Grid.h:142