docs: add plugin setup guide
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSGFxShaderFXTarget.h"
|
||||
#include "RE/B/BSSpinLock.h"
|
||||
#include "RE/B/BSTArray.h"
|
||||
#include "RE/B/BSTOptional.h"
|
||||
#include "RE/B/ButtonHintBar.h"
|
||||
#include "RE/H/HUDModeType.h"
|
||||
#include "RE/I/IMenu.h"
|
||||
#include "RE/S/SendHUDMessage.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class GameMenuBase :
|
||||
public IMenu // 00
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RTTI::GameMenuBase };
|
||||
static constexpr auto VTABLE{ VTABLE::GameMenuBase };
|
||||
|
||||
GameMenuBase()
|
||||
{
|
||||
customRendererName = "FlatScreenModel";
|
||||
}
|
||||
|
||||
virtual ~GameMenuBase() = default;
|
||||
|
||||
// override
|
||||
virtual void SetIsTopButtonBar(bool a_isTopButtonBar) override // 08
|
||||
{
|
||||
using func_t = decltype(&GameMenuBase::SetIsTopButtonBar);
|
||||
static REL::Relocation<func_t> func{ ID::GameMenuBase::SetIsTopButtonBar };
|
||||
return func(this, a_isTopButtonBar);
|
||||
}
|
||||
|
||||
virtual void OnMenuDisplayStateChanged() override // 0A
|
||||
{
|
||||
using func_t = decltype(&GameMenuBase::OnMenuDisplayStateChanged);
|
||||
static REL::Relocation<func_t> func{ ID::GameMenuBase::OnMenuDisplayStateChanged };
|
||||
return func(this);
|
||||
}
|
||||
|
||||
virtual void OnAddedToMenuStack() override // 0B
|
||||
{
|
||||
IMenu::OnAddedToMenuStack();
|
||||
if (this->menuHUDMode.has_value()) {
|
||||
SendHUDMessage::PushHUDMode(this->menuHUDMode.value());
|
||||
}
|
||||
}
|
||||
|
||||
virtual void OnRemovedFromMenuStack() override // 0C
|
||||
{
|
||||
IMenu::OnRemovedFromMenuStack();
|
||||
if (this->menuHUDMode.has_value()) {
|
||||
SendHUDMessage::PopHUDMode(this->menuHUDMode.value());
|
||||
}
|
||||
}
|
||||
|
||||
virtual bool CacheShaderFXQuadsForRenderer_Impl() override // 10
|
||||
{
|
||||
using func_t = decltype(&GameMenuBase::CacheShaderFXQuadsForRenderer_Impl);
|
||||
static REL::Relocation<func_t> func{ ID::GameMenuBase::CacheShaderFXQuadsForRenderer_Impl };
|
||||
return func(this);
|
||||
}
|
||||
|
||||
virtual void TransferCachedShaderFXQuadsForRenderer(const BSFixedString& a_rendererName) override // 11
|
||||
{
|
||||
using func_t = decltype(&GameMenuBase::TransferCachedShaderFXQuadsForRenderer);
|
||||
static REL::Relocation<func_t> func{ ID::GameMenuBase::TransferCachedShaderFXQuadsForRenderer };
|
||||
return func(this, a_rendererName);
|
||||
}
|
||||
|
||||
virtual void SetViewportRect(const NiRect<float>& a_viewportRect) override // 12
|
||||
{
|
||||
using func_t = decltype(&GameMenuBase::SetViewportRect);
|
||||
static REL::Relocation<func_t> func{ ID::GameMenuBase::SetViewportRect };
|
||||
return func(this, a_viewportRect);
|
||||
}
|
||||
|
||||
// add
|
||||
virtual void AppendShaderFXInfos(BSTAlignedArray<UIShaderFXInfo>& a_colorFXInfos, BSTAlignedArray<UIShaderFXInfo>& a_backgroundFXInfos) const // 13
|
||||
{
|
||||
using func_t = decltype(&GameMenuBase::AppendShaderFXInfos);
|
||||
static REL::Relocation<func_t> func{ ID::GameMenuBase::AppendShaderFXInfos };
|
||||
return func(this, a_colorFXInfos, a_backgroundFXInfos);
|
||||
}
|
||||
|
||||
void SetUpButtonBar(BSGFxShaderFXTarget& a_parentObject, const char* a_buttonBarPath, HUDColorTypes a_colorType)
|
||||
{
|
||||
using func_t = decltype(&GameMenuBase::SetUpButtonBar);
|
||||
static REL::Relocation<func_t> func{ ID::GameMenuBase::SetUpButtonBar };
|
||||
func(this, a_parentObject, a_buttonBarPath, a_colorType);
|
||||
}
|
||||
|
||||
// members
|
||||
BSTArray<BSGFxShaderFXTarget*> shaderFXObjects; // 70
|
||||
std::unique_ptr<BSGFxShaderFXTarget> filterHolder; // 88
|
||||
std::unique_ptr<ButtonHintBar> buttonHintBar; // 90
|
||||
BSTAlignedArray<UIShaderFXInfo> cachedColorFXInfos; // 98
|
||||
BSTAlignedArray<UIShaderFXInfo> cachedBackgroundFXInfos; // B0
|
||||
BSReadWriteLock cachedQuadsLock; // C8
|
||||
BSTOptional<HUDModeType> menuHUDMode{ std::nullopt }; // D0
|
||||
};
|
||||
static_assert(sizeof(GameMenuBase) == 0xE0);
|
||||
}
|
||||
Reference in New Issue
Block a user