mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-01-31 13:50:48 +00:00
Fixes for client network IDs
Fixed an off-by-one error on client IDs (these need to start at 1 as 0 is an invalid network ID). Morphing will now swap the client body's ID so it remains in the first 1 - MAXPLAYERS slots.
This commit is contained in:
parent
566e03da60
commit
cf6bad97e8
3 changed files with 7 additions and 2 deletions
|
@ -637,10 +637,11 @@ void NetworkEntityManager::InitializeNetworkEntities()
|
|||
}
|
||||
|
||||
// Clients need special handling since they always go in slots 1 - MAXPLAYERS.
|
||||
void NetworkEntityManager::SetClientNetworkEntity(DObject* mo, const uint32_t id)
|
||||
void NetworkEntityManager::SetClientNetworkEntity(DObject* mo, const unsigned int playNum)
|
||||
{
|
||||
// If resurrecting, we need to swap the corpse's position with the new pawn's
|
||||
// position so it's no longer considered the client's body.
|
||||
const uint32_t id = ClientNetIDStart + playNum;
|
||||
DObject* const oldBody = s_netEntities[id];
|
||||
if (oldBody != nullptr)
|
||||
{
|
||||
|
|
|
@ -502,7 +502,7 @@ public:
|
|||
inline static uint32_t NetIDStart;// = MAXPLAYERS + 1u;
|
||||
|
||||
static void InitializeNetworkEntities();
|
||||
static void SetClientNetworkEntity(DObject* mo, const uint32_t id);
|
||||
static void SetClientNetworkEntity(DObject* mo, const unsigned int playNum);
|
||||
static void AddNetworkEntity(DObject* const ent);
|
||||
static void RemoveNetworkEntity(DObject* const ent);
|
||||
static DObject* GetNetworkEntity(const uint32_t id);
|
||||
|
|
|
@ -5390,6 +5390,10 @@ int MorphPointerSubstitution(AActor* from, AActor* to)
|
|||
{
|
||||
to->player = from->player;
|
||||
from->player = nullptr;
|
||||
|
||||
// Swap the new body into the right network slot if it's a client (this doesn't
|
||||
// really matter for regular Actors since they grab any ID they can get anyway).
|
||||
NetworkEntityManager::SetClientNetworkEntity(to, to->player - players);
|
||||
}
|
||||
|
||||
if (from->alternative != nullptr)
|
||||
|
|
Loading…
Reference in a new issue