fix(selection): port SmartBox click lighting pulse

Port the retail high/low material-lighting cadence for successful world clicks, keep it instance-scoped in the modern renderer, and restore authored lighting after 0.8 seconds. Correct the selection oracle and pin timing plus per-frame buffer lifecycle with tests.

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-17 23:00:04 +02:00
parent 146a963aeb
commit ea4f52ec51
11 changed files with 338 additions and 16 deletions

View file

@ -0,0 +1,17 @@
namespace AcDream.App.Rendering.Selection;
/// <summary>
/// Supplies the transient material lighting override which retail applies to
/// a world object after SmartBox resolves a click.
/// </summary>
internal interface IRetailSelectionLightingSource
{
/// <summary>Advances the retail SmartBox flip cadence once for this frame.</summary>
void TickLighting();
/// <summary>
/// Returns the current CMaterial luminosity/diffuse replacement for an
/// object, or false when its authored material values must be restored.
/// </summary>
bool TryGetLighting(uint serverGuid, out RetailSelectionLighting lighting);
}