feat(vfx): port retail hidden and teleport presentation
Preserve canonical live-object ownership across Hidden transitions and remote teleport placement so effects, collision, streaming, and targeting remain synchronized.
This commit is contained in:
parent
a51ebc66e9
commit
1e98d81448
46 changed files with 4883 additions and 127 deletions
|
|
@ -88,6 +88,38 @@ public sealed class AttachmentUpdateOrderTests
|
|||
Assert.Equal(new Vector3(100f, 2f, 0f), renderedOrigin, new Vector3ToleranceComparer());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NestedDrawable_InheritsAncestorSuppressionWithoutMutatingOwnState()
|
||||
{
|
||||
var root = Entity(1u);
|
||||
var child = Entity(2u);
|
||||
var grandchild = Entity(3u);
|
||||
root.IsDrawVisible = false;
|
||||
|
||||
EquippedChildRenderController.ApplyParentDrawVisibility(child, root);
|
||||
EquippedChildRenderController.ApplyParentDrawVisibility(grandchild, child);
|
||||
|
||||
Assert.True(child.IsDrawVisible);
|
||||
Assert.False(child.IsAncestorDrawVisible);
|
||||
Assert.True(grandchild.IsDrawVisible);
|
||||
Assert.False(grandchild.IsAncestorDrawVisible);
|
||||
|
||||
root.IsDrawVisible = true;
|
||||
EquippedChildRenderController.ApplyParentDrawVisibility(child, root);
|
||||
EquippedChildRenderController.ApplyParentDrawVisibility(grandchild, child);
|
||||
Assert.True(child.IsAncestorDrawVisible);
|
||||
Assert.True(grandchild.IsAncestorDrawVisible);
|
||||
}
|
||||
|
||||
private static AcDream.Core.World.WorldEntity Entity(uint id) => new()
|
||||
{
|
||||
Id = id,
|
||||
SourceGfxObjOrSetupId = 0x02000001u,
|
||||
Position = Vector3.Zero,
|
||||
Rotation = Quaternion.Identity,
|
||||
MeshRefs = Array.Empty<AcDream.Core.World.MeshRef>(),
|
||||
};
|
||||
|
||||
[Fact]
|
||||
public void AncestorTeardownCollectsEntireAttachmentSubtreePostOrder()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue