mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-06-26 06:39:50 +00:00
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:
parent
f0f98a6108
commit
f63a9a6bea
@ -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) {
|
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) {
|
void EntityManager::SerializeEntity(Entity* entity) {
|
||||||
if (!entity) return;
|
if (!entity) return;
|
||||||
|
|
||||||
EntityManager::SerializeEntity(*entity);
|
EntityManager::SerializeEntity(*entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -463,7 +463,7 @@ void EntityManager::UpdateGhosting() {
|
|||||||
m_PlayersToUpdateGhosting.clear();
|
m_PlayersToUpdateGhosting.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityManager::UpdateGhosting(Entity* player) {
|
void EntityManager::UpdateGhosting(Entity* player, const bool constructAll) {
|
||||||
if (!player) return;
|
if (!player) return;
|
||||||
|
|
||||||
auto* missionComponent = player->GetComponent<MissionComponent>();
|
auto* missionComponent = player->GetComponent<MissionComponent>();
|
||||||
@ -511,9 +511,12 @@ void EntityManager::UpdateGhosting(Entity* player) {
|
|||||||
|
|
||||||
ghostComponent->ObserveEntity(id);
|
ghostComponent->ObserveEntity(id);
|
||||||
|
|
||||||
ConstructEntity(entity, player->GetSystemAddress());
|
|
||||||
|
|
||||||
entity->SetObservers(entity->GetObservers() + 1);
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "dCommonVars.h"
|
#include "dCommonVars.h"
|
||||||
|
|
||||||
class Entity;
|
class Entity;
|
||||||
class EntityInfo;
|
struct EntityInfo;
|
||||||
class Player;
|
class Player;
|
||||||
class User;
|
class User;
|
||||||
enum class eReplicaComponentType : uint32_t;
|
enum class eReplicaComponentType : uint32_t;
|
||||||
@ -54,7 +54,7 @@ public:
|
|||||||
void SetGhostDistanceMin(float value);
|
void SetGhostDistanceMin(float value);
|
||||||
void QueueGhostUpdate(LWOOBJID playerID);
|
void QueueGhostUpdate(LWOOBJID playerID);
|
||||||
void UpdateGhosting();
|
void UpdateGhosting();
|
||||||
void UpdateGhosting(Entity* player);
|
void UpdateGhosting(Entity* player, const bool constructAll = false);
|
||||||
void CheckGhosting(Entity* entity);
|
void CheckGhosting(Entity* entity);
|
||||||
Entity* GetGhostCandidate(LWOOBJID id) const;
|
Entity* GetGhostCandidate(LWOOBJID id) const;
|
||||||
bool GetGhostingEnabled() const;
|
bool GetGhostingEnabled() const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user