> ## Documentation Index
> Fetch the complete documentation index at: https://docs.liv.tv/llms.txt
> Use this file to discover all available pages before exploring further.

# UI Components API Reference

> Complete API reference for the LCKUI module in Unreal Engine, including all button classes, display components, structs, enums, interfaces, and delegates for VR touch interaction with the LIV Camera Kit (LCK) SDK.

## Classes

### ULCKBaseButton

<ResponseField name="ULCKBaseButton" type="class">
  Base class for all UI button components.

  **Parent:** `USceneComponent`

  **Interfaces:** `ILCKButtonable`, `ILCKShowable`, `ILCKVisuallyDebuggable`

  **Module:** `LCKUI`
</ResponseField>

***

### ULCKToggle

<ResponseField name="ULCKToggle" type="class">
  Toggle button with on/off states.

  **Parent:** `ULCKBaseButton`
</ResponseField>

***

### ULCKStepper

<ResponseField name="ULCKStepper" type="class">
  Increment/decrement control.

  **Parent:** `ULCKBaseButton`
</ResponseField>

***

### ULCKPad2D

<ResponseField name="ULCKPad2D" type="class">
  2D directional pad control.

  **Parent:** `ULCKBaseButton`
</ResponseField>

***

### ULCKDisplay

<ResponseField name="ULCKDisplay" type="class">
  Render target display surface.

  **Parent:** `USceneComponent`
</ResponseField>

***

### ULCKRecordButton

<ResponseField name="ULCKRecordButton" type="class">
  Record button with time display.

  **Parent:** `ULCKBaseButton`

  **Interfaces:** `ILCKRecordable`
</ResponseField>

***

### ULCKShowablesGroup

<ResponseField name="ULCKShowablesGroup" type="class">
  Container for managing showable groups.

  **Parent:** `UObject`

  **Interfaces:** `ILCKShowable`
</ResponseField>

***

## Structures

### FLCKTapData

```cpp theme={null}
USTRUCT()
struct LCKUI_API FLCKTapData
{
    GENERATED_BODY()

    UPROPERTY()
    FVector ButtonLocation = FVector::ZeroVector;

    UPROPERTY()
    FVector ButtonRightVector = FVector::ZeroVector;

    UPROPERTY()
    FVector ButtonForwardVector = FVector::ZeroVector;

    UPROPERTY()
    FVector TapLocation = FVector::ZeroVector;

    UPROPERTY()
    bool IsPressed = false;
};
```

***

### FLCKConstants

```cpp theme={null}
USTRUCT(BlueprintType)
struct LCKUI_API FLCKConstants
{
    // Timing
    static constexpr float CoolDownTime = 0.25f;

    // Collision
    inline static const FName UICollisionProfileName = TEXT("OverlapOnlyPawn");

    // UV Steps
    inline static const FVector2D SquareButtonUVStep = FVector2D(0.1f, 0.1f);
    inline static const FVector2D RectButtonUVStep = FVector2D(0.25f, 0.1f);
    inline static const FVector2D TabButtonUVStep = FVector2D(0.183333f, 0.1f);

    // Box Extents
    inline static const FVector SquareButtonBoxExtent = FVector(0.4f, 2.4f, 2.4f);
    inline static const FVector RectButtonBoxExtent = FVector(0.4f, 6.0f, 2.4f);
    inline static const FVector TabButtonBoxExtent = FVector(0.4f, 4.4f, 2.4f);
};
```

***

### FLCKColor

```cpp theme={null}
USTRUCT()
struct LCKUI_API FLCKColor
{
    static constexpr FColor Primary         {8, 8, 8};
    static constexpr FColor PrimaryText     {220, 220, 220};
    static constexpr FColor Secondary       {16, 16, 16};
    static constexpr FColor Disabled        {96, 96, 96};
    static constexpr FColor ButtonDefault   {40, 40, 40};
    static constexpr FColor ButtonIconDefault {220, 220, 220};
    static constexpr FColor ButtonActive    {94, 69, 255};
    static constexpr FColor Debug           {255, 0, 255};
    static constexpr FColor Alert           {255, 42, 42};
    static constexpr FColor Success         {32, 196, 64};
    static constexpr FColor White           {255, 255, 255};
    static constexpr FColor Black           {0, 0, 0};
};
```

***

## Enumerations

### ELCKButtonType

```cpp theme={null}
UENUM(BlueprintType)
enum class ELCKButtonType : uint8
{
    Square      UMETA(DisplayName = "Square"),
    Rectangle   UMETA(DisplayName = "Rectangle"),
    Tab         UMETA(DisplayName = "Tab"),
    Selector    UMETA(DisplayName = "Selector")
};
```

### ELCKRecordingState

```cpp theme={null}
UENUM(BlueprintType)
enum class ELCKRecordingState : uint8
{
    Idle        UMETA(DisplayName = "Idle"),
    Recording   UMETA(DisplayName = "Recording"),
    Saving      UMETA(DisplayName = "Saving"),
    Processing  UMETA(DisplayName = "Processing"),
    Error       UMETA(DisplayName = "Error"),
    Paused      UMETA(DisplayName = "Paused")
};
```

### ELCKVideoQuality

```cpp theme={null}
UENUM(BlueprintType)
enum class ELCKVideoQuality : uint8
{
    SD      UMETA(DisplayName = "SD"),      // 1280x720
    HD      UMETA(DisplayName = "HD"),      // 1920x1080
    TWO_K   UMETA(DisplayName = "2K"),      // 2560x1440
    FOUR_K  UMETA(DisplayName = "4K"),      // 3840x2160
    MAX     UMETA(Hidden)
};
```

### ELCKScreenOrientation

```cpp theme={null}
UENUM(BlueprintType)
enum class ELCKScreenOrientation : uint8
{
    Landscape   UMETA(DisplayName = "Landscape"),
    Portrait    UMETA(DisplayName = "Portrait")
};
```

### ELCKCameraFacing

```cpp theme={null}
UENUM(BlueprintType)
enum class ELCKCameraFacing : uint8
{
    Front   UMETA(DisplayName = "Front"),
    Rear    UMETA(DisplayName = "Rear")
};
```

### ELCKButtonInteractionDirection

```cpp theme={null}
UENUM(BlueprintType)
enum class ELCKButtonInteractionDirection : uint8
{
    Forward     UMETA(DisplayName = "Forward"),
    Up          UMETA(DisplayName = "Up")
};
```

***

## Interfaces

### ILCKButtonable

```cpp theme={null}
UINTERFACE(MinimalAPI)
class ULCKButtonable : public UInterface
{
    GENERATED_BODY()
};

class ILCKButtonable
{
    GENERATED_BODY()
    // Marker interface for button-like objects
};
```

### ILCKShowable

```cpp theme={null}
class ILCKShowable
{
    GENERATED_BODY()

public:
    virtual void Show() = 0;
    virtual void Hide() = 0;
};
```

### ILCKRecordable

```cpp theme={null}
class ILCKRecordable
{
    GENERATED_BODY()

public:
    virtual void SetTime(float NewTime) = 0;
    virtual void UpdateVisuals(const ELCKRecordingState NewState) = 0;
};
```

### ILCKUISystemable

```cpp theme={null}
class ILCKUISystemable
{
    GENERATED_BODY()

public:
    virtual void SetCurrentOperatingButton(ILCKButtonable* InButtonable) = 0;
    virtual void PlayUIFeedback(bool InIsOnPressed, FVector NewTouchLocation) = 0;
    virtual bool IsCurrentOperatingButtonNull() = 0;
    virtual bool IsValidInteractor(UPrimitiveComponent* InInteractorComp) = 0;
    virtual bool CanBePressed(ILCKButtonable* InButtonable) = 0;
};
```

***

## Delegates

### FOnTapStarted

```cpp theme={null}
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnTapStarted);
```

### FOnStepperValueChanged

```cpp theme={null}
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStepperValueChanged, int8, NewValue);
```

### FOnPad2DChanged

```cpp theme={null}
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPad2DChanged, FIntPoint, NewValue);
```

### FOnRecordButtonPressed

```cpp theme={null}
DECLARE_MULTICAST_DELEGATE_OneParam(FOnRecordButtonPressed, ILCKRecordable*);
```

***

## Utility Classes

### LCKHelper

Asset loading helper class.

```cpp theme={null}
class LCKUI_API LCKHelper
{
public:
    template<typename T>
    static T* FindAsset(const TCHAR* Path);
};

// Usage
UStaticMesh* Mesh = LCKHelper::FindAsset<UStaticMesh>(
    TEXT("/LCKUI/UI/Meshes/LCKButtonSquare.LCKButtonSquare")
);
```

***

## Log Category

```cpp theme={null}
DECLARE_LOG_CATEGORY_EXTERN(LogLCKUI, Log, All);
```
