fix(motion): restore retail object manager order
Process animation completion at the retail process_hooks boundary, then run targeting, movement, PartArray completion, and PositionManager in the named UpdateObjectInternal order for local, remote, hidden, and position-less animated objects. Retire TS-42 with deterministic conformance coverage.\n\nCo-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
0f996db747
commit
c5ab99081c
17 changed files with 493 additions and 98 deletions
|
|
@ -0,0 +1,38 @@
|
|||
using AcDream.Core.Physics;
|
||||
|
||||
namespace AcDream.Core.Tests.Physics;
|
||||
|
||||
public sealed class RetailObjectManagerTailTests
|
||||
{
|
||||
[Fact]
|
||||
public void Run_UsesNamedRetailManagerOrder()
|
||||
{
|
||||
var calls = new List<string>();
|
||||
|
||||
RetailObjectManagerTail.Run(
|
||||
checkDetection: () => calls.Add("detection"),
|
||||
handleTargeting: () => calls.Add("target"),
|
||||
movementUseTime: () => calls.Add("movement"),
|
||||
partArrayHandleMovement: () => calls.Add("part-array"),
|
||||
positionUseTime: () => calls.Add("position"));
|
||||
|
||||
Assert.Equal(
|
||||
["detection", "target", "movement", "part-array", "position"],
|
||||
calls);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Run_SkipsMissingManagersWithoutDuplicatingNeighbours()
|
||||
{
|
||||
var calls = new List<string>();
|
||||
|
||||
RetailObjectManagerTail.Run(
|
||||
checkDetection: null,
|
||||
handleTargeting: () => calls.Add("target"),
|
||||
movementUseTime: null,
|
||||
partArrayHandleMovement: () => calls.Add("part-array"),
|
||||
positionUseTime: null);
|
||||
|
||||
Assert.Equal(["target", "part-array"], calls);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue