CommonLibVR
Loading...
Searching...
No Matches
IMenu.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
RE/F/FxDelegate.h
"
4
#include "
RE/F/FxDelegateHandler.h
"
5
#include "
RE/G/GFxMovieView.h
"
6
#include "
RE/G/GPtr.h
"
7
#include "
RE/S/Setting.h
"
8
#include "
RE/U/UserEvents.h
"
9
10
namespace
RE
11
{
12
class
CallbackProcessor;
13
class
UIMessage;
14
15
enum class
UI_MENU_FLAGS
16
{
17
kNone
= 0,
18
kPausesGame
= 1 << 0,
19
kAlwaysOpen
= 1 << 1,
20
kUsesCursor
= 1 << 2,
21
kUsesMenuContext
= 1 << 3,
22
kModal
= 1 << 4,
// prevents lower movies with this flag from advancing
23
kFreezeFrameBackground
= 1 << 5,
24
kOnStack
= 1 << 6,
25
kDisablePauseMenu
= 1 << 7,
26
kRequiresUpdate
= 1 << 8,
27
kTopmostRenderedMenu
= 1 << 9,
28
kUpdateUsesCursor
= 1 << 10,
29
kAllowSaving
= 1 << 11,
30
kRendersOffscreenTargets
= 1 << 12,
31
kInventoryItemMenu
= 1 << 13,
32
kDontHideCursorWhenTopmost
= 1 << 14,
33
kCustomRendering
= 1 << 15,
34
kAssignCursorToRenderer
= 1 << 16,
35
kApplicationMenu
= 1 << 17,
36
kHasButtonBar
= 1 << 18,
37
kIsTopButtonBar
= 1 << 19,
38
kAdvancesUnderPauseMenu
= 1 << 20,
39
kRendersUnderPauseMenu
= 1 << 21,
40
kUsesBlurredBackground
= 1 << 22,
41
kCompanionAppAllowed
= 1 << 23,
42
kFreezeFramePause
= 1 << 24,
43
kSkipRenderDuringFreezeFrameScreenshot
= 1 << 25,
44
kLargeScaleformRenderCacheMode
= 1 << 26,
45
kUsesMovementToDirection
= 1 << 27
46
};
47
48
enum class
UI_MESSAGE_RESULTS
49
{
50
kHandled
= 0,
51
kIgnore
= 1,
52
kPassOn
= 2
53
};
54
55
#ifdef SKYRIMVR
56
enum class
UI_MENU_Unk09
57
{
58
kNone
=
static_cast<
std::underlying_type_t<UI_MENU_Unk09>
>
(-1),
// Entire enum needs more REing
59
60
};
61
#endif
62
63
class
IMenu
:
public
FxDelegateHandler
64
{
65
public
:
66
inline
static
constexpr
auto
RTTI
=
RTTI_IMenu
;
67
inline
static
constexpr
auto
VTABLE
=
VTABLE_IMenu
;
68
69
using
Context
=
UserEvents::INPUT_CONTEXT_ID
;
70
using
Flag
=
UI_MENU_FLAGS
;
71
72
~IMenu
()
override
=
default
;
// 00
73
74
// override (FxDelegateHandler)
75
void
Accept
(
CallbackProcessor
* a_processor)
override
;
// 01 - { return; }
76
77
// add
78
virtual
void
PostCreate
();
// 02 - { return; }
79
virtual
void
Unk_03
(
void
);
// 03 - { return; }
80
virtual
UI_MESSAGE_RESULTS
ProcessMessage
(
UIMessage
& a_message);
// 04
81
virtual
void
AdvanceMovie
(
float
a_interval, std::uint32_t a_currentTime);
// 05
82
virtual
void
PostDisplay
();
// 06
83
virtual
void
PreDisplay
();
// 07 - { return; } - only available if kRendersOffscreenTargets is set
84
virtual
void
RefreshPlatform
();
// 08
85
#ifdef SKYRIMVR
86
virtual
void
Unk_09(UI_MENU_Unk09 a_unk);
// 09 - { unk30 = a_unk; }
87
virtual
void
Unk_0A();
// 0A - Does something with _root.ResetOnShow swf function
88
#endif
89
90
[[nodiscard]]
constexpr
bool
AdvancesUnderPauseMenu
() const noexcept
91
{
92
return
menuFlags
.
all
(Flag::kAdvancesUnderPauseMenu);
93
}
94
[[nodiscard]]
constexpr
bool
AllowSaving
() const noexcept {
return
menuFlags
.
all
(Flag::kAllowSaving); }
95
[[nodiscard]]
constexpr
bool
AlwaysOpen
() const noexcept {
return
menuFlags
.
all
(Flag::kAlwaysOpen); }
96
[[nodiscard]]
constexpr
bool
ApplicationMenu
() const noexcept {
return
menuFlags
.
all
(Flag::kApplicationMenu); }
97
[[nodiscard]]
constexpr
bool
AssignCursorToRenderer
() const noexcept {
return
menuFlags
.
all
(Flag::kAssignCursorToRenderer); }
98
[[nodiscard]]
constexpr
bool
CustomRendering
() const noexcept {
return
menuFlags
.
all
(Flag::kCustomRendering); }
99
[[nodiscard]]
constexpr
bool
CompanionAppAllowed
() const noexcept {
return
menuFlags
.
all
(Flag::kCompanionAppAllowed); }
100
[[nodiscard]]
constexpr
bool
DisablePauseMenu
() const noexcept {
return
menuFlags
.
all
(Flag::kDisablePauseMenu); }
101
[[nodiscard]]
constexpr
bool
DontHideCursorWhenTopmost
() const noexcept {
return
menuFlags
.
all
(Flag::kDontHideCursorWhenTopmost); }
102
[[nodiscard]]
constexpr
bool
FreezeFrameBackground
() const noexcept {
return
menuFlags
.
all
(Flag::kFreezeFrameBackground); }
103
[[nodiscard]]
constexpr
bool
FreezeFramePause
() const noexcept {
return
menuFlags
.
all
(Flag::kFreezeFramePause); }
104
[[nodiscard]]
constexpr
bool
HasButtonBar
() const noexcept {
return
menuFlags
.
all
(Flag::kHasButtonBar); }
105
[[nodiscard]]
constexpr
bool
InventoryItemMenu
() const noexcept {
return
menuFlags
.
all
(Flag::kInventoryItemMenu); }
106
[[nodiscard]]
constexpr
bool
IsTopButtonBar
() const noexcept {
return
menuFlags
.
all
(Flag::kIsTopButtonBar); }
107
[[nodiscard]]
constexpr
bool
LargeScaleformRenderCacheMode
() const noexcept {
return
menuFlags
.
all
(Flag::kLargeScaleformRenderCacheMode); }
108
[[nodiscard]]
constexpr
bool
Modal
() const noexcept {
return
menuFlags
.
all
(Flag::kModal); }
109
[[nodiscard]]
constexpr
bool
OnStack
() const noexcept {
return
menuFlags
.
all
(Flag::kOnStack); }
110
[[nodiscard]]
constexpr
bool
PausesGame
() const noexcept {
return
menuFlags
.
all
(Flag::kPausesGame); }
111
[[nodiscard]]
constexpr
bool
RendersOffscreenTargets
() const noexcept {
return
menuFlags
.
all
(Flag::kRendersOffscreenTargets); }
112
[[nodiscard]]
constexpr
bool
RendersUnderPauseMenu
() const noexcept {
return
menuFlags
.
all
(Flag::kRendersUnderPauseMenu); }
113
[[nodiscard]]
constexpr
bool
RequiresUpdate
() const noexcept {
return
menuFlags
.
all
(Flag::kRequiresUpdate); }
114
[[nodiscard]]
constexpr
bool
SkipRenderDuringFreezeFrameScreenshot
() const noexcept {
return
menuFlags
.
all
(Flag::kSkipRenderDuringFreezeFrameScreenshot); }
115
[[nodiscard]]
constexpr
bool
TopmostRenderedMenu
() const noexcept {
return
menuFlags
.
all
(Flag::kTopmostRenderedMenu); }
116
[[nodiscard]]
constexpr
bool
UpdateUsesCursor
() const noexcept {
return
menuFlags
.
all
(Flag::kUpdateUsesCursor); }
117
[[nodiscard]]
constexpr
bool
UsesBlurredBackground
() const noexcept {
return
menuFlags
.
all
(Flag::kUsesBlurredBackground); }
118
[[nodiscard]]
constexpr
bool
UsesCursor
() const noexcept {
return
menuFlags
.
all
(Flag::kUsesCursor); }
119
[[nodiscard]]
constexpr
bool
UsesMenuContext
() const noexcept {
return
menuFlags
.
all
(Flag::kUsesMenuContext); }
120
[[nodiscard]]
constexpr
bool
UsesMovementToDirection
() const noexcept {
return
menuFlags
.
all
(Flag::kUsesMovementToDirection); }
121
122
// members
123
GPtr<GFxMovieView>
uiMovie
{
nullptr
};
// 10
124
std::int8_t
depthPriority
{ 3 };
// 18
125
std::uint8_t
pad19
{ 0 };
// 19
126
std::uint16_t
pad20
{ 0 };
// 1A
127
REX::EnumSet<UI_MENU_FLAGS, std::uint32_t>
menuFlags
{ Flag::kNone };
// 1C
128
REX::EnumSet<Context, std::uint32_t>
inputContext
{ Context::kNone };
// 20
129
std::uint32_t
pad24
{ 0 };
// 24
130
GPtr<FxDelegate>
fxDelegate
{
nullptr
};
// 28
131
#ifdef SKYRIMVR
132
REX::EnumSet<UI_MENU_Unk09, std::uint32_t>
unk30{ UI_MENU_Unk09::kNone };
133
std::byte unk34{ 1 };
134
BSFixedString
menuName{
"N/A"
};
// 38
135
#endif
136
private
:
137
KEEP_FOR_RE
()
138
};
139
#ifndef SKYRIMVR
140
static_assert
(
sizeof
(IMenu) == 0x30);
141
#else
142
static_assert
(
sizeof
(IMenu) == 0x40);
143
#endif
144
}
FxDelegateHandler.h
FxDelegate.h
GFxMovieView.h
GPtr.h
KEEP_FOR_RE
#define KEEP_FOR_RE()
Definition
PCH.h:517
Setting.h
UserEvents.h
REX::EnumSet
Definition
EnumSet.h:9
REX::EnumSet::all
constexpr bool all(Args... a_args) const noexcept
Definition
EnumSet.h:99
RE::FxDelegateHandler::CallbackProcessor
Definition
FxDelegateHandler.h:20
RE::FxDelegateHandler
Definition
FxDelegateHandler.h:12
RE::GPtr
Definition
GPtr.h:7
RE::IMenu
Definition
IMenu.h:64
RE::IMenu::~IMenu
~IMenu() override=default
RE::IMenu::UsesCursor
constexpr bool UsesCursor() const noexcept
Definition
IMenu.h:118
RE::IMenu::AlwaysOpen
constexpr bool AlwaysOpen() const noexcept
Definition
IMenu.h:95
RE::IMenu::RendersOffscreenTargets
constexpr bool RendersOffscreenTargets() const noexcept
Definition
IMenu.h:111
RE::IMenu::VTABLE
static constexpr auto VTABLE
Definition
IMenu.h:67
RE::IMenu::fxDelegate
GPtr< FxDelegate > fxDelegate
Definition
IMenu.h:130
RE::IMenu::UsesMenuContext
constexpr bool UsesMenuContext() const noexcept
Definition
IMenu.h:119
RE::IMenu::Modal
constexpr bool Modal() const noexcept
Definition
IMenu.h:108
RE::IMenu::pad24
std::uint32_t pad24
Definition
IMenu.h:129
RE::IMenu::UsesMovementToDirection
constexpr bool UsesMovementToDirection() const noexcept
Definition
IMenu.h:120
RE::IMenu::PostDisplay
virtual void PostDisplay()
RE::IMenu::ProcessMessage
virtual UI_MESSAGE_RESULTS ProcessMessage(UIMessage &a_message)
RE::IMenu::Accept
void Accept(CallbackProcessor *a_processor) override
RE::IMenu::AssignCursorToRenderer
constexpr bool AssignCursorToRenderer() const noexcept
Definition
IMenu.h:97
RE::IMenu::RTTI
static constexpr auto RTTI
Definition
IMenu.h:66
RE::IMenu::RendersUnderPauseMenu
constexpr bool RendersUnderPauseMenu() const noexcept
Definition
IMenu.h:112
RE::IMenu::PreDisplay
virtual void PreDisplay()
RE::IMenu::UpdateUsesCursor
constexpr bool UpdateUsesCursor() const noexcept
Definition
IMenu.h:116
RE::IMenu::PostCreate
virtual void PostCreate()
RE::IMenu::LargeScaleformRenderCacheMode
constexpr bool LargeScaleformRenderCacheMode() const noexcept
Definition
IMenu.h:107
RE::IMenu::OnStack
constexpr bool OnStack() const noexcept
Definition
IMenu.h:109
RE::IMenu::CustomRendering
constexpr bool CustomRendering() const noexcept
Definition
IMenu.h:98
RE::IMenu::PausesGame
constexpr bool PausesGame() const noexcept
Definition
IMenu.h:110
RE::IMenu::menuFlags
REX::EnumSet< UI_MENU_FLAGS, std::uint32_t > menuFlags
Definition
IMenu.h:127
RE::IMenu::AdvanceMovie
virtual void AdvanceMovie(float a_interval, std::uint32_t a_currentTime)
RE::IMenu::UsesBlurredBackground
constexpr bool UsesBlurredBackground() const noexcept
Definition
IMenu.h:117
RE::IMenu::depthPriority
std::int8_t depthPriority
Definition
IMenu.h:124
RE::IMenu::InventoryItemMenu
constexpr bool InventoryItemMenu() const noexcept
Definition
IMenu.h:105
RE::IMenu::TopmostRenderedMenu
constexpr bool TopmostRenderedMenu() const noexcept
Definition
IMenu.h:115
RE::IMenu::Unk_03
virtual void Unk_03(void)
RE::IMenu::uiMovie
GPtr< GFxMovieView > uiMovie
Definition
IMenu.h:123
RE::IMenu::pad19
std::uint8_t pad19
Definition
IMenu.h:125
RE::IMenu::FreezeFrameBackground
constexpr bool FreezeFrameBackground() const noexcept
Definition
IMenu.h:102
RE::IMenu::HasButtonBar
constexpr bool HasButtonBar() const noexcept
Definition
IMenu.h:104
RE::IMenu::AdvancesUnderPauseMenu
constexpr bool AdvancesUnderPauseMenu() const noexcept
Definition
IMenu.h:90
RE::IMenu::pad20
std::uint16_t pad20
Definition
IMenu.h:126
RE::IMenu::SkipRenderDuringFreezeFrameScreenshot
constexpr bool SkipRenderDuringFreezeFrameScreenshot() const noexcept
Definition
IMenu.h:114
RE::IMenu::inputContext
REX::EnumSet< Context, std::uint32_t > inputContext
Definition
IMenu.h:128
RE::IMenu::IsTopButtonBar
constexpr bool IsTopButtonBar() const noexcept
Definition
IMenu.h:106
RE::IMenu::AllowSaving
constexpr bool AllowSaving() const noexcept
Definition
IMenu.h:94
RE::IMenu::FreezeFramePause
constexpr bool FreezeFramePause() const noexcept
Definition
IMenu.h:103
RE::IMenu::DisablePauseMenu
constexpr bool DisablePauseMenu() const noexcept
Definition
IMenu.h:100
RE::IMenu::ApplicationMenu
constexpr bool ApplicationMenu() const noexcept
Definition
IMenu.h:96
RE::IMenu::DontHideCursorWhenTopmost
constexpr bool DontHideCursorWhenTopmost() const noexcept
Definition
IMenu.h:101
RE::IMenu::RequiresUpdate
constexpr bool RequiresUpdate() const noexcept
Definition
IMenu.h:113
RE::IMenu::CompanionAppAllowed
constexpr bool CompanionAppAllowed() const noexcept
Definition
IMenu.h:99
RE::IMenu::RefreshPlatform
virtual void RefreshPlatform()
RE::UIMessage
Definition
UIMessage.h:28
RE::UserEvents::INPUT_CONTEXT_ID
INPUT_CONTEXT_IDS::INPUT_CONTEXT_ID INPUT_CONTEXT_ID
Definition
UserEvents.h:47
RE
Definition
AbsorbEffect.h:6
RE::UI_MESSAGE_RESULTS
UI_MESSAGE_RESULTS
Definition
IMenu.h:49
RE::UI_MESSAGE_RESULTS::kPassOn
@ kPassOn
RE::UI_MESSAGE_RESULTS::kHandled
@ kHandled
RE::UI_MESSAGE_RESULTS::kIgnore
@ kIgnore
RE::RTTI_IMenu
constexpr REL::ID RTTI_IMenu(static_cast< std::uint64_t >(686416))
RE::UI_MENU_FLAGS
UI_MENU_FLAGS
Definition
IMenu.h:16
RE::UI_MENU_FLAGS::kUsesMenuContext
@ kUsesMenuContext
RE::UI_MENU_FLAGS::kAssignCursorToRenderer
@ kAssignCursorToRenderer
RE::UI_MENU_FLAGS::kDisablePauseMenu
@ kDisablePauseMenu
RE::UI_MENU_FLAGS::kAlwaysOpen
@ kAlwaysOpen
RE::UI_MENU_FLAGS::kUsesMovementToDirection
@ kUsesMovementToDirection
RE::UI_MENU_FLAGS::kTopmostRenderedMenu
@ kTopmostRenderedMenu
RE::UI_MENU_FLAGS::kUsesCursor
@ kUsesCursor
RE::UI_MENU_FLAGS::kFreezeFramePause
@ kFreezeFramePause
RE::UI_MENU_FLAGS::kRendersUnderPauseMenu
@ kRendersUnderPauseMenu
RE::UI_MENU_FLAGS::kAllowSaving
@ kAllowSaving
RE::UI_MENU_FLAGS::kUpdateUsesCursor
@ kUpdateUsesCursor
RE::UI_MENU_FLAGS::kUsesBlurredBackground
@ kUsesBlurredBackground
RE::UI_MENU_FLAGS::kAdvancesUnderPauseMenu
@ kAdvancesUnderPauseMenu
RE::UI_MENU_FLAGS::kCompanionAppAllowed
@ kCompanionAppAllowed
RE::UI_MENU_FLAGS::kDontHideCursorWhenTopmost
@ kDontHideCursorWhenTopmost
RE::UI_MENU_FLAGS::kRendersOffscreenTargets
@ kRendersOffscreenTargets
RE::UI_MENU_FLAGS::kInventoryItemMenu
@ kInventoryItemMenu
RE::UI_MENU_FLAGS::kLargeScaleformRenderCacheMode
@ kLargeScaleformRenderCacheMode
RE::UI_MENU_FLAGS::kOnStack
@ kOnStack
RE::UI_MENU_FLAGS::kModal
@ kModal
RE::UI_MENU_FLAGS::kIsTopButtonBar
@ kIsTopButtonBar
RE::UI_MENU_FLAGS::kSkipRenderDuringFreezeFrameScreenshot
@ kSkipRenderDuringFreezeFrameScreenshot
RE::UI_MENU_FLAGS::kHasButtonBar
@ kHasButtonBar
RE::UI_MENU_FLAGS::kPausesGame
@ kPausesGame
RE::UI_MENU_FLAGS::kRequiresUpdate
@ kRequiresUpdate
RE::UI_MENU_FLAGS::kApplicationMenu
@ kApplicationMenu
RE::UI_MENU_FLAGS::kFreezeFrameBackground
@ kFreezeFrameBackground
RE::UI_MENU_FLAGS::kCustomRendering
@ kCustomRendering
RE::VTABLE_IMenu
constexpr std::array< REL::ID, 1 > VTABLE_IMenu
Definition
Offsets_VTABLE.h:11808
RE::BSFixedString
detail::BSFixedString< char > BSFixedString
Definition
BSFixedString.h:239
RE::kNone
@ kNone
Definition
PlayerCharacter.h:85
RE::UserEvents::INPUT_CONTEXT_IDS::INPUT_CONTEXT_ID
INPUT_CONTEXT_ID
Definition
UserEvents.h:14
CommonLibVR
include
RE
I
IMenu.h
Generated by
1.9.8