Skip to content
Snippets Groups Projects
Select Git revision
  • 841af8d8dda9fdb58f52836709031a853324015c
  • main default protected
  • leveleditor
  • david-author
  • clang-tidy-cleanup
  • architecture-refactoring
  • cleanUpMenus
  • doxygen-cleanup
  • project-structure-refactoring
  • interpolation
  • buildingFeatures
  • win_end_screen
  • helpMenu
  • leveleditor-placement
  • text-rendering
  • updated_unit_contextmenu
  • level-from-commandline
  • unit_contextmenu
  • player
  • engine-scaling
  • clang-tidy
21 results

main.cpp

Blame
  • ClusterConsole.cpp 1.85 KiB
    #include "ClusterConsole/ClusterConsole.h"
    
    #include "IDisplayCluster.h"
    #include "Cluster/DisplayClusterClusterEvent.h"
    
    void FClusterConsole::Register()
    {
    	/* Registering console command */
    	ClusterConsoleCommand = IConsoleManager::Get().RegisterConsoleCommand(
    		TEXT("ClusterExecute"),
    		TEXT("<Your Command> - Execute commands on every node of the nDisplay cluster by prepending ClusterExecute"),
    		FConsoleCommandWithArgsDelegate::CreateLambda(
    			[](const TArray<FString>& Args)
    			{
    				if (IDisplayCluster::Get().GetClusterMgr() == nullptr || Args.Num() == 0)
    					return;
    
    				/* Emitting cluster event */
    				FDisplayClusterClusterEventJson ClusterEvent;
    				ClusterEvent.Name = "ClusterExecute " + Args[0];
    				ClusterEvent.Type = Args[0];
    				ClusterEvent.Category = "NDisplayClusterExecute";
    				ClusterEvent.Parameters.Add("Command", FString::Join(Args, TEXT(" ")));
    
    				IDisplayCluster::Get().GetClusterMgr()->EmitClusterEventJson(ClusterEvent, false);
    			}));
    
    	/* Register cluster event handling */
    	const IDisplayCluster* DisplayCluster = FModuleManager::LoadModulePtr<IDisplayCluster>(IDisplayCluster::ModuleName);
    	if (DisplayCluster && !ClusterEventListenerDelegate.IsBound())
    	{
    		ClusterEventListenerDelegate = FOnClusterEventJsonListener::CreateLambda(
    			[](const FDisplayClusterClusterEventJson& Event)
    			{
    				/* Actual handling */
    				if (Event.Category.Equals("NDisplayClusterExecute") && Event.Parameters.Contains("Command") && GEngine)
    				{
    					GEngine->Exec(GEngine->GetCurrentPlayWorld(), *Event.Parameters["Command"]);
    				}
    			});
    		DisplayCluster->GetClusterMgr()->AddClusterEventJsonListener(ClusterEventListenerDelegate);
    	}
    }
    
    void FClusterConsole::Unregister() const
    {
    	IConsoleManager::Get().UnregisterConsoleObject(ClusterConsoleCommand);
    	IDisplayCluster::Get().GetClusterMgr()->RemoveClusterEventJsonListener(ClusterEventListenerDelegate);
    }