CommonLibSSE NG
KinectMenu.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSTEvent.h"
4 #include "RE/G/GFxValue.h"
5 #include "RE/I/IMenu.h"
6 
7 namespace RE
8 {
9  class MenuOpenCloseEvent;
10 
11  // menuDepth = 6
12  // flags = kAllowSaving | kCustomRendering | kAssignCursorToRenderer
13  // context = kNone
14  class KinectMenu :
15 #ifndef SKYRIM_CROSS_VR
16  public IMenu, // 00
17  public BSTEventSink<MenuOpenCloseEvent> // 30
18 #else
19  public IMenu // 00
20 #endif
21  {
22  public:
23  inline static constexpr auto RTTI = RTTI_KinectMenu;
24  constexpr static std::string_view MENU_NAME = "Kinect Menu";
25 
26  ~KinectMenu() override; // 00
27 
28  // override (IMenu)
29  UI_MESSAGE_RESULTS ProcessMessage(UIMessage& a_message) override; // 04
30 
31 #ifndef SKYRIM_CROSS_VR
32  // override (BSTEventSink<MenuOpenCloseEvent>)
34 #endif
35 
37  {
38  return &REL::RelocateMember<BSTEventSink<MenuOpenCloseEvent>>(this, 0x30, 0x40);
39  }
40 
41  [[nodiscard]] const BSTEventSink<MenuOpenCloseEvent>* AsMenuOpenCloseEventSink() const noexcept
42  {
43  return const_cast<KinectMenu*>(this)->AsMenuOpenCloseEventSink();
44  }
45 
46  [[nodiscard]] inline GFxValue GetRoot() const noexcept
47  {
48  return REL::RelocateMember<GFxValue>(this, 0x38, 0x48);
49  }
50 
51  inline void SetRoot(GFxValue a_root) noexcept
52  {
53  REL::RelocateMember<GFxValue>(this, 0x38, 0x48) = a_root;
54  }
55 
56  // members
57 #ifndef SKYRIM_CROSS_VR
58  GFxValue root; // 38, 48 - "Menu_mc"
59 #endif
60  };
61 #ifndef ENABLE_SKYRIM_VR
62  static_assert(sizeof(KinectMenu) == 0x50);
63 #elif !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
64  static_assert(sizeof(KinectMenu) == 0x60);
65 #endif
66 }
Definition: BSTEvent.h:143
Definition: GFxValue.h:92
Definition: IMenu.h:55
Definition: KinectMenu.h:21
constexpr static std::string_view MENU_NAME
Definition: KinectMenu.h:24
void SetRoot(GFxValue a_root) noexcept
Definition: KinectMenu.h:51
GFxValue root
Definition: KinectMenu.h:58
BSEventNotifyControl ProcessEvent(const MenuOpenCloseEvent *a_event, BSTEventSource< MenuOpenCloseEvent > *a_eventSource) override
GFxValue GetRoot() const noexcept
Definition: KinectMenu.h:46
UI_MESSAGE_RESULTS ProcessMessage(UIMessage &a_message) override
static constexpr auto RTTI
Definition: KinectMenu.h:23
const BSTEventSink< MenuOpenCloseEvent > * AsMenuOpenCloseEventSink() const noexcept
Definition: KinectMenu.h:41
BSTEventSink< MenuOpenCloseEvent > * AsMenuOpenCloseEventSink() noexcept
Definition: KinectMenu.h:36
~KinectMenu() override
Definition: MenuOpenCloseEvent.h:8
Definition: UIMessage.h:28
Definition: AbsorbEffect.h:6
UI_MESSAGE_RESULTS
Definition: IMenu.h:48
constexpr REL::VariantID RTTI_KinectMenu(686465, 394297, 0x1efe160)
BSEventNotifyControl
Definition: BSTEvent.h:12