docs: add plugin setup guide
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
#pragma once
|
||||
|
||||
#include "RE/B/BSSoundHandle.h"
|
||||
#include "RE/G/GameMenuBase.h"
|
||||
#include "RE/N/NiMatrix3.h"
|
||||
#include "RE/N/NiPoint3.h"
|
||||
#include "RE/N/NiPointer.h"
|
||||
|
||||
namespace RE
|
||||
{
|
||||
class NiControllerManager;
|
||||
class NiControllerSequence;
|
||||
class NiNode;
|
||||
|
||||
class __declspec(novtable) LockpickingMenu :
|
||||
public GameMenuBase // 00
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RTTI::LockpickingMenu };
|
||||
static constexpr auto VTABLE{ VTABLE::LockpickingMenu };
|
||||
static constexpr auto MENU_NAME{ "LockpickingMenu"sv };
|
||||
|
||||
virtual ~LockpickingMenu(); // 00
|
||||
|
||||
// override (GameMenuBase)
|
||||
virtual UI_MESSAGE_RESULTS ProcessMessage(UIMessage& a_message) override; // 03
|
||||
virtual void AdvanceMovie(float a_timeDelta, std::uint64_t a_time) override; // 04
|
||||
virtual bool OnButtonEventRelease(const BSFixedString& a_eventName) override; // 0F
|
||||
|
||||
// override (BSInputEventUser)
|
||||
virtual bool ShouldHandleEvent(const InputEvent*) override; // 01
|
||||
virtual void OnThumbstickEvent(const ThumbstickEvent*) override; // 04
|
||||
virtual void OnMouseMoveEvent(const MouseMoveEvent*) override; // 06
|
||||
virtual void OnButtonEvent(const ButtonEvent*) override; // 08
|
||||
|
||||
static void OpenLockpickingMenu(TESObjectREFR* a_lockedRef)
|
||||
{
|
||||
using func_t = decltype(&LockpickingMenu::OpenLockpickingMenu);
|
||||
static REL::Relocation<func_t> func{ ID::LockpickingMenu::OpenLockpickingMenu };
|
||||
return func(a_lockedRef);
|
||||
}
|
||||
|
||||
static void DamageLockpick()
|
||||
{
|
||||
using func_t = decltype(&LockpickingMenu::DamageLockpick);
|
||||
static REL::Relocation<func_t> func{ ID::LockpickingMenu::DamageLockpick };
|
||||
return func();
|
||||
}
|
||||
|
||||
// members
|
||||
NiMatrix3 origPickRotate; // 0E0
|
||||
NiPoint3 origPickTranslate; // 110
|
||||
NiControllerManager* lockAnimManager; // 120
|
||||
NiControllerSequence* lockIntroAnim; // 128
|
||||
NiControllerSequence* lockRotateAnim; // 130
|
||||
NiControllerManager* pickAnimManager; // 138
|
||||
NiControllerSequence* pickIntroAnim; // 140
|
||||
NiControllerSequence* pickBendAnim; // 148
|
||||
NiControllerSequence* pickBreakAnim; // 150
|
||||
NiControllerSequence* currPickAnim; // 158
|
||||
NiControllerSequence* currLockAnim; // 160
|
||||
void* lockModel; // 168
|
||||
void* pickModel; // 170
|
||||
NiPointer<NiNode> lockRoot; // 178
|
||||
float currPickAnimElapsedSecs; // 180
|
||||
float currLockAnimElapsedSecs; // 184
|
||||
float pickAngle; // 188
|
||||
float lockAngle; // 18C
|
||||
float lockDamagePickAngle; // 190
|
||||
float pickBreakSecs; // 194
|
||||
BSSoundHandle pickTensionSound; // 198
|
||||
float sweetSpotCenter; // 1A0
|
||||
float sweetSpotLength; // 1A4
|
||||
float partialPickLength; // 1A8
|
||||
std::uint32_t picksBroken; // 1AC
|
||||
bool modelsInit; // 1B0
|
||||
bool animating; // 1B1
|
||||
bool turningLock; // 1B2
|
||||
bool menuCleanedUp; // 1B3
|
||||
bool tutorialMenuOpening; // 1B4
|
||||
bool crimeDetected; // 1B5
|
||||
bool VATSWasEnabled; // 1B6
|
||||
bool VATSDepthTestMask; // 1B7
|
||||
};
|
||||
static_assert(sizeof(LockpickingMenu) == 0x1C0);
|
||||
}
|
||||
Reference in New Issue
Block a user