File size: 1,147 Bytes
511a267
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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<USingularitySpacetimeBridge> 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();
};