fix(streaming): prepare quiesced destination entities
Separate loaded spatial residency from the world presentation gate so destination live objects acquire mesh owners behind portal space while drawing and simulation stay quiesced. Prevent unowned CPU-cache hits from recreating stale GPU staging work. Co-authored-by: Erik Nilsson <erikn@users.noreply.github.com>
This commit is contained in:
parent
e991eeca34
commit
91e82c3c68
6 changed files with 142 additions and 23 deletions
|
|
@ -153,10 +153,19 @@ public sealed class GpuWorldState : ILiveEntitySpatialQuery
|
|||
public bool IsRenderReady(uint landblockId) =>
|
||||
_loaded.ContainsKey(landblockId)
|
||||
&& (_wbSpawnAdapter?.IsLandblockRenderReady(landblockId) ?? true);
|
||||
/// <summary>
|
||||
/// True when at least one projection for the server object belongs to a
|
||||
/// loaded spatial bucket. This deliberately ignores the world-generation
|
||||
/// presentation gate: destination objects must acquire their render
|
||||
/// resources while portal/login reveal keeps normal world consumers closed.
|
||||
/// </summary>
|
||||
public bool IsLiveEntityProjectionResident(uint serverGuid) =>
|
||||
serverGuid != 0
|
||||
&& _visibleLiveProjectionCounts.ContainsKey(serverGuid);
|
||||
|
||||
public bool IsLiveEntityVisible(uint serverGuid) =>
|
||||
_availability.IsWorldAvailable
|
||||
&& serverGuid != 0
|
||||
&& _visibleLiveProjectionCounts.ContainsKey(serverGuid);
|
||||
&& IsLiveEntityProjectionResident(serverGuid);
|
||||
|
||||
/// <summary>
|
||||
/// Try to grab the loaded record for a landblock — useful for callers
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue