Created
April 9, 2015 01:29
-
-
Save gotwig/f8bc7bc33436c28f5dfe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Fill out your copyright notice in the Description page of Project Settings. | |
#include "CarCarCar.h" | |
#include "UBP_FuncLib.h" | |
#include "OnlineSubsystem.h" | |
#include "Runtime/Engine/Classes/Engine/GameInstance.h" | |
FString UUBP_FuncLib::GetSessionResultKeyValue(const FBlueprintSessionResult& Result, FName keyName) | |
{ | |
FString keyValue; | |
Result.OnlineResult.Session.SessionSettings.Get(keyName, keyValue); | |
return keyValue; | |
} | |
void UUBP_FuncLib::UpdateSession(TArray<FName> KeyIDs,TArray<FString> KeyValues, bool RefreshOnlinedata) | |
{ | |
auto Sessions = IOnlineSubsystem::Get()->GetSessionInterface(); | |
if (Sessions.IsValid() && KeyIDs.Num() > 0 && KeyValues.Num() > 0 && KeyIDs.Num() == KeyValues.Num()) | |
{ | |
FOnlineSessionSettings Settings; | |
for (int32 i = 0; i < KeyIDs.Num(); ++i) | |
{ | |
FOnlineSessionSetting Setting(KeyValues[i]); | |
Settings.Set(KeyIDs[i], Setting); | |
} | |
Sessions->UpdateSession(GameSessionName, Settings, RefreshOnlinedata); | |
UE_LOG(LogClass, Log, TEXT("Updated Session")); | |
} | |
else | |
{ | |
UE_LOG(LogClass, Log, TEXT("Not Updated Session")); | |
FFrame::KismetExecutionMessage(TEXT("Sessions not supported by Online Subsystem"), ELogVerbosity::Warning); | |
} | |
} | |
TArray<FString> UUBP_FuncLib::SessionSettingsToString(const FBlueprintSessionResult& Result) | |
{ | |
TArray<FString> SessionSettings = TArray<FString>(); | |
for (FSessionSettings::TConstIterator It(Result.OnlineResult.Session.SessionSettings.Settings); It; ++It) | |
{ | |
UE_LOG(LogClass, Log, TEXT("Test SessionToString")); | |
FName Key = It.Key(); | |
const FOnlineSessionSetting& Setting = It.Value(); | |
SessionSettings.Add(Key.ToString()); | |
SessionSettings.Add(Setting.ToString()); | |
} | |
return SessionSettings; | |
} | |
TArray<FString> UUBP_FuncLib::GetAllMapNames(FString folderPath) | |
{ | |
auto ObjectLibrary = UObjectLibrary::CreateLibrary(UWorld::StaticClass(), false, true); | |
ObjectLibrary->LoadAssetDataFromPath(folderPath); | |
TArray<FAssetData> AssetDatas; | |
ObjectLibrary->GetAssetDataList(AssetDatas); | |
TArray<FString> Names = TArray<FString>(); | |
for (int32 i = 0; i < AssetDatas.Num(); ++i) | |
{ | |
FAssetData& AssetData = AssetDatas[i]; | |
auto name = AssetData.AssetName.ToString(); | |
Names.Add(name); | |
} | |
return Names; | |
} | |
TArray<FString> UUBP_FuncLib::GetAllFileNames(FString folderPath) | |
{ | |
auto ObjectLibrary = UObjectLibrary::CreateLibrary(false, false, true); | |
ObjectLibrary->LoadAssetDataFromPath(folderPath); | |
TArray<FAssetData> AssetDatas; | |
ObjectLibrary->GetAssetDataList(AssetDatas); | |
UE_LOG(LogTemp, Warning, TEXT("Found maps: %d"), AssetDatas.Num()); | |
TArray<FString> Names = TArray<FString>(); | |
for (int32 i = 0; i < AssetDatas.Num(); ++i) | |
{ | |
FAssetData& AssetData = AssetDatas[i]; | |
auto name = AssetData.AssetName.ToString(); | |
Names.Add(name); | |
} | |
return Names; | |
} | |
void UUBP_FuncLib::CustomStuff() | |
{ | |
} | |
void UUBP_FuncLib::RemoveSplitscreenPlayers() | |
{ | |
const int32 MaxSplitScreenPlayers = 4; | |
ULocalPlayer* PlayersToRemove[MaxSplitScreenPlayers]; | |
int32 RemIndex = 0; | |
for (FConstPlayerControllerIterator Iterator = GEngine->GameViewport->GetWorld()->GetPlayerControllerIterator(); Iterator; ++Iterator) | |
{ | |
// Remove only local split screen players | |
APlayerController* Controller = *Iterator; | |
if (Controller && Controller->IsLocalController() && !Controller->IsPrimaryPlayer()) | |
{ | |
ULocalPlayer* ExPlayer = Cast<ULocalPlayer>(Controller->Player); | |
if (ExPlayer) | |
{ | |
PlayersToRemove[RemIndex++] = ExPlayer; | |
Controller->PawnPendingDestroy(Controller->GetPawn()); | |
} | |
} | |
} | |
for (int32 i = 0; i < RemIndex; ++i) | |
{ | |
GEngine->GameViewport->RemovePlayer(PlayersToRemove[i]); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment