13class ChangeMeshDataAction :
public HistoryAction
16 using Obj = ObjectMesh;
19 ChangeMeshDataAction( std::string name,
const std::shared_ptr<ObjectMesh>& obj,
bool cloneMesh ) :
21 name_{ std::move(
name ) }
25 data_ = objMesh_->data();
26 if ( cloneMesh && data_.mesh )
27 data_.mesh = std::make_shared<Mesh>( *data_.mesh );
32 ChangeMeshDataAction( std::string name,
const std::shared_ptr<ObjectMesh>& obj, ObjectMeshData&& newData ) :
34 name_{ std::move(
name ) }
38 data_ = std::move( newData );
39 objMesh_->updateData( data_ );
43 virtual std::string
name()
const override
48 virtual void action( HistoryAction::Type )
override
53 objMesh_->updateData( data_ );
56 static void setObjectDirty(
const std::shared_ptr<ObjectMesh>& obj )
59 obj->setDirtyFlags( DIRTY_ALL );
62 [[nodiscard]]
virtual size_t heapBytes()
const override
64 return name_.capacity() + data_.heapBytes();
67 const std::shared_ptr<ObjectMesh>& obj()
const {
return objMesh_; }
69 const ObjectMeshData& data()
const {
return data_; }
72 std::shared_ptr<ObjectMesh> objMesh_;
79class MRMESH_CLASS PartialChangeMeshDataAction :
public HistoryAction
83 MRMESH_API PartialChangeMeshDataAction( std::string name,
const std::shared_ptr<ObjectMesh>& obj, ObjectMeshData&& newData );
85 virtual std::string
name()
const override
87 if ( combinedAction_ )
88 return combinedAction_->name();
90 return "##empty_PartialChangeMeshDataAction";
93 virtual void action( HistoryAction::Type type)
override
95 if ( combinedAction_ )
96 combinedAction_->action( type );
99 [[nodiscard]]
virtual size_t heapBytes()
const override
101 if ( combinedAction_ )
102 return combinedAction_->heapBytes() +
sizeof( CombinedHistoryAction );
108 std::unique_ptr<CombinedHistoryAction> combinedAction_;
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
unsafe void action(MR.HistoryAction.Type _1)
unsafe ChangeMeshDataAction(MR._ByValue_ChangeMeshDataAction _other)
std::string name(const T &primitive)
Definition MRFeatures.h:309
Definition MRCameraOrientationPlugin.h:8
int heapBytes(FloatGrid grid)