QuartzUIBindingComponentBase: 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/QuartzUIBindingComponentBase.h) · integration recipe · practical guide
EQuartzUIBindingComponentLifecycleState
Advanced type. Shared, native-only lifecycle used by feature-owned QuartzUI binding components.
Prerequisites / integration: Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the QuartzUIBindingComponentBase recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Derive through provider/GAS component for ordinary integrations. Component owns player/source retry subscriptions.
Avoid: Starting unbounded retries or resolving the first world player. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBindingComponentBase.h#L13)
EQuartzUIBindingAttachResult
Advanced type. Result of a derived component's exact-player shell attachment attempt.
Prerequisites / integration: Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the QuartzUIBindingComponentBase recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Derive through provider/GAS component for ordinary integrations. Component owns player/source retry subscriptions.
Avoid: Starting unbounded retries or resolving the first world player. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBindingComponentBase.h#L24)
UQuartzUIBindingComponentBase
Advanced type. Common exact-player resolution, retained-shell startup, retry, failure, and teardown machinery for feature-owned QuartzUI binding components.
Prerequisites / integration: Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the QuartzUIBindingComponentBase recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Derive through provider/GAS component for ordinary integrations. Component owns player/source retry subscriptions.
Avoid: Starting unbounded retries or resolving the first world player. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBindingComponentBase.h#L36)
Complete header
Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.
#pragma once
#include "Components/ActorComponent.h"
#include "Containers/Ticker.h"
#include "CoreMinimal.h"
#include "QuartzUIBindingComponentBase.generated.h"
class ULocalPlayer;
class UQuartzUIView;
/** Shared, native-only lifecycle used by feature-owned QuartzUI binding components. */
enum class EQuartzUIBindingComponentLifecycleState : uint8
{
Inactive,
WaitingForLocalPlayer,
WaitingForShell,
WaitingForBinding,
Bound,
Failed
};
/** Result of a derived component's exact-player shell attachment attempt. */
enum class EQuartzUIBindingAttachResult : uint8
{
Attached,
Retry,
Fatal
};
/**
* Common exact-player resolution, retained-shell startup, retry, failure, and
* teardown machinery for feature-owned QuartzUI binding components.
*/
UCLASS(Abstract, BlueprintType, Blueprintable, ClassGroup = (QuartzUI))
class QUARTZUIRUNTIME_API UQuartzUIBindingComponentBase : public UActorComponent
{
GENERATED_BODY()
public:
UQuartzUIBindingComponentBase();
/** Resolves a LocalPlayer only through this component's bounded owner chain. */
UFUNCTION(BlueprintPure, Category = "QuartzUI|Binding Component")
ULocalPlayer* GetBindingLocalPlayer() const;
UFUNCTION(BlueprintPure, Category = "QuartzUI|Binding Component")
FName GetLastBindingFailure() const { return LastFailure; }
UFUNCTION(BlueprintPure, Category = "QuartzUI|Binding Component")
bool IsBindingRequested() const { return bBindingRequested; }
/** Starts or reuses the retained exact-player shell when needed. */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "QuartzUI|Binding Component")
bool bStartShellIfNeeded = true;
/** Suitable for client components installed by GameFeatureAction_AddComponents. */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "QuartzUI|Binding Component")
bool bBindOnBeginPlay = true;
/** Exact-player/shell reconciliation interval while the feature is active. */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "QuartzUI|Binding Component",
meta = (ClampMin = "0.05", ClampMax = "5.0"))
float RetryIntervalSeconds = 0.1f;
protected:
virtual void BeginPlay() override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
virtual void OnComponentDestroyed(bool bDestroyingHierarchy) override;
bool ActivateBindingRequest();
bool DeactivateBindingRequest();
bool RetryBindingRequest();
void SetBindingLifecycleState(EQuartzUIBindingComponentLifecycleState NewState);
EQuartzUIBindingComponentLifecycleState GetBindingLifecycleState() const
{
return LifecycleState;
}
/** Fails closed, releases any partial binding, and broadcasts through the derived API. */
void FailBinding(FName ErrorCode);
/** Re-enters retained-shell reconciliation after a bound scope detaches itself. */
void RestartBindingAfterDetach();
virtual bool ValidateBindingRequest(FName& OutError) const;
virtual bool HasLiveBinding() const;
virtual EQuartzUIBindingAttachResult AttachBinding(
ULocalPlayer* LocalPlayer,
UQuartzUIView* Shell,
FName& OutError);
virtual void ReleaseBinding();
virtual void HandleBindingAttached();
virtual void HandleBindingLifecycleStateChanged(
EQuartzUIBindingComponentLifecycleState PreviousState,
EQuartzUIBindingComponentLifecycleState NewState);
virtual void HandleBindingFailure(FName ErrorCode);
private:
EQuartzUIBindingAttachResult TryAttach();
bool HandleRetryTick(float DeltaSeconds);
void StartRetryTicker();
void StopRetryTicker();
FTSTicker::FDelegateHandle RetryTicker;
EQuartzUIBindingComponentLifecycleState LifecycleState =
EQuartzUIBindingComponentLifecycleState::Inactive;
FName LastFailure;
bool bBindingRequested = false;
};