QuartzUIGASBindingComponent: 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/QuartzUIGASBindingComponent.h) · integration recipe · practical guide
EQuartzUIGASBindingComponentState
Public type. High-level lifecycle state for the feature-owned GAS adapter component.
Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASBindingComponent recipe in the host module QuartzUIGAS.
Minimal example / lifecycle: Enable GameplayAbilities; add component; leave action policy Disabled. Component owns scope/retries/source subscriptions.
Avoid: Enabling AllDiscovered without intended gameplay authority. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASBindingComponent.h#L16)
FQuartzUIGASBindingComponentStateChanged
Public delegate. GASBinding Component State Changed: callback signature for optional gas activation/retry component for exact player.
Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASBindingComponent recipe in the host module QuartzUIGAS.
Minimal example / lifecycle: Enable GameplayAbilities; add component; leave action policy Disabled. Component owns scope/retries/source subscriptions.
Avoid: Enabling AllDiscovered without intended gameplay authority. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASBindingComponent.h#L25)
FQuartzUIGASBindingComponentFailed
Public delegate. GASBinding Component Failed: callback signature for optional gas activation/retry component for exact player.
Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASBindingComponent recipe in the host module QuartzUIGAS.
Minimal example / lifecycle: Enable GameplayAbilities; add component; leave action policy Disabled. Component owns scope/retries/source subscriptions.
Avoid: Enabling AllDiscovered without intended gameplay authority. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASBindingComponent.h#L30)
UQuartzUIGASBindingComponent
Public type. Feature-friendly GAS adapter for one exact local player. Add this component (or a project Blueprint subclass with optional policy defaults) to a local PlayerController, HUD, pawn, or bounded owner chain. GameFeatureAction_AddComponents can therefore own registration and teardown without a project C++ module or custom target. The component owns only the binding scope; the GameInstance subsystem keeps ownership of the retained browser shell across map travel.
Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUIGASBindingComponent recipe in the host module QuartzUIGAS.
Minimal example / lifecycle: Enable GameplayAbilities; add component; leave action policy Disabled. Component owns scope/retries/source subscriptions.
Avoid: Enabling AllDiscovered without intended gameplay authority. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIGAS/Public/QuartzUIGASBindingComponent.h#L46)
Complete header
Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.
#pragma once
#include "CoreMinimal.h"
#include "QuartzUIBindingScope.h"
#include "QuartzUIBindingComponentBase.h"
#include "QuartzUIGASConfig.h"
#include "QuartzUIGASBindingComponent.generated.h"
class ULocalPlayer;
class UQuartzUIGASBindingScope;
class UQuartzUIGASResolver;
/** High-level lifecycle state for the feature-owned GAS adapter component. */
UENUM(BlueprintType)
enum class EQuartzUIGASBindingComponentState : uint8
{
Inactive,
WaitingForLocalPlayer,
WaitingForShell,
Bound,
Failed
};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(
FQuartzUIGASBindingComponentStateChanged,
EQuartzUIGASBindingComponentState, PreviousState,
EQuartzUIGASBindingComponentState, NewState);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(
FQuartzUIGASBindingComponentFailed,
FName, ErrorCode);
/**
* Feature-friendly GAS adapter for one exact local player.
*
* Add this component (or a project Blueprint subclass with optional policy
* defaults) to a local PlayerController, HUD, pawn, or bounded owner chain.
* GameFeatureAction_AddComponents can therefore own registration and teardown
* without a project C++ module or custom target. The component owns only the
* binding scope; the GameInstance subsystem keeps ownership of the retained
* browser shell across map travel.
*/
UCLASS(BlueprintType, Blueprintable, ClassGroup = (QuartzUI),
meta = (BlueprintSpawnableComponent, DisplayName = "QuartzUI GAS Binding"))
class QUARTZUIGAS_API UQuartzUIGASBindingComponent : public UQuartzUIBindingComponentBase
{
GENERATED_BODY()
public:
UQuartzUIGASBindingComponent();
/** Requests binding now and keeps reconciling ordinary startup races. */
UFUNCTION(BlueprintCallable, Category = "QuartzUI|GAS", meta = (DisplayName = "Activate GAS UI Binding"))
bool ActivateGASBinding();
/** Idempotently cancels retries and releases all GAS/UI subscriptions. */
UFUNCTION(BlueprintCallable, Category = "QuartzUI|GAS", meta = (DisplayName = "Deactivate GAS UI Binding"))
bool DeactivateGASBinding();
/** Retries a failed or pending binding without recreating the component. */
UFUNCTION(BlueprintCallable, Category = "QuartzUI|GAS", meta = (DisplayName = "Retry GAS UI Binding"))
bool RetryGASBinding();
UFUNCTION(BlueprintPure, Category = "QuartzUI|GAS")
UQuartzUIGASBindingScope* GetBindingScope() const { return BindingScope; }
UFUNCTION(BlueprintPure, Category = "QuartzUI|GAS")
EQuartzUIGASBindingComponentState GetBindingState() const { return BindingState; }
UPROPERTY(BlueprintAssignable, Category = "QuartzUI|GAS")
FQuartzUIGASBindingComponentStateChanged OnBindingStateChanged;
UPROPERTY(BlueprintAssignable, Category = "QuartzUI|GAS")
FQuartzUIGASBindingComponentFailed OnBindingFailed;
/** Optional aliases/policy overrides. Null performs zero-authoring automatic discovery. */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "QuartzUI|GAS")
TObjectPtr<UQuartzUIGASConfig> Config;
/** Observation is automatic; browser gameplay mutation remains an explicit policy choice. */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "QuartzUI|GAS")
EQuartzUIGASBrowserAbilityActionPolicy BrowserAbilityActionPolicy =
EQuartzUIGASBrowserAbilityActionPolicy::Disabled;
/** Optional project resolver override; the generic exact-player resolver is the default. */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "QuartzUI|GAS")
TSubclassOf<UQuartzUIGASResolver> ResolverClass;
protected:
virtual bool ValidateBindingRequest(FName& OutError) const override;
virtual bool HasLiveBinding() const override;
virtual EQuartzUIBindingAttachResult AttachBinding(
ULocalPlayer* LocalPlayer,
UQuartzUIView* Shell,
FName& OutError) override;
virtual void ReleaseBinding() override;
virtual void HandleBindingLifecycleStateChanged(
EQuartzUIBindingComponentLifecycleState PreviousState,
EQuartzUIBindingComponentLifecycleState NewState) override;
virtual void HandleBindingFailure(FName ErrorCode) override;
private:
void ReleaseScope();
UFUNCTION()
void HandleScopeStateChanged(
EQuartzUIBindingScopeState PreviousState,
EQuartzUIBindingScopeState NewState);
UFUNCTION()
void HandleScopeFailed(FName ErrorCode);
UPROPERTY(Transient)
TObjectPtr<UQuartzUIGASBindingScope> BindingScope;
EQuartzUIGASBindingComponentState BindingState = EQuartzUIGASBindingComponentState::Inactive;
};