fix(interaction): restore retail loot placement and world-drop projection

This commit is contained in:
Erik 2026-07-27 00:03:15 +02:00
parent 4d095be286
commit 921712f412
24 changed files with 1581 additions and 34 deletions

View file

@ -27,7 +27,7 @@ internal readonly record struct AcceptedStateNetworkUpdate(
internal readonly record struct AcceptedPositionNetworkUpdate(
WorldSession.EntityPositionUpdate Update,
LiveEntityRecord Record,
RuntimeEntityRecord Canonical,
WorldSession.EntitySpawn Spawn,
AcceptedPhysicsTimestamps Timestamps,
PositionTimestampDisposition TimestampDisposition,
@ -173,22 +173,22 @@ internal sealed class LiveEntityInboundAuthorityGate
return false;
}
LiveEntityRecord? record = null;
RuntimeEntityRecord? canonical = null;
ulong positionAuthorityVersion = 0;
ulong velocityAuthorityVersion = 0;
if (disposition is not PositionTimestampDisposition.Rejected)
{
if (!_liveEntities.TryGetRecord(update.Guid, out record))
if (!_liveEntities.TryGetCanonical(update.Guid, out canonical))
return false;
positionAuthorityVersion = record.PositionAuthorityVersion;
velocityAuthorityVersion = record.VelocityAuthorityVersion;
positionAuthorityVersion = canonical.PositionAuthorityVersion;
velocityAuthorityVersion = canonical.VelocityAuthorityVersion;
}
_publishTimestamps(update.Guid, timestamps);
if (disposition is PositionTimestampDisposition.Rejected)
return false;
if (!_liveEntities.IsCurrentPositionAuthority(
record!,
canonical!,
positionAuthorityVersion))
{
return false;
@ -196,7 +196,7 @@ internal sealed class LiveEntityInboundAuthorityGate
accepted = new AcceptedPositionNetworkUpdate(
update,
record!,
canonical!,
spawn,
timestamps,
disposition,