コード例 #1
0
ファイル: K2Node.cpp プロジェクト: 1vanK/AHRUnrealEngine
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;
}
コード例 #2
0
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;
	}
}