Program Listing for File nest_light.hpp

Return to documentation for file (cosm/repr/nest_light.hpp)

#pragma once

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

#include <argos3/plugins/simulator/entities/light_entity.h>

#include "rcppsw/math/vector3.hpp"
#include "rcppsw/spatial/euclidean_dist.hpp"
#include "rcppsw/types/type_uuid.hpp"

#include "cosm/cosm.hpp"
#include "cosm/repr/colored_entity.hpp"

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

namespace cosm::repr {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class nest_light final : public repr::colored_entity {
 public:
  nest_light(const std::string& name,
             const rmath::vector3d& loc,
             const rutils::color& color,
             double intensity);

  nest_light(const nest_light&) = default;

  /* Not move constructable/assignable or copy assignable by default */
  nest_light& operator=(const nest_light&) = delete;
  nest_light(nest_light&&) = delete;
  nest_light& operator=(nest_light&&) = delete;

  void initialize(cpargos::swarm_manager_adaptor* sm);

 private:
  /* clang-format off */
  ::argos::CLightEntity* m_impl;
  /* clang-format on */
};

} /* namespace cosm::repr */