9#include <istd/TRange.h>
12#include <imt3d/IPointsBasedObject.h>
28 virtual PointFormat GetPointFormat()
const override;
29 virtual int GetPointsCount()
const override;
30 virtual const void* GetPointData(
int pointIndex)
const override;
31 virtual void* GetPointData(
int pointIndex)
override;
32 virtual void* GetData()
override;
33 virtual const void* GetData()
const override;
34 virtual int GetPointBytesSize()
const override;
38 virtual bool IsEmpty()
const override;
39 virtual i3d::CVector3d GetCenter()
const override;
40 virtual void MoveCenterTo(
const i3d::CVector3d& position)
override;
41 virtual CCuboid GetBoundingCuboid()
const override;
44 virtual bool Serialize(iser::IArchive& archive)
override;
47 virtual int GetSupportedOperations()
const override;
48 virtual bool CopyFrom(
const IChangeable&
object, CompatibilityMode mode = CM_WITHOUT_REFS)
override;
49 virtual bool IsEqual(
const IChangeable&
object)
const override;
50 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS)
const override;
51 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS)
override;
54 bool Create(PointFormat pointFormat);
55 bool Create(PointFormat pointFormat,
int pointsCount,
const void* dataPtr);
56 bool Append(
int pointsCount,
const void* dataPtr);
57 int GetDataSize()
const;
58 void EnsureCenterCalculated()
const;
59 void EnsureCuboidCalculated()
const;
61 template <
typename Po
intType>
const PointType*
62 TGetPointData(
int pointIndex,
bool validOnly =
false)
const;
63 template <
typename Po
intType> PointType*
64 TGetPointData(
int pointIndex,
bool validOnly =
false);
65 template <
typename Po
intType>
bool TIsPointValid(
const PointType& pointData)
const;
66 template <
typename Po
intType>
void TEnsureCenterCalculated()
const;
67 template <
typename Po
intType>
void TEnsureCuboidCalculated()
const;
68 template <
typename Po
intType>
void TMoveCenterTo(
const i3d::CVector3d& position);
69 template <
typename Po
intType>
void GetBoundingRanges(istd::CRange& xRange, istd::CRange& yRange, istd::CRange& zRange)
const;
72 virtual void OnEndChanges(
const ChangeSet& changes)
override;
75 static int GetPointBytesSize(PointFormat pointFormat);
76 static int GetBufferSize(PointFormat pointFormat,
int pointsCount);
79 std::vector<uint8_t> m_data;
80 PointFormat m_pointFormat;
83 mutable i3d::CVector3d m_cloudCenter;
84 mutable CCuboid m_boundingCuboid;
85 mutable bool m_isCenterCalculationValid;
86 mutable bool m_isCuboidCalculationValid;