Files
Cog/Plugins/CogInput/Source/CogInput/Public/CogInputWindow_Gamepad.h
T
Arnaud Jamin c8c68ee2b4 Improve behavior tree
add hover feedback on gamepad buttons
2023-10-17 17:18:56 -04:00

95 lines
2.3 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "CogInjectActionInfo.h"
#include "CogWindow.h"
#include "CogInputWindow_Gamepad.generated.h"
class UEnhancedPlayerInput;
class UCogInputDataAsset;
struct ImDrawList;
UCLASS(Config = Cog)
class COGINPUT_API UCogInputWindow_Gamepad : public UCogWindow
{
GENERATED_BODY()
public:
UCogInputWindow_Gamepad();
const UCogInputDataAsset* GetAsset() const { return Asset.Get(); }
void SetAsset(const UCogInputDataAsset* Value) { Asset = Value; }
protected:
virtual void ResetConfig() override;
virtual void PreRender(ImGuiWindowFlags& WindowFlags) override;
virtual void RenderContent() override;
virtual void RenderTick(float DeltaSeconds) override;
private:
void AddButton(const FKey& Key, const ImVec2& Position, const ImVec2& Size, const ImVec2& Alignment, float Rounding, ImDrawFlags Flags = 0);
void AddStick(const FKey& Key2D, const FKey& KeyBool, bool InvertY, float Amplitude, const ImVec2& Position, float Radius);
void InputContextMenu(const FKey& Key, FCogInjectActionInfo* ActionInfoBool, FCogInjectActionInfo* ActionInfo2D);
void OnButtonClicked(FCogInjectActionInfo* ActionInfo);
UPROPERTY(Config)
bool bShowAsOverlay = false;
UPROPERTY(Config)
bool bInvertRightStickY = false;
UPROPERTY(Config)
bool bInvertLeftStickY = false;
UPROPERTY(Config)
FVector4f BackgroundColor = FVector4f(0.03f, 0.03f, 0.03f, 1.0f);
UPROPERTY(Config)
FVector4f ButtonColor = FVector4f(0.2f, 0.2f, 0.2f, 1.0f);
UPROPERTY(Config)
FVector4f BorderColor = FVector4f(0.03f, 0.03f, 0.03f, 1.0f);
UPROPERTY(Config)
FVector4f PressedColor = FVector4f(0.6f, 0.6f, 0.6f, 1.0f);
UPROPERTY(Config)
FVector4f HoveredColor = FVector4f(0.3f, 0.3f, 0.3f, 1.0f);
UPROPERTY(Config)
FVector4f InjectColor = FVector4f(1.0f, 0.5f, 0.0f, 0.5f);
UPROPERTY(Config)
float Border = 0.02f;
UPROPERTY(Config)
float RepeatPeriod = 0.5f;
UPROPERTY()
TWeakObjectPtr<const UCogInputDataAsset> Asset;
TMap<FKey, FCogInjectActionInfo> Actions;
UEnhancedPlayerInput* Input = nullptr;
ImDrawList* DrawList = nullptr;
float RepeatTime = 0.0f;
ImVec2 CanvasMin;
ImVec2 CanvasSize;
ImVec2 CanvasMax;
};