CommonLibVR
NiSkinInstance.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiObject.h"
4 #include "RE/N/NiSmartPointer.h"
5 
6 #include "REX/W32/BASE.h"
7 
8 namespace RE
9 {
10  class NiAVObject;
11  class NiTransform;
12  class NiSkinData;
13  class NiSkinPartition;
14 
15  class NiSkinInstance : public NiObject
16  {
17  public:
18  inline static constexpr auto RTTI = RTTI_NiSkinInstance;
19  inline static constexpr auto Ni_RTTI = NiRTTI_NiSkinInstance;
20  inline static constexpr auto VTABLE = VTABLE_NiSkinInstance;
21 
22  ~NiSkinInstance() override; // 00
23 
24  // override (NiObject)
25  const NiRTTI* GetRTTI() const override; // 02
26  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
27  void LoadBinary(NiStream& a_stream) override; // 18
28  void LinkObject(NiStream& a_stream) override; // 19
29  bool RegisterStreamables(NiStream& a_stream) override; // 1A
30  void SaveBinary(NiStream& a_stream) override; // 1B
31  bool IsEqual(NiObject* a_object) override; // 1C
32  void PostLinkObject(NiStream& a_stream) override; // 1E - { return; }
33 
34  // add
35  virtual void Unk_25(void); // 25
36 
38 
39  // members
43  NiAVObject** bones; // 28
45  std::uint32_t frameID; // 38
46  std::uint32_t numMatrices; // 3C
47  std::uint32_t numRegisters; // 40
48  std::uint32_t allocatedSize; // 44
49  void* boneMatrices; // 48
50  void* prevBoneMatrices; // 50
52 #ifndef SKYRIMVR
54  private:
55  KEEP_FOR_RE()
56  };
57  static_assert(sizeof(NiSkinInstance) == 0x88);
58 #else
59  std::uint64_t unk60; // 60 - no lock in VR
60  private:
61  KEEP_FOR_RE()
62  };
63  static_assert(sizeof(NiSkinInstance) == 0x68);
64 #endif
65 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: NiAVObject.h:57
Definition: NiCloningProcess.h:10
Definition: NiObject.h:37
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: NiSkinInstance.h:16
const NiRTTI * GetRTTI() const override
void PostLinkObject(NiStream &a_stream) override
~NiSkinInstance() override
std::uint32_t numMatrices
Definition: NiSkinInstance.h:46
REX::W32::CRITICAL_SECTION lock
Definition: NiSkinInstance.h:53
NiAVObject * rootParent
Definition: NiSkinInstance.h:42
void SaveBinary(NiStream &a_stream) override
bool IsEqual(NiObject *a_object) override
std::uint32_t numRegisters
Definition: NiSkinInstance.h:47
NiObject * CreateClone(NiCloningProcess &a_cloning) override
const NiTransform ** boneWorldTransforms
Definition: NiSkinInstance.h:44
virtual void Unk_25(void)
NiPointer< NiSkinPartition > skinPartition
Definition: NiSkinInstance.h:41
static constexpr auto VTABLE
Definition: NiSkinInstance.h:20
void LinkObject(NiStream &a_stream) override
void * prevBoneMatrices
Definition: NiSkinInstance.h:50
void * skinToWorldWorldToSkinMatrix
Definition: NiSkinInstance.h:51
NiPointer< NiSkinData > skinData
Definition: NiSkinInstance.h:40
NiAVObject ** bones
Definition: NiSkinInstance.h:43
std::uint32_t frameID
Definition: NiSkinInstance.h:45
static constexpr auto RTTI
Definition: NiSkinInstance.h:18
std::uint32_t allocatedSize
Definition: NiSkinInstance.h:48
static NiSkinInstance * Create()
bool RegisterStreamables(NiStream &a_stream) override
static constexpr auto Ni_RTTI
Definition: NiSkinInstance.h:19
void LoadBinary(NiStream &a_stream) override
void * boneMatrices
Definition: NiSkinInstance.h:49
Definition: NiStream.h:29
Definition: NiTransform.h:9
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_NiSkinInstance
Definition: Offsets_VTABLE.h:12320
constexpr REL::ID RTTI_NiSkinInstance(static_cast< std::uint64_t >(690429))
constexpr REL::ID NiRTTI_NiSkinInstance(static_cast< std::uint64_t >(523976))
Definition: BASE.h:137