Skip to main content

Overview

LCKTablet includes three built-in camera modes, each derived from ULCKBaseCameraMode. Camera modes control how the scene capture component is positioned and oriented relative to the player.

ULCKBaseCameraMode

Abstract base class for camera mode implementations.
UCLASS(Abstract)
class LCKTABLET_API ULCKBaseCameraMode : public UActorComponent
{
    GENERATED_BODY()

public:
    virtual void ActivateMode(UCameraComponent* Camera);
    virtual void DeactivateMode(UCameraComponent* Camera);
    virtual void SetSmoothness(float Smoothness);
    virtual void SetDistance(float Distance);
    virtual void SetCameraRoot(USceneComponent* Root);
    virtual void SetSpringArm(USpringArmComponent* Arm);
};

Selfie Camera Mode

Front-facing camera with optional follow mode that tracks tablet orientation.
  • Follow Mode: Camera follows tablet orientation smoothly
  • Front/Rear Toggle: Switch between selfie and outward-facing
  • Adjustable FOV: Customize field of view
  • Smoothness Control: Adjust camera movement smoothing

First Person Camera Mode

Point-of-view camera attached to the player’s view for immersive capture.
  • Direct POV: Captures exactly what the player sees
  • Adjustable FOV: Match or differ from player FOV
  • Smooth Movement: Configurable smoothing for stability

Third Person Camera Mode

Behind-player camera with adjustable distance for action shots.
  • Adjustable Distance: Control camera distance from player
  • Front/Back Toggle: Position camera in front or behind
  • FOV Control: Customize field of view
  • Smooth Follow: Configurable smoothing

Switching Camera Modes

ULCKTabletDataModel* Model = Tablet->GetDataModel();

// Switch to a camera mode
Model->SetCameraMode(ULCKSelfieCameraMode::StaticClass());
Model->SetCameraMode(ULCKFirstPersonCameraMode::StaticClass());
Model->SetCameraMode(ULCKThirdPersonCameraMode::StaticClass());

// Subscribe to mode changes
Model->OnTabletCameraModeChanged.AddLambda([](UClass* NewModeClass) {
    UE_LOG(LogTemp, Log, TEXT("Camera mode changed to: %s"), *NewModeClass->GetName());
});

Creating Custom Camera Modes

1

Create Subclass

Create a new class derived from ULCKBaseCameraMode:
UCLASS()
class UMyCustomCameraMode : public ULCKBaseCameraMode
{
    GENERATED_BODY()

public:
    virtual void ActivateMode(UCameraComponent* Camera) override;
    virtual void DeactivateMode(UCameraComponent* Camera) override;
};
2

Implement Activation

void UMyCustomCameraMode::ActivateMode(UCameraComponent* Camera)
{
    Super::ActivateMode(Camera);

    // Configure camera for this mode
    Camera->SetFieldOfView(90.0f);

    // Set up any custom behavior
}

void UMyCustomCameraMode::DeactivateMode(UCameraComponent* Camera)
{
    // Clean up custom behavior

    Super::DeactivateMode(Camera);
}
3

Register with Tablet

Add your custom camera mode component to the tablet actor and register it in the mode selection UI.

Camera Mode Delegates

DelegateDescription
OnTabletCameraModeChangedCamera mode class changed
OnSelfieFOVChangedSelfie FOV value changed
OnSelfieSmoothnessChangedSelfie smoothness changed
OnSelfieIsFollowingChangedFollow mode toggled
OnSelfieFollowDistanceChangedFollow distance changed
OnSelfieCameraFacingChangedFront/rear changed
OnFirstPersonFOVChangedFirst person FOV changed
OnFirstPersonSmoothnessChangedFirst person smoothness changed
OnThirdPersonFOVChangedThird person FOV changed
OnThirdPersonSmoothnessChangedThird person smoothness changed
OnThirdPersonDistanceChangedThird person distance changed
OnThirdPersonIsFrontPositionChangedFront/back position changed
All camera mode delegates broadcast the new value when changed, making it easy to sync UI elements with current settings.