Quartz UI ↗
Browse docs
On this page
Private preview · 0.57.0-devView Markdown

QuartzUIGASConfig: declaration reference

0.57.0-dev · beta source documentation. Native, Blueprint, Editor and rendering examples are source-reviewed, not executed in Unreal during this scan. See validation and limits.

Pinned source (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h) · integration recipe · practical guide

EQuartzUIGASBrowserAbilityActionPolicy

Internal type. Browser authority policy. Observation never implies permission to mutate gameplay.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASConfig recipe in the host module QuartzUIGAS.

Minimal example / lifecycle: Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

Avoid: Expecting mappings to load an ASC or allowing duplicate/invalid IDs. This named helper is runtime-owned; inspect/use it through the owner above rather than constructing it in gameplay.

Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L15)

FQuartzUIGASAttributeMapping

Public type. GASAttribute Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASConfig recipe in the host module QuartzUIGAS.

Minimal example / lifecycle: Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

Avoid: Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L28)

FQuartzUIGASTagMapping

Public type. GASTag Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASConfig recipe in the host module QuartzUIGAS.

Minimal example / lifecycle: Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

Avoid: Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L41)

FQuartzUIGASFailureReasonMapping

Public type. GASFailure Reason Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASConfig recipe in the host module QuartzUIGAS.

Minimal example / lifecycle: Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

Avoid: Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L53)

FQuartzUIGASAbilityCostMapping

Public type. GASAbility Cost Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASConfig recipe in the host module QuartzUIGAS.

Minimal example / lifecycle: Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

Avoid: Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L65)

FQuartzUIGASAbilityMapping

Public type. GASAbility Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASConfig recipe in the host module QuartzUIGAS.

Minimal example / lifecycle: Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

Avoid: Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L81)

FQuartzUIGASStatusEffectMapping

Public type. GASStatus Effect Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASConfig recipe in the host module QuartzUIGAS.

Minimal example / lifecycle: Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

Avoid: Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L108)

UQuartzUIGASConfig

Public type. Optional aliases and policy overrides for automatic GAS discovery. A project does not need this asset to expose its exact local player's GAS state. When automatic discovery is enabled, matching entries rename discovered DTO IDs; ability entries can also opt into ExplicitMappings browser-action policy. Setting automatic discovery off preserves the bounded legacy allowlist behavior.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASConfig recipe in the host module QuartzUIGAS.

Minimal example / lifecycle: Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

Avoid: Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L129)

Complete header

Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.

#pragma once

#include "AttributeSet.h"
#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "GameplayTagContainer.h"

#include "QuartzUIGASConfig.generated.h"

class UGameplayAbility;
class UGameplayEffect;

/** Browser authority policy. Observation never implies permission to mutate gameplay. */
UENUM(BlueprintType)
enum class EQuartzUIGASBrowserAbilityActionPolicy : uint8
{
	/** The browser can observe abilities but cannot activate or cancel them. */
	Disabled,

	/** Only legacy/override mappings with the matching permission flag are actionable. */
	ExplicitMappings,

	/** Every currently granted ability is addressable after the generic runtime checks pass. */
	AllDiscovered
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASAttributeMapping
{
	GENERATED_BODY()

	/** Optional stable project-facing alias for the reflected attribute identity. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayAttribute Attribute;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASTagMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayTag Tag;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASFailureReasonMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayTag Tag;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASAbilityCostMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayAttribute Attribute;

	/** Positive amount required by this project's presentation mapping. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS", meta = (ClampMin = "0"))
	float RequiredValue = 0.0f;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASAbilityMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	/** Exact granted class to match without synchronously loading a GameFeature. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TSoftClassPtr<UGameplayAbility> AbilityClass;

	/** Optional exact dynamic source tag for projects granting the same class more than once. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayTag SpecSourceTag;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	bool bAllowBrowserActivation = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	bool bAllowBrowserCancellation = false;

	/** Optional quantified costs; custom GAS costs still contribute to Affordable. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASAbilityCostMapping> Costs;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASStatusEffectMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	/** Exact active effect class selector; output remains immutable data only. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TSoftClassPtr<UGameplayEffect> EffectClass;
};

/**
 * Optional aliases and policy overrides for automatic GAS discovery.
 *
 * A project does not need this asset to expose its exact local player's GAS state.
 * When automatic discovery is enabled, matching entries rename discovered DTO IDs;
 * ability entries can also opt into ExplicitMappings browser-action policy. Setting
 * automatic discovery off preserves the bounded legacy allowlist behavior.
 */
UCLASS(BlueprintType, Blueprintable)
class QUARTZUIGAS_API UQuartzUIGASConfig : public UPrimaryDataAsset
{
	GENERATED_BODY()

public:
	static constexpr int32 MaxAttributes = 64;
	static constexpr int32 MaxTags = 128;
	static constexpr int32 MaxAbilities = 64;
	static constexpr int32 MaxStatusEffects = 64;
	static constexpr int32 MaxFailureReasons = 64;
	static constexpr int32 MaxCostsPerAbility = 16;

	/** Discover spawned AttributeSets, owned tags, granted specs, and active effects. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	bool bUseAutomaticDiscovery = true;

	/** Optional attribute aliases, or the complete list when automatic discovery is off. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASAttributeMapping> Attributes;

	/** Optional tag aliases/zero-count observations, or the legacy explicit list. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASTagMapping> Tags;

	/** Optional ability aliases/action permissions, or the legacy explicit list. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASAbilityMapping> Abilities;

	/** Optional effect aliases, or the legacy explicit list. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASStatusEffectMapping> StatusEffects;

	/** Optional failure-tag aliases. Unmapped failures use their gameplay-tag names. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASFailureReasonMapping> FailureReasons;

	/** Strict bounds, IDs, duplicate mappings, attributes, tags, and soft classes. */
	UFUNCTION(BlueprintPure, Category = "QuartzUI|GAS")
	bool IsValidConfig(FName& OutError) const;
};