CommonLibSSE NG
BSAnimationGraphManager.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSAtomic.h"
4 #include "RE/B/BSFixedString.h"
6 #include "RE/B/BSTArray.h"
7 #include "RE/B/BSTEvent.h"
8 #include "RE/B/BSTSmartPointer.h"
9 #include "SKSE/Version.h"
10 
11 namespace RE
12 {
13  class BSAnimationGraphChannel;
14  class BShkbAnimationGraph;
15  struct BSAnimationGraphEvent;
16 
18  {
19  bool b;
20  std::int32_t i;
21  float f;
22  };
23  static_assert(sizeof(hkbVariableValue) == 0x4);
24 
26  {
27  public:
28  // members
31  };
32  static_assert(sizeof(AnimVariableCacheInfo) == 0x10);
33 
35  {
36  public:
37  [[nodiscard]] BSSpinLock* GetGraphLock() const noexcept {
39  if (REL::Module::get().version() >= SKSE::RUNTIME_SSE_1_6_629) {
40  return &REL::RelocateMember<BSSpinLock>(this, 0x20);
41  }
42  }
43  return nullptr;
44  }
45 
47  return REL::RelocateMemberIfNewer<BSTSmartPointer<BShkbAnimationGraph>>(SKSE::RUNTIME_SSE_1_6_629, this, 0x20, 0x28);
48  }
49 
50  [[nodiscard]] const BSTSmartPointer<BShkbAnimationGraph>& GetAnimationGraph() const noexcept {
51  return REL::RelocateMemberIfNewer<BSTSmartPointer<BShkbAnimationGraph>>(SKSE::RUNTIME_SSE_1_6_629, this, 0x20, 0x28);
52  }
53 
54  // members
56  mutable BSSpinLock updateLock; // 18
57 #if !defined(ENABLE_SKYRIM_AE)
59 #endif
60  };
61 #if !defined(ENABLE_SKYRIM_AE)
62  static_assert(sizeof(BSAnimationGraphVariableCache) == 0x28);
63 #endif
64 
66 
68  public BSTEventSink<BSAnimationGraphEvent>, // 00
69  public BSIntrusiveRefCounted // 08
70  {
71  public:
72  inline static constexpr auto RTTI = RTTI_BSAnimationGraphManager;
73 
75  {
76  public:
77  union Value
78  {
79  bool b;
80  std::int32_t i;
81  float f;
82  };
83  static_assert(sizeof(Value) == 0x4);
84 
85  // members
87  Value* value; // 08
88  };
89  static_assert(sizeof(AnimationVariable) == 0x10);
90 
91  ~BSAnimationGraphManager() override; // 00
92 
93  // override (BSTEventSink<BSAnimationGraphEvent>)
95 
96  struct RUNTIME_DATA
97  {
98 #define RUNTIME_DATA_CONTENT \
99  mutable BSSpinLock updateLock; /* 98, A0 */ \
100  mutable BSSpinLock dependentManagerLock; /* A0 */ \
101  std::uint32_t activeGraph; /* A8 */ \
102  std::uint32_t generateDepth; /* A8 */
103 
105  };
106 
107  [[nodiscard]] inline RUNTIME_DATA& GetRuntimeData() noexcept
108  {
109  return REL::RelocateMemberIfNewer<RUNTIME_DATA>(SKSE::RUNTIME_SSE_1_6_629, this, 0x98, 0xA0);
110  }
111 
112  [[nodiscard]] inline const RUNTIME_DATA& GetRuntimeData() const noexcept
113  {
114  return REL::RelocateMemberIfNewer<RUNTIME_DATA>(SKSE::RUNTIME_SSE_1_6_629, this, 0x98, 0xA0);
115  }
116 
117  // members
118  std::uint32_t pad0C; // 0C
124 
125 #ifndef ENABLE_SKYRIM_AE
127 #endif
128  };
129 #ifndef ENABLE_SKYRIM_AE
130  static_assert(sizeof(BSAnimationGraphManager) == 0xB0);
131 #endif
132 }
133 #undef RUNTIME_DATA_CONTENT
#define RUNTIME_DATA_CONTENT
Definition: BSAnimationGraphManager.h:98
#define SKYRIM_REL_CONSTEXPR
Definition: Common.h:47
static Module & get()
Definition: Module.h:82
static SKYRIM_REL bool IsAE() noexcept
Definition: Module.h:238
Definition: BSAnimationGraphManager.h:70
BSTArray< BSTSmartPointer< BSAnimationGraphChannel > > bumpedChannels
Definition: BSAnimationGraphManager.h:120
BSEventNotifyControl ProcessEvent(const BSAnimationGraphEvent *a_event, BSTEventSource< BSAnimationGraphEvent > *a_eventSource) override
BSTSmallArray< BSTSmartPointer< BShkbAnimationGraph > > graphs
Definition: BSAnimationGraphManager.h:121
BSAnimationGraphVariableCache variableCache
Definition: BSAnimationGraphManager.h:123
RUNTIME_DATA & GetRuntimeData() noexcept
Definition: BSAnimationGraphManager.h:107
static constexpr auto RTTI
Definition: BSAnimationGraphManager.h:72
std::uint32_t pad0C
Definition: BSAnimationGraphManager.h:118
BSTArray< BSTSmartPointer< BSAnimationGraphChannel > > boundChannels
Definition: BSAnimationGraphManager.h:119
BSTArray< BSAnimationGraphManagerPtr > subManagers
Definition: BSAnimationGraphManager.h:122
const RUNTIME_DATA & GetRuntimeData() const noexcept
Definition: BSAnimationGraphManager.h:112
Definition: BSAtomic.h:51
Definition: BSTArray.h:377
Definition: BSTEvent.h:143
Definition: BSTSmartPointer.h:36
Definition: AbsorbEffect.h:6
BSSmartPointer(BSAnimationGraphManager)
constexpr REL::VariantID RTTI_BSAnimationGraphManager(689998, 397853, 0x1f5b0d8)
BSEventNotifyControl
Definition: BSTEvent.h:12
constexpr REL::Version RUNTIME_SSE_1_6_629(1, 6, 629, 0)
Definition: BSAnimationGraphManager.h:26
hkbVariableValue * variable
Definition: BSAnimationGraphManager.h:30
BSFixedString variableName
Definition: BSAnimationGraphManager.h:29
Definition: BSAnimationGraphEvent.h:10
Definition: BSAnimationGraphManager.h:75
Value * value
Definition: BSAnimationGraphManager.h:87
BSFixedString name
Definition: BSAnimationGraphManager.h:83
Definition: BSAnimationGraphManager.h:97
Definition: BSAnimationGraphManager.h:35
BSTSmartPointer< BShkbAnimationGraph > & GetAnimationGraph() noexcept
Definition: BSAnimationGraphManager.h:46
BSSpinLock updateLock
Definition: BSAnimationGraphManager.h:56
BSTSmartPointer< BShkbAnimationGraph > animationGraph
Definition: BSAnimationGraphManager.h:58
const BSTSmartPointer< BShkbAnimationGraph > & GetAnimationGraph() const noexcept
Definition: BSAnimationGraphManager.h:50
BSSpinLock * GetGraphLock() const noexcept
Definition: BSAnimationGraphManager.h:37
BSTArray< AnimVariableCacheInfo > variableCache
Definition: BSAnimationGraphManager.h:55
Definition: BSIntrusiveRefCounted.h:8
Definition: BSAnimationGraphManager.h:78
float f
Definition: BSAnimationGraphManager.h:81
bool b
Definition: BSAnimationGraphManager.h:79
std::int32_t i
Definition: BSAnimationGraphManager.h:80
Definition: BSAnimationGraphManager.h:18
std::int32_t i
Definition: BSAnimationGraphManager.h:20
bool b
Definition: BSAnimationGraphManager.h:19
float f
Definition: BSAnimationGraphManager.h:21