/*
 * Copyright (C) 2012-2026 MotionSystems
 *
 * This file is part of ForceSeatMI SDK.
 *
 * www.motionsystems.eu
 *
 */

#pragma once

#include "CoreMinimal.h"
#include "Components/ActorComponent.h"

#include "ForceSeatMIPlane_ControllerCore.h"

#include "ForceSeatMIPlane_Controller.generated.h"

UCLASS( ClassGroup=(ForceSeatMIPlane), meta=(BlueprintSpawnableComponent) )
class UForceSeatMIPlane_Controller : public UActorComponent
{
	GENERATED_BODY()
public:
	UForceSeatMIPlane_Controller();
	virtual ~UForceSeatMIPlane_Controller();

public:
	virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;

	UFUNCTION(BlueprintCallable, Category = "ForceSeatMIPlane")
	void SetPlaneObject(APawn* Input);

	UFUNCTION(BlueprintCallable, Category = "ForceSeatMIPlane")
	void SetAdditionalProperties(float SideSlip, float RoadHarshness, float G);

	UFUNCTION(BlueprintCallable, Category = "ForceSeatMIPlane")
	void SetUserAux(float aux1, float aux2, float aux3, float aux4, float aux5, float aux6, float aux7, float aux8);

	UFUNCTION(BlueprintCallable, Category = "ForceSeatMIPlane")
	void Pause(bool paused);

protected:
	virtual void BeginPlay() override;
	virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;

private:
	IForceSeatMIPlane_ControllerCore* m_controller;
	APawn*                            m_source;
};
