CommonLibVR
LockpickingMenu.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "RE/B/BSSoundHandle.h"
5 #include "RE/B/BSTEvent.h"
6 #include "RE/I/IMenu.h"
8 #include "RE/N/NiMatrix3.h"
9 #include "RE/N/NiPoint3.h"
10 
11 namespace RE
12 {
13  class MenuOpenCloseEvent;
14  class NiAVObject;
15  class NiControllerManager;
16  class NiControllerSequence;
17  class TESObjectREFR;
18 
19  // menuDepth = 3
20  // flags = kPausesGame | kDisablePauseMenu | kRequiresUpdate
21  // context = kLockpicking
23  public IMenu, // 00
24  public MenuEventHandler, // 30
25  public BSTEventSink<MenuOpenCloseEvent> // 40
26  {
27  public:
28  inline static constexpr auto RTTI = RTTI_LockpickingMenu;
29  inline static constexpr auto VTABLE = VTABLE_LockpickingMenu;
30  constexpr static std::string_view MENU_NAME = "Lockpicking Menu";
31 
32  ~LockpickingMenu() override; // 00
33 
34  // override (IMenu)
35  UI_MESSAGE_RESULTS ProcessMessage(UIMessage& a_message) override; // 04
36 
37  // override (MenuEventHandler)
38  bool CanProcess(InputEvent* a_event) override; // 01
39  bool ProcessThumbstick(ThumbstickEvent* a_event) override; // 03
40  bool ProcessMouseMove(MouseMoveEvent* a_event) override; // 04
41  bool ProcessButton(ButtonEvent* a_event) override; // 05
42 
43  // override (BSTEventSink<MenuOpenCloseEvent>)
45 
46  [[nodiscard]] static TESObjectREFR* GetTargetReference();
47 
48  // members
61  float pickKeyTime; // 0C8
62  std::uint32_t unk0CC; // 0CC
64  float lockKeyTime; // 0D8
65  float pickAngle; // 0DC
66  float lockAngle; // 0E0
67  float damagePickAngle; // 0E4
68  float pickBreakSeconds; // 0E8
70  float unk0F8; // 0F8
71  float sweetSpotAngle; // 0FC
72  float partialPickAngle; // 100
73  std::uint32_t numBrokenPicks; // 104
74  bool init3DElements; // 108
75  bool animating; // 109
76  bool unk10A; // 10A
77  bool menuCleared; // 10B
78  bool animationFinished; // 10C
79  bool isLockpickingCrime; // 10D
80  std::uint8_t unk10E; // 10E
81  std::uint8_t pad10F; // 10F
82  private:
83  KEEP_FOR_RE()
84  };
85 #ifndef SKYRIMVR
86  static_assert(sizeof(LockpickingMenu) == 0x110);
87 #else
88  static_assert(sizeof(LockpickingMenu) == 0x120);
89 #endif
90 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BSTEvent.h:143
Definition: ButtonEvent.h:16
Definition: IMenu.h:64
Definition: InputEvent.h:25
Definition: LockpickingMenu.h:26
NiControllerManager * pickController
Definition: LockpickingMenu.h:56
~LockpickingMenu() override
NiControllerSequence * pickDamage
Definition: LockpickingMenu.h:58
bool ProcessThumbstick(ThumbstickEvent *a_event) override
bool ProcessButton(ButtonEvent *a_event) override
bool CanProcess(InputEvent *a_event) override
NiControllerSequence * pickBreak
Definition: LockpickingMenu.h:59
NiControllerSequence * pickIntro
Definition: LockpickingMenu.h:57
UI_MESSAGE_RESULTS ProcessMessage(UIMessage &a_message) override
bool init3DElements
Definition: LockpickingMenu.h:74
float unk0F8
Definition: LockpickingMenu.h:70
std::uint8_t unk10E
Definition: LockpickingMenu.h:80
bool isLockpickingCrime
Definition: LockpickingMenu.h:79
NiControllerSequence * currentPickSequence
Definition: LockpickingMenu.h:60
float lockKeyTime
Definition: LockpickingMenu.h:64
float pickAngle
Definition: LockpickingMenu.h:65
float partialPickAngle
Definition: LockpickingMenu.h:72
float pickKeyTime
Definition: LockpickingMenu.h:61
ModelDBHandle pickModel
Definition: LockpickingMenu.h:50
NiControllerSequence * lockIntro
Definition: LockpickingMenu.h:54
std::uint32_t unk0CC
Definition: LockpickingMenu.h:62
bool animationFinished
Definition: LockpickingMenu.h:78
static TESObjectREFR * GetTargetReference()
bool unk10A
Definition: LockpickingMenu.h:76
NiPoint3 lockRotCenter
Definition: LockpickingMenu.h:52
bool ProcessMouseMove(MouseMoveEvent *a_event) override
std::uint32_t numBrokenPicks
Definition: LockpickingMenu.h:73
float pickBreakSeconds
Definition: LockpickingMenu.h:68
bool animating
Definition: LockpickingMenu.h:75
NiControllerSequence * lockRotate
Definition: LockpickingMenu.h:55
float damagePickAngle
Definition: LockpickingMenu.h:67
NiControllerManager * lockController
Definition: LockpickingMenu.h:53
BSSoundHandle pickTensionSound
Definition: LockpickingMenu.h:69
NiMatrix3 pickRotation
Definition: LockpickingMenu.h:51
float lockAngle
Definition: LockpickingMenu.h:66
BSEventNotifyControl ProcessEvent(const MenuOpenCloseEvent *a_event, BSTEventSource< MenuOpenCloseEvent > *a_eventSource) override
static constexpr auto VTABLE
Definition: LockpickingMenu.h:29
NiControllerSequence * currentLockSequence
Definition: LockpickingMenu.h:63
float sweetSpotAngle
Definition: LockpickingMenu.h:71
static constexpr auto RTTI
Definition: LockpickingMenu.h:28
bool menuCleared
Definition: LockpickingMenu.h:77
constexpr static std::string_view MENU_NAME
Definition: LockpickingMenu.h:30
ModelDBHandle lockModel
Definition: LockpickingMenu.h:49
std::uint8_t pad10F
Definition: LockpickingMenu.h:81
Definition: MenuEventHandler.h:14
Definition: MenuOpenCloseEvent.h:8
Definition: MouseMoveEvent.h:8
Definition: NiControllerManager.h:17
Definition: NiControllerSequence.h:23
Definition: NiMatrix3.h:8
Definition: NiPoint3.h:6
Definition: TESObjectREFR.h:113
Definition: ThumbstickEvent.h:8
Definition: UIMessage.h:28
Definition: AbsorbEffect.h:6
UI_MESSAGE_RESULTS
Definition: IMenu.h:49
constexpr std::array< REL::ID, 3 > VTABLE_LockpickingMenu
Definition: Offsets_VTABLE.h:11969
constexpr REL::ID RTTI_LockpickingMenu(static_cast< std::uint64_t >(688864))
BSEventNotifyControl
Definition: BSTEvent.h:12
Definition: BSSoundHandle.h:10