Files
UnrealEngine/Engine/Plugins/MetaHuman/MetaHumanCharacter/Source/MetaHumanCharacterPalette/Public/MetaHumanPinnedSlotSelection.h
2025-05-18 13:04:45 +08:00

45 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "MetaHumanPipelineSlotSelection.h"
#include "StructUtils/PropertyBag.h"
#include "MetaHumanPinnedSlotSelection.generated.h"
/**
* An item pinned to a slot at build time
*
* At assembly time, if a slot has any pinned items, it won't be able to have non-pinned items
* selected for it.
*/
USTRUCT()
struct METAHUMANCHARACTERPALETTE_API FMetaHumanPinnedSlotSelection
{
GENERATED_BODY()
public:
FMetaHumanPinnedSlotSelection() = default;
static bool IsItemPinned(TConstArrayView<FMetaHumanPinnedSlotSelection> SortedSelections, const FMetaHumanPaletteItemPath& ItemPath);
static bool TryGetPinnedItem(TConstArrayView<FMetaHumanPinnedSlotSelection> SortedSelections, const FMetaHumanPaletteItemPath& ItemPath, const FMetaHumanPinnedSlotSelection*& OutPinnedItem);
UPROPERTY(EditAnywhere, Category = "Pipeline")
FMetaHumanPipelineSlotSelection Selection;
/**
* If the pipeline does any baking at build time that would use instance parameters, it should
* use these values.
*
* If the baking is such that the parameters are no longer settable (e.g. material parameters
* a material that gets baked to a texture at build time), it shouldn't expose these parameters
* as instance parameters during assembly.
*
* If the parameters are still settable, they will be passed in again after assembly, so
* pipelines don't have to store this data at build time if they don't do anything with it.
*/
UPROPERTY(EditAnywhere, Category = "Pipeline")
FInstancedPropertyBag InstanceParameters;
};