ed
transform_crawler.h
Go to the documentation of this file.
1 #ifndef ED_WORLD_MODEL_TRANSFORM_CRAWLER_H_
2 #define ED_WORLD_MODEL_TRANSFORM_CRAWLER_H_
3 
4 #include "ed/types.h"
5 #include "ed/time.h"
6 #include <geolib/datatypes.h>
7 
8 #include <queue>
9 #include <set>
10 
11 namespace ed
12 {
13 namespace world_model
14 {
15 
24 {
25 
26  struct Node
27  {
28  Node(Idx entity_idx_, const geo::Pose3D& transform_)
29  : entity_idx(entity_idx_), transform(transform_) {}
32  };
33 
34 public:
35 
36  TransformCrawler(const WorldModel& wm, const UUID& start_id, const Time& time);
37 
38  bool next();
39 
40  bool hasNext() const { return !queue_.empty(); }
41 
42  const geo::Pose3D& transform() const { return queue_.front().transform; }
43 
44  const EntityConstPtr& entity() const;
45 
46 private:
47 
48  const WorldModel& wm_;
49 
51 
53 
55 
56  void pushChildren(const Entity& e, const geo::Pose3D& transform);
57 
58 };
59 
60 } // end namespace world_model
61 
62 } // end namespace ed
63 
64 #endif
datatypes.h
ed::WorldModel
Definition: world_model.h:21
types.h
ed::world_model::TransformCrawler::Node::Node
Node(Idx entity_idx_, const geo::Pose3D &transform_)
Definition: transform_crawler.h:28
ed::world_model::TransformCrawler::next
bool next()
Definition: transform_crawler.cpp:35
ed::world_model::TransformCrawler::queue_
std::queue< Node > queue_
Definition: transform_crawler.h:54
ed::world_model::TransformCrawler::entity
const EntityConstPtr & entity() const
Definition: transform_crawler.cpp:28
geo::Transform3T
ed::Time
Definition: time.h:9
queue
ed::world_model::TransformCrawler::time_
Time time_
Definition: transform_crawler.h:50
ed::EntityConstPtr
shared_ptr< const Entity > EntityConstPtr
Definition: types.h:37
ed::world_model::TransformCrawler::TransformCrawler
TransformCrawler(const WorldModel &wm, const UUID &start_id, const Time &time)
Definition: transform_crawler.cpp:14
ed::world_model::TransformCrawler::wm_
const WorldModel & wm_
Definition: transform_crawler.h:48
ed::world_model::TransformCrawler::transform
const geo::Pose3D & transform() const
Definition: transform_crawler.h:42
time.h
ed::Entity
Definition: entity.h:30
ed::world_model::TransformCrawler::visited_
std::set< Idx > visited_
Definition: transform_crawler.h:52
ed::UUID
Definition: uuid.h:10
ed::world_model::TransformCrawler::hasNext
bool hasNext() const
Definition: transform_crawler.h:40
ed::world_model::TransformCrawler::Node::entity_idx
Idx entity_idx
Definition: transform_crawler.h:30
ed::world_model::TransformCrawler::Node
Definition: transform_crawler.h:26
ed::world_model::TransformCrawler::Node::transform
geo::Pose3D transform
Definition: transform_crawler.h:31
ed
Definition: convex_hull.h:8
ed::world_model::TransformCrawler
The TransformCrawler class.
Definition: transform_crawler.h:23
ed::world_model::TransformCrawler::pushChildren
void pushChildren(const Entity &e, const geo::Pose3D &transform)
Definition: transform_crawler.cpp:53
set
ed::Idx
uint64_t Idx
Definition: types.h:21