IGrabPresenter.Grab(GrabEvent) only; the binder's Transform and velocity resolvers go. TractorBeam presents a running grab (aims at Started's TargetPosition, emits at Power, dark otherwise). FieldDriver draws its tendril from GrabEvents alone with a real-time phase clock over each event's PhaseDuration and writes no transform and destroys nothing; its grab times move to FieldTester, now the scene's stand-in sim that owns its pickup's timeline and pose. ItemPickup keeps its label lit while held. ImpactPresenterSmoke becomes CapabilityPresentationSmoke with a grab section; its two untracked-ship expectations follow DrawsAt since contact-hud. Builds (Unity 6000.3.24f1 batchmode: smoke ok, scene opens, no missing script). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 lines
893 B
C#
27 lines
893 B
C#
using UnityEngine;
|
|
|
|
// Presentation-side contract for the capability events in Assets/Scripts/ServerShared/CapabilityEvents.cs
|
|
// (docs/headless-playground-cut.md fork L). A presentation implements whichever of these interfaces
|
|
// match what it visualizes -- one presentation may implement all four (the field shield), or just one
|
|
// (a dedicated melee-blade effect). CapabilityPresentationBinder is what actually wires a presenter's
|
|
// method to the matching event stream; a presenter never talks to CapabilityEvents itself.
|
|
public interface IAbsorbPresenter
|
|
{
|
|
void Absorb(AbsorbEvent e);
|
|
}
|
|
|
|
// Presenters read the event and the simulated pose, never a Transform the sim does not own.
|
|
public interface IGrabPresenter
|
|
{
|
|
void Grab(GrabEvent e);
|
|
}
|
|
|
|
public interface IMeleePresenter
|
|
{
|
|
void Melee(MeleeEvent e);
|
|
}
|
|
|
|
public interface IThrustPresenter
|
|
{
|
|
void Thrust(ThrustEvent e);
|
|
}
|