19 class GeneratorSystem;
20 class GeneratorSectorBuilder;
23 typedef Vec2i TilePos;
25 class InputTileContributionAtPos
28 friend class InputTileCache;
35 InputTileInfo() : m_sectorBuilder(
nullptr), m_inputTileBlob(
nullptr) {}
36 InputTileInfo(GeneratorSectorBuilder* sectorBuilder) : m_sectorBuilder(sectorBuilder), m_inputTileBlob(nullptr) {}
37 InputCellBlob* GetInputCellBlob(
const CellPos& cellPos)
const
39 KY_ASSERT(m_inputTileBlob !=
nullptr);
40 return m_inputTileBlob->GetInputCellBlob(cellPos);
43 GeneratorSectorBuilder* m_sectorBuilder;
44 InputTileBlob* m_inputTileBlob;
51 void Init(
KyUInt32 inputTileSizeInNbCells);
53 void AddCellContribution(
const CellPos& cellPos, GeneratorSectorBuilder* sectorBuilder);
55 const TilePos& GetTilePos()
const {
return m_tilePos; }
56 const CellBox& GetTileCellBox()
const {
return m_tileCellBox; }
59 void GetInputCellBlobsAtCellPos(
const CellPos& cellPos, KyArrayPOD<const InputCellBlob*>& inputCellBlob);
64 void ClearInputTileBlobs();
69 KyArray<InputTileInfo> m_inputTileInfos;
70 KyArray<KyArray<GeneratorSectorBuilder*> > m_contributingSectorRowMajorMatrix;
74 class InputTileCacheEntry
79 InputTileCacheEntry() : m_sectorBuilder(
nullptr) {}
81 bool operator==(
const InputTileCacheEntry& other)
83 return m_sectorBuilder == other.m_sectorBuilder
84 && m_tilePos == other.m_tilePos;
88 GeneratorSectorBuilder* m_sectorBuilder;
90 Ptr<BlobHandler<InputTileBlob> > m_inputTileBlobHandler;
102 InputTileCache(GeneratorSystem* sys,
KyUInt32 memoryLimitInMegaBytes = 100)
104 , m_memoryLimitInMegaBytes(memoryLimitInMegaBytes)
105 , m_currentMemoryUsageInMegaBytes(0)
108 KyResult Load(InputTileContributionAtPos& inputTileContributionAtPos);
113 InputTileBlob* Load(GeneratorSectorBuilder* sectorBuilder,
const TilePos& tilePos);
119 GeneratorSystem* m_sys;
121 KyUInt32 m_currentMemoryUsageInMegaBytes;
123 KyArray<InputTileCacheEntry> m_entries;
Box2i CellBox
A type that represents a bounding box around cells in a 2D grid.
Definition: navmeshtypes.h:31
Vec2i CellPos
A type that represents the position of a cell within a 2D grid.
Definition: navmeshtypes.h:30
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
std::int32_t KyInt32
int32_t
Definition: types.h:24