checkpoint: preserve user-gated FW closeout fixes
This commit is contained in:
parent
a2f2eb7d78
commit
b8befded8b
22 changed files with 1005 additions and 198 deletions
|
|
@ -193,6 +193,20 @@ public sealed partial class WbDrawDispatcher
|
|||
ArgumentNullException.ThrowIfNull(batches);
|
||||
ArgumentNullException.ThrowIfNull(selectionParts);
|
||||
|
||||
// Retail CPhysicsObj::set_nodraw -> CPartArray::SetNoDrawInternal
|
||||
// removes the PartArray from drawing immediately; logical object,
|
||||
// cell, script, particle, and eventual DeleteObject lifetimes remain
|
||||
// independent. The retained render scene expresses that exact edge
|
||||
// by clearing RenderProjectionFlags.Draw. The pre-FW dispatcher read
|
||||
// WorldEntity.IsDrawVisible before classifying, but the production
|
||||
// frame-walk consumes immutable RenderProjectionRecords and therefore
|
||||
// must honor the equivalent record flag here. Without this gate an
|
||||
// impacted spell projectile remained visible until ACE's delayed
|
||||
// DeleteObject five seconds later even though its SetState had already
|
||||
// set NoDraw.
|
||||
if ((projection.Flags & RenderProjectionFlags.Draw) == 0)
|
||||
return;
|
||||
|
||||
RenderInstanceCandidate entity =
|
||||
RenderInstanceCandidate.FromProjection(
|
||||
in projection,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue