Namespace Serenity.Menu.Infrastructure.Cascade
Classes
CascadeMenuRenderer
Renders a CascadeMenuModel as FF8-style cascading panels: every open level is drawn at a configurable offset from its parent (DefaultOffset, overridable per page), with only the top level interactable and deeper-but-not-top levels dimmed as a breadcrumb. Multi-column pages draw their columns side-by-side (target selection shows Enemies + Party at once).
Each column is the active theme's CascadeViewTemplate panel (a UnityCascadePanel)
filled with the theme's submittable option components, so the cascade matches the theme and focus uses
each component's native highlight. When the theme has no cascade template the renderer falls back to a
procedural panel. Supports keyboard/gamepad (Tick()) and mouse (hover focuses, click submits).
CascadePointerProxy
Bridges Unity pointer events on a cascade option to the renderer: hover focuses the option, click submits it. Attached to each interactable option so the menu works with the mouse independently of Serenity's menu input router. Requires a raycastable graphic on the option (the button's background).
DefaultCascadeMenuContext
Default, game-agnostic ICascadeMenuContext for SO-authored cascade views. It lets a static cascade (a OptionsCascadeMenu tree) run with no game code:
- Localize(string) passes keys through verbatim.
- IsConditionMet(string) defaults to true (ungated entries are enabled).
- GetEntries(string) returns nothing and warns — dynamic/target cascades need a game-supplied context that resolves their runtime sources.
- Resolve(object) dispatches the leaf's optional EventDispatcherSignal (carried as the resolved selection) then asks the host view to return to its opener.