fix: don't construct zone control twice on player loadin (#1828)

checked that the logs no longer have an error about zone control mis matched pointers

Update EntityManager.cpp
This commit is contained in:
David Markowitz
2025-06-24 20:03:13 -07:00
committed by GitHub
parent f0f98a6108
commit f63a9a6bea
2 changed files with 10 additions and 7 deletions

View File

@@ -394,7 +394,7 @@ void EntityManager::ConstructAllEntities(const SystemAddress& sysAddr) {
}
}
UpdateGhosting(PlayerManager::GetPlayer(sysAddr));
UpdateGhosting(PlayerManager::GetPlayer(sysAddr), true);
}
void EntityManager::DestructEntity(Entity* entity, const SystemAddress& sysAddr) {
@@ -417,7 +417,7 @@ void EntityManager::DestructEntity(Entity* entity, const SystemAddress& sysAddr)
void EntityManager::SerializeEntity(Entity* entity) {
if (!entity) return;
EntityManager::SerializeEntity(*entity);
}
@@ -463,7 +463,7 @@ void EntityManager::UpdateGhosting() {
m_PlayersToUpdateGhosting.clear();
}
void EntityManager::UpdateGhosting(Entity* player) {
void EntityManager::UpdateGhosting(Entity* player, const bool constructAll) {
if (!player) return;
auto* missionComponent = player->GetComponent<MissionComponent>();
@@ -511,9 +511,12 @@ void EntityManager::UpdateGhosting(Entity* player) {
ghostComponent->ObserveEntity(id);
ConstructEntity(entity, player->GetSystemAddress());
entity->SetObservers(entity->GetObservers() + 1);
// TODO: figure out if zone control should be ghosted at all
if (constructAll && entity->GetObjectID() == GetZoneControlEntity()->GetObjectID()) continue;
ConstructEntity(entity, player->GetSystemAddress());
}
}
}