From b310f2a7cb5693024d6edc21bdce9a97f521b76d Mon Sep 17 00:00:00 2001
From: Joan Sola <jsola@iri.upc.edu>
Date: Tue, 4 Jun 2019 17:38:08 +0200
Subject: [PATCH] Add setNonEstimated()

---
 include/core/frame/frame_base.h |  1 +
 src/frame/frame_base.cpp        | 28 ++++++++++++++++++++++++----
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/include/core/frame/frame_base.h b/include/core/frame/frame_base.h
index 44e1cfbd2..0fdb349c1 100644
--- a/include/core/frame/frame_base.h
+++ b/include/core/frame/frame_base.h
@@ -80,6 +80,7 @@ class FrameBase : public NodeBase, public std::enable_shared_from_this<FrameBase
         bool isKeyOrAux() const;
 
         // set type
+        void setNonEstimated();
         void setKey();
         void setAux();
 
diff --git a/src/frame/frame_base.cpp b/src/frame/frame_base.cpp
index 49c5ae4f2..c8ac508f5 100644
--- a/src/frame/frame_base.cpp
+++ b/src/frame/frame_base.cpp
@@ -155,6 +155,20 @@ void FrameBase::removeStateBlocks()
     }
 }
 
+void FrameBase::setNonEstimated()
+{
+    // unregister if previously estimated
+    if (isKeyOrAux())
+        removeStateBlocks();
+
+    type_ = NON_ESTIMATED;
+    if (getTrajectory())
+    {
+        getTrajectory()->sortFrame(shared_from_this());
+        getTrajectory()->updateLastFrames();
+    }
+}
+
 void FrameBase::setKey()
 {
     // register if previously not estimated
@@ -163,8 +177,11 @@ void FrameBase::setKey()
 
     // WOLF_DEBUG("Set Key", this->id());
     type_ = KEY;
-    getTrajectory()->sortFrame(shared_from_this());
-    getTrajectory()->updateLastFrames();
+    if (getTrajectory())
+    {
+        getTrajectory()->sortFrame(shared_from_this());
+        getTrajectory()->updateLastFrames();
+    }
 }
 
 void FrameBase::setAux()
@@ -174,8 +191,11 @@ void FrameBase::setAux()
 
     // WOLF_DEBUG("Set Auxiliary", this->id());
     type_ = AUXILIARY;
-    getTrajectory()->sortFrame(shared_from_this());
-    getTrajectory()->updateLastFrames();
+    if (getTrajectory())
+    {
+        getTrajectory()->sortFrame(shared_from_this());
+        getTrajectory()->updateLastFrames();
+    }
 }
 
 void FrameBase::fix()
-- 
GitLab