Program Listing for File block_carry_visualizer.hpp

Return to documentation for file (cosm/argos/vis/block_carry_visualizer.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <string>

#include "rcppsw/er/client.hpp"

#include "cosm/cosm.hpp"

/*******************************************************************************
 * Namespaces
 ******************************************************************************/
namespace argos {
class CQTOpenGLUserFunctions;
}
namespace cosm::repr {
class sim_block3D;
} /* namespace cosm::repr */

namespace cosm::argos::vis {

/*******************************************************************************
 * Classes
 ******************************************************************************/
class block_carry_visualizer : public rer::client<block_carry_visualizer> {
 public:
  block_carry_visualizer(::argos::CQTOpenGLUserFunctions* qt,
                         double block_vis_offset,
                         double text_vis_offset)
      : ER_CLIENT_INIT("cosm.vis.block_carry_visualizer"),
        m_block_vis_offset(block_vis_offset),
        m_text_vis_offset(text_vis_offset),
        m_qt(qt) {}

  block_carry_visualizer(const block_carry_visualizer& op) = delete;
  block_carry_visualizer& operator=(const block_carry_visualizer& op) = delete;

  void draw(const crepr::sim_block3D* block, size_t id_len);

 private:
  /* clang-format off */
  double                                 m_block_vis_offset{0.0};
  double                                 m_text_vis_offset{0.0};
  ::argos::CQTOpenGLUserFunctions* const m_qt{nullptr};
  /* clang-format on */
};

} /* namespace cosm::argos::vis */