///
/// Interface implemented by every NPC feature component used by EntityAliveSDXV4.
/// Components own a single concern and are driven by the entity's OnUpdateLive tick.
///
public interface INPCComponent
{
/// Called once during PostInit, after the entity is fully constructed.
void Initialize(EntityAliveSDXV4 entity);
///
/// Called every OnUpdateLive tick. Receives the frame cache by reference so all
/// components share the same pre-populated leader/target data without repeating lookups.
///
void OnUpdateLive(ref NPCFrameCache cache);
/// Called when the entity dies (SetDead).
void OnDead();
/// Called when the entity is removed from the world (OnEntityUnload).
void OnUnload();
}