14class ChangePointCloudNormalsAction :
public HistoryAction
17 using Obj = ObjectPoints;
22 name_{ std::move(
name ) }
26 if (
auto pc = obj->pointCloud() )
27 backupNormals_ = pc->normals;
34 backupNormals_{ std::move( newNormals ) },
35 name_{ std::move(
name ) }
37 action( HistoryAction::Type::Redo );
40 virtual std::string
name()
const override
45 virtual void action( HistoryAction::Type )
override
47 if ( !objPoints_ || !objPoints_->varPointCloud() )
50 std::swap( objPoints_->varPointCloud()->normals, backupNormals_ );
51 setObjectDirty( objPoints_ );
54 static void setObjectDirty(
const std::shared_ptr<ObjectPoints>& obj )
57 obj->setDirtyFlags( DIRTY_RENDER_NORMALS );
60 [[nodiscard]]
virtual size_t heapBytes()
const override
62 return name_.capacity() + backupNormals_.heapBytes();
66 std::shared_ptr<ObjectPoints> objPoints_;
74class ChangeOneNormalInCloudAction :
public HistoryAction
77 using Obj = ObjectPoints;
83 name_{ std::move(
name ) }
87 if (
auto m = obj->pointCloud() )
88 if ( m->normals.size() > pointId_ )
89 safeNormal_ = m->normals[pointId_];
97 safeNormal_{ newNormal },
98 name_{ std::move(
name ) }
100 action( HistoryAction::Type::Redo );
103 virtual std::string
name()
const override
108 virtual void action( HistoryAction::Type )
override
113 if (
auto m = objPoints_->varPointCloud() )
115 if ( m->normals.size() > pointId_ )
117 std::swap( safeNormal_, m->normals[pointId_] );
118 objPoints_->setDirtyFlags( DIRTY_RENDER_NORMALS );
123 static void setObjectDirty(
const std::shared_ptr<ObjectPoints>& obj )
126 obj->setDirtyFlags( DIRTY_RENDER_NORMALS );
129 [[nodiscard]]
virtual size_t heapBytes()
const override
131 return name_.capacity();
135 std::shared_ptr<ObjectPoints> objPoints_;
137 Vector3f safeNormal_;
unsafe ChangeOneNormalInCloudAction(MR._ByValue_ChangeOneNormalInCloudAction _other)
unsafe void action(MR.HistoryAction.Type _1)
unsafe void action(MR.HistoryAction.Type _1)
unsafe ChangePointCloudNormalsAction(MR._ByValue_ChangePointCloudNormalsAction _other)
std::string name(const T &primitive)
Definition MRFeatures.h:309
Definition MRCameraOrientationPlugin.h:8