CommonLibSSE (powerof3)
BSFaceGenManager.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSAtomic.h"
4 #include "RE/B/BSFixedString.h"
5 #include "RE/B/BSTHashMap.h"
6 #include "RE/B/BSTSingleton.h"
7 #include "RE/N/NiSmartPointer.h"
8 
9 namespace RE
10 {
11  class BGSHeadPart;
12  class BSFaceGenModel;
13  class BSFaceGenNiNode;
14  class TESNPC;
15 
17  {
18  public:
19  class Entry : public NiRefObject
20  {
21  public:
22  // members
24  std::uint64_t time; // 18
25  };
26  static_assert(sizeof(Entry) == 0x20);
27 
28  // members
31  bool hasFaceGenData; // 38
32  };
33  static_assert(sizeof(BSFaceGenModelMap) == 0x40);
34 
35  class BSFaceGenManager : public BSTSingletonSDM<BSFaceGenManager>
36  {
37  public:
38  [[nodiscard]] static BSFaceGenManager* GetSingleton()
39  {
40  static REL::Relocation<BSFaceGenManager**> singleton{ RELOCATION_ID(514182, 400331) };
41  return *singleton;
42  }
43 
44  void PrepareHeadPartForShaders(BSFaceGenNiNode* a_node, BGSHeadPart* a_headPart, TESNPC* a_npc)
45  {
46  using func_t = decltype(&BSFaceGenManager::PrepareHeadPartForShaders);
47  static REL::Relocation<func_t> func{ RELOCATION_ID(26259, 26838) };
48  return func(this, a_node, a_headPart, a_npc);
49  }
50 
51  // members
52  std::uint32_t numActorsToMorph; // 04
53  bool emotions; // 08
54  std::uint8_t pad09[7]; // 09
55  std::uint64_t unk10; // 10
57  std::uint8_t isReset; // 58
58  std::uint8_t pad59[3]; // 59
59  std::uint32_t unk5C; // 5C
60  std::uint8_t unk60; // 60
61  std::uint8_t pad61[7]; // 61
62  };
63  static_assert(sizeof(BSFaceGenManager) == 0x68);
64 };
#define RELOCATION_ID(SE, AE)
Definition: PCH.h:505
Definition: Relocation.h:210
Definition: BGSHeadPart.h:17
Definition: BSFaceGenManager.h:36
BSFaceGenModelMap modelMap
Definition: BSFaceGenManager.h:56
static BSFaceGenManager * GetSingleton()
Definition: BSFaceGenManager.h:38
std::uint32_t numActorsToMorph
Definition: BSFaceGenManager.h:52
void PrepareHeadPartForShaders(BSFaceGenNiNode *a_node, BGSHeadPart *a_headPart, TESNPC *a_npc)
Definition: BSFaceGenManager.h:44
std::uint8_t pad61[7]
Definition: BSFaceGenManager.h:61
std::uint8_t isReset
Definition: BSFaceGenManager.h:57
std::uint64_t unk10
Definition: BSFaceGenManager.h:55
std::uint8_t pad59[3]
Definition: BSFaceGenManager.h:58
std::uint8_t pad09[7]
Definition: BSFaceGenManager.h:54
std::uint8_t unk60
Definition: BSFaceGenManager.h:60
bool emotions
Definition: BSFaceGenManager.h:53
std::uint32_t unk5C
Definition: BSFaceGenManager.h:59
Definition: BSFaceGenManager.h:20
NiPointer< BSFaceGenModel > model
Definition: BSFaceGenManager.h:23
std::uint64_t time
Definition: BSFaceGenManager.h:24
Definition: BSFaceGenNiNode.h:14
Definition: BSAtomic.h:112
Definition: BSTHashMap.h:21
Definition: NiSmartPointer.h:9
Definition: NiRefObject.h:8
Definition: TESNPC.h:36
Definition: AbsorbEffect.h:6
Definition: BSFaceGenManager.h:17
BSTHashMap< BSFixedString, NiPointer< Entry > > map
Definition: BSFaceGenManager.h:26
BSReadWriteLock lock
Definition: BSFaceGenManager.h:30
bool hasFaceGenData
Definition: BSFaceGenManager.h:31
Definition: BSTSingleton.h:50