static FName Generate(UUserDefinedStruct* Struct, const FString& NameBase, const FGuid Guid, FString* OutFriendlyName = NULL) { check(Struct); FString Result; if (!NameBase.IsEmpty()) { const FName NewNameBase(*NameBase); if (ensure(NewNameBase.IsValidXName(INVALID_OBJECTNAME_CHARACTERS))) { Result = NameBase; } } if (Result.IsEmpty()) { Result = TEXT("MemberVar"); } const uint32 UniqueNameId = CastChecked<UUserDefinedStructEditorData>(Struct->EditorData)->GenerateUniqueNameIdForMemberVariable(); const FString FriendlyName = FString::Printf(TEXT("%s_%u"), *Result, UniqueNameId); if (OutFriendlyName) { *OutFriendlyName = FriendlyName; } const FName NameResult = *FString::Printf(TEXT("%s_%s"), *FriendlyName, *Guid.ToString(EGuidFormats::Digits)); check(NameResult.IsValidXName(INVALID_OBJECTNAME_CHARACTERS)); return NameResult; }
static FName Generate(UBlueprintGeneratedStruct* Struct, const FString& NameBase) { FString Result; if (!NameBase.IsEmpty()) { const FName NewNameBase(*NameBase); if (ensure(NewNameBase.IsValidXName(INVALID_OBJECTNAME_CHARACTERS))) { Result = NameBase; } } if (Result.IsEmpty()) { Result = TEXT("MemberVar"); } if(Struct) { const uint32 UniqueNameId = Struct->GenerateUniqueNameIdForMemberVariable(); Result = FString::Printf(TEXT("%s_%u"), *Result, UniqueNameId); } FName NameResult = FName(*Result); check(NameResult.IsValidXName(INVALID_OBJECTNAME_CHARACTERS)); return NameResult; }
bool FStructureEditorUtils::RenameVariable(UBlueprint* Blueprint, FName StructName, FGuid VarGuid, const FString& NewDisplayNameStr) { if (NULL != Blueprint) { const FScopedTransaction Transaction( LOCTEXT("RenameVariable", "Rename Variable") ); Blueprint->Modify(); FBPStructureDescription* StructureDesc = Blueprint->UserDefinedStructures.FindByPredicate(FFindByNameHelper(StructName)); if (StructureDesc) { const FName NewNameBase(*NewDisplayNameStr); if (NewNameBase.IsValidXName(INVALID_OBJECTNAME_CHARACTERS) && IsUniqueVariableDisplayName(Blueprint, StructName, NewDisplayNameStr)) { const FName NewName = FMemberVariableNameHelper::Generate(StructureDesc->CompiledStruct, NewDisplayNameStr); if (NULL == StructureDesc->Fields.FindByPredicate(FFindByNameHelper(NewName))) { FBPVariableDescription* VarDesc = StructureDesc->Fields.FindByPredicate(FFindByGuidHelper(VarGuid)); if (VarDesc) { VarDesc->FriendlyName = NewDisplayNameStr; VarDesc->VarName = NewName; OnStructureChanged(*StructureDesc, Blueprint); return true; } } } } } return false; }
bool FEnumEditorUtils::IsProperNameForUserDefinedEnumerator(const UEnum* Enum, FString NewName) { if (Enum && !UEnum::IsFullEnumName(*NewName)) { check(Enum->GetFName().IsValidXName()); const FName ShortName(*NewName); const bool bValidName = ShortName.IsValidXName(INVALID_OBJECTNAME_CHARACTERS); const FString TrueNameStr = Enum->GenerateFullEnumName(*NewName); const FName TrueName(*TrueNameStr); check(!bValidName || TrueName.IsValidXName()); const bool bNameNotUsed = (INDEX_NONE == Enum->FindEnumIndex(TrueName)); return bNameNotUsed && bValidName; } return false; }
bool FStructureEditorUtils::RenameStructure(UBlueprint* Blueprint, FName OldStructName, const FString& NewNameStr) { if(NULL != Blueprint) { const FScopedTransaction Transaction( LOCTEXT("RenameStructure", "Rename Structure") ); Blueprint->Modify(); const FName NewName(*NewNameStr); FKismetNameValidator NameValidator(Blueprint); if(NewName.IsValidXName(INVALID_OBJECTNAME_CHARACTERS) && (NameValidator.IsValid(NewName) == EValidatorResult::Ok)) { FBPStructureDescription* StructureDesc = Blueprint->UserDefinedStructures.FindByPredicate(FFindByNameHelper(OldStructName)); if(StructureDesc) { if(StructureDesc->CompiledStruct) { if(!StructureDesc->CompiledStruct->Rename(*NewNameStr, NULL, REN_Test)) { return false; } if(!StructureDesc->CompiledStruct->Rename(*NewNameStr, NULL)) { return false; } } StructureDesc->Name = NewName; FBlueprintEditorUtils::MarkBlueprintAsModified(Blueprint); return true; } } } return false; }