Program Listing for File embodied_block_creator.hpp

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

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include "rcppsw/math/radians.hpp"
#include "rcppsw/types/type_uuid.hpp"

#include "cosm/argos/embodied_block_variant.hpp"
#include "cosm/argos/embodied_cube_block.hpp"
#include "cosm/argos/embodied_ramp_block.hpp"
#include "cosm/cosm.hpp"

/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace cosm::repr {
class cube_block3D;
class ramp_block3D;
} /* namespace cosm::repr */

namespace cosm::pal::argos {
class swarm_manager_adaptor;
} /* namespace cosm::pal::argos */

namespace cosm::argos {

/*******************************************************************************
 * Structure Definitions
 ******************************************************************************/
class embodied_block_creator {
 public:
  explicit embodied_block_creator(cpargos::swarm_manager_adaptor* sm)
      : m_sm(sm) {}

  cargos::embodied_block_varianto
  operator()(const crepr::cube_block3D* block) const;
  cargos::embodied_block_varianto
  operator()(const crepr::ramp_block3D* block) const;

 private:
  /* clang-format off */
  cpargos::swarm_manager_adaptor* m_sm;
  /* clang-format on */
};

} /* namespace cosm::argos */