Build a compare-only dispatcher classifier from RenderFrameView and compare complete opaque, alpha, selection, clip, light, texture, transform, and draw payloads against the accepted path. Preserve retail's stable equal-CYpt ordering with explicit draw-local submission ordinals so material-group history cannot affect alpha ties.
33 lines
953 B
C#
33 lines
953 B
C#
using System.Numerics;
|
|
using AcDream.Core.Selection;
|
|
namespace AcDream.App.Rendering.Selection;
|
|
|
|
/// <summary>
|
|
/// Narrow seam from the normal world draw traversal to retail mouse selection.
|
|
/// Only entities which survive that traversal are published.
|
|
/// </summary>
|
|
internal interface IRetailSelectionRenderSink
|
|
{
|
|
void AddVisiblePart(
|
|
uint serverGuid,
|
|
uint localEntityId,
|
|
int partIndex,
|
|
uint gfxObjId,
|
|
Matrix4x4 partWorld);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Read-only mirror of the exact geometry and drawing-sphere acceptance used
|
|
/// by the retained selection scene. G2's packed dispatcher referee uses it
|
|
/// without publishing a second picking frame.
|
|
/// </summary>
|
|
internal interface IRetailSelectionRenderOracle
|
|
{
|
|
bool TryCreateVisiblePart(
|
|
uint serverGuid,
|
|
uint localEntityId,
|
|
int partIndex,
|
|
uint gfxObjId,
|
|
Matrix4x4 partWorld,
|
|
out RetailSelectionPart part);
|
|
}
|