GenericPipelineClass
GenericPipelineClass
#Overview
name: GenericPipelineClass
The value of this variable can be defined or overridden in .ini config files. 1
.ini config file referencing this setting variable.
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of GenericPipelineClass is to define and manage the class used for generic import pipelines in Unreal Engine’s Interchange system. This setting variable is primarily used for asset import and processing, specifically for handling alternate skin weights in this context.
GenericPipelineClass is primarily relied upon by the Unreal Engine’s Interchange subsystem, which is responsible for importing and processing various types of assets. It’s used within the UnrealEd module, particularly in the SkinWeightsUtilities functionality.
The value of this variable is set in the InterchangeProjectSettings, which is a subclass of UDeveloperSettings. This suggests that it can be configured through the project settings in the Unreal Engine editor.
GenericPipelineClass interacts with other variables and objects in the Interchange system, such as ImportAssetParameters, SelectedInterchangeAssetImportData, and various pipeline objects.
Developers must be aware that this variable is used to create and manage pipeline objects for asset import processes. It’s particularly important when dealing with skin weight imports and reimports. The class specified by GenericPipelineClass should be a child of UInterchangePipelineBase.
Best practices when using this variable include:
- Ensure that the class specified is appropriate for the types of assets being imported.
- Be cautious when modifying this setting, as it can affect all generic import processes in the project.
- When implementing custom import pipelines, make sure they properly inherit from UInterchangePipelineBase and implement all necessary functionality.
- Consider the context (import vs. reimport) when working with the pipeline objects, as the code adjusts settings based on this context.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:3503, section: [/Script/InterchangeEngine.InterchangeProjectSettings]
- INI Section:
/Script/InterchangeEngine.InterchangeProjectSettings
- Raw value:
/Script/InterchangePipelines.InterchangeGenericAssetsPipeline
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/SkinWeightsUtilities.cpp:117
Scope (from outer to inner):
file
function bool FSkinWeightsUtilities::ImportAlternateSkinWeight
Source code excerpt:
ImportAssetParameters.bIsAutomated = true; // From the InterchangeManager point of view, this is considered an automated import
if (const UClass* GenericPipelineClass = InterchangeProjectSettings->GenericPipelineClass.LoadSynchronous())
{
UInterchangePipelineBase* GenericPipeline = nullptr;
for (UObject* PipelineObject : SelectedInterchangeAssetImportData->GetPipelines())
{
if (PipelineObject->GetClass()->IsChildOf(GenericPipelineClass))
{
if (UInterchangePipelineBase* ImportPipeline = Cast<UInterchangePipelineBase>(PipelineObject))
{
GenericPipeline = Cast<UInterchangePipelineBase>(StaticDuplicateObject(ImportPipeline, GetTransientPackage()));
break;
}
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/SkinWeightsUtilities.cpp:134
Scope (from outer to inner):
file
function bool FSkinWeightsUtilities::ImportAlternateSkinWeight
Source code excerpt:
if (!GenericPipeline)
{
GenericPipeline = NewObject<UInterchangePipelineBase>(GetTransientPackage(), GenericPipelineClass);
}
if (GenericPipeline)
{
GenericPipeline->ClearFlags(EObjectFlags::RF_Standalone | EObjectFlags::RF_Public);
GenericPipeline->AdjustSettingsForContext(bIsReimport ? EInterchangePipelineContext::AssetAlternateSkinningReimport : EInterchangePipelineContext::AssetAlternateSkinningImport, nullptr);
#Loc: <Workspace>/Engine/Source/Runtime/Interchange/Engine/Public/InterchangeProjectSettings.h:133
Scope (from outer to inner):
file
class class UInterchangeProjectSettings : public UDeveloperSettings
Source code excerpt:
*/
UPROPERTY(EditAnywhere, config, Category = "Editor Generic Pipeline Class")
TSoftClassPtr <UInterchangePipelineBase> GenericPipelineClass;
};
class FInterchangeProjectSettingsUtils
{
public:
static INTERCHANGEENGINE_API const FInterchangeImportSettings& GetImportSettings(const UInterchangeProjectSettings& InterchangeProjectSettings, const bool bIsSceneImport);