#pragma once #include "CoreMinimal.h" #include "GameFramework/PlayerController.h" #include "SingularityRoleTypes.h" #include "SingularityRolePlayerController.generated.h" class USingularitySpacetimeBridge; /** Sends only the local role's bounded input to the shared bridge. */ UCLASS() class SINGULARITY_API ASingularityRolePlayerController : public APlayerController { GENERATED_BODY() public: ASingularityRolePlayerController(); virtual void BeginPlay() override; virtual void SetupInputComponent() override; virtual void Tick(float DeltaSeconds) override; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Singularity|Role") ESingularityBodyRole ControlledRole = ESingularityBodyRole::EyesHead; UPROPERTY(BlueprintReadOnly, Category = "Singularity|Role") TObjectPtr SpacetimeBridge; private: float MoveX = 0.0f; float MoveZ = 0.0f; bool bAction = false; int64 ClientTick = 0; float SendAccumulator = 0.0f; void HandleMoveX(float Value); void HandleMoveZ(float Value); void HandleActionPressed(); void HandleActionReleased(); };