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
28
src/AcDream.Core/Physics/RetailObjectManagerTail.cs
Normal file
28
src/AcDream.Core/Physics/RetailObjectManagerTail.cs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
namespace AcDream.Core.Physics;
|
||||
|
||||
/// <summary>
|
||||
/// Executes the manager tail of retail
|
||||
/// <c>CPhysicsObj::UpdateObjectInternal</c> (<c>0x005156B0</c>).
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The order is observable. In particular, animation completion hooks have
|
||||
/// already run when this tail begins, so MoveTo may react to a completion in
|
||||
/// the same object quantum. A null callback represents an absent retail
|
||||
/// manager; it is not a separate execution path.
|
||||
/// </remarks>
|
||||
public static class RetailObjectManagerTail
|
||||
{
|
||||
public static void Run(
|
||||
Action? checkDetection,
|
||||
Action? handleTargeting,
|
||||
Action? movementUseTime,
|
||||
Action? partArrayHandleMovement,
|
||||
Action? positionUseTime)
|
||||
{
|
||||
checkDetection?.Invoke();
|
||||
handleTargeting?.Invoke();
|
||||
movementUseTime?.Invoke();
|
||||
partArrayHandleMovement?.Invoke();
|
||||
positionUseTime?.Invoke();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue