CommonLibVR
MistMenu.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "RE/I/IMenu.h"
6 #include "RE/N/NiColor.h"
7 #include "RE/N/NiMatrix3.h"
9 
10 namespace RE
11 {
12  class BSFadeNode;
13  class BSLightingShaderProperty;
14  class NiAVObject;
15  class NiControllerManager;
16  class NiControllerSequence;
17 
18  struct ImageSpaceBaseData;
19 
20  // menuDepth = 8
21  // flags = kDisablePauseMenu | kAllowSaving | kDontHideCursorWhenTopmost
22  // context = kNone
23  class MistMenu :
24  public IMenu, // 00
26  public MenuEventHandler // 48
27  {
28  public:
29  inline static constexpr auto RTTI = RTTI_MistMenu;
30  inline static constexpr auto VTABLE = VTABLE_MistMenu;
31  constexpr static std::string_view MENU_NAME = "Mist Menu";
32 
33  struct Colors
34  {
35  enum Color
36  {
43 
44  kTotal
45  };
46  };
47 
48  ~MistMenu() override; // 00
49 
50  // override (IMenu)
51  UI_MESSAGE_RESULTS ProcessMessage(UIMessage& a_message) override; // 04
52  void AdvanceMovie(float a_interval, std::uint32_t a_currentTime) override; // 05
53  void PostDisplay() override; // 06
54 
55  // override (MenuEventHandler)
56  bool CanProcess(InputEvent* a_event) override; // 01
57  bool ProcessThumbstick(ThumbstickEvent* a_event) override; // 03
58  bool ProcessMouseMove(MouseMoveEvent* a_event) override; // 04
59  bool ProcessButton(ButtonEvent* a_event) override; // 05
60 
62  {
63  REL::Relocation<MistMenu**> singleton{ RELOCATION_ID(519827, 406370) };
64  return *singleton;
65  }
66 
67  // members
69  std::uint32_t unk0A0; // 0A0
70  std::uint32_t unk0A4; // 0A4
71  std::uint64_t unk0A8; // 0A8
72  NiPointer<NiNode> mistModel; // 0B0 - smart ptr
75  NiPointer<BSFadeNode> cameraPath; // 0C8 - parent of cameraPathNode
76  NiPointer<NiNode> cameraPathNode; // 0D0 - smart ptr
79  BSLightingShaderProperty* logoShaderProperty; // 0E8 - default logo only
82  float cameraFOV; // 100
83  float angleZ; // 104
84  float unk108; // 108
85  float unk10C; // 10C
87  bool showMist; // 134
88  bool showLoadScreen; // 135
89  std::uint8_t unk136; // 136
90  std::uint8_t unk137; // 137
91  std::uint8_t unk138; // 138 - initCameraPath?
92  std::uint8_t unk139; // 139 - cameraPath related
93  bool leftButtonHeldDown; // 13A
94  bool rightButtonHeldDown; // 13B
95  std::uint32_t pad13C; // 13C
96  private:
97  KEEP_FOR_RE()
98  };
99 #ifndef SKYRIMVR
100  static_assert(sizeof(MistMenu) == 0x140);
101 #else
102  //static_assert(sizeof(MistMenu) == 0x1A8);
103 #endif
104 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
#define RELOCATION_ID(SE, AE)
Definition: PCH.h:702
Definition: Relocation.h:210
Definition: BSLightingShaderProperty.h:13
Definition: ButtonEvent.h:16
Definition: IMenu.h:64
Definition: InputEvent.h:25
Definition: MenuEventHandler.h:14
Definition: MistMenu.h:27
ModelDBHandle mistModelHandle
Definition: MistMenu.h:73
static MistMenu * GetSingleton()
Definition: MistMenu.h:61
ImageSpaceBaseData * originalImageSpace
Definition: MistMenu.h:81
std::uint64_t unk0A8
Definition: MistMenu.h:71
static constexpr auto RTTI
Definition: MistMenu.h:29
std::uint8_t unk136
Definition: MistMenu.h:89
std::uint8_t unk137
Definition: MistMenu.h:90
UI_MESSAGE_RESULTS ProcessMessage(UIMessage &a_message) override
float unk10C
Definition: MistMenu.h:85
void AdvanceMovie(float a_interval, std::uint32_t a_currentTime) override
float unk108
Definition: MistMenu.h:84
float angleZ
Definition: MistMenu.h:83
std::uint32_t unk0A0
Definition: MistMenu.h:69
static constexpr auto VTABLE
Definition: MistMenu.h:30
bool showLoadScreen
Definition: MistMenu.h:88
NiPointer< NiControllerManager > cameraPathController
Definition: MistMenu.h:78
constexpr static std::string_view MENU_NAME
Definition: MistMenu.h:31
ModelDBHandle loadScreenModelHandle
Definition: MistMenu.h:74
std::uint8_t unk139
Definition: MistMenu.h:92
bool CanProcess(InputEvent *a_event) override
void PostDisplay() override
bool showMist
Definition: MistMenu.h:87
float cameraFOV
Definition: MistMenu.h:82
bool ProcessMouseMove(MouseMoveEvent *a_event) override
NiPointer< NiNode > mistModel
Definition: MistMenu.h:72
NiPointer< BSFadeNode > cameraPath
Definition: MistMenu.h:75
NiColor ambientColors[Colors::kTotal]
Definition: MistMenu.h:68
std::uint32_t pad13C
Definition: MistMenu.h:95
bool leftButtonHeldDown
Definition: MistMenu.h:93
bool ProcessThumbstick(ThumbstickEvent *a_event) override
BSLightingShaderProperty * logoShaderProperty
Definition: MistMenu.h:79
~MistMenu() override
NiPointer< NiControllerSequence > cameraPathSequence
Definition: MistMenu.h:77
std::uint32_t unk0A4
Definition: MistMenu.h:70
NiPointer< BSFadeNode > loadScreenModel
Definition: MistMenu.h:80
NiPointer< NiNode > cameraPathNode
Definition: MistMenu.h:76
std::uint8_t unk138
Definition: MistMenu.h:91
bool ProcessButton(ButtonEvent *a_event) override
NiMatrix3 cameraRotate
Definition: MistMenu.h:86
bool rightButtonHeldDown
Definition: MistMenu.h:94
Definition: MouseMoveEvent.h:8
Definition: NiColor.h:11
Definition: NiMatrix3.h:8
Definition: NiSmartPointer.h:9
Definition: SimpleAnimationGraphManagerHolder.h:11
Definition: ThumbstickEvent.h:8
Definition: UIMessage.h:28
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_MistMenu(static_cast< std::uint64_t >(688896))
UI_MESSAGE_RESULTS
Definition: IMenu.h:49
constexpr std::array< REL::ID, 3 > VTABLE_MistMenu
Definition: Offsets_VTABLE.h:12013
Definition: ImageSpaceData.h:6
Definition: MistMenu.h:34
Color
Definition: MistMenu.h:36
@ kTotal
Definition: MistMenu.h:44
@ kZPos
Definition: MistMenu.h:42
@ kXPos
Definition: MistMenu.h:38
@ kXNeg
Definition: MistMenu.h:37
@ kYPos
Definition: MistMenu.h:40
@ kZNeg
Definition: MistMenu.h:41
@ kYNeg
Definition: MistMenu.h:39