Skip to content

Instantly share code, notes, and snippets.

@SteffenBlake
Created October 18, 2025 17:32
Show Gist options
  • Select an option

  • Save SteffenBlake/75c6bebeca0136229ae6300b9f2eb70f to your computer and use it in GitHub Desktop.

Select an option

Save SteffenBlake/75c6bebeca0136229ae6300b9f2eb70f to your computer and use it in GitHub Desktop.
We couldn’t find any files to show.
@SteffenBlake

Copy link
Copy Markdown
Author

Example code showing how I consume from a StackedSubject:

PauseModel.Instance!.ShowPauseMenu is an Observable bool that controls, well, its self documenting lol

InputModel.Instance!.CancelPressed is the StackedSubject that fires off whenever the cancel button has been pressed.

using Godot;
using R3;
using System;
using BurgerGame.Input;

namespace BurgerGame.PauseMenu;
public partial class PauseMenuContainer : CenterContainer
{
    private IDisposable? _subscription;
    public override void _Ready()
    {
        base._Ready();
        _subscription = PauseModel.Instance!.ShowPauseMenu.Subscribe(OnShowPauseMenu);
    }

    public override void _ExitTree()
    {
        base._ExitTree();
        _subscription?.Dispose();
    }

    IDisposable? _cancelSubscription;
    private void OnShowPauseMenu(bool showPauseMenu)
    {
        if (showPauseMenu)
        {
            _cancelSubscription = InputModel.Instance!.CancelPressed.Subscribe(
                (_) => PauseModel.Instance!.Paused.Value = false
            );
            Visible = true;
        }
        else
        {
            _cancelSubscription?.Dispose();
            _cancelSubscription = null;
            Visible = false;
        }
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment