docs: add plugin setup guide

This commit is contained in:
2026-05-30 18:33:24 +12:00
parent f3db41c402
commit b61043a3fe
1776 changed files with 122386 additions and 2 deletions
@@ -0,0 +1,94 @@
#pragma once
#include "RE/B/BSPointerHandle.h"
#include "RE/B/BSTArray.h"
#include "RE/I/IKeywordFormBase.h"
#include "RE/N/NiTFlags.h"
#include "RE/T/TESCondition.h"
#include "RE/T/TESForm.h"
namespace RE
{
class BGSSceneAction;
class BGSScenePhase;
class __declspec(novtable) BGSScene :
public TESForm, // 00
public IKeywordFormBase // 20
{
public:
enum class FLAG
{
kBeginOnQuestStart = 0x0,
kStopQuestOnEnd = 0x1,
kShowAllTextInEditor = 0x2,
kRepeats = 0x3,
kInterruptible = 0x4,
kPlayerDialogue = 0x5,
kNoPlayerExitDialogue = 0x6,
kPlayerRadioStation = 0x7,
kBroadCastScene = 0x8,
kPauseActorsCurrentSceneinDialogue = 0x9,
kLookAhead = 0xA,
kAllowDialogueCamera = 0xB,
kNoFollowerIdleChatter = 0xC,
};
enum class BOOL_BITS
{
kActive = 0x1,
kPhaseActionDone = 0x2,
kPauseScene = 0x4,
kSceneScriptFinished = 0x8,
kNeedsToEnd = 0x10,
kRandom = 0x20,
kCombatPause = 0x40,
kDialoguePause = 0x80,
kObserveCombatPause = 0x100,
kPlayerWalkedAway = 0x200,
kNoUpdate = 0x400,
kInheritedPhases = 0x800,
kQueueActive = 0x100000,
kSceneJumpActive = 0x200000,
kGamePause = 0x400000,
};
static constexpr auto RTTI{ RTTI::BGSScene };
static constexpr auto VTABLE{ VTABLE::BGSScene };
static constexpr auto FORM_ID{ ENUM_FORM_ID::kSCEN };
// members
NiTFlags<std::uint32_t, BGSScene> niFlags; // 28
BSTArray<BGSScenePhase*> phases; // 30
BSTArray<std::uint32_t> actors; // 48
BSTArray<std::uint32_t> actorFlags; // 60
BSTArray<std::uint32_t> actorProgressionFlags; // 78
BSTArray<BGSSceneAction*> actions; // 90
TESQuest* parentQuest; // A8
BGSScene* templateScene; // B0
std::uint32_t flags; // B8
TESCondition repeatConditions; // C0
std::uint32_t speakerID; // C8
std::uint32_t currentActivePhase; // CC
std::uint32_t startPhase; // D0
float randomSceneTimer; // D4
float maxREFDistanceCenter; // D8
ObjectRefHandle targetRef; // DC
bool shouldNotRotateToTrack; // E0
void ResetAllSceneActions()
{
using func_t = decltype(&BGSScene::ResetAllSceneActions);
static REL::Relocation<func_t> func{ ID::BGSScene::ResetAllSceneActions };
return func(this);
}
void SetSceneActive(bool abFlag)
{
using func_t = decltype(&BGSScene::SetSceneActive);
static REL::Relocation<func_t> func{ ID::BGSScene::SetSceneActive };
return func(this, abFlag);
}
};
static_assert(sizeof(BGSScene) == 0xE8);
}