// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CustomizableObjectPopulationClass.generated.h" class FArchive; struct FCustomizableObjectPopulationCharacteristic; USTRUCT() struct FPopulationClassParameterOptions { GENERATED_USTRUCT_BODY() /** List of tags of a Parameter Option */ UPROPERTY(Category = "CustomizablePopulation", EditAnywhere) TArray Tags; }; USTRUCT() struct FPopulationClassParameter { public: GENERATED_USTRUCT_BODY() /** List of tags of a parameter */ UPROPERTY(Category = "CustomizablePopulation", EditAnywhere) TArray Tags; /** Map of options available for a parameter can have and their tags */ UPROPERTY(Category = "CustomizablePopulation", EditAnywhere) TMap ParameterOptions; }; UCLASS() class CUSTOMIZABLEOBJECTPOPULATION_API UCustomizableObjectPopulationClass : public UObject { public: GENERATED_BODY() void Serialize(FArchive& Ar) override; /** Name of the Customizable Object Population Class */ UPROPERTY(Category = "CustomizablePopulationClass", EditAnywhere) FString Name; /** Customizable Object that defines this class */ UPROPERTY(Category = "CustomizablePopulationClass", EditAnywhere) TObjectPtr CustomizableObject; ///** Map of parameters available for the Customizable Object and their tags */ //UPROPERTY(Category = "CustomizablePopulation", EditAnywhere) //TMap CustomizableObjectParameterTags; /** List of parameter tags available for this class */ UPROPERTY(Category = "CustomizablePopulationClass", EditAnywhere) TArray Allowlist; /** List of parameter tags forbidden for this class */ UPROPERTY(Category = "CustomizablePopulationClass", EditAnywhere) TArray Blocklist; /** Additional options to take into account for some parameters */ UPROPERTY(Category = "CustomizablePopulationClass", EditAnywhere) TArray Characteristics; /** Array with all the tags deffined for this population class */ UPROPERTY() TArray Tags; /** Customizable Object Instance for UI purposes */ TObjectPtr CustomizableObjectInstance = nullptr; /** UCurve for UI purposes */ TObjectPtr EditorCurve; };