CommonLibSSE (Parapets fork)
NiObjectNET.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSFixedString.h"
4 #include "RE/N/NiObject.h"
5 #include "RE/N/NiSmartPointer.h"
6 
7 namespace RE
8 {
9  class NiExtraData;
10  class NiTimeController;
11 
12  class NiObjectNET : public NiObject
13  {
14  public:
15  inline static constexpr auto RTTI = RTTI_NiObjectNET;
16  inline static constexpr auto Ni_RTTI = NiRTTI_NiObjectNET;
17 
18  ~NiObjectNET() override; // 00
19 
20  // override (NiObject)
21  const NiRTTI* GetRTTI() const override; // 02
22  void LoadBinary(NiStream& a_stream) override; // 18
23  void LinkObject(NiStream& a_stream) override; // 19
24  bool RegisterStreamables(NiStream& a_stream) override; // 1A
25  void SaveBinary(NiStream& a_stream) override; // 1B
26  bool IsEqual(NiObject* a_object) override; // 1C
27  void ProcessClone(NiCloningProcess& a_cloning) override; // 1D
28  void PostLinkObject(NiStream& a_stream) override; // 1E
29 
30  bool AddExtraData(const BSFixedString& a_key, NiExtraData* a_extra);
31  bool AddExtraData(NiExtraData* a_extra);
32  void DeleteExtraData(std::uint16_t a_extraDataIndex);
33  [[nodiscard]] NiTimeController* GetControllers() const;
34  NiTimeController* GetController(const NiRTTI* a_rtti) const;
35  [[nodiscard]] NiExtraData* GetExtraData(const BSFixedString& a_key) const;
36  [[nodiscard]] NiExtraData* GetExtraDataAt(std::uint16_t a_extraDataIndex) const;
37  [[nodiscard]] std::uint16_t GetExtraDataSize() const;
38  bool InsertExtraData(NiExtraData* a_extra);
40  bool RemoveExtraData(const BSFixedString& a_key);
41  bool RemoveExtraDataAt(std::uint16_t a_extraDataIndex);
42  bool SetExtraDataSize(std::uint16_t a_size);
43 
44  // members
47  NiExtraData** extra; // 20
48  std::uint16_t extraDataSize; // 28
49  std::uint16_t maxSize; // 2A
50  std::uint32_t pad2C; // 2C
51  };
52  static_assert(sizeof(NiObjectNET) == 0x30);
53 }
Definition: NiExtraData.h:9
Definition: NiObjectNET.h:13
bool AddExtraData(NiExtraData *a_extra)
void LoadBinary(NiStream &a_stream) override
void LinkObject(NiStream &a_stream) override
BSFixedString name
Definition: NiObjectNET.h:45
bool InsertExtraData(NiExtraData *a_extra)
~NiObjectNET() override
NiTimeController * GetController(const NiRTTI *a_rtti) const
NiPointer< NiTimeController > controllers
Definition: NiObjectNET.h:46
bool SetExtraDataSize(std::uint16_t a_size)
NiExtraData * GetExtraData(const BSFixedString &a_key) const
bool RegisterStreamables(NiStream &a_stream) override
static constexpr auto Ni_RTTI
Definition: NiObjectNET.h:16
NiExtraData ** extra
Definition: NiObjectNET.h:47
bool AddExtraData(const BSFixedString &a_key, NiExtraData *a_extra)
std::uint32_t pad2C
Definition: NiObjectNET.h:50
std::uint16_t GetExtraDataSize() const
void DeleteExtraData(std::uint16_t a_extraDataIndex)
std::uint16_t maxSize
Definition: NiObjectNET.h:49
NiExtraData * GetExtraDataAt(std::uint16_t a_extraDataIndex) const
bool IsEqual(NiObject *a_object) override
static constexpr auto RTTI
Definition: NiObjectNET.h:15
void ProcessClone(NiCloningProcess &a_cloning) override
void SaveBinary(NiStream &a_stream) override
bool RemoveExtraDataAt(std::uint16_t a_extraDataIndex)
const NiRTTI * GetRTTI() const override
std::uint16_t extraDataSize
Definition: NiObjectNET.h:48
NiTimeController * GetControllers() const
void PostLinkObject(NiStream &a_stream) override
bool RemoveExtraData(const BSFixedString &a_key)
void RemoveAllExtraData()
Definition: NiObject.h:37
Definition: NiSmartPointer.h:9
Definition: NiRTTI.h:6
Definition: NiStream.h:6
Definition: NiTimeController.h:13
Definition: AbsorbEffect.h:6
constexpr REL::ID NiRTTI_NiObjectNET
Definition: Offsets_NiRTTI.h:217
constexpr REL::ID RTTI_NiObjectNET
Definition: Offsets_RTTI.h:5394