logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    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.
    In this article
    © 2026 Serenity. All Rights Reserved