CommonLibSSE (powerof3)
Loading...
Searching...
No Matches
NiStream.h
Go to the documentation of this file.
1#pragma once
2
4#include "RE/B/BSTArray.h"
6#include "RE/N/NiTArray.h"
8
9namespace RE
10{
11 class NiBinaryStream;
12 class NiObjectGroup;
13
15 {
16 public:
17 // members
18 std::uint32_t version; // 00
19 char author[64]; // 04
20 char processScript[64]; // 44
21 char exportScript[64]; // 84
22 std::uint32_t padC4; // C4
23 };
24 static_assert(sizeof(BSStreamHeader) == 0xC8);
25
27 {
28 public:
29 inline static constexpr auto RTTI = RTTI_NiStream;
30 inline static constexpr auto VTABLE = VTABLE_NiStream;
31
32 virtual ~NiStream(); // 00
33
34 // add
35 virtual bool Load1(NiBinaryStream* a_stream); // 01
36 virtual bool Load2(char* a_buffer, std::uint64_t a_len); // 02
37 virtual bool Load3(const char* a_path); // 03
38 virtual bool Save1(NiBinaryStream* a_stream); // 04
39 virtual bool Save2(char*& a_path, std::uint64_t& a_len); // 05
40 virtual bool Save3(const char* a_path); // 06
41 virtual void Unk_07(void); // 07 - { return 0; }
42 virtual bool RegisterFixedString(const BSFixedString& a_fixedString); // 08
43 virtual bool RegisterSaveObject(NiObject* a_object); // 09
44 virtual bool ChangeObject(NiObject* a_object); // 0A
45 virtual std::uint32_t GetLinkIDFromObject(const NiObject* a_object); // 0B
46 virtual void SaveLinkID(const NiObject* a_object); // 0C
47 virtual bool LoadHeader(); // 0D
48 virtual void SaveHeader(); // 0E
49 virtual bool LoadStream(); // 0F
50 virtual void SaveStream(); // 10
51 virtual void RegisterObjects(); // 11
52 virtual void LoadTopLevelObjects(); // 12
53 virtual void SaveTopLevelObjects(); // 13
54 virtual bool LoadObject(); // 14
55 virtual std::uint64_t PreSaveObjectSizeTable(); // 15
56 virtual bool SaveObjectSizeTable(std::uint64_t a_size); // 16
57 virtual bool LoadObjectSizeTable(); // 17
58
59 // members
62 std::uint32_t nifMaxVersion; // 100
63 std::uint32_t nifMaxUserDefinedVersion; // 104
65 std::uint16_t unk20C; // 20C
66 std::uint16_t unk20E; // 20E
67 std::uint64_t unk210; // 210
74 std::uint32_t linkIndex; // 2A8
75 std::uint32_t linkBlockIndex; // 2AC
77 std::uint16_t niAVObjectFlags; // 2D0
78 std::uint16_t niTimeControllerFlags; // 2D2
79 std::uint16_t niPropertyFlags; // 2D4
80 std::uint32_t unk2D8; // 2D8
81 bool unk2DC; // 2DC
82 std::uint32_t load; // 2E0
83 std::uint32_t link; // 2E4
84 std::uint32_t postLink; // 2E8
85 std::uint64_t unk2F0; // 2F0
86 std::uint64_t unk2F8; // 2F8
87 std::uint32_t unk300; // 300
88 std::uint32_t unk304; // 304
89 std::int32_t unk308; // 308
91 std::uint32_t lastError; // 410
94 };
95 static_assert(sizeof(NiStream) == 0x620);
96}
Definition: BSTArray.h:377
Definition: NiBinaryStream.h:6
Definition: NiObject.h:37
Definition: NiStream.h:27
NiTLargeObjectArray< NiPointer< NiObject > > topObjects
Definition: NiStream.h:70
std::uint32_t unk2D8
Definition: NiStream.h:80
virtual bool Save2(char *&a_path, std::uint64_t &a_len)
virtual std::uint64_t PreSaveObjectSizeTable()
virtual bool LoadStream()
NiTLargeObjectArray< NiPointer< NiObject > > objects
Definition: NiStream.h:68
virtual bool RegisterSaveObject(NiObject *a_object)
std::uint16_t niTimeControllerFlags
Definition: NiStream.h:78
virtual bool Save3(const char *a_path)
NiTLargeObjectArray< BSFixedString > fixedStrings
Definition: NiStream.h:71
std::uint32_t nifMaxVersion
Definition: NiStream.h:62
char lastErrorMessage[WinAPI::MAX_PATH]
Definition: NiStream.h:92
std::uint32_t linkIndex
Definition: NiStream.h:74
virtual void SaveHeader()
static constexpr auto RTTI
Definition: NiStream.h:29
virtual void RegisterObjects()
static constexpr auto VTABLE
Definition: NiStream.h:30
std::uint32_t unk300
Definition: NiStream.h:87
virtual void SaveLinkID(const NiObject *a_object)
BSTSmallArray< NiObjectGroup > groups
Definition: NiStream.h:61
virtual bool ChangeObject(NiObject *a_object)
virtual bool Load3(const char *a_path)
virtual bool LoadObjectSizeTable()
virtual bool Save1(NiBinaryStream *a_stream)
std::uint32_t nifMaxUserDefinedVersion
Definition: NiStream.h:63
virtual bool SaveObjectSizeTable(std::uint64_t a_size)
virtual bool LoadObject()
std::int32_t unk308
Definition: NiStream.h:89
std::uint32_t load
Definition: NiStream.h:82
virtual void SaveStream()
char filePath[WinAPI::MAX_PATH]
Definition: NiStream.h:93
virtual void SaveTopLevelObjects()
std::uint32_t lastError
Definition: NiStream.h:91
virtual bool Load1(NiBinaryStream *a_stream)
NiTPointerMap< NiObject const *, std::uint32_t > registerMap
Definition: NiStream.h:76
virtual bool LoadHeader()
std::uint32_t link
Definition: NiStream.h:83
char inputFilePath[WinAPI::MAX_PATH]
Definition: NiStream.h:64
NiBinaryStream * oStr
Definition: NiStream.h:73
std::uint32_t linkBlockIndex
Definition: NiStream.h:75
std::uint32_t postLink
Definition: NiStream.h:84
std::uint32_t unk304
Definition: NiStream.h:88
std::uint16_t niPropertyFlags
Definition: NiStream.h:79
NiBinaryStream * iStr
Definition: NiStream.h:72
virtual bool Load2(char *a_buffer, std::uint64_t a_len)
virtual void Unk_07(void)
virtual ~NiStream()
std::uint16_t niAVObjectFlags
Definition: NiStream.h:77
virtual std::uint32_t GetLinkIDFromObject(const NiObject *a_object)
BSStreamHeader header
Definition: NiStream.h:60
std::uint64_t unk2F0
Definition: NiStream.h:85
std::uint16_t unk20E
Definition: NiStream.h:66
virtual void LoadTopLevelObjects()
char lastLoadedRTTI[WinAPI::MAX_PATH]
Definition: NiStream.h:90
virtual bool RegisterFixedString(const BSFixedString &a_fixedString)
std::uint64_t unk210
Definition: NiStream.h:67
std::uint16_t unk20C
Definition: NiStream.h:65
bool unk2DC
Definition: NiStream.h:81
std::uint64_t unk2F8
Definition: NiStream.h:86
NiTLargePrimitiveArray< std::uint32_t > objectSizes
Definition: NiStream.h:69
Definition: NiTArray.h:262
Definition: NiTArray.h:272
Definition: NiTPointerMap.h:10
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_NiStream(static_cast< std::uint64_t >(684798))
constexpr std::array< REL::ID, 1 > VTABLE_NiStream
Definition: Offsets_VTABLE.h:12327
constexpr auto MAX_PATH
Definition: WinAPI.h:9
Definition: NiStream.h:15
char exportScript[64]
Definition: NiStream.h:21
char processScript[64]
Definition: NiStream.h:20
std::uint32_t padC4
Definition: NiStream.h:22
std::uint32_t version
Definition: NiStream.h:18
char author[64]
Definition: NiStream.h:19