fix(rendering): preserve canonical projection ownership
This commit is contained in:
parent
d8d9897376
commit
accd402dd7
2 changed files with 43 additions and 6 deletions
|
|
@ -522,13 +522,22 @@ internal sealed class CurrentRenderSceneOracle :
|
|||
tuple.LandblockId);
|
||||
if (!_dispatcherProjectionByEntity.TryGetValue(
|
||||
tuple.Entity,
|
||||
out CurrentRenderProjectionFingerprint projection)
|
||||
|| projection.LandblockId != cacheLandblockId)
|
||||
out CurrentRenderProjectionFingerprint projection))
|
||||
{
|
||||
projection = CreateFingerprint(
|
||||
cacheLandblockId,
|
||||
tuple.Entity,
|
||||
ProjectionClassOf(tuple.Entity));
|
||||
// Logical projection identity remains the canonical owner
|
||||
// captured by the partition. The dispatcher's cache hint is
|
||||
// a separate routing fact and can intentionally be the
|
||||
// temporary player-bucket landblock for outdoor objects.
|
||||
// Conflating the two rewrote identity at this observer edge.
|
||||
if (!_projectionByEntity.TryGetValue(
|
||||
tuple.Entity,
|
||||
out projection))
|
||||
{
|
||||
projection = CreateFingerprint(
|
||||
cacheLandblockId,
|
||||
tuple.Entity,
|
||||
ProjectionClassOf(tuple.Entity));
|
||||
}
|
||||
_dispatcherProjectionByEntity[tuple.Entity] = projection;
|
||||
}
|
||||
var candidate = new CurrentRenderDispatcherFingerprint(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue