本文整理汇总了C++中IOnlineSessionPtr::EndSession方法的典型用法代码示例。如果您正苦于以下问题:C++ IOnlineSessionPtr::EndSession方法的具体用法?C++ IOnlineSessionPtr::EndSession怎么用?C++ IOnlineSessionPtr::EndSession使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOnlineSessionPtr
的用法示例。
在下文中一共展示了IOnlineSessionPtr::EndSession方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DestroyCurSession
void UUModGameInstance::DestroyCurSession(IOnlineSessionPtr Sessions)
{
FName str = *CurSessionName;
CurSessionName = TEXT("");
Sessions->EndSession(str);
Sessions->DestroySession(str);
}
示例2: CleanupSessionOnReturnToMenu
/** Ends and/or destroys game session */
void AShooterPlayerController::CleanupSessionOnReturnToMenu()
{
bool bPendingOnlineOp = false;
// end online game and then destroy it
AShooterPlayerState* ShooterPlayerState = Cast<AShooterPlayerState>(PlayerState);
if (ShooterPlayerState)
{
IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get();
if (OnlineSub)
{
IOnlineSessionPtr Sessions = OnlineSub->GetSessionInterface();
if (Sessions.IsValid())
{
EOnlineSessionState::Type SessionState = Sessions->GetSessionState(ShooterPlayerState->SessionName);
UE_LOG(LogOnline, Log, TEXT("Session %s is '%s'"), *ShooterPlayerState->SessionName.ToString(), EOnlineSessionState::ToString(SessionState));
if (EOnlineSessionState::InProgress == SessionState)
{
UE_LOG(LogOnline, Log, TEXT("Ending session %s on return to main menu"), *ShooterPlayerState->SessionName.ToString() );
Sessions->AddOnEndSessionCompleteDelegate(OnEndSessionCompleteDelegate);
Sessions->EndSession(ShooterPlayerState->SessionName);
bPendingOnlineOp = true;
}
else if (EOnlineSessionState::Ending == SessionState)
{
UE_LOG(LogOnline, Log, TEXT("Waiting for session %s to end on return to main menu"), *ShooterPlayerState->SessionName.ToString() );
Sessions->AddOnEndSessionCompleteDelegate(OnEndSessionCompleteDelegate);
bPendingOnlineOp = true;
}
else if (EOnlineSessionState::Ended == SessionState ||
EOnlineSessionState::Pending == SessionState)
{
UE_LOG(LogOnline, Log, TEXT("Destroying session %s on return to main menu"), *ShooterPlayerState->SessionName.ToString() );
Sessions->AddOnDestroySessionCompleteDelegate(OnDestroySessionCompleteDelegate);
Sessions->DestroySession(ShooterPlayerState->SessionName);
bPendingOnlineOp = true;
}
else if (EOnlineSessionState::Starting == SessionState)
{
UE_LOG(LogOnline, Log, TEXT("Waiting for session %s to start, and then we will end it to return to main menu"), *ShooterPlayerState->SessionName.ToString() );
Sessions->AddOnStartSessionCompleteDelegate(OnStartSessionCompleteEndItDelegate);
bPendingOnlineOp = true;
}
}
}
}
if (!bPendingOnlineOp)
{
GEngine->HandleDisconnect(GetWorld(), GetWorld()->GetNetDriver());
}
}
示例3: EndOnlineSession
void UOnlineSessionClient::EndOnlineSession(FName SessionName)
{
IOnlineSessionPtr SessionInterface = Online::GetSessionInterface(GetWorld());
if (SessionInterface.IsValid())
{
FNamedOnlineSession* Session = SessionInterface->GetNamedSession(SessionName);
if (Session &&
Session->SessionState == EOnlineSessionState::InProgress)
{
EndSessionCompleteHandle = SessionInterface->AddOnEndSessionCompleteDelegate_Handle(FOnStartSessionCompleteDelegate::CreateUObject(this, &UOnlineSessionClient::OnEndSessionComplete));
SessionInterface->EndSession(SessionName);
}
}
}
示例4: EndExistingSession_Impl
FDelegateHandle UOnlineSessionClient::EndExistingSession_Impl(FName SessionName, FOnEndSessionCompleteDelegate& Delegate)
{
FDelegateHandle Result;
IOnlineSessionPtr SessionInt = GetSessionInt();
if (SessionInt.IsValid())
{
Result = SessionInt->AddOnEndSessionCompleteDelegate_Handle(Delegate);
SessionInt->EndSession(SessionName);
}
else
{
Delegate.ExecuteIfBound(SessionName, true);
}
return Result;
}
示例5: ClientEndOnlineGame_Implementation
/** Ends the online game using the session name in the PlayerState */
void AShooterPlayerController::ClientEndOnlineGame_Implementation()
{
if (!IsPrimaryPlayer())
return;
AShooterPlayerState* ShooterPlayerState = Cast<AShooterPlayerState>(PlayerState);
if (ShooterPlayerState)
{
IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get();
if (OnlineSub)
{
IOnlineSessionPtr Sessions = OnlineSub->GetSessionInterface();
if (Sessions.IsValid())
{
UE_LOG(LogOnline, Log, TEXT("Ending session %s on client"), *ShooterPlayerState->SessionName.ToString() );
Sessions->EndSession(ShooterPlayerState->SessionName);
}
}
}
}
示例6: endSession
bool AFPSGPlayerController::endSession(FName sessionName) const
{
bool success = false;
IOnlineSubsystem* onlineSubsystem = IOnlineSubsystem::Get();
IOnlineSessionPtr sessions = onlineSubsystem != NULL ? onlineSubsystem->GetSessionInterface() : NULL;
if (sessions.IsValid())
{
//End the session
success = sessions->EndSession(sessionName);
if (success)
{
GEngine->AddOnScreenDebugMessage(-1, 20.0f, FColor::Cyan, TEXT("AFPSGPlayerController::endSession success"));
}
else
{
GEngine->AddOnScreenDebugMessage(-1, 20.0f, FColor::Cyan, TEXT("AFPSGPlayerController::endSession NOT success"));
}
}
return success;
}