Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/P/PowerArmorGeometry.h
T
2026-05-30 18:33:24 +12:00

100 lines
4.4 KiB
C++

#pragma once
#include "RE/B/BSIntrusiveRefCounted.h"
#include "RE/B/BSTArray.h"
#include "RE/B/BSTEvent.h"
#include "RE/B/BSTSingleton.h"
#include "RE/C/CurrentRadiationSourceCount.h"
#include "RE/C/CurrentRadsDisplayMagnitude.h"
#include "RE/C/CurrentRadsPercentOfLethal.h"
#include "RE/H/HUDModes.h"
#include "RE/N/NiPointer.h"
#include "RE/P/PipboyLightEvent.h"
#include "RE/P/PlayerAmmoCountEvent.h"
#include "RE/P/PlayerWeaponReloadEvent.h"
#include "RE/S/SimpleAnimationGraphManagerHolder.h"
namespace RE
{
class NiAVObject;
class NiNode;
namespace ExitPowerArmor
{
class Event;
}
namespace PreloadPowerArmor
{
class Event;
}
class __declspec(novtable) PowerArmorGeometry :
public SimpleAnimationGraphManagerHolder, // 00
public BSTEventSink<PreloadPowerArmor::Event>, // 18
public BSTEventSink<ExitPowerArmor::Event>, // 20
public BSIntrusiveRefCounted, // 28
public BSTSingletonSDM<PowerArmorGeometry> // 2C
{
public:
static constexpr auto RTTI{ RTTI::PowerArmorGeometry };
static constexpr auto VTABLE{ VTABLE::PowerArmorGeometry };
virtual ~PowerArmorGeometry(); // 00
// override
virtual void BackgroundTaskFinishedLoading() override; // 01
virtual BSEventNotifyControl ProcessEvent(const PreloadPowerArmor::Event& a_event, BSTEventSource<PreloadPowerArmor::Event>* a_source) override; // 02
virtual BSEventNotifyControl ProcessEvent(const ExitPowerArmor::Event& a_event, BSTEventSource<ExitPowerArmor::Event>* a_source) override; // 03
[[nodiscard]] static PowerArmorGeometry* GetSingleton()
{
static REL::Relocation<PowerArmorGeometry**> singleton{ ID::PowerArmorGeometry::Singleton };
return *singleton;
}
void HidePipboyPAGeometry()
{
using func_t = decltype(&PowerArmorGeometry::HidePipboyPAGeometry);
static REL::Relocation<func_t> func{ ID::PowerArmorGeometry::HidePipboyPAGeometry };
return func(this);
}
void ShowPipboyPAGeometry()
{
using func_t = decltype(&PowerArmorGeometry::ShowPipboyPAGeometry);
static REL::Relocation<func_t> func{ ID::PowerArmorGeometry::ShowPipboyPAGeometry };
return func(this);
}
// members
BSTValueEventSink<PipboyLightEvent> pipboySpotLightEvent; // 030
BSTValueEventSink<PlayerAmmoCountEvent> nextAmmoCount; // 048
BSTValueEventSink<PlayerWeaponReloadEvent> playerReloaded; // 068
BSTValueEventSink<CurrentRadsDisplayMagnitude> radsCount; // 080
BSTValueEventSink<CurrentRadsPercentOfLethal> radsPercentOfLethal; // 0A0
BSTValueEventSink<CurrentRadiationSourceCount> radiationSourceCount; // 0C0
TESImageSpaceModifier* paPipboyEffect; // 0E0
NiPointer<NiNode> paDashDials; // 0E8
NiPointer<NiNode> pipboyPAGlass; // 0F0
NiAVObject* paDashLightSpot; // 0F8
NiAVObject* paDashLightScope; // 100
NiAVObject* paDashLightAux; // 108
NiAVObject* paDash; // 110
NiAVObject* plane; // 118
NiAVObject* compass; // 120
BSTArray<void*> queued3D; // 128
HUDModes validHUDModes; // 140
float radiationSmoother; // 160
NiPointer<NiNode> dbHUDRain; // 168
bool hudRain; // 170
bool prevShouldBeVisible; // 171
bool powerArmorEmergencyLightOn; // 172
bool queueInit; // 173
bool prevIsFirstPerson; // 174
bool ammoDirty; // 175
bool initialized; // 176
};
static_assert(sizeof(PowerArmorGeometry) == 0x178);
}