Character Appearance Phase 1 Done
Bump appearance payloads to version 2 and add `morphRegions` and `facialBoneMorphs` capture, serialization, and proxy application. Also fix head-part syncing when sender and proxy counts differ by reallocating the proxy array instead of deferring the whole list, and update the Python harness and protocol docs to match.
This commit is contained in:
@@ -49,9 +49,19 @@ namespace F4T::RemotePlayerState
|
||||
float large{};
|
||||
};
|
||||
|
||||
// Bone-based facial morph (TESNPC::facialBoneRegionSliderValues entry).
|
||||
// Mirrors BGSCharacterMorph::Transform (position, rotation, scale).
|
||||
struct RemoteAppearanceFacialBoneMorph
|
||||
{
|
||||
std::uint32_t id{};
|
||||
float position[3]{};
|
||||
float rotation[3]{};
|
||||
float scale[3]{ 1.0F, 1.0F, 1.0F };
|
||||
};
|
||||
|
||||
struct RemoteAppearance
|
||||
{
|
||||
std::uint32_t version{ 1 };
|
||||
std::uint32_t version{ 2 };
|
||||
std::uint32_t raceFormId{};
|
||||
float height{ 1.0F };
|
||||
RemoteAppearanceMorphWeight morphWeight;
|
||||
@@ -60,6 +70,8 @@ namespace F4T::RemotePlayerState
|
||||
std::uint32_t facialHairColorFormId{};
|
||||
std::vector<std::uint32_t> headPartFormIds;
|
||||
std::vector<RemoteAppearanceMorph> morphSliders;
|
||||
std::vector<float> morphRegionSliders;
|
||||
std::vector<RemoteAppearanceFacialBoneMorph> facialBoneMorphs;
|
||||
};
|
||||
|
||||
struct RemotePlayerState
|
||||
|
||||
Reference in New Issue
Block a user