UK2Node::ERedirectType UK2Node::ShouldRedirectParam(const TArray<FString>& OldPinNames, FName& NewPinName, const UK2Node * NewPinNode) const { if ( ensure(NewPinNode) ) { InitFieldRedirectMap(); if ( ParamRedirectMap.Num() > 0 ) { // convert TArray<FString> to TArray<FName>, faster to search TArray<FName> OldPinFNames; for (auto NameIter=OldPinNames.CreateConstIterator(); NameIter; ++NameIter) { const FString& Name = *NameIter; OldPinFNames.AddUnique(*Name); } // go through for the NewPinNode for(TMultiMap<UClass*, FParamRemapInfo>::TConstKeyIterator ParamIter(ParamRedirectMap, NewPinNode->GetClass()); ParamIter; ++ParamIter) { const FParamRemapInfo& ParamRemap = ParamIter.Value(); // if it has it, return true if (OldPinFNames.Contains(ParamRemap.OldParam) && (ParamRemap.NodeTitle == NAME_None || ParamRemap.NodeTitle.ToString() == NewPinNode->GetNodeTitle(ENodeTitleType::FullTitle).ToString())) { NewPinName = ParamRemap.NewParam; return (ParamRemap.bCustomValueMapping ? ERedirectType_Custom : (ParamRemap.ParamValueMap.Num() ? ERedirectType_Value : ERedirectType_Name)); } } } } return ERedirectType_None; }
bool FMemberReference::FindReplacementFieldName(UClass* Class, FName FieldName, FFieldRemapInfo& RemapInfo) { check(Class != NULL); InitFieldRedirectMap(); // Reset the property remap info RemapInfo = FFieldRemapInfo(); FFieldRemapInfo OldField; OldField.FieldClass = Class->GetFName(); OldField.FieldName = FieldName; FFieldRemapInfo* NewFieldInfoPtr = FieldRedirectMap.Find(OldField); if (NewFieldInfoPtr != NULL) { RemapInfo = *NewFieldInfoPtr; return true; } else { return false; } }