3#include "MRPch/MRBindingMacros.h"
28 constexpr static const
char* StaticTypeName() noexcept {
return "PointsHolder"; }
29 virtual const char* typeName()
const override {
return StaticTypeName(); }
31 MRMESH_API virtual void applyScale(
float scaleFactor )
override;
33 MRMESH_API virtual bool hasVisualRepresentation()
const override;
35 [[nodiscard]]
virtual bool hasModel()
const override {
return bool( points_ ); }
37 const std::shared_ptr<const PointCloud>& pointCloud()
const
38 {
return reinterpret_cast< const std::shared_ptr<const PointCloud>&
>( points_ ); }
41 [[nodiscard]] PointCloudPart pointCloudPart()
const {
return selectedPoints_.any() ? PointCloudPart{ *points_, &selectedPoints_ } : PointCloudPart{ *points_ }; }
43 MRMESH_API virtual std::shared_ptr<Object> clone()
const override;
44 MRMESH_API virtual std::shared_ptr<Object> shallowClone()
const override;
46 MRMESH_API virtual void setDirtyFlags( uint32_t mask,
bool invalidateCaches =
true )
override;
49 const VertBitSet& getSelectedPoints()
const {
return selectedPoints_; }
52 void selectPoints( VertBitSet newSelection ) { updateSelectedPoints( newSelection ); }
55 MRMESH_API virtual void updateSelectedPoints( VertBitSet& selection );
58 MRMESH_API const VertBitSet& getSelectedPointsOrAll()
const;
61 const Color& getSelectedVerticesColor( ViewportId
id = {} )
const
63 return selectedVerticesColor_.get(
id );
66 MRMESH_API virtual void setSelectedVerticesColor(
const Color& color, ViewportId
id = {} );
68 MRMESH_API const ViewportProperty<Color>& getSelectedVerticesColorsForAllViewports()
const;
69 MRMESH_API virtual void setSelectedVerticesColorsForAllViewports( ViewportProperty<Color> val );
72 MRMESH_API void copyAllSolidColors(
const ObjectPointsHolder& other );
74 [[nodiscard]]
MRMESH_API bool supportsVisualizeProperty( AnyVisualizeMaskEnum type )
const override;
77 const VertColors& getVertsColorMap()
const {
return vertsColorMap_; }
80 virtual void setVertsColorMap( VertColors vertsColorMap ) { vertsColorMap_ = std::move( vertsColorMap ); setDirtyFlags( DIRTY_VERTS_COLORMAP ); }
83 virtual void updateVertsColorMap( VertColors& vertsColorMap ) { std::swap( vertsColorMap_, vertsColorMap ); setDirtyFlags( DIRTY_VERTS_COLORMAP ); }
86 MRMESH_API virtual void copyColors(
const ObjectPointsHolder & src,
const VertMap & thisToSrc,
const FaceMap& thisToSrcFaces = {} );
91 MRMESH_API const ViewportMask& getVisualizePropertyMask( AnyVisualizeMaskEnum type )
const override;
94 MRMESH_API virtual void setPointSize(
float size );
96 virtual float getPointSize()
const {
return pointSize_; }
99 ObjectPointsHolder( ProtectedStruct,
const ObjectPointsHolder& obj ) : ObjectPointsHolder( obj )
104 MRMESH_API virtual Box3f getWorldBox( ViewportId = {} )
const override;
119 int getRenderDiscretization()
const {
return renderDiscretization_; }
122 MRMESH_API size_t numRenderingValidPoints()
const;
125 static constexpr int MaxRenderingPointsDefault = 1'000'000;
127 static constexpr int MaxRenderingPointsUnlimited = std::numeric_limits<int>::max();
131 MRMESH_API int getMaxRenderingPoints()
const {
return maxRenderingPoints_; }
135 MRMESH_API void setMaxRenderingPoints(
int val );
138 [[nodiscard]]
const char * serializeFormat()
const {
return serializeFormat_; }
139 [[deprecated]] MR_BIND_IGNORE
const char * savePointsFormat()
const {
return serializeFormat(); }
143 MRMESH_API void setSerializeFormat(
const char * newFormat );
144 [[deprecated]] MR_BIND_IGNORE
void setSavePointsFormat(
const char * newFormat ) { setSerializeFormat( newFormat ); }
152 using SelectionChangedSignal = Signal<void()>;
153 SelectionChangedSignal pointsSelectionChangedSignal;
156 Signal<void()> renderDiscretizationChangedSignal;
159 VertBitSet selectedPoints_;
160 mutable std::optional<size_t> numValidPoints_;
161 mutable std::optional<size_t> numSelectedPoints_;
162 ViewportProperty<Color> selectedVerticesColor_;
163 ViewportMask showSelectedVertices_ = ViewportMask::all();
164 VertColors vertsColorMap_;
168 MRMESH_API virtual void swapSignals_( Object& other )
override;
170 std::shared_ptr<PointCloud> points_;
171 mutable ViewportProperty<XfBasedCache<Box3f>> worldBox_;
174 float pointSize_{ 5.0f };
176 ObjectPointsHolder(
const ObjectPointsHolder& other ) =
default;
179 MRMESH_API virtual void swapBase_( Object& other )
override;
181 MRMESH_API virtual Box3f computeBoundingBox_()
const override;
183 MRMESH_API virtual Expected<std::future<Expected<void>>> serializeModel_(
const std::filesystem::path& path )
const override;
185 MRMESH_API virtual Expected<void> deserializeModel_(
const std::filesystem::path& path, ProgressCallback progressCb = {} )
override;
187 MRMESH_API virtual void serializeFields_( Json::Value& root )
const override;
189 MRMESH_API virtual void deserializeFields_(
const Json::Value& root )
override;
191 MRMESH_API virtual void setupRenderObject_()
const override;
194 MRMESH_API void setAllVisualizeProperties_(
const AllVisualizeProperties& properties, std::size_t& pos )
override;
196 int maxRenderingPoints_ = MaxRenderingPointsDefault;
201 void setDefaultColors_();
204 void setDefaultSceneProperties_();
207 void updateRenderDiscretization_();
209 int renderDiscretization_ = 1;
211 const char * serializeFormat_ =
nullptr;
_count
Definition MRFeatureObject.h:87
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
SelectedVertices
Definition MRObjectPointsHolder.h:13
Definition MRObjectPointsHolder.h:21
Definition MRVisualObject.h:119
Definition MRCameraOrientationPlugin.h:8
MRMESH_API void setDefaultSerializePointsFormat(std::string newFormat)
MRMESH_API const std::string & defaultSerializePointsFormat()
int heapBytes(FloatGrid grid)
Definition MRVisualObject.h:32