void UDemoNetDriver::SpawnDemoRecSpectator( UNetConnection* Connection ) { check( Connection != NULL ); UClass* C = StaticLoadClass( AActor::StaticClass(), NULL, *DemoSpectatorClass, NULL, LOAD_None, NULL ); if ( C == NULL ) { UE_LOG( LogDemo, Error, TEXT( "UDemoNetDriver::SpawnDemoRecSpectator: Failed to load demo spectator class." ) ); return; } APlayerController* Controller = World->SpawnActor<APlayerController>( C ); if ( Controller == NULL ) { UE_LOG( LogDemo, Error, TEXT( "UDemoNetDriver::SpawnDemoRecSpectator: Failed to spawn demo spectator." ) ); return; } for ( FActorIterator It( World ); It; ++It) { if ( It->IsA( APlayerStart::StaticClass() ) ) { Controller->SetInitialLocationAndRotation( It->GetActorLocation(), It->GetActorRotation() ); break; } } Controller->SetReplicates( true ); Controller->SetAutonomousProxy( true ); Controller->SetPlayer( Connection ); }
class UUserWidget* UHMIYCGameInstance::CreateUIWidget( const FString& Path ) { UClass* WidgetClass = StaticLoadClass( UUserWidget::StaticClass(), nullptr, *Path ); UUserWidget* Widget = CreateWidget<UUserWidget>( GetWorld(), WidgetClass ); Widget->AddToViewport( UI_ZORDER ); Widget->SetVisibility( ESlateVisibility::Hidden ); return Widget; }
UClass* UAirBlueprintLib::LoadClass(const std::string& name) { FString str(name.c_str()); UClass *cls = StaticLoadClass(UObject::StaticClass(), nullptr, *str); if (cls == nullptr) { std::string msg = "Failed to load asset class - " + name; FString fmsg(msg.c_str()); LogMessage(TEXT("Load: "), fmsg, LogDebugLevel::Failure); throw std::invalid_argument(msg); } return cls; }
void AGameplayDebuggingReplicator::CreateTool() { #if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) if (GetWorld() && GetNetMode() != ENetMode::NM_DedicatedServer) { UGameplayDebuggingControllerComponent* GDC = FindComponentByClass<UGameplayDebuggingControllerComponent>(); if (!GDC) { DebugComponentControllerClass = StaticLoadClass(UGameplayDebuggingControllerComponent::StaticClass(), NULL, *DebugComponentControllerClassName, NULL, LOAD_None, NULL); if (!DebugComponentControllerClass.IsValid()) { DebugComponentControllerClass = AGameplayDebuggingHUDComponent::StaticClass(); } GDC = NewObject<UGameplayDebuggingControllerComponent>(this, DebugComponentControllerClass.Get()); GDC->SetPlayerOwner(LocalPlayerOwner); GDC->RegisterComponent(); } } #endif }
bool NUTNet::IsSteamNetDriverAvailable() { bool bReturnVal = false; UGameEngine* GameEngine = Cast<UGameEngine>(GEngine); if (GameEngine != NULL) { bool bFoundSteamDriver = false; const TCHAR* SteamDriverClassName = TEXT("OnlineSubsystemSteam.SteamNetDriver"); for (int i=0; i<GameEngine->NetDriverDefinitions.Num(); i++) { if (GameEngine->NetDriverDefinitions[i].DefName == NAME_GameNetDriver) { if (GameEngine->NetDriverDefinitions[i].DriverClassName == SteamDriverClassName) { bFoundSteamDriver = true; } break; } } if (bFoundSteamDriver) { UClass* SteamNetDriverClass = StaticLoadClass(UNetDriver::StaticClass(), NULL, SteamDriverClassName, NULL, LOAD_Quiet); if (SteamDriverClassName != NULL) { UNetDriver* SteamNetDriverDef = Cast<UNetDriver>(SteamNetDriverClass->GetDefaultObject()); bReturnVal = SteamNetDriverDef != NULL && SteamNetDriverDef->IsAvailable(); } } } return bReturnVal; }
void FMemberReference::InitFieldRedirectMap() { if (!bFieldRedirectMapInitialized) { if (GConfig) { FConfigSection* PackageRedirects = GConfig->GetSectionPrivate( TEXT("/Script/Engine.Engine"), false, true, GEngineIni ); for (FConfigSection::TIterator It(*PackageRedirects); It; ++It) { if (It.Key() == TEXT("K2FieldRedirects")) { FString OldFieldPathString; FString NewFieldPathString; FParse::Value( *It.Value(), TEXT("OldFieldName="), OldFieldPathString ); FParse::Value( *It.Value(), TEXT("NewFieldName="), NewFieldPathString ); // Handle both cases of just a field being renamed (just one FName), as well as a class and field name (ClassName.FieldName) FFieldRemapInfo OldFieldRemap; { TArray<FString> OldFieldPath; OldFieldPathString.ParseIntoArray(OldFieldPath, TEXT("."), true); if (OldFieldPath.Num() == 1) { // Only the new property name is specified OldFieldRemap.FieldName = FName(*OldFieldPath[0]); } else if (OldFieldPath.Num() == 2) { // Property name and new class are specified OldFieldRemap.FieldClass = FName(*OldFieldPath[0]); OldFieldRemap.FieldName = FName(*OldFieldPath[1]); } } // Handle both cases of just a field being renamed (just one FName), as well as a class and field name (ClassName.FieldName) FFieldRemapInfo NewFieldRemap; { TArray<FString> NewFieldPath; NewFieldPathString.ParseIntoArray(NewFieldPath, TEXT("."), true); if( NewFieldPath.Num() == 1 ) { // Only the new property name is specified NewFieldRemap.FieldName = FName(*NewFieldPath[0]); } else if( NewFieldPath.Num() == 2 ) { // Property name and new class are specified NewFieldRemap.FieldClass = FName(*NewFieldPath[0]); NewFieldRemap.FieldName = FName(*NewFieldPath[1]); } } FieldRedirectMap.Add(OldFieldRemap, NewFieldRemap); } if (It.Key() == TEXT("K2ParamRedirects")) { FName NodeName = NAME_None; FName OldParam = NAME_None; FName NewParam = NAME_None; FName NodeTitle = NAME_None; FString OldParamValues; FString NewParamValues; FString CustomValueMapping; FParse::Value( *It.Value(), TEXT("NodeName="), NodeName ); FParse::Value( *It.Value(), TEXT("NodeTitle="), NodeTitle ); FParse::Value( *It.Value(), TEXT("OldParamName="), OldParam ); FParse::Value( *It.Value(), TEXT("NewParamName="), NewParam ); FParse::Value( *It.Value(), TEXT("OldParamValues="), OldParamValues ); FParse::Value( *It.Value(), TEXT("NewParamValues="), NewParamValues ); FParse::Value( *It.Value(), TEXT("CustomValueMapping="), CustomValueMapping ); FParamRemapInfo ParamRemap; ParamRemap.NewParam = NewParam; ParamRemap.OldParam = OldParam; ParamRemap.NodeTitle = NodeTitle; ParamRemap.bCustomValueMapping = (FCString::Stricmp(*CustomValueMapping,TEXT("true")) == 0); if (CustomValueMapping.Len() > 0 && !ParamRemap.bCustomValueMapping) { UE_LOG(LogBlueprint, Warning, TEXT("Value other than true specified for CustomValueMapping for '%s' node param redirect '%s' to '%s'."), *(NodeName.ToString()), *(OldParam.ToString()), *(NewParam.ToString())); } TArray<FString> OldParamValuesList; TArray<FString> NewParamValuesList; OldParamValues.ParseIntoArray(OldParamValuesList, TEXT(";"), false); NewParamValues.ParseIntoArray(NewParamValuesList, TEXT(";"), false); if (OldParamValuesList.Num() != NewParamValuesList.Num()) { UE_LOG(LogBlueprint, Warning, TEXT("Unequal lengths for old and new param values for '%s' node param redirect '%s' to '%s'."), *(NodeName.ToString()), *(OldParam.ToString()), *(NewParam.ToString())); } if (CustomValueMapping.Len() > 0 && (OldParamValuesList.Num() > 0 || NewParamValuesList.Num() > 0)) { UE_LOG(LogBlueprint, Warning, TEXT("Both Custom and Automatic param value remapping specified for '%s' node param redirect '%s' to '%s'. Only Custom will be applied."), *(NodeName.ToString()), *(OldParam.ToString()), *(NewParam.ToString())); } for (int32 i = FMath::Min(OldParamValuesList.Num(), NewParamValuesList.Num()) - 1; i >= 0; --i) { int32 CurSize = ParamRemap.ParamValueMap.Num(); ParamRemap.ParamValueMap.Add(OldParamValuesList[i], NewParamValuesList[i]); if (CurSize == ParamRemap.ParamValueMap.Num()) { UE_LOG(LogBlueprint, Warning, TEXT("Duplicate old param value '%s' for '%s' node param redirect '%s' to '%s'."), *(OldParamValuesList[i]), *(NodeName.ToString()), *(OldParam.ToString()), *(NewParam.ToString())); } } // load class static UClass* K2NodeClass = StaticLoadClass(UObject::StaticClass(), nullptr, TEXT("BlueprintGraph.K2Node")); if (K2NodeClass) { UClass* NodeClass = StaticLoadClass(K2NodeClass, nullptr, *NodeName.ToString()); if (NodeClass ) { ParamRedirectMap.Add(NodeClass, ParamRemap); } } } } bFieldRedirectMapInitialized = true; } } }
void AGameplayDebuggingReplicator::BeginPlay() { Super::BeginPlay(); #if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) if (Role == ROLE_Authority) { bReplicates = false; SetRemoteRoleForBackwardsCompat(ROLE_SimulatedProxy); SetReplicates(true); if (!DebugComponentClass.IsValid() && GetWorld() && GetNetMode() < ENetMode::NM_Client) { DebugComponentClass = StaticLoadClass(UGameplayDebuggingComponent::StaticClass(), NULL, *DebugComponentClassName, NULL, LOAD_None, NULL); if (!DebugComponentClass.IsValid()) { DebugComponentClass = UGameplayDebuggingComponent::StaticClass(); } } GetDebugComponent(); } if (GetWorld() && GetNetMode() != ENetMode::NM_DedicatedServer) { if (GIsEditor) { UDebugDrawService::Register(TEXT("DebugAI"), FDebugDrawDelegate::CreateUObject(this, &AGameplayDebuggingReplicator::OnDebugAIDelegate)); } UDebugDrawService::Register(TEXT("Game"), FDebugDrawDelegate::CreateUObject(this, &AGameplayDebuggingReplicator::DrawDebugDataDelegate)); if (!DebugComponentHUDClass.IsValid()) { DebugComponentHUDClass = StaticLoadClass(AGameplayDebuggingHUDComponent::StaticClass(), NULL, *DebugComponentHUDClassName, NULL, LOAD_None, NULL); if (!DebugComponentHUDClass.IsValid()) { DebugComponentHUDClass = AGameplayDebuggingHUDComponent::StaticClass(); } } } #if WITH_EDITOR const UEditorEngine* EEngine = Cast<UEditorEngine>(GEngine); if (EEngine && (EEngine->bIsSimulatingInEditor || EEngine->EditorWorld) && GetWorld() != EEngine->EditorWorld && !IsGlobalInWorld() && GCurrentLevelEditingViewportClient && GCurrentLevelEditingViewportClient->EngineShowFlags.DebugAI) { SetIsTemporarilyHiddenInEditor(false); SetActorHiddenInGame(false); bHiddenEdLevel = false; bHiddenEdLayer = false; bHiddenEd = false; bEditable = true; if (DebugComponent) { DebugComponent->ServerReplicateData(EDebugComponentMessage::ActivateReplication, EAIDebugDrawDataView::Empty); FGameplayDebuggerSettings Settings = GameplayDebuggerSettings(this); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::OverHead) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::OverHead); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::Basic) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::Basic); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::BehaviorTree) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::BehaviorTree); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::EQS) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::EQS); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::Perception) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::Perception); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::GameView1) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::GameView1); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::GameView2) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::GameView2); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::GameView3) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::GameView3); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::GameView4) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::GameView4); DebugComponent->ServerReplicateData(Settings.CheckFlag(EAIDebugDrawDataView::GameView5) ? EDebugComponentMessage::ActivateDataView : EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::GameView5); } } else { SetTickableWhenPaused(true); SetIsTemporarilyHiddenInEditor(true); SetActorHiddenInGame(false); bHiddenEdLevel = true; bHiddenEdLayer = true; bHiddenEd = true; bEditable = false; if (DebugComponent) { DebugComponent->ServerReplicateData(EDebugComponentMessage::DeactivateDataView, EAIDebugDrawDataView::Empty); } } #endif if (GetWorld() && GetNetMode() != ENetMode::NM_DedicatedServer) { if (GIsEditor) { UDebugDrawService::Register(TEXT("DebugAI"), FDebugDrawDelegate::CreateUObject(this, &AGameplayDebuggingReplicator::OnDebugAIDelegate)); } UDebugDrawService::Register(TEXT("Game"), FDebugDrawDelegate::CreateUObject(this, &AGameplayDebuggingReplicator::DrawDebugDataDelegate)); if (!DebugComponentHUDClass.IsValid()) { DebugComponentHUDClass = StaticLoadClass(AGameplayDebuggingHUDComponent::StaticClass(), NULL, *DebugComponentHUDClassName, NULL, LOAD_None, NULL); if (!DebugComponentHUDClass.IsValid()) { DebugComponentHUDClass = AGameplayDebuggingHUDComponent::StaticClass(); } } } if (bAutoActivate) { OnRep_AutoActivate(); } #endif //!(UE_BUILD_SHIPPING || UE_BUILD_TEST) }