Mesh: change pointer to mesh object when copying or swapping segments
This commit is contained in:
@@ -83,7 +83,7 @@ MeshObject::MeshObject(const MeshObject& mesh)
|
||||
: _Mtrx(mesh._Mtrx),_kernel(mesh._kernel)
|
||||
{
|
||||
// copy the mesh structure
|
||||
this->_segments = mesh._segments;
|
||||
copySegments(mesh);
|
||||
}
|
||||
|
||||
MeshObject::~MeshObject()
|
||||
@@ -161,13 +161,33 @@ Base::BoundBox3d MeshObject::getBoundBox(void)const
|
||||
return Bnd2;
|
||||
}
|
||||
|
||||
void MeshObject::copySegments(const MeshObject& mesh)
|
||||
{
|
||||
// After copying the segments the mesh pointers must be adjusted
|
||||
this->_segments = mesh._segments;
|
||||
std::for_each(this->_segments.begin(), this->_segments.end(), [this](Segment& s) {
|
||||
s._mesh = this;
|
||||
});
|
||||
}
|
||||
|
||||
void MeshObject::swapSegments(MeshObject& mesh)
|
||||
{
|
||||
this->_segments.swap(mesh._segments);
|
||||
std::for_each(this->_segments.begin(), this->_segments.end(), [this](Segment& s) {
|
||||
s._mesh = this;
|
||||
});
|
||||
std::for_each(mesh._segments.begin(), mesh._segments.end(), [&mesh](Segment& s) {
|
||||
s._mesh = &mesh;
|
||||
});
|
||||
}
|
||||
|
||||
void MeshObject::operator = (const MeshObject& mesh)
|
||||
{
|
||||
if (this != &mesh) {
|
||||
// copy the mesh structure
|
||||
setTransform(mesh._Mtrx);
|
||||
this->_kernel = mesh._kernel;
|
||||
this->_segments = mesh._segments;
|
||||
copySegments(mesh);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +208,7 @@ void MeshObject::swap(MeshCore::MeshKernel& Kernel)
|
||||
void MeshObject::swap(MeshObject& mesh)
|
||||
{
|
||||
this->_kernel.Swap(mesh._kernel);
|
||||
this->_segments.swap(mesh._segments);
|
||||
swapSegments(mesh);
|
||||
Base::Matrix4D tmp=this->_Mtrx;
|
||||
this->_Mtrx = mesh._Mtrx;
|
||||
mesh._Mtrx = tmp;
|
||||
|
||||
@@ -386,6 +386,8 @@ private:
|
||||
void updateMesh(const std::vector<unsigned long>&);
|
||||
void updateMesh();
|
||||
void swapKernel(MeshCore::MeshKernel& m, const std::vector<std::string>& g);
|
||||
void copySegments(const MeshObject&);
|
||||
void swapSegments(MeshObject&);
|
||||
|
||||
private:
|
||||
Base::Matrix4D _Mtrx;
|
||||
|
||||
Reference in New Issue
Block a user