Skip to content
Version 2.11.0
↓ Get the launcher

VirtualListElement record

Scroll-windowed variable list: renders a small fixed Pool of K rows (K ≈ viewport rows + a few margin rows) over a logical list of Count() items that may be FAR larger than K. The framework sizes a scroll content spacer to Count()*RowHeight, tracks the scroll offset, computes the first visible logical index, calls OnWindow(first) BEFORE pulling any slot values (so the plugin’s row Funcs resolve item first+slotIndex), positions the pool rows at their logical offset, and SetActive-shows only rows whose logical index < Count(). Rows MUST be uniform fixed-height (RowHeight). Use for large pickers; the small ListElement (eager full pool) stays for short lists. Height is the viewport height.

public record VirtualListElement : IEquatable<HudElement>
name description
VirtualListElement(…) Scroll-windowed variable list: renders a small fixed Pool of K rows (K ≈ viewport rows + a few margin rows) over a logical list of Count() items that may be FAR larger than K. The framework sizes a scroll content spacer to Count()*RowHeight, tracks the scroll offset, computes the first visible logical index, calls OnWindow(first) BEFORE pulling any slot values (so the plugin’s row Funcs resolve item first+slotIndex), positions the pool rows at their logical offset, and SetActive-shows only rows whose logical index < Count(). Rows MUST be uniform fixed-height (RowHeight). Use for large pickers; the small ListElement (eager full pool) stays for short lists. Height is the viewport height.
Count { get; set; }
Height { get; set; }
OnWindow { get; set; }
Pool { get; set; }
ResetScroll { get; set; } When non-null, polled each refresh — returning true resets the scroll offset to the top.
RowHeight { get; set; }