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

126 lines
6.3 KiB
C++

#pragma once
#include "RE/B/BGSAttachParentArray.h"
#include "RE/B/BGSAttackDataForm.h"
#include "RE/B/BGSBehaviorGraphModel.h"
#include "RE/B/BGSBipedObjectForm.h"
#include "RE/B/BGSCharacterMorph.h"
#include "RE/B/BGSCharacterTint.h"
#include "RE/B/BGSKeywordForm.h"
#include "RE/B/BGSPreloadable.h"
#include "RE/B/BGSPropertySheet.h"
#include "RE/B/BGSSkinForm.h"
#include "RE/B/BGSSoundTagComponent.h"
#include "RE/B/BGSTextureModel.h"
#include "RE/B/BSFixedString.h"
#include "RE/B/BSTArray.h"
#include "RE/B/BSTHashMap.h"
#include "RE/M/Movement.h"
#include "RE/N/NiPoint3.h"
#include "RE/R/RACE_DATA.h"
#include "RE/T/TESDescription.h"
#include "RE/T/TESForm.h"
#include "RE/T/TESFullName.h"
#include "RE/T/TESModel.h"
#include "RE/T/TESSpellList.h"
#include "RE/T/TESTexture.h"
namespace RE
{
class EquipSlotData;
class __declspec(novtable) TESRace :
public TESForm, // 000
public TESFullName, // 020
public TESDescription, // 030
public TESSpellList, // 048
public BGSSkinForm, // 058
public BGSBipedObjectForm, // 068
public BGSKeywordForm, // 078
public BGSAttackDataForm, // 098
public BGSPropertySheet, // 0A8
public BGSPreloadable // 0B8
{
public:
static constexpr auto RTTI{ RTTI::TESRace };
static constexpr auto VTABLE{ VTABLE::TESRace };
static constexpr auto FORM_ID{ ENUM_FORM_ID::kRACE };
class MOVEMENT_SPEED_OVERRIDE
{
public:
// members
BGSMovementType* moveType; // 00
Movement::MaxSpeeds overrideData; // 08
};
static_assert(sizeof(MOVEMENT_SPEED_OVERRIDE) == 0x78);
class FaceRelatedData
{
public:
// members
BGSCharacterTint::Template::Groups* tintingTemplate; //
BSTArray<BGSTextureSet*>* faceDetailsTextureSets; //
BGSTextureSet* defaultFaceDetailsTextureSet; //
BSTArray<TESNPC*>* presetNPCs; //
BSTArray<BGSColorForm*>* availableHairColors; //
BGSColorForm* defaultHairColor; //
BSTArray<BGSHeadPart*>* headParts; //
BSTArray<BGSCharacterMorph::Group*>* morphGroups; //
BSTArray<BGSCharacterMorph::FacialBoneRegion*>* facialBoneRegions; //
BGSCharacterMorph::FacialBoneRegion* neckFatFacialBoneRegion; //
NiPoint3 neckFatAdjustmentScales; //
BSFixedString wrinkleMapPath; //
};
static_assert(sizeof(FaceRelatedData) == 0x68);
class BodyMorphData
{
public:
// members
BSTHashMap<BSFixedString, BGSCharacterMorph::BoneBaseScales*> boneBaseScales; // 00
BSTHashMap<BSFixedString, BGSCharacterMorph::BONE_MODIFIER_MIN_MAX*> boneModifiers; // 30
};
static_assert(sizeof(BodyMorphData) == 0x60);
// members
TESModel skeletonModel[2]; // 0C0
TESModel skeletonChargenModel[2]; // 120
RACE_DATA data; // 180
float clampFaceGeoValue; // 280
float clampFaceGeoValue2; // 284
BGSTextureModel bodyTextureModels[2]; // 288
BGSBehaviorGraphModel behaviorGraph[2]; // 2E8
BSFixedString rootBehaviorGraphName[2]; // 348
BSFixedString behaviorGraphProjectName[2]; // 358
BGSVoiceType* defaultVoiceType[2]; // 368
BGSBodyPartData* bodyPartData; // 378
BGSSoundTagComponent soundTagComponent; // 380
BGSAttachParentArray attachParents; // 388
BSFixedString formEditorID; // 3A0
BGSMaterialType* bloodImpactMaterial; // 3A8
BGSArtObject* dismemberBlood; // 3B0
BGSTextureSet* meatCapTextureSet; // 3B8
BGSTextureSet* meatCollarTextureSet; // 3C0
BGSSoundDescriptorForm* corpseOpenSound; // 3C8
BGSSoundDescriptorForm* corpseCloseSound; // 3D0
BSFixedString bipedObjectNames[32]; // 3D8
ActorValueInfo* bipedObjectConditions[32]; // 4D8
BSTArray<EquipSlotData> equipSlotArray; // 5D8
std::uint32_t validEquipTypes; // 5F0
TESObjectWEAP* unarmedWeapon; // 5F8
TESRace* morphRace; // 600
TESRace* armorParentRace; // 608
TESQuest* dialogueQuest; // 610
BSTArray<MOVEMENT_SPEED_OVERRIDE> speedOverrides; // 618
BSTArray<BSFixedString> phonemeTargets; // 630
BSTHashMap<std::uint32_t, BGSCharacterMorph::Slider*> morphSliders; // 648
BGSMovementType* baseMoveTypes[4]; // 678
FaceRelatedData* faceRelatedData[2]; // 698
BodyMorphData* bodyMorphData[2]; // 6A8
TESTexture hairColorLookupTexture; // 6B8
TESTexture hairColorLookupTextureExt; // 6C8
};
static_assert(sizeof(TESRace) == 0x6D8);
}