CommonLibSSE NG
Loading...
Searching...
No Matches
ControlMap.h
Go to the documentation of this file.
1#pragma once
2
5#include "RE/B/BSTArray.h"
6#include "RE/B/BSTEvent.h"
7#include "RE/B/BSTSingleton.h"
8#include "RE/I/InputDevices.h"
10#include "RE/U/UserEvents.h"
11
12namespace RE
13{
14 class UserEventEnabled;
15
16 class ControlMap :
17 public BSTSingletonSDM<ControlMap>, // 00
18 public BSTEventSource<UserEventEnabled> // 08
19 {
20 public:
23
24 enum : std::uint32_t
25 {
26 kInvalid = static_cast<std::uint8_t>(-1)
27 };
28
30 {
31 public:
32 // members
34 std::uint16_t inputKey; // 08
35 std::uint16_t modifier; // 08
36 std::int8_t indexInContext; // 0C
37 bool remappable; // 0D
38 bool linked; // 0E
40 std::uint32_t pad14; // 14
41 };
42 static_assert(sizeof(UserEventMapping) == 0x18);
43
45 {
46 public:
47 [[nodiscard]] static SKYRIM_REL_VR std::size_t GetNumDeviceMappings() noexcept
48 {
49#ifndef SKYRIM_CROSS_VR
50 return INPUT_DEVICES::kTotal;
51#else
53 return INPUT_DEVICES::kTotal;
54 } else {
55 return static_cast<std::size_t>(INPUT_DEVICES::kVirtualKeyboard) + 1;
56 }
57#endif
58 }
59
60 // members
61 BSTArray<UserEventMapping> deviceMappings[INPUT_DEVICES::kTotal]; // 00
62 };
63#ifdef ENABLE_SKYRIM_VR
64 static_assert(sizeof(InputContext) == 0xA8);
65#else
66 static_assert(sizeof(InputContext) == 0x60);
67#endif
68
70 {
71 public:
72 // members
77 std::uint32_t pad14; // 14
79 };
80 static_assert(sizeof(LinkedMapping) == 0x20);
81
83
84 std::int8_t AllowTextInput(bool a_allow);
85 constexpr bool AreControlsEnabled(UEFlag a_flags) const noexcept { return enabledControls.all(a_flags); }
86 std::uint32_t GetMappedKey(std::string_view a_eventID, INPUT_DEVICE a_device, InputContextID a_context = InputContextID::kGameplay) const;
87 std::string_view GetUserEventName(std::uint32_t a_buttonID, INPUT_DEVICE a_device, InputContextID a_context = InputContextID::kGameplay) const;
88 constexpr bool IsActivateControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kActivate); }
89 constexpr bool IsConsoleControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kConsole); }
90 constexpr bool IsFightingControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kFighting); }
91 constexpr bool IsLookingControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kLooking); }
92 constexpr bool IsMenuControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kMenu); }
93 constexpr bool IsMainFourControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kMainFour); }
94 constexpr bool IsMovementControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kMovement); }
95 constexpr bool IsPOVSwitchControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kPOVSwitch); }
96 constexpr bool IsSneakingControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kSneaking); }
97 constexpr bool IsVATSControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kVATS); }
98 constexpr bool IsWheelZoomControlsEnabled() const noexcept { return enabledControls.all(UEFlag::kWheelZoom); }
99 void ToggleControls(UEFlag a_flags, bool a_enable);
100
101 // members
102 InputContext* controlMap[InputContextID::kTotal]; // 060
107 std::int8_t textEntryCount; // 120
110 std::uint8_t pad123; // 123
112 };
113 static_assert(sizeof(ControlMap) == 0x128);
114}
#define SKYRIM_REL_VR
Definition Relocation.h:134
#define SKYRIM_REL_VR_CONSTEXPR
Definition Relocation.h:143
Definition BSTArray.h:377
Definition BSTEvent.h:19
Definition ControlMap.h:19
std::uint8_t pad123
Definition ControlMap.h:110
constexpr bool IsFightingControlsEnabled() const noexcept
Definition ControlMap.h:90
constexpr bool AreControlsEnabled(UEFlag a_flags) const noexcept
Definition ControlMap.h:85
void ToggleControls(UEFlag a_flags, bool a_enable)
std::int8_t textEntryCount
Definition ControlMap.h:107
std::int8_t AllowTextInput(bool a_allow)
constexpr bool IsSneakingControlsEnabled() const noexcept
Definition ControlMap.h:96
constexpr bool IsConsoleControlsEnabled() const noexcept
Definition ControlMap.h:89
bool ignoreActivateDisabledEvents
Definition ControlMap.h:109
constexpr bool IsMovementControlsEnabled() const noexcept
Definition ControlMap.h:94
stl::enumeration< PC_GAMEPAD_TYPE, std::uint32_t > gamePadMapType
Definition ControlMap.h:111
constexpr bool IsMainFourControlsEnabled() const noexcept
Definition ControlMap.h:93
std::string_view GetUserEventName(std::uint32_t a_buttonID, INPUT_DEVICE a_device, InputContextID a_context=InputContextID::kGameplay) const
std::uint32_t GetMappedKey(std::string_view a_eventID, INPUT_DEVICE a_device, InputContextID a_context=InputContextID::kGameplay) const
constexpr bool IsPOVSwitchControlsEnabled() const noexcept
Definition ControlMap.h:95
constexpr bool IsActivateControlsEnabled() const noexcept
Definition ControlMap.h:88
InputContext * controlMap[InputContextID::kTotal]
Definition ControlMap.h:102
stl::enumeration< UEFlag, std::uint32_t > enabledControls
Definition ControlMap.h:105
@ kInvalid
Definition ControlMap.h:26
constexpr bool IsMenuControlsEnabled() const noexcept
Definition ControlMap.h:92
constexpr bool IsLookingControlsEnabled() const noexcept
Definition ControlMap.h:91
constexpr bool IsWheelZoomControlsEnabled() const noexcept
Definition ControlMap.h:98
bool ignoreKeyboardMouse
Definition ControlMap.h:108
constexpr bool IsVATSControlsEnabled() const noexcept
Definition ControlMap.h:97
BSTArray< LinkedMapping > linkedMappings
Definition ControlMap.h:103
BSTArray< InputContextID > contextPriorityStack
Definition ControlMap.h:104
stl::enumeration< UEFlag, std::uint32_t > unk11C
Definition ControlMap.h:106
static ControlMap * GetSingleton()
INPUT_CONTEXT_IDS::INPUT_CONTEXT_ID INPUT_CONTEXT_ID
Definition UserEvents.h:38
USER_EVENT_FLAG
Definition UserEvents.h:41
static SKYRIM_REL_VR bool IsVR() noexcept
Definition Relocation.h:821
Definition PCH.h:223
constexpr bool all(Args... a_args) const noexcept
Definition PCH.h:296
Definition AbsorbEffect.h:6
Definition BSTSingleton.h:50
Definition ControlMap.h:45
BSTArray< UserEventMapping > deviceMappings[INPUT_DEVICES::kTotal]
Definition ControlMap.h:61
static SKYRIM_REL_VR std::size_t GetNumDeviceMappings() noexcept
Definition ControlMap.h:47
Definition ControlMap.h:70
std::uint32_t pad14
Definition ControlMap.h:77
BSFixedString linkFromName
Definition ControlMap.h:78
InputContextID linkedMappingContext
Definition ControlMap.h:74
INPUT_DEVICE device
Definition ControlMap.h:75
BSFixedString linkedMappingName
Definition ControlMap.h:73
InputContextID linkFromContext
Definition ControlMap.h:76
Definition ControlMap.h:30
stl::enumeration< UEFlag, std::uint32_t > userEventGroupFlag
Definition ControlMap.h:39
std::int8_t indexInContext
Definition ControlMap.h:36
BSFixedString eventID
Definition ControlMap.h:33
std::uint16_t modifier
Definition ControlMap.h:35
std::uint16_t inputKey
Definition ControlMap.h:34
bool linked
Definition ControlMap.h:38
bool remappable
Definition ControlMap.h:37
std::uint32_t pad14
Definition ControlMap.h:40
INPUT_DEVICE
Definition InputDevices.h:8
INPUT_CONTEXT_ID
Definition UserEvents.h:14