Optimized cache locality and rendering state change
This commit is contained in:
@@ -75,16 +75,25 @@ namespace Nuake {
|
||||
|
||||
Entity Scene::GetEntityByID(int id)
|
||||
{
|
||||
if (_EntitiesIDMap.find(id) != _EntitiesIDMap.end())
|
||||
{
|
||||
return _EntitiesIDMap[id];
|
||||
}
|
||||
|
||||
auto idView = m_Registry.view<NameComponent>();
|
||||
for (auto e : idView)
|
||||
{
|
||||
NameComponent& nameC = idView.get<NameComponent>(e);
|
||||
if (nameC.ID == id)
|
||||
{
|
||||
return Entity{ e, this };
|
||||
auto newEntity = Entity{ e, this };
|
||||
_EntitiesIDMap[id] = newEntity;
|
||||
return newEntity;
|
||||
}
|
||||
}
|
||||
|
||||
Logger::Log("Entity not found with id: " + std::to_string(id), "scene", CRITICAL);
|
||||
|
||||
assert("Entity not found");
|
||||
}
|
||||
|
||||
@@ -242,6 +251,8 @@ namespace Nuake {
|
||||
nameComponent.Name = entityName;
|
||||
nameComponent.ID = id;
|
||||
|
||||
_EntitiesIDMap[id] = entity;
|
||||
|
||||
Logger::Log("Entity created with name: " + nameComponent.Name, "scene", LOG_TYPE::VERBOSE);
|
||||
return entity;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user