FloorVis.cpp
Go to the documentation of this file.
1 #include "FloorVis.h"
2 
4 
7 #include <RobotAPI/libraries/armem_objects/aron/ObjectClass.aron.generated.h>
8 
10 {
11 
13  {
14  }
15 
16  void
18  {
19  properties.define(defs, prefix);
20  }
21 
22  void
24  {
25  this->arviz = arviz;
26  }
27 
28  void
30  {
31  viz::Layer layer = arviz.layer(properties.layerName);
32  if (properties.show)
33  {
34  const wm::Entity* entity = classCoreSegment.findEntity(properties.entityName);
35  if (entity)
36  {
37  ARMARX_INFO << "Drawing floor class '" << properties.entityName << "'.";
38  layer.add(makeFloorObject(*entity));
39  }
40  else
41  {
42  ARMARX_INFO << "Did not find floor class '" << properties.entityName << "'.";
43  }
44  }
45  arviz.commit({layer});
46  }
47 
50  {
51  const wm::EntityInstance& instance = classEntity.getLatestSnapshot().getInstance(0);
52  arondto::ObjectClass data;
53  data.fromAron(instance.data());
54  return makeFloorObject(classEntity.name(), data);
55  }
56 
58  FloorVis::makeFloorObject(const std::string& name, const arondto::ObjectClass& objectClass)
59  {
61  return armarx::viz::Object(name)
62  .file(objectClass.simoxXmlPath.package, objectClass.simoxXmlPath.path)
63  .position(Eigen::Vector3f(0, 0, properties.height));
64  }
65 
66  void
68  {
69  defs->optional(show, prefix + "Show", "Whether to show the floor.");
70  defs->optional(entityName, prefix + "EntityName", "Object class entity of the floor.");
71  defs->optional(layerName, prefix + "LayerName", "Layer to draw the floor on.");
72  defs->optional(
73  height,
74  prefix + "Height",
75  "Height (z) of the floor plane. \n"
76  "Set slightly below 0 to avoid z-fighting when drawing planes on the ground.");
77  }
78 
79 } // namespace armarx::armem::server::obj::clazz
armarx::viz::Client::commit
CommitResult commit(StagedCommit const &commit)
Definition: Client.cpp:89
armarx::armem::base::CoreSegmentBase::findEntity
EntityT * findEntity(const std::string &entityName)
Definition: CoreSegmentBase.h:199
armarx::armem::server::obj::clazz::FloorVis::Properties::entityName
std::string entityName
Definition: FloorVis.h:43
armarx::armem::server::obj::clazz::FloorVis::defineProperties
void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string &prefix="")
Definition: FloorVis.cpp:17
armarx::armem::server::obj::clazz
Definition: FloorVis.cpp:9
armarx::armem::wm::EntityInstance
Client-side working entity instance.
Definition: memory_definitions.h:32
armarx::armem::base::detail::GetLatestSnapshotMixin::getLatestSnapshot
auto & getLatestSnapshot(int snapshotIndex=0)
Retrieve the latest entity snapshot.
Definition: lookup_mixins.h:199
armarx::viz::Object::file
Object & file(std::string const &project, std::string const &filename)
Definition: Elements.h:340
armarx::armem::server::obj::clazz::FloorVis::Properties::layerName
std::string layerName
Definition: FloorVis.h:44
armarx::armem::server::obj::clazz::FloorVis::setArViz
void setArViz(armarx::viz::Client arviz)
Definition: FloorVis.cpp:23
armarx::armem::server::obj::clazz::FloorVis::Properties::define
void define(armarx::PropertyDefinitionsPtr defs, const std::string &prefix="")
Definition: FloorVis.cpp:67
armarx::viz::Layer::add
void add(ElementT const &element)
Definition: Layer.h:31
armarx::armem::server::wm::Entity
Definition: memory_definitions.h:27
armarx::viz::ElementOps::position
DerivedT & position(float x, float y, float z)
Definition: ElementOps.h:136
memory_definitions.h
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:77
armarx::viz::Object
Definition: Elements.h:332
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::armem::server::obj::clazz::FloorVis::Properties::show
bool show
Definition: FloorVis.h:41
memory_definitions.h
armarx::armem::server::wm::CoreSegment
base::CoreSegmentBase
Definition: memory_definitions.h:75
armarx::armem::server::obj::clazz::FloorVis::FloorVis
FloorVis()
Definition: FloorVis.cpp:12
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:181
PropertyDefinitionContainer.h
IceUtil::Handle< class PropertyDefinitionContainer >
FloorVis.h
armarx::armem::server::obj::clazz::FloorVis::makeFloorObject
armarx::viz::Object makeFloorObject(const wm::Entity &classEntity)
Definition: FloorVis.cpp:49
armarx::armem::server::obj::clazz::FloorVis::updateFloorObject
void updateFloorObject(const wm::CoreSegment &classCoreSegment)
Draw a the floor as a simox object.
Definition: FloorVis.cpp:29
armarx::viz::Client::layer
Layer layer(std::string const &name) const
Definition: Client.cpp:80
armarx::armem::base::EntityInstanceBase::data
const DataT & data() const
Definition: EntityInstanceBase.h:129
armarx::viz::Client
Definition: Client.h:117
armarx::viz::Layer
Definition: Layer.h:12
armarx::armem::server::obj::clazz::FloorVis::Properties::height
float height
Definition: FloorVis.h:45
armarx::armem::base::EntityBase::name
std::string & name()
Definition: EntityBase.h:93