fix(vfx): classify hardwareless particle emitters once
This commit is contained in:
parent
921712f412
commit
5b3fb17775
8 changed files with 374 additions and 18 deletions
|
|
@ -264,6 +264,29 @@ public sealed class ParticleHookSinkTests
|
|||
Assert.Contains($"0x{Owner:X8}", diagnostic, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MissingEmitterAsset_ReportsOnlyOnceAcrossManyOwners()
|
||||
{
|
||||
const uint missingId = 0x32DEAD00u;
|
||||
const uint secondOwner = Owner + 1u;
|
||||
var registry = new EmitterDescRegistry();
|
||||
var system = new ParticleSystem(registry, new Random(42));
|
||||
var poses = new MutablePoseSource();
|
||||
poses.Publish(Owner, Matrix4x4.Identity, Matrix4x4.Identity);
|
||||
poses.Publish(secondOwner, Matrix4x4.Identity, Matrix4x4.Identity);
|
||||
var sink = new ParticleHookSink(system, poses);
|
||||
var diagnostics = new List<string>();
|
||||
sink.DiagnosticSink = diagnostics.Add;
|
||||
|
||||
sink.OnHook(Owner, Vector3.Zero, Create(missingId, logicalId: 0u));
|
||||
sink.OnHook(secondOwner, Vector3.Zero, Create(missingId, logicalId: 0u));
|
||||
sink.OnHook(Owner, Vector3.Zero, Create(missingId, logicalId: 0u));
|
||||
|
||||
Assert.Empty(system.EnumerateEmitters());
|
||||
Assert.Single(diagnostics);
|
||||
Assert.Contains($"0x{missingId:X8}", diagnostics[0], StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MissingLivePose_HidesPresentationWithoutEndingEmitterLifetime()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue