This is a modified version of Epic's ShooterGame tutorial in which we've replaced the original UI (HUD and menus) with one made with NoesisGUI. Because the original UI was done using native code (HUD and Slate Widgets), we've had to make some changes to expose some data and functionality to Blueprints, but all the UI is done using XAML and Blueprints.
Blueprint'/Game/ShooterGame/ShooterGame_Menu_Noesis.ShooterGame_Menu_Noesis',Blueprint'/Game/ShooterGame/ShooterGame_TeamDeathmatch_Noesis.ShooterGame_TeamDeathmatch_Noesis'andBlueprint'/Game/ShooterGame/ShotterGame_FreeForAll_Noesis.ShotterGame_FreeForAll_Noesis': TheseGameModes replace the original ones. They specify which controllers to use (Blueprint'/Game/ShooterGame/ShooterPlayerController_Menu_Noesis.ShooterPlayerController_Menu_Noesis'inBlueprint'/Game/ShooterGame/ShooterGame_Menu_Noesis.ShooterGame_Menu_Noesis'andBlueprint'/Game/ShooterGame/ShooterPlayerController_Noesis.ShooterPlayerController_Noesis'in the other two), and specify noHUDwill be used, as we will be using NoesisGUI for it.
Blueprint'/Game/ShooterGame/ShooterPlayerController_Menu_Noesis.ShooterPlayerController_Menu_Noesis': It replaces thePlayerControllerused in the main menu of the game. It binds to the eventsOnStateStartedandOnStateEndingfromShooterGameInstance. The functionOnStateStartedis responsible for creating aWidgetfrom theNoesisViewNoesisBlueprint'/Game/ShooterGame/MainMenuView.MainMenuView', adding it to the viewport and setting the input mode.
Blueprint'/Game/ShooterGame/ShooterPlayerController_Noesis.ShooterPlayerController_Noesis': It replaces thePlayerControllerused in game. It handles theInGameMenuInputActionto show and hide the in game menu, which is aWidgetcreated from theNoesisViewNoesisBlueprint'/Game/ShooterGame/GameMenuView.GameMenuView'.
NoesisBlueprint'/Game/ShooterGame/HUDView.HUDView': It's theNoesisViewfor the in game HUD. It also theDataContextfor theNoesisXamlNoesisXaml'/Game/ShooterGame/HUD.HUD'. It exposes the properties used forBindingas variables, which are grouped in the 'Properties' category.
NoesisBlueprint'/Game/ShooterGame/GameMenuView.GameMenuView': It's theNoesisViewfor the in game HUD. It also theDataContextfor theNoesisXamlNoesisXaml'/Game/ShooterGame/GameMenu.GameMenu'. It exposes the properties used forBindingas variables, which are grouped in the 'Properties' category, and a few as pairs of Get/Set functions. Note how the propertiesInfiniteAmmo,InfiniteClip,FreezeMatchTimerandHealthRegeneration, which are the ones implemented as functions and get their data from theShooterPlayerControllerare manually notified in theInitializefunction when said variable changes, as well as in the corresponding Set functions. It also implements theCommandsApplyOptions,Resume,BackToMainMenuandQuit.
NoesisBlueprint'/Game/ShooterGame/MainMenuView.MainMenuView': It's theNoesisViewfor the in game HUD. It also theDataContextfor theNoesisXamlNoesisXaml'/Game/ShooterGame/MainMenu.MainMenu'. It exposes the properties used forBindingas variables, which are grouped in the 'Properties' category. It also implements theCommandsApplyOptions,HostFFA,HostTDM,SearchServer,JoinGameandQuit.SearchServerandJoinGameare used alongCanExecuteSearchServerandCanExecuteJoinGame, that serve as theCanExecutefunctions of their respectiveCommands.
ShooterEntry - Level Blueprint: It has aGameModeoverride to useBlueprint'/Game/ShooterGame/ShooterGame_Menu_Noesis.ShooterGame_Menu_Noesis'.