20 class GeneratorSystem;
21 class SingleStagePixel;
26 class DynamicRasterCell
33 const GeneratorParameters& config, const CellDesc& cellDesc,
34 const KyArrayPOD<const InputCellBlob*>* inputCells,
35 const KyArrayTLS_POD<const NavTag*>* navTagArray,
37 const PixelBox* modifiedPixelBox =
nullptr);
39 void Setup(const GeneratorParameters& config, const CellDesc& cellDesc,
40 const KyArrayPOD<const InputCellBlob*>* inputCells,
KyFloat32 rasterPrecision, const PixelBox& pixelBox);
49 void PushPixelToLocal(const PixelPos& localPixelPos, const SingleStagePixel& pixel,
KyUInt32 navTagIdx);
52 void PushPixel(
KyInt32 rowMajorIdx, const SingleStagePixel& pixel,
KyUInt32 navTagIdx,
KyUInt32 ownerIdx = KyUInt32MAXVAL);
59 const BoxOfArrays<
KyFloat32>::Column& GetFinalColumnFromLocal(const PixelPos& localPixelPos) const;
62 const BoxOfArrays<
KyFloat32>::Column& GetFinalColumn(const PixelPos& pixelPos) const;
65 const BoxOfArrays<
KyUInt32>::Column& GetFinalNavTagColumnFromLocal(const PixelPos& localPixelPos) const;
68 const BoxOfArrays<
KyUInt32>::Column& GetFinalNavTagIndicesColumn(const PixelPos& pixelPos) const;
71 KyResult WriteIntermediateRasterFile(GeneratorSystem* system) const;
73 bool IsEmpty()
const {
return m_isEmpty; }
74 bool AreAllInputCellsOverlapping()
const {
return m_inputCells->GetCount() == 1 || m_areAllInputCellsOverlapping; }
75 bool HasMultipleNavTags()
const {
return m_hasMultipleNavTags; }
77 void SetHasMultipleNavTags(
bool hasMultipleNavTags) { m_hasMultipleNavTags = hasMultipleNavTags; }
79 const PixelBox& GetPixelBox()
const {
return m_pixelBox; }
80 const CellDesc& GetCellDesc()
const {
return m_cellDesc; }
82 const BoxOfArrays<KyFloat32>& GetFinalColumns()
const {
return m_finalColumns; }
83 BoxOfArrays<KyFloat32>& GetFinalColumns() {
return m_finalColumns; }
85 const BoxOfArrays<KyUInt32>& GetFinalColorColumns()
const {
return m_finalNavTagIdxColumns; }
86 BoxOfArrays<KyUInt32>& GetFinalColorColumns() {
return m_finalNavTagIdxColumns; }
89 KyResult Copy(
const DynamicRasterCell& from);
91 KyInt32 GetPixelSize()
const {
return IntCoordSystem::IntPixelSize(); }
92 KyFloat32 GetRasterPrecision()
const {
return m_rasterPrecision; }
94 const KyArrayTLS_POD<const NavTag*>& GetNavTagArray()
const {
return *m_navTagArray; }
97 void MakeFinalColumns();
98 void ReleaseDynamicColumns();
102 GeneratorParameters m_config;
105 const KyArrayPOD<const InputCellBlob*>* m_inputCells;
106 const KyArrayTLS_POD<const NavTag*>* m_navTagArray;
109 DynamicRasterColumnPool m_dynamicColumns;
112 BoxOfArrays<KyFloat32> m_finalColumns;
115 BoxOfArrays<KyUInt32> m_finalNavTagIdxColumns;
118 bool m_hasMultipleNavTags;
119 bool m_areAllInputCellsOverlapping;
121 friend class DynamicRasterCellBlobBuilder;
128 inline void DynamicRasterCell::PushPixelToLocal(
const PixelPos& localPixelPos,
const SingleStagePixel& pixel,
KyUInt32 navTagIdx)
130 KyInt32 idx = m_pixelBox.GetRowMajorIndexFromLocalPos(localPixelPos);
131 PushPixel(idx, pixel, navTagIdx);
134 inline void DynamicRasterCell::PushPixel(
const PixelPos& pixelPos,
const SingleStagePixel& pixel,
KyUInt32 navTagIdx,
KyUInt32 ownerIdx)
136 KyInt32 idx = m_pixelBox.GetRowMajorIndex(pixelPos);
137 PushPixel(idx, pixel, navTagIdx, ownerIdx);
140 inline const BoxOfArrays<KyFloat32>::Column& DynamicRasterCell::GetFinalColumnFromLocal(
const PixelPos& localPixelPos)
const
142 return m_finalColumns.GetColumn(localPixelPos.x, localPixelPos.y);
145 inline const BoxOfArrays<KyFloat32>::Column& DynamicRasterCell::GetFinalColumn(
const PixelPos& pixelPos)
const
147 KyInt32 idx = m_pixelBox.GetRowMajorIndex(pixelPos);
148 return m_finalColumns.GetColumn(idx);
151 inline const BoxOfArrays<KyUInt32>::Column& DynamicRasterCell::GetFinalNavTagColumnFromLocal(
const PixelPos& localPixelPos)
const
153 return m_finalNavTagIdxColumns.GetColumn(localPixelPos.x, localPixelPos.y);
156 inline const BoxOfArrays<KyUInt32>::Column& DynamicRasterCell::GetFinalNavTagIndicesColumn(
const PixelPos& pixelPos)
const
158 KyInt32 idx = m_pixelBox.GetRowMajorIndex(pixelPos);
159 return m_finalNavTagIdxColumns.GetColumn(idx);
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:196
#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
#define KyUInt32MAXVAL
KyUInt32 max value
Definition: types.h:68
float KyFloat32
float
Definition: types.h:32