QuartzUIProviderBindingComponent: 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/QuartzUIRuntime/Public/QuartzUIProviderBindingComponent.h) · integration recipe · practical guide
EQuartzUIProviderBindingComponentState
Public type. Feature-owned provider activation state for one exact local player.
Prerequisites / integration: Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the QuartzUIProviderBindingComponent recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Add component to local controller; assign ProviderSet; inspect binding state. Component deactivation/destruction detaches providers, not shell.
Avoid: Using an unrelated actor without a supported owner chain. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIProviderBindingComponent.h#L16)
FQuartzUIProviderBindingComponentStateChanged
Public delegate. Provider Binding Component State Changed: callback signature for actor-owned provider activation with exact-player resolution and retry.
Prerequisites / integration: Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the QuartzUIProviderBindingComponent recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Add component to local controller; assign ProviderSet; inspect binding state. Component deactivation/destruction detaches providers, not shell.
Avoid: Using an unrelated actor without a supported owner chain. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIProviderBindingComponent.h#L26)
FQuartzUIProviderBindingComponentFailed
Public delegate. Provider Binding Component Failed: callback signature for actor-owned provider activation with exact-player resolution and retry.
Prerequisites / integration: Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the QuartzUIProviderBindingComponent recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Add component to local controller; assign ProviderSet; inspect binding state. Component deactivation/destruction detaches providers, not shell.
Avoid: Using an unrelated actor without a supported owner chain. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIProviderBindingComponent.h#L31)
UQuartzUIProviderBindingComponent
Public type. Instantiates app-registered providers for the exact local player resolved through this component's controller, HUD, pawn, or owner chain. A project can add this component, or a Blueprint subclass with a provider subset, through stock GameFeatureAction_AddComponents. Component removal releases every provider while the GameInstance-owned browser shell remains.
Prerequisites / integration: Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the QuartzUIProviderBindingComponent recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Add component to local controller; assign ProviderSet; inspect binding state. Component deactivation/destruction detaches providers, not shell.
Avoid: Using an unrelated actor without a supported owner chain. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIProviderBindingComponent.h#L45)
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 "QuartzUIProviderBindingComponent.generated.h"
class ULocalPlayer;
class UQuartzUIProvider;
class UQuartzUIProviderSet;
class UQuartzUIView;
/** Feature-owned provider activation state for one exact local player. */
UENUM(BlueprintType)
enum class EQuartzUIProviderBindingComponentState : uint8
{
Inactive,
WaitingForLocalPlayer,
WaitingForShell,
WaitingForProviders,
Bound,
Failed
};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(
FQuartzUIProviderBindingComponentStateChanged,
EQuartzUIProviderBindingComponentState, PreviousState,
EQuartzUIProviderBindingComponentState, NewState);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(
FQuartzUIProviderBindingComponentFailed,
FName, ErrorCode);
/**
* Instantiates app-registered providers for the exact local player resolved
* through this component's controller, HUD, pawn, or owner chain.
*
* A project can add this component, or a Blueprint subclass with a provider
* subset, through stock GameFeatureAction_AddComponents. Component removal
* releases every provider while the GameInstance-owned browser shell remains.
*/
UCLASS(BlueprintType, Blueprintable, ClassGroup = (QuartzUI),
meta = (BlueprintSpawnableComponent, DisplayName = "QuartzUI Provider Binding"))
class QUARTZUIRUNTIME_API UQuartzUIProviderBindingComponent : public UQuartzUIBindingComponentBase
{
GENERATED_BODY()
public:
UQuartzUIProviderBindingComponent();
/** Requests provider activation now and reconciles ordinary startup races. */
UFUNCTION(BlueprintCallable, Category = "QuartzUI|Providers",
meta = (DisplayName = "Activate UI Providers"))
bool ActivateProviderBinding();
/** Idempotently cancels retries and releases all feature-owned providers. */
UFUNCTION(BlueprintCallable, Category = "QuartzUI|Providers",
meta = (DisplayName = "Deactivate UI Providers"))
bool DeactivateProviderBinding();
/** Rebuilds a failed or pending binding without recreating the component. */
UFUNCTION(BlueprintCallable, Category = "QuartzUI|Providers",
meta = (DisplayName = "Retry UI Providers"))
bool RetryProviderBinding();
UFUNCTION(BlueprintPure, Category = "QuartzUI|Providers")
TArray<UQuartzUIProvider*> GetBoundProviders() const;
UFUNCTION(BlueprintPure, Category = "QuartzUI|Providers")
UQuartzUIProvider* GetBoundProvider(TSubclassOf<UQuartzUIProvider> ProviderClass) const;
UFUNCTION(BlueprintPure, Category = "QuartzUI|Providers")
EQuartzUIProviderBindingComponentState GetBindingState() const { return BindingState; }
UPROPERTY(BlueprintAssignable, Category = "QuartzUI|Providers")
FQuartzUIProviderBindingComponentStateChanged OnBindingStateChanged;
UPROPERTY(BlueprintAssignable, Category = "QuartzUI|Providers")
FQuartzUIProviderBindingComponentFailed OnBindingFailed;
/**
* Optional feature subset. Empty binds every provider registered by the shell
* app. Every listed exact class must also be registered in that app asset.
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "QuartzUI|Providers")
TArray<TSubclassOf<UQuartzUIProvider>> ProviderClasses;
/** Optional reusable set merged with ProviderClasses before exact-class validation. */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "QuartzUI|Providers")
TSoftObjectPtr<UQuartzUIProviderSet> ProviderSet;
protected:
virtual bool HasLiveBinding() const override;
virtual EQuartzUIBindingAttachResult AttachBinding(
ULocalPlayer* LocalPlayer,
UQuartzUIView* Shell,
FName& OutError) override;
virtual void ReleaseBinding() override;
virtual void HandleBindingAttached() override;
virtual void HandleBindingLifecycleStateChanged(
EQuartzUIBindingComponentLifecycleState PreviousState,
EQuartzUIBindingComponentLifecycleState NewState) override;
virtual void HandleBindingFailure(FName ErrorCode) override;
private:
bool ResolveProviderClasses(
UQuartzUIView* View,
TArray<UClass*>& OutClasses,
FName& OutError) const;
void ReleaseProviders();
void ReconcileProviderStates();
UFUNCTION()
void HandleProviderStateChanged(
EQuartzUIBindingScopeState PreviousState,
EQuartzUIBindingScopeState NewState);
UFUNCTION()
void HandleProviderFailed(FName ErrorCode);
UPROPERTY(Transient)
TArray<TObjectPtr<UQuartzUIProvider>> BoundProviders;
UPROPERTY(Transient)
TObjectPtr<UQuartzUIView> BoundView;
EQuartzUIProviderBindingComponentState BindingState =
EQuartzUIProviderBindingComponentState::Inactive;
bool bReleasingProviders = false;
};