130 lines
2.9 KiB
C++
130 lines
2.9 KiB
C++
#pragma once
|
|
|
|
#include "RE/B/BGSCharacterTint.h"
|
|
#include "RE/B/BGSHeadPart.h"
|
|
#include "RE/B/BGSLocalizedString.h"
|
|
#include "RE/B/BSFixedString.h"
|
|
#include "RE/B/BSTArray.h"
|
|
#include "RE/B/BSTHashMap.h"
|
|
#include "RE/N/NiPoint3.h"
|
|
|
|
namespace RE
|
|
{
|
|
namespace BGSCharacterMorph
|
|
{
|
|
class BoneBaseScales
|
|
{
|
|
public:
|
|
// members
|
|
NiPoint3 scales[3]; // 00
|
|
};
|
|
static_assert(sizeof(BoneBaseScales) == 0x24);
|
|
|
|
class BONE_MODIFIER_MIN_MAX
|
|
{
|
|
public:
|
|
// members
|
|
float minY; // 00
|
|
float minZ; // 04
|
|
float maxY; // 08
|
|
float maxZ; // 0C
|
|
};
|
|
static_assert(sizeof(BONE_MODIFIER_MIN_MAX) == 0x10);
|
|
|
|
class Slider
|
|
{
|
|
public:
|
|
// members
|
|
BSFixedString morphNames[2]; // 00
|
|
const std::uint32_t uniqueID; // 10
|
|
};
|
|
static_assert(sizeof(Slider) == 0x18);
|
|
|
|
class Transform
|
|
{
|
|
public:
|
|
// members
|
|
NiPoint3 position; // 00
|
|
NiPoint3 rotation; // 0C
|
|
NiPoint3 scale; // 18
|
|
};
|
|
static_assert(sizeof(Transform) == 0x24);
|
|
|
|
class TransformMinMax
|
|
{
|
|
public:
|
|
// members
|
|
Transform minima; // 00
|
|
Transform maxima; // 24
|
|
};
|
|
static_assert(sizeof(TransformMinMax) == 0x48);
|
|
|
|
class FacialBoneRegion
|
|
{
|
|
public:
|
|
// members
|
|
Transform defaultTransform; // 00
|
|
BGSLocalizedString name; // 28
|
|
BSFixedString associatedMorphGroupName; // 30
|
|
BGSCharacterTint::EntrySlot associatedTintSlot; // 38
|
|
BGSHeadPart::HeadPartType associatedHeadPartType; // 3C
|
|
BSTHashMap<BSFixedString, TransformMinMax*> boneMinMaxMap; // 40
|
|
BSTArray<std::uint32_t> associatedMorphSliders; // 70
|
|
const std::uint32_t id; // 88
|
|
};
|
|
static_assert(sizeof(FacialBoneRegion) == 0x90);
|
|
|
|
class Preset
|
|
{
|
|
public:
|
|
// members
|
|
BGSLocalizedString name; // 00
|
|
BSFixedString morph; // 08
|
|
BGSTextureSet* textureSet; // 10
|
|
std::int8_t flags; // 18
|
|
std::uint32_t id; // 1C
|
|
};
|
|
static_assert(sizeof(Preset) == 0x20);
|
|
|
|
class Group
|
|
{
|
|
public:
|
|
// members
|
|
BSFixedString name; // 00
|
|
BSTArray<Preset> presets; // 08
|
|
BSTArray<std::uint32_t> sliders; // 20
|
|
std::uint16_t presetMaskID; // 38
|
|
};
|
|
static_assert(sizeof(Group) == 0x40);
|
|
|
|
enum class WeightComponent : std::uint32_t
|
|
{
|
|
kThin = 0x0,
|
|
kMuscular = 0x1,
|
|
kFat = 0x2
|
|
};
|
|
|
|
enum class BODY_MORPH_REGION : std::uint32_t
|
|
{
|
|
kHead = 0x0,
|
|
kUpperTorso = 0x1,
|
|
kArms = 0x2,
|
|
kLowerTorso = 0x3,
|
|
kLegs = 0x4
|
|
};
|
|
|
|
enum class Axis : std::uint32_t
|
|
{
|
|
kPosX = 0x0,
|
|
kPosY = 0x1,
|
|
kPosZ = 0x2,
|
|
kRotX = 0x3,
|
|
kRotY = 0x4,
|
|
kRotZ = 0x5,
|
|
kScaleX = 0x6,
|
|
kScaleY = 0x7,
|
|
kScaleZ = 0x8
|
|
};
|
|
}
|
|
}
|