diff --git a/Source/SimulationManager/imstkMouseSceneControl.cpp b/Source/SimulationManager/imstkMouseSceneControl.cpp
index e7c7ca19a60dfad705a1ef4032a231bbc962e9e6..aaf92da78ca55cf403899f956e6155be60d3aac1 100644
--- a/Source/SimulationManager/imstkMouseSceneControl.cpp
+++ b/Source/SimulationManager/imstkMouseSceneControl.cpp
@@ -35,145 +35,140 @@ MouseSceneControl::MouseSceneControl(std::shared_ptr<MouseDeviceClient> device)
 void
 MouseSceneControl::printControls()
 {
-    LOG(INFO) << "Mouse Scene Controls: Only usable in debug mode";
-    LOG(INFO) << "----------------------------------------------------------------------";
-    LOG(INFO) << " | Left click drag   - rotate view";
-    LOG(INFO) << " | Middle click drag - pan view";
-    LOG(INFO) << " | Scroll            - zoom in/out";
-    LOG(INFO) << "----------------------------------------------------------------------";
+  LOG(INFO) << "Mouse Scene Controls: Only usable in debug mode";
+  LOG(INFO) << "----------------------------------------------------------------------";
+  LOG(INFO) << " | Left click drag   - rotate view";
+  LOG(INFO) << " | Middle click drag - pan view";
+  LOG(INFO) << " | Scroll            - zoom in/out";
+  LOG(INFO) << "----------------------------------------------------------------------";
 }
 
 void
 MouseSceneControl::OnButtonPress(const int key)
 {
-    // If no mode currently selected
-    if (m_mode == Mode::None)
+  if (m_mode == Mode::None)
+  {
+    // Set the mode
+    if (key == LEFT_BUTTON)
     {
-        // Set the mode
-        if (key == LEFT_BUTTON)
-        {
-            m_mode = Mode::Rotate;
-        }
-        else if (key == MIDDLE_BUTTON)
-        {
-            m_mode = Mode::Pan;
-        }
+      m_mode = Mode::Rotate;
     }
+    else if (key == MIDDLE_BUTTON)
+    {
+      m_mode = Mode::Pan;
+    }
+  }
 }
 
 void
 MouseSceneControl::OnButtonRelease(const int key)
 {
-    if (key == LEFT_BUTTON && m_mode == Mode::Rotate)
-    {
-        m_mode = Mode::None;
-    }
-    else if (key == MIDDLE_BUTTON && m_mode == Mode::Pan)
-    {
-        m_mode = Mode::None;
-    }
+  if (key == LEFT_BUTTON && m_mode == Mode::Rotate)
+  {
+    m_mode = Mode::None;
+  }
+  else if (key == MIDDLE_BUTTON && m_mode == Mode::Pan)
+  {
+    m_mode = Mode::None;
+  }
 }
 
 void
 MouseSceneControl::OnScroll(const double dx)
 {
-    // This control is disabled in simulation mode
-    if (m_sceneManager->getMode() == SceneManager::Mode::Simulation)
-    {
-        return;
-    }
-
-    std::shared_ptr<Camera> cam     = m_sceneManager->getActiveScene()->getActiveCamera();
-    const Vec3d&            focalPt = cam->getFocalPoint();
-    const Vec3d&            camPos  = cam->getPosition();
-    const Vec3d             diff    = camPos - focalPt;
-
-    // Linear zoom function
-    Vec3d newDiff;
-    if (dx > 0.0)
-    {
-        newDiff = diff * 1.1 * m_zoomSpeed * m_zoomFactor;
-    }
-    else
-    {
-        newDiff = diff * 0.9 * m_zoomSpeed * m_zoomFactor;
-    }
-    const Vec3d newPos = focalPt + newDiff;
-    cam->setPosition(newPos);
-    cam->update();
+  if (!getEnabled())
+  {
+    return;
+  }
+
+  std::shared_ptr<Camera> cam = m_sceneManager->getActiveScene()->getActiveCamera();
+  const Vec3d& focalPt = cam->getFocalPoint();
+  const Vec3d& camPos = cam->getPosition();
+  const Vec3d             diff = camPos - focalPt;
+
+  // Linear zoom function
+  Vec3d newDiff;
+  if (dx > 0.0)
+  {
+    newDiff = diff * 1.1 * m_zoomSpeed * m_zoomFactor;
+  }
+  else
+  {
+    newDiff = diff * 0.9 * m_zoomSpeed * m_zoomFactor;
+  }
+  const Vec3d newPos = focalPt + newDiff;
+  cam->setPosition(newPos);
+  cam->update();
 }
 
 void
 MouseSceneControl::OnMouseMove(const Vec2d& pos)
 {
-    // Controls disabled in simulation mode
-    if (m_sceneManager->getMode() == SceneManager::Mode::Simulation)
-    {
-        return;
-    }
-
-    std::shared_ptr<Camera> cam = m_sceneManager->getActiveScene()->getActiveCamera();
-
-    // Push back the position
-    m_prevPos = m_pos;
-    m_pos     = pos;
+  if (!getEnabled())
+  {
+    return;
+  }
+
+  std::shared_ptr<Camera> cam = m_sceneManager->getActiveScene()->getActiveCamera();
+
+  // Push back the position
+  m_prevPos = m_pos;
+  m_pos = pos;
+
+  if (m_mode == Mode::Rotate)
+  {
+    // Map mouse deltas to theta, phi rotations on a sphere
+    const Vec2d  dx = (m_pos - m_prevPos) * (m_rotateSpeed * m_rotateFactor);
+    const double dTheta = dx[1];  // Elevation
+    const double dPhi = -dx[0]; // Azimuth
+
+    const Vec3d& focalPt = cam->getFocalPoint();
+    const Vec3d& camPos = cam->getPosition();
+    Vec3d        localCamPos = camPos - focalPt;
+
+    // Get the rotation axes
+    const Mat4d& view = cam->getView();
+    const Vec3d  up = Vec3d(view(1, 0), view(1, 1), view(1, 2));
+    const Vec3d  right = Vec3d(view(0, 0), view(0, 1), view(0, 2));
+    // Rotate around each
+    localCamPos = Rotd(dPhi, up).toRotationMatrix() * localCamPos;
+    localCamPos = Rotd(dTheta, right).toRotationMatrix() * localCamPos;
+
+    // Set the new cam pos and up, then compute lookat
+    const Vec3d newPos = localCamPos + focalPt;
+    cam->setPosition(newPos);
+    cam->setViewUp(Vec3d(view(1, 0), view(1, 1), view(1, 2)));
+    cam->update();
+  }
+  else if (m_mode == Mode::Pan)
+  {
+    // Move camera along up and right
+    const Vec2d dx = m_pos - m_prevPos;
+
+    const Vec3d& focalPt = cam->getFocalPoint();
+    const Vec3d& camPos = cam->getPosition();
+
+    Mat4d& view = cam->getView();
+    const Vec3d up = Vec3d(view(1, 0), view(1, 1), view(1, 2));
+    const Vec3d right = Vec3d(view(0, 0), view(0, 1), view(0, 2));
+
+    // scale pan by zoom as well
+    const double dist = (focalPt - camPos).norm();
+    const Vec3d  dPos = (up * dx[1] + right * dx[0]) * -(m_panSpeed * m_panFactor * dist);
+    cam->setFocalPoint(focalPt + dPos);
+    cam->setPosition(camPos + dPos);
+    cam->update();
+  }
+}
 
-    if (m_mode == Mode::Rotate)
-    {
-        // Map mouse deltas to theta, phi rotations on a sphere
-        const Vec2d  dx     = (m_pos - m_prevPos) * (m_rotateSpeed * m_rotateFactor);
-        const double dTheta = dx[1];  // Elevation
-        const double dPhi   = -dx[0]; // Azimuth
-
-        const Vec3d& focalPt     = cam->getFocalPoint();
-        const Vec3d& camPos      = cam->getPosition();
-        Vec3d        localCamPos = camPos - focalPt;
-
-        // Get the rotation axes
-        const Mat4d& view  = cam->getView();
-        const Vec3d  up    = Vec3d(view(1, 0), view(1, 1), view(1, 2));
-        const Vec3d  right = Vec3d(view(0, 0), view(0, 1), view(0, 2));
-        // Rotate around each
-        localCamPos = Rotd(dPhi, up).toRotationMatrix() * localCamPos;
-        localCamPos = Rotd(dTheta, right).toRotationMatrix() * localCamPos;
-
-        // Set the new cam pos and up, then compute lookat
-        const Vec3d newPos = localCamPos + focalPt;
-        cam->setPosition(newPos);
-        cam->setViewUp(Vec3d(view(1, 0), view(1, 1), view(1, 2)));
-        cam->update();
-    }
-    else if (m_mode == Mode::Pan)
-    {
-        // Move camera along up and right
-        const Vec2d dx = m_pos - m_prevPos;
-
-        const Vec3d& focalPt = cam->getFocalPoint();
-        const Vec3d& camPos  = cam->getPosition();
-
-        Mat4d&      view  = cam->getView();
-        const Vec3d up    = Vec3d(view(1, 0), view(1, 1), view(1, 2));
-        const Vec3d right = Vec3d(view(0, 0), view(0, 1), view(0, 2));
-
-        // scale pan by zoom as well
-        const double dist = (focalPt - camPos).norm();
-        const Vec3d  dPos = (up * dx[1] + right * dx[0]) * -(m_panSpeed * m_panFactor * dist);
-        cam->setFocalPoint(focalPt + dPos);
-        cam->setPosition(camPos + dPos);
-        cam->update();
-    }
+void MouseSceneControl::setEnabled(bool enable)
+{
+  m_enabled = enable;
 }
 
-void
-MouseSceneControl::update(const double imstkNotUsed(dt))
+bool MouseSceneControl::getEnabled() const
 {
-    // Directly set it
-    //m_camera->getView() = m_targetViewTransform;
-
-    // Slerp the camera rotation
-    /*const Quatd currOrientation = Quatd(m_camera->getView().block<3, 3>(0, 0)).normalized();
-    const Quatd targetOrientation = Quatd(m_targetViewTransform.block<3, 3>(0, 0)).normalized();
-    const Quatd newOrientation = currOrientation.slerp(0.1, targetOrientation).normalized();
-    m_camera->getView().block<3, 3>(0, 0) = newOrientation.toRotationMatrix();*/
+  return (m_sceneManager->getMode() == SceneManager::Mode::Debug) || m_enabled;
 }
+
 }
\ No newline at end of file
diff --git a/Source/SimulationManager/imstkMouseSceneControl.h b/Source/SimulationManager/imstkMouseSceneControl.h
index af21faf3825f2b6acacbd35d190c408fb2aa6a4d..9e7f88d02d0d3db34e8e2d8e2e4f4d6b83b3f183 100644
--- a/Source/SimulationManager/imstkMouseSceneControl.h
+++ b/Source/SimulationManager/imstkMouseSceneControl.h
@@ -39,69 +39,77 @@ class SceneManager;
 class MouseSceneControl : public MouseControl
 {
 public:
-    enum class Mode
-    {
-        None,
-        Pan,
-        Rotate
-    };
+  enum class Mode
+  {
+    None,
+    Pan,
+    Rotate
+  };
 
 public:
-    MouseSceneControl() = default;
-    MouseSceneControl(std::shared_ptr<MouseDeviceClient> device);
-    ~MouseSceneControl() override = default;
+  MouseSceneControl() = default;
+  MouseSceneControl(std::shared_ptr<MouseDeviceClient> device);
+  ~MouseSceneControl() override = default;
 
 public:
-    ///
-    /// \brief Set the scroll controlled zoom speed
-    ///
-    void setZoomSpeed(const double zoomSpeed) { m_zoomSpeed = zoomSpeed; }
-
-    ///
-    /// \brief Set the mouse controlled rotate speed
-    ///
-    void setRotateSpeed(const double rotateSpeed) { m_rotateSpeed = rotateSpeed; }
-
-    ///
-    /// \brief Set the pan speed
-    ///
-    void setPanSpeed(const double panSpeed) { m_panSpeed = panSpeed; }
-
-    ///
-    /// \brief Set the scene manager to be controlled
-    /// The active scene's camera will be controllable depending on SceneManager's mode
-    ///
-    void setSceneManager(std::shared_ptr<SceneManager> manager) { m_sceneManager = manager; }
+  ///
+  /// \brief Set the scroll controlled zoom speed
+  ///
+  void setZoomSpeed(const double zoomSpeed) { m_zoomSpeed = zoomSpeed; }
+
+  ///
+  /// \brief Set the mouse controlled rotate speed
+  ///
+  void setRotateSpeed(const double rotateSpeed) { m_rotateSpeed = rotateSpeed; }
+
+  ///
+  /// \brief Set the pan speed
+  ///
+  void setPanSpeed(const double panSpeed) { m_panSpeed = panSpeed; }
+
+  ///
+  /// \brief Set the scene manager to be controlled
+  /// The active scene's camera will be controllable depending on SceneManager's mode, or the 
+  ///
+  void setSceneManager(std::shared_ptr<SceneManager> manager) { m_sceneManager = manager; }
+
+  ///
+  /// \brief Enable the mouse control, independent of the debug mode
+  /// 
+  void setEnabled(bool enable);
+
+  ///
+  /// \return true if the controls are enabled, either explicitly or debug is on in the scenecontrol
+  /// 
+  bool getEnabled() const;
 
 public:
-    void printControls() override;
+  void printControls() override;
 
-    ///
-    /// \brief On the mouse scene control button press
-    ///
-    void OnButtonPress(const int key) override;
-    void OnButtonRelease(const int key) override;
-    void OnScroll(const double dx) override;
-    void OnMouseMove(const Vec2d& pos) override;
-
-    // How to handle mouse movements?
-    // Mouse movements best done in update func or event? event would still require update for interpolation
-    void update(const double dt) override;
+  ///
+  /// \brief On the mouse scene control button press
+  ///
+  void OnButtonPress(const int key) override;
+  void OnButtonRelease(const int key) override;
+  void OnScroll(const double dx) override;
+  void OnMouseMove(const Vec2d& pos) override;
 
 protected:
-    std::shared_ptr<SceneManager> m_sceneManager;
-    Mode  m_mode = Mode::None;
-    Vec2d m_prevPos;
-    Vec2d m_pos;
-
-    // User changeable values
-    double m_zoomSpeed   = 1.0;
-    double m_rotateSpeed = 1.0;
-    double m_panSpeed    = 1.0;
-
-    // Hardcoded values
-    double m_zoomFactor   = 1.0;
-    double m_rotateFactor = 5.0;
-    double m_panFactor    = 1.0;
+  std::shared_ptr<SceneManager> m_sceneManager;
+  Mode  m_mode = Mode::None;
+  Vec2d m_prevPos;
+  Vec2d m_pos;
+
+  // User changeable values
+  double m_zoomSpeed = 1.0;
+  double m_rotateSpeed = 1.0;
+  double m_panSpeed = 1.0;
+
+  // Hardcoded values
+  double m_zoomFactor = 1.0;
+  double m_rotateFactor = 5.0;
+  double m_panFactor = 1.0;
+
+  bool m_enabled = false;
 };
 }
\ No newline at end of file