Added SetParent to World
This commit is contained in:
@@ -31,6 +31,8 @@ public:
|
|||||||
const ComponentPool* GetComponents(std::string componentType);
|
const ComponentPool* GetComponents(std::string componentType);
|
||||||
// Get entity parent
|
// Get entity parent
|
||||||
EntityID GetParent(EntityID entity);
|
EntityID GetParent(EntityID entity);
|
||||||
|
// Change the parent of an entity
|
||||||
|
void SetParent(EntityID entity, EntityID parent);
|
||||||
// Get all component pools
|
// Get all component pools
|
||||||
const std::unordered_map<std::string, ComponentPool*>& GetComponentPools() const { return m_ComponentPools; }
|
const std::unordered_map<std::string, ComponentPool*>& GetComponentPools() const { return m_ComponentPools; }
|
||||||
// Get the entity children map
|
// Get the entity children map
|
||||||
@@ -40,6 +42,7 @@ private:
|
|||||||
EntityID m_CurrentEntityID = 1;
|
EntityID m_CurrentEntityID = 1;
|
||||||
|
|
||||||
std::unordered_map<EntityID, EntityID> m_EntityParents;
|
std::unordered_map<EntityID, EntityID> m_EntityParents;
|
||||||
|
// TODO: This should be a more effective structure
|
||||||
std::unordered_multimap<EntityID, EntityID> m_EntityChildren;
|
std::unordered_multimap<EntityID, EntityID> m_EntityChildren;
|
||||||
std::unordered_map<std::string, ComponentPool*> m_ComponentPools;
|
std::unordered_map<std::string, ComponentPool*> m_ComponentPools;
|
||||||
|
|
||||||
|
|||||||
@@ -99,6 +99,22 @@ EntityID World::GetParent(EntityID entity)
|
|||||||
return m_EntityParents.at(entity);
|
return m_EntityParents.at(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void World::SetParent(EntityID entity, EntityID parent)
|
||||||
|
{
|
||||||
|
EntityID lastParent = m_EntityParents.at(entity);
|
||||||
|
auto parentChildren = m_EntityChildren.equal_range(lastParent);
|
||||||
|
for (auto it = parentChildren.first; it != parentChildren.second; it++) {
|
||||||
|
if (it->second == entity) {
|
||||||
|
m_EntityChildren.erase(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_EntityParents[entity] = parent;
|
||||||
|
m_EntityChildren.insert(std::make_pair(parent, entity));
|
||||||
|
}
|
||||||
|
|
||||||
EntityID World::generateEntityID()
|
EntityID World::generateEntityID()
|
||||||
{
|
{
|
||||||
// TODO: Make EntityID generation smarter
|
// TODO: Make EntityID generation smarter
|
||||||
|
|||||||
Reference in New Issue
Block a user