CommonLibVR
DialogueMenu.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSTArray.h"
4 #include "RE/B/BSTEvent.h"
5 #include "RE/I/IMenu.h"
6 #include "RE/W/WorldSpaceMenu.h"
7 
8 namespace RE
9 {
10  class MenuOpenCloseEvent;
11 
12  // menuDepth = 3
13  // flags = kUpdateUsesCursor | kDontHideCursorWhenTopmost
14  // context = kMenuMode
15  class DialogueMenu :
16 #ifndef SKYRIMVR
17  public IMenu, // 00
18 #else
19  public WorldSpaceMenu,
20 #endif
21  public BSTEventSink<MenuOpenCloseEvent> // 30
22  {
23  public:
24  inline static constexpr auto RTTI = RTTI_DialogueMenu;
25  inline static constexpr auto VTABLE = VTABLE_DialogueMenu;
26  constexpr static std::string_view MENU_NAME = "Dialogue Menu";
27 
28  struct Data
29  {
30  void* unk00; // 00
31  std::uint64_t unk08; // 08
32  };
33  static_assert(sizeof(Data) == 0x10);
34 
35  ~DialogueMenu() override; // 00
36 
37  // override (IMenu)
38  void Accept(CallbackProcessor* a_processor) override; // 01
39  UI_MESSAGE_RESULTS ProcessMessage(UIMessage& a_message) override; // 04
40 
41 #ifdef SKYRIMVR
42  virtual void SetupMenuNode() override;
43  virtual RE::NiNode* GetMenuParentNode() override; // 0C
44  virtual void SetTransform() override; // 0D
45 #endif
46  // override (BSTEventSink<MenuOpenCloseEvent>)
48 
49 #ifdef SKYRIMVR
50  // override (BSTEventSink<HudModeChangeEvent>)
51  BSEventNotifyControl ProcessEvent(const HudModeChangeEvent* a_event, BSTEventSource<HudModeChangeEvent>* a_eventSource) override; // 01
52 #endif
53  // members
55 #ifdef SKYRIMVR
56  RE::NiNode* occlusionCheckNode; // 78 - name is "Dialogue Menu Occlusion Check Node"
57 #endif
58  private:
59  KEEP_FOR_RE()
60  };
61 #ifndef SKYRIMVR
62  static_assert(sizeof(DialogueMenu) == 0x50);
63 #else
64  static_assert(sizeof(DialogueMenu) == 0x80);
65 #endif
66 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BSTArray.h:378
Definition: BSTEvent.h:143
Definition: DialogueMenu.h:22
BSTArray< Data > unk38
Definition: DialogueMenu.h:54
~DialogueMenu() override
UI_MESSAGE_RESULTS ProcessMessage(UIMessage &a_message) override
constexpr static std::string_view MENU_NAME
Definition: DialogueMenu.h:26
static constexpr auto VTABLE
Definition: DialogueMenu.h:25
static constexpr auto RTTI
Definition: DialogueMenu.h:24
BSEventNotifyControl ProcessEvent(const MenuOpenCloseEvent *a_event, BSTEventSource< MenuOpenCloseEvent > *a_eventSource) override
void Accept(CallbackProcessor *a_processor) override
Definition: FxDelegateHandler.h:20
Definition: IMenu.h:64
Definition: MenuOpenCloseEvent.h:8
Definition: NiNode.h:12
Definition: UIMessage.h:28
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_DialogueMenu(static_cast< std::uint64_t >(688829))
UI_MESSAGE_RESULTS
Definition: IMenu.h:49
constexpr std::array< REL::ID, 2 > VTABLE_DialogueMenu
Definition: Offsets_VTABLE.h:11449
BSEventNotifyControl
Definition: BSTEvent.h:12
Definition: DialogueMenu.h:29
std::uint64_t unk08
Definition: DialogueMenu.h:31
void * unk00
Definition: DialogueMenu.h:30