Shkyera Engine
Easy to use, game engine for Python
Loading...
Searching...
No Matches
EntityHierarchy.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <functional>
4#include <map>
5#include <ranges>
6#include <set>
7
8#include <Common/TypeInfo.hpp>
9#include <ECS/Entity.hpp>
11
12namespace shkyera {
13
21 public:
23 using Children = std::set<Entity>;
24
28 EntityHierarchy() = default;
29
33 ~EntityHierarchy() = default;
34
44
53
62 std::optional<Entity> getParent(Entity child) const;
63
72 const Children& getChildren(Entity parent) const;
73
74 const auto& getParentToChild() const { return _parentToChildren; }
75
76 private:
88
89 std::map<Entity, Children> _parentToChildren;
90 std::map<Entity, Entity> _childToParent;
91};
92
93} // namespace shkyera
Definition EntityHierarchy.hpp:20
std::map< Entity, Children > _parentToChildren
Definition EntityHierarchy.hpp:89
std::optional< Entity > getParent(Entity child) const
Gets the parent of a specified child entity.
Definition EntityHierarchy.cpp:26
std::map< Entity, Entity > _childToParent
Definition EntityHierarchy.hpp:90
const Children & getChildren(Entity parent) const
Gets the children of a specified parent entity.
Definition EntityHierarchy.cpp:34
void attributeChild(Entity parent, Entity child)
Attributes a child entity to a parent entity.
Definition EntityHierarchy.cpp:5
~EntityHierarchy()=default
Destroys the EntityHierarchy object.
bool isAncestor(Entity entity, Entity ancestor) const
Checks if an entity is an ancestor of another entity.
Definition EntityHierarchy.cpp:43
std::set< Entity > Children
Alias for a set of child entities.
Definition EntityHierarchy.hpp:23
const auto & getParentToChild() const
Definition EntityHierarchy.hpp:74
void removeFromParent(Entity child)
Removes a child entity from its parent.
Definition EntityHierarchy.cpp:18
EntityHierarchy()=default
Constructs a new EntityHierarchy object.
Definition Asset.hpp:6
uint32_t Entity
Definition Entity.hpp:7
Definition Clock.hpp:9
Definition Requirements.hpp:12