void UK2Node_Variable::Serialize(FArchive& Ar) { Super::Serialize(Ar); // Fix old content if(Ar.IsLoading()) { if(Ar.UE4Ver() < VER_UE4_VARK2NODE_USE_MEMBERREFSTRUCT) { // Copy info into new struct VariableReference.SetDirect(VariableName_DEPRECATED, FGuid(), VariableSourceClass_DEPRECATED, bSelfContext_DEPRECATED); } if(Ar.UE4Ver() < VER_UE4_K2NODE_REFERENCEGUIDS) { FGuid VarGuid; if (UBlueprint::GetGuidFromClassByFieldName<UProperty>(GetBlueprint()->GeneratedClass, VariableReference.GetMemberName(), VarGuid)) { const bool bSelf = VariableReference.IsSelfContext(); VariableReference.SetDirect(VariableReference.GetMemberName(), VarGuid, (bSelf ? NULL : VariableReference.GetMemberParentClass((UClass*)NULL)), bSelf); } } } }
void FLazyObjectPtr::PossiblySerializeObjectGuid(UObject *Object, FArchive& Ar) { if (Ar.IsSaving() || Ar.IsCountingMemory()) { FUniqueObjectGuid Guid = GuidAnnotation.GetAnnotation(Object); bool HasGuid = Guid.IsValid(); Ar << HasGuid; if (HasGuid) { if (Ar.GetPortFlags() & PPF_DuplicateForPIE) { check(GPlayInEditorID != -1); FGuid &FoundGuid = PIEGuidMap[GPlayInEditorID % MAX_PIE_INSTANCES].FindOrAdd(Guid.GetGuid()); if (!FoundGuid.IsValid()) { Guid = FoundGuid = FGuid::NewGuid(); } else { Guid = FoundGuid; } } Ar << Guid; } } else if (Ar.IsLoading()) { bool HasGuid = false; Ar << HasGuid; if (HasGuid) { FUniqueObjectGuid Guid; Ar << Guid; // Don't try and resolve GUIDs when loading a package for diff'ing const UPackage* Package = Object->GetOutermost(); const bool bLoadedForDiff = (Package && Package->HasAnyPackageFlags(PKG_ForDiffing)); if (!bLoadedForDiff && (!(Ar.GetPortFlags() & PPF_Duplicate) || (Ar.GetPortFlags() & PPF_DuplicateForPIE))) { check(!Guid.IsDefault()); UObject* OtherObject = Guid.ResolveObject(); if (OtherObject != Object) // on undo/redo, the object (potentially) already exists { if (OtherObject != NULL) { UE_CLOG(!((FApp::IsGame() || GIsPlayInEditorWorld) && Package && Package->ContainsMap()), LogUObjectGlobals, Warning, TEXT("Guid is in use by %s and %s, which should never happen in the editor but could happen at runtime with duplicate level loading or PIE"), *OtherObject->GetFullName(), !!Object ? *Object->GetFullName() : TEXT("NULL")); // This guid is in use, which should never happen in the editor but could happen at runtime with duplicate level loading or PIE. If so give it an invalid GUID and don't add to the annotation map. Guid = FGuid(); } else { GuidAnnotation.AddAnnotation(Object, Guid); } FUniqueObjectGuid::InvalidateTag(); } } } } }
FGuid FSequencerActorBindingManager::FindSpawnableGuidForPuppetObject( UObject* Object ) const { for( auto MovieSceneIter( InstanceToPuppetObjectsMap.CreateConstIterator() ); MovieSceneIter; ++MovieSceneIter ) { const TArray< TSharedRef<FPuppetActorInfo> >& PuppetObjects = MovieSceneIter.Value(); // Is this an object that we care about? for( auto PuppetObjectIter( PuppetObjects.CreateConstIterator() ); PuppetObjectIter; ++PuppetObjectIter ) { if( PuppetObjectIter->Get().GetType() == EPuppetObjectType::Actor ) { TSharedRef< FPuppetActorInfo > PuppetActorInfo = StaticCastSharedRef< FPuppetActorInfo >( *PuppetObjectIter ); AActor* PuppetActor = PuppetActorInfo->PuppetActor.Get(); if( PuppetActor != NULL ) { if( PuppetActor == Object ) { // Found it! return PuppetActorInfo->SpawnableGuid; } } } } } // Not found return FGuid(); }
FExpressionNode& FExpressionNode::operator=(FExpressionNode&& In) { if (TypeId == In.TypeId && TypeId.IsValid()) { // If we have the same types, we can move-assign properly In.GetData()->MoveAssign(InlineBytes); } else { // Otherwise we have to destroy what we have, and reseat the RHS if (auto* ThisData = GetData()) { ThisData->~IExpressionNodeStorage(); } TypeId = In.TypeId; if (auto* SrcData = In.GetData()) { SrcData->Reseat(InlineBytes); // Empty the RHS In.TypeId = FGuid(); SrcData->~IExpressionNodeStorage(); } } return *this; }
void UMaterialParameterCollectionInstance::UpdateRenderState() { // Propagate the new values to the rendering thread TArray<FVector4> ParameterData; GetParameterData(ParameterData); Resource->GameThread_UpdateContents(Collection ? Collection->StateId : FGuid(), ParameterData); // Update the world's scene with the new uniform buffer pointer World->UpdateParameterCollectionInstances(false); }
TOptional<FGuid> FActorReferencePropertySection::GetActorGuid() const { TOptional<AActor*> CurrentActor = GetPropertyValue<AActor*>(); if (CurrentActor.IsSet() && CurrentActor.GetValue() != nullptr) { return TOptional<FGuid>(GetSequencer()->GetFocusedMovieSceneSequenceInstance()->FindObjectId(*CurrentActor.GetValue())); } return TOptional<FGuid>(FGuid()); }
void SendSwarmCriticalErrorMessage() { FString ErrorLog = FString(TEXT("=== Lightmass crashed: ===")) + GErrorExceptionDescription + LINE_TERMINATOR + GErrorHist; // For editor log GSwarm->SendMessage(NSwarm::FInfoMessage(*ErrorLog)); // For lighting results dialog. Can't use critical error here as that will cause the editor to assert. GSwarm->SendAlertMessage(NSwarm::ALERT_LEVEL_ERROR, FGuid(), SOURCEOBJECTTYPE_Unknown, *ErrorLog); }
ILauncherProfileRef FLauncherProfileManager::CreateUnsavedProfile(FString ProfileName) { // create and return the profile ILauncherProfileRef NewProfile = MakeShareable(new FLauncherProfile(AsShared(), FGuid(), ProfileName)); AllProfiles.Add(NewProfile); return NewProfile; }
void SSequencerLabelBrowser::HandleRemoveLabelMenuEntryExecute() { TArray<TSharedPtr<FSequencerLabelTreeNode>> SelectedItems; if (Sequencer.IsValid() && LabelTreeView->GetSelectedItems(SelectedItems) > 0) { Sequencer.Pin()->GetLabelManager().RemoveObjectLabel(FGuid(), SelectedItems[0]->Label); } }
FGuid FLevelSequenceObjectReferenceMap::FindBindingId(UObject* InObject, UObject* InContext) const { for (const auto& Pair : Map) { if (Pair.Value.Resolve(InContext) == InObject) { return Pair.Key; } } return FGuid(); }
void FGuidStructCustomization::HandleGuidActionClicked( EPropertyEditorGuidActions::Type Action ) { if (Action == EPropertyEditorGuidActions::Generate) { SetGuidValue(FGuid::NewGuid()); } else if (Action == EPropertyEditorGuidActions::Invalidate) { SetGuidValue(FGuid()); } }
FGuid FMovieSceneSequenceInstance::FindParentObjectId(UObject& Object) const { if(MovieSceneSequence.IsValid()) { UObject* ParentObject = MovieSceneSequence->GetParentObject(&Object); if (ParentObject) { return FindObjectId(*ParentObject); } } return FGuid(); }
bool HandleTicker(float DeltaTime) { if (ServerAddress.IsValid() && ((FDateTime::UtcNow() - LastServerResponse).GetTotalSeconds() > PORTAL_RPC_LOCATE_TIMEOUT)) { ServerAddress.Invalidate(); ServerLostDelegate.ExecuteIfBound(); } // @todo sarge: implement actual product GUID MessageEndpoint->Publish(new FPortalRpcLocateServer(FGuid(), EngineVersion, MacAddress, UserId), EMessageScope::Network); return true; }
void UUserDefinedStruct::ValidateGuid() { // Backward compatibility: // The guid is created in an deterministic way using existing name. if (!Guid.IsValid() && (GetFName() != NAME_None)) { const FString HashString = GetFName().ToString(); ensure(HashString.Len()); const uint32 BufferLength = HashString.Len() * sizeof(HashString[0]); uint32 HashBuffer[5]; FSHA1::HashBuffer(*HashString, BufferLength, reinterpret_cast<uint8*>(HashBuffer)); Guid = FGuid(HashBuffer[1], HashBuffer[2], HashBuffer[3], HashBuffer[4]); } }
FObjectExport::FObjectExport() : FObjectResource () , ObjectFlags ( RF_NoFlags ) , bExportLoadFailed ( false ) , SerialSize ( 0 ) , SerialOffset ( 0 ) , ScriptSerializationStartOffset ( 0 ) , ScriptSerializationEndOffset ( 0 ) , Object ( NULL ) , HashNext ( INDEX_NONE ) , bForcedExport ( false ) , bNotForClient ( false ) , bNotForServer ( false ) , PackageGuid ( FGuid(0,0,0,0) ) , bNotForEditorGame (true ) {}
void USCS_Node::ValidateGuid() { // Backward compatibility: // The guid for the node should be always the same (event when it's not saved). // The guid is created in an deterministic way using persistent name. if (!VariableGuid.IsValid() && (VariableName != NAME_None)) { const FString HashString = VariableName.ToString(); ensure(HashString.Len()); const uint32 BufferLength = HashString.Len() * sizeof(HashString[0]); uint32 HashBuffer[5]; FSHA1::HashBuffer(*HashString, BufferLength, reinterpret_cast<uint8*>(HashBuffer)); VariableGuid = FGuid(HashBuffer[1], HashBuffer[2], HashBuffer[3], HashBuffer[4]); } }
FGuid FWidgetSnapshotService::RequestSnapshot(const FGuid& InRemoteInstanceId, const FOnWidgetSnapshotResponse& OnResponse) { if (MessageEndpoint.IsValid()) { FWidgetSnapshotRequest* WidgetSnapshotRequest = new FWidgetSnapshotRequest; WidgetSnapshotRequest->TargetInstanceId = InRemoteInstanceId; WidgetSnapshotRequest->SnapshotRequestId = FGuid::NewGuid(); PendingSnapshotResponseHandlers.Add(WidgetSnapshotRequest->SnapshotRequestId, OnResponse); MessageEndpoint->Publish(WidgetSnapshotRequest); return WidgetSnapshotRequest->SnapshotRequestId; } return FGuid(); }
FGuid FMovieSceneSequenceInstance::FindObjectId(UObject& Object) const { if(MovieSceneSequence.IsValid()) { for (auto& Pair : ObjectBindingInstances) { if (Pair.Value.RuntimeObjects.Contains(&Object)) { return Pair.Key; } } // At this point the only possibility left is that we have not cached the object // in ObjectBindingInstances, so we to see if the sequence itself can tell us the GUID return MovieSceneSequence->FindPossessableObjectId(Object); } return FGuid(); }
FGuid UK2Node_PlayMovieScene::FindGuidForObject( UObject* Object ) const { if( MovieSceneBindings != NULL ) { // Search all bindings for the object TArray<FMovieSceneBoundObject>& ObjectBindings = MovieSceneBindings->GetBoundObjects(); for( int32 BoundObjIndex = 0; BoundObjIndex < ObjectBindings.Num(); ++BoundObjIndex ) { // A binding slots can have multiple objects. Ask the slot if the object is bound FMovieSceneBoundObject& BindingSlot = ObjectBindings[BoundObjIndex]; if( BindingSlot.ContainsObject( Object ) ) { return BindingSlot.GetPossessableGuid(); } } } return FGuid(); }
bool FCollection::LoadHeaderPairs(const TMap<FString,FString>& InHeaderPairs) { // These pairs will appeared at the top of the file being loaded // First find all the known pairs const FString* Version = InHeaderPairs.Find(TEXT("FileVersion")); if ( !Version ) { // FileVersion is required return false; } const FString* Type = InHeaderPairs.Find(TEXT("Type")); if ( !Type ) { // Type is required return false; } FileVersion = (ECollectionVersion::Type)FCString::Atoi(**Version); if (FileVersion >= ECollectionVersion::AddedCollectionGuid) { const FString* GuidStr = InHeaderPairs.Find(TEXT("Guid")); if ( !GuidStr || !FGuid::Parse(*GuidStr, CollectionGuid) ) { // Guid is required return false; } const FString* ParentGuidStr = InHeaderPairs.Find(TEXT("ParentGuid")); if ( !ParentGuidStr || !FGuid::Parse(*ParentGuidStr, ParentCollectionGuid) ) { ParentCollectionGuid = FGuid(); } } if ( *Type == TEXT("Dynamic") ) { // @todo Set this file up to be dynamic } return FileVersion > 0 && FileVersion <= ECollectionVersion::CurrentVersion; }
static FGuid GetGuidFromName(const FName Name) { const FString NameStr = Name.ToString(); const int32 GuidStrLen = 32; if (NameStr.Len() > (GuidStrLen + 1)) { const int32 UnderscoreIndex = NameStr.Len() - GuidStrLen - 1; if (TCHAR('_') == NameStr[UnderscoreIndex]) { const FString GuidStr = NameStr.Right(GuidStrLen); FGuid Guid; if (FGuid::ParseExact(GuidStr, EGuidFormats::Digits, Guid)) { return Guid; } } } return FGuid(); }
void FRawMeshBulkData::UseHashAsGuid(UObject* Owner) { // Build the hash from the path name + the contents of the bulk data. FSHA1 Sha; TArray<TCHAR> OwnerName = Owner->GetPathName().GetCharArray(); Sha.Update((uint8*)OwnerName.GetData(), OwnerName.Num() * OwnerName.GetTypeSize()); if (BulkData.GetBulkDataSize() > 0) { uint8* Buffer = (uint8*)BulkData.Lock(LOCK_READ_ONLY); Sha.Update(Buffer, BulkData.GetBulkDataSize()); BulkData.Unlock(); } Sha.Final(); // Retrieve the hash and use it to construct a pseudo-GUID. Use bGuidIsHash to distinguish from real guids. uint32 Hash[5]; Sha.GetHash((uint8*)Hash); Guid = FGuid(Hash[0] ^ Hash[4], Hash[1], Hash[2], Hash[3]); bGuidIsHash = true; }
// // FPackageInfo constructor. // FPackageInfo::FPackageInfo(UPackage* Package) : PackageName (Package != NULL ? Package->GetFName() : NAME_None) , Parent (Package) , Guid (Package != NULL ? Package->GetGuid() : FGuid(0,0,0,0)) , ObjectBase ( INDEX_NONE ) , ObjectCount ( 0 ) , LocalGeneration ( 0) , RemoteGeneration( 0 ) , PackageFlags (Package != NULL ? Package->PackageFlags : 0) , ForcedExportBasePackageName(NAME_None) , FileName (Package != NULL ? Package->FileName : NAME_None) { // if we have a pacakge, find it's source file so that we can send the extension of the file if (Package != NULL) { FString PackageFile; if (FPackageName::DoesPackageExist(Package->GetName(), NULL, &PackageFile)) { Extension = FPaths::GetExtension(PackageFile); } } }
bool UActorRecording::StartRecording(ULevelSequence* CurrentSequence, float CurrentSequenceTime) { bNewComponentAddedWhileRecording = false; DuplicatedDynamicComponents.Reset(); if(GetActorToRecord() != nullptr) { if(CurrentSequence != nullptr) { StartRecordingActorProperties(CurrentSequence, CurrentSequenceTime); } else { TSharedPtr<FMovieSceneAnimationSectionRecorder> AnimationRecorder = MakeShareable(new FMovieSceneAnimationSectionRecorder(AnimationSettings, TargetAnimation.Get())); AnimationRecorder->CreateSection(GetActorToRecord(), nullptr, FGuid(), 0.0f); AnimationRecorder->Record(0.0f); SectionRecorders.Add(AnimationRecorder); } } return true; }
FObjectExport::FObjectExport( UObject* InObject ) : FObjectResource ( InObject ) , ObjectFlags ( InObject ? InObject->GetMaskedFlags() : RF_NoFlags ) , bExportLoadFailed ( false ) , SerialSize ( 0 ) , SerialOffset ( 0 ) , ScriptSerializationStartOffset ( 0 ) , ScriptSerializationEndOffset ( 0 ) , Object ( InObject ) , HashNext ( INDEX_NONE ) , bForcedExport ( false ) , bNotForClient ( false ) , bNotForServer ( false ) , PackageGuid ( FGuid(0,0,0,0) ) , PackageFlags ( 0 ) , bNotForEditorGame (true ) { if(Object) { bNotForClient = Object->HasAnyMarks(OBJECTMARK_NotForClient); bNotForServer = Object->HasAnyMarks(OBJECTMARK_NotForServer); bNotForEditorGame = Object->HasAnyMarks(OBJECTMARK_NotForEditorGame); } }
FGuid UMaterialParameterCollection::GetParameterId(FName ParameterName) const { for (int32 ParameterIndex = 0; ParameterIndex < ScalarParameters.Num(); ParameterIndex++) { const FCollectionScalarParameter& Parameter = ScalarParameters[ParameterIndex]; if (Parameter.ParameterName == ParameterName) { return Parameter.Id; } } for (int32 ParameterIndex = 0; ParameterIndex < VectorParameters.Num(); ParameterIndex++) { const FCollectionVectorParameter& Parameter = VectorParameters[ParameterIndex]; if (Parameter.ParameterName == ParameterName) { return Parameter.Id; } } return FGuid(); }
FGuid ULevelSequence::FindPossessableObjectId(UObject& Object) const { return FGuid(); }
FGuid UMovieSceneActorReferenceSection::Eval( float Position ) const { int32 ActorGuidIndex = ActorGuidIndexCurve.Evaluate( Position ); return ActorGuidIndex >= 0 && ActorGuidIndex < ActorGuids.Num() ? ActorGuids[ActorGuidIndex] : FGuid(); }
void FProfilerActionManager::Map_ToggleDataPreview_Global() { This->CommandList->MapAction( This->GetCommands().ToggleDataPreview, ToggleDataPreview_Custom( FGuid() ) ); }
bool FGuid::ParseExact( const FString& GuidString, EGuidFormats::Type Format, FGuid& OutGuid ) { FString NormalizedGuidString; NormalizedGuidString.Empty(32); if (Format == EGuidFormats::Digits) { NormalizedGuidString = GuidString; } else if (Format == EGuidFormats::DigitsWithHyphens) { if ((GuidString[8] != TCHAR('-')) || (GuidString[13] != TCHAR('-')) || (GuidString[18] != TCHAR('-')) || (GuidString[23] != TCHAR('-'))) { return false; } NormalizedGuidString += GuidString.Mid(0, 8); NormalizedGuidString += GuidString.Mid(9, 4); NormalizedGuidString += GuidString.Mid(14, 4); NormalizedGuidString += GuidString.Mid(19, 4); NormalizedGuidString += GuidString.Mid(24, 12); } else if (Format == EGuidFormats::DigitsWithHyphensInBraces) { if ((GuidString[0] != TCHAR('{')) || (GuidString[9] != TCHAR('-')) || (GuidString[14] != TCHAR('-')) || (GuidString[19] != TCHAR('-')) || (GuidString[24] != TCHAR('-')) || (GuidString[37] != TCHAR('}'))) { return false; } NormalizedGuidString += GuidString.Mid(1, 8); NormalizedGuidString += GuidString.Mid(10, 4); NormalizedGuidString += GuidString.Mid(15, 4); NormalizedGuidString += GuidString.Mid(20, 4); NormalizedGuidString += GuidString.Mid(25, 12); } else if (Format == EGuidFormats::DigitsWithHyphensInParentheses) { if ((GuidString[0] != TCHAR('(')) || (GuidString[9] != TCHAR('-')) || (GuidString[14] != TCHAR('-')) || (GuidString[19] != TCHAR('-')) || (GuidString[24] != TCHAR('-')) || (GuidString[37] != TCHAR(')'))) { return false; } NormalizedGuidString += GuidString.Mid(1, 8); NormalizedGuidString += GuidString.Mid(10, 4); NormalizedGuidString += GuidString.Mid(15, 4); NormalizedGuidString += GuidString.Mid(20, 4); NormalizedGuidString += GuidString.Mid(25, 12); } else if (Format == EGuidFormats::HexValuesInBraces) { if ((GuidString[0] != TCHAR('{')) || (GuidString[1] != TCHAR('0')) || (GuidString[2] != TCHAR('x')) || (GuidString[11] != TCHAR(',')) || (GuidString[12] != TCHAR('0')) || (GuidString[13] != TCHAR('x')) || (GuidString[18] != TCHAR(',')) || (GuidString[19] != TCHAR('0')) || (GuidString[20] != TCHAR('x')) || (GuidString[25] != TCHAR(',')) || (GuidString[26] != TCHAR('{')) || (GuidString[27] != TCHAR('0')) || (GuidString[28] != TCHAR('x')) || (GuidString[31] != TCHAR(',')) || (GuidString[32] != TCHAR('0')) || (GuidString[33] != TCHAR('x')) || (GuidString[36] != TCHAR(',')) || (GuidString[37] != TCHAR('0')) || (GuidString[38] != TCHAR('x')) || (GuidString[41] != TCHAR(',')) || (GuidString[42] != TCHAR('0')) || (GuidString[43] != TCHAR('x')) || (GuidString[46] != TCHAR(',')) || (GuidString[47] != TCHAR('0')) || (GuidString[48] != TCHAR('x')) || (GuidString[51] != TCHAR(',')) || (GuidString[52] != TCHAR('0')) || (GuidString[53] != TCHAR('x')) || (GuidString[56] != TCHAR(',')) || (GuidString[57] != TCHAR('0')) || (GuidString[58] != TCHAR('x')) || (GuidString[61] != TCHAR(',')) || (GuidString[62] != TCHAR('0')) || (GuidString[63] != TCHAR('x')) || (GuidString[66] != TCHAR('}')) || (GuidString[67] != TCHAR('}'))) { return false; } NormalizedGuidString += GuidString.Mid(3, 8); NormalizedGuidString += GuidString.Mid(14, 4); NormalizedGuidString += GuidString.Mid(21, 4); NormalizedGuidString += GuidString.Mid(29, 2); NormalizedGuidString += GuidString.Mid(34, 2); NormalizedGuidString += GuidString.Mid(39, 2); NormalizedGuidString += GuidString.Mid(44, 2); NormalizedGuidString += GuidString.Mid(49, 2); NormalizedGuidString += GuidString.Mid(54, 2); NormalizedGuidString += GuidString.Mid(59, 2); NormalizedGuidString += GuidString.Mid(64, 2); } else if (Format == EGuidFormats::UniqueObjectGuid) { if ((GuidString[8] != TCHAR('-')) || (GuidString[17] != TCHAR('-')) || (GuidString[26] != TCHAR('-'))) { return false; } NormalizedGuidString += GuidString.Mid(0, 8); NormalizedGuidString += GuidString.Mid(9, 8); NormalizedGuidString += GuidString.Mid(18, 8); NormalizedGuidString += GuidString.Mid(27, 8); } for (int32 Index = 0; Index < NormalizedGuidString.Len(); ++Index) { if (!FChar::IsHexDigit(NormalizedGuidString[Index])) { return false; } } OutGuid = FGuid( FParse::HexNumber(*NormalizedGuidString.Mid(0, 8)), FParse::HexNumber(*NormalizedGuidString.Mid(8, 8)), FParse::HexNumber(*NormalizedGuidString.Mid(16, 8)), FParse::HexNumber(*NormalizedGuidString.Mid(24, 8)) ); return true; }