From e8fd8bce8211d1fe09fc99acb29fdf46c3b7a54a Mon Sep 17 00:00:00 2001
From: Martin Heistermann <git@mheistermann.de>
Date: Mon, 20 Jun 2022 16:15:34 +0200
Subject: [PATCH] VMO: offer recreateProperties for use with mesh assignment

---
 ObjectTypes/VolumeMeshObject/VolumeMeshObject.hh       |  5 +++++
 ObjectTypes/VolumeMeshObject/VolumeMeshObjectT_impl.hh | 10 ++++++++++
 2 files changed, 15 insertions(+)

diff --git a/ObjectTypes/VolumeMeshObject/VolumeMeshObject.hh b/ObjectTypes/VolumeMeshObject/VolumeMeshObject.hh
index f9584ce..741de1b 100644
--- a/ObjectTypes/VolumeMeshObject/VolumeMeshObject.hh
+++ b/ObjectTypes/VolumeMeshObject/VolumeMeshObject.hh
@@ -115,6 +115,11 @@ public:
     MeshT* mesh();
     const MeshT* mesh() const;
 
+    /// re-create mesh attribute objects. This us useful after
+    /// using mesh assignment to use the newly assigned properties instead
+    /// of the old stale ones.
+    void recreateAttributes();
+
     /** return a full copy of this object ( All scenegraph nodes will be created )
      *  but the object will not be a part of the object tree.
      */
diff --git a/ObjectTypes/VolumeMeshObject/VolumeMeshObjectT_impl.hh b/ObjectTypes/VolumeMeshObject/VolumeMeshObjectT_impl.hh
index ba16fa0..3c948a5 100644
--- a/ObjectTypes/VolumeMeshObject/VolumeMeshObjectT_impl.hh
+++ b/ObjectTypes/VolumeMeshObject/VolumeMeshObjectT_impl.hh
@@ -98,6 +98,16 @@ VolumeMeshObject<MeshT>::VolumeMeshObject(DataType _typeId) :
     init();
 }
 
+
+template<class MeshT>
+void VolumeMeshObject<MeshT>::recreateAttributes()
+{
+  statusAttrib_ = StatusAttrib(*mesh_);
+  colorAttrib_ = ColorAttrib(*mesh_);
+  normalAttrib_ = NormalAttrib(*mesh_);
+  texcoordAttrib_ = TexCoordAttrib(*mesh_);
+}
+
 template<class MeshT>
 VolumeMeshObject<MeshT>::~VolumeMeshObject() {
 
-- 
GitLab