Skip to content

Commit b351b6d

Browse files
committed
use ue names and file structure for StaticMesh and Texture2D
1 parent e11bc74 commit b351b6d

25 files changed

Lines changed: 327 additions & 250 deletions
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#pragma once
2+
3+
#include <cstdint>
4+
#include <vector>
5+
6+
#include "../../../../IO/Archive/Archive.h"
7+
#include "../../../../IO/Archive/IStreamArchive.h"
8+
#include "satisfactorysave_export.h"
9+
10+
namespace SatisfactorySave {
11+
struct SATISFACTORYSAVE_API TResourceArray {
12+
int32_t SerializedElementSize = 0;
13+
int32_t Num = 0;
14+
std::vector<char> data;
15+
16+
void serialize(Archive& ar) {
17+
if (!ar.isIArchive()) {
18+
throw std::runtime_error("Only IStreamArchive support implemented!");
19+
}
20+
21+
// BulkSerialize
22+
ar << SerializedElementSize;
23+
ar << Num;
24+
25+
auto& inAr = dynamic_cast<IStreamArchive&>(ar);
26+
data = inAr.read_buffer(SerializedElementSize * Num);
27+
}
28+
};
29+
} // namespace SatisfactorySave
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#pragma once
2+
3+
#include "../../../../IO/Archive/Archive.h"
4+
#include "../../CoreUObject/UObject/Object.h"
5+
#include "../StaticMeshResources.h"
6+
#include "satisfactorysave_export.h"
7+
8+
namespace SatisfactorySave {
9+
class SATISFACTORYSAVE_API UStaticMesh : public UObject {
10+
public:
11+
FStaticMeshRenderData RenderData;
12+
13+
void serialize(Archive& ar) override;
14+
};
15+
} // namespace SatisfactorySave
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
3+
#include <cstdint>
4+
#include <string>
5+
#include <vector>
6+
7+
#include "../../../../IO/Archive/Archive.h"
8+
#include "../TextureResource.h"
9+
#include "satisfactorysave_export.h"
10+
11+
namespace SatisfactorySave {
12+
struct SATISFACTORYSAVE_API FTexturePlatformData {
13+
int32_t SizeX = 0;
14+
int32_t SizeY = 0;
15+
uint32_t PackedData = 0;
16+
std::string PixelFormatString;
17+
int32_t FirstMipToSerialize = 0;
18+
std::vector<FTexture2DMipMap> Mips;
19+
bool bIsVirtual = false;
20+
21+
void serialize(Archive& ar);
22+
};
23+
} // namespace SatisfactorySave
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#pragma once
2+
3+
#include "../../../../IO/Archive/Archive.h"
4+
#include "../../CoreUObject/UObject/Object.h"
5+
#include "Texture.h"
6+
#include "satisfactorysave_export.h"
7+
8+
namespace SatisfactorySave {
9+
class SATISFACTORYSAVE_API UTexture2D : public UObject {
10+
public:
11+
FTexturePlatformData RunningPlatformData;
12+
13+
void serialize(Archive& ar) override;
14+
};
15+
} // namespace SatisfactorySave

libsave/include/SatisfactorySave/Pak/Serialization/StripDataFlags.h renamed to libsave/include/SatisfactorySave/GameTypes/UE/Engine/EngineUtils.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#pragma once
22

3-
#include "../../IO/Archive/Archive.h"
3+
#include <cstdint>
4+
5+
#include "../../../IO/Archive/Archive.h"
46
#include "satisfactorysave_export.h"
57

68
namespace SatisfactorySave {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#pragma once
2+
3+
#include "../../../IO/Archive/Archive.h"
4+
#include "../Core/Containers/DynamicRHIResourceArray.h"
5+
#include "satisfactorysave_export.h"
6+
7+
namespace SatisfactorySave {
8+
struct SATISFACTORYSAVE_API FRawStaticIndexBuffer {
9+
TResourceArray IndexStorage;
10+
bool b32Bit = false;
11+
bool bShouldExpandTo32Bit = false;
12+
13+
void serialize(Archive& ar) {
14+
ar << b32Bit;
15+
ar << IndexStorage;
16+
ar << bShouldExpandTo32Bit;
17+
}
18+
};
19+
} // namespace SatisfactorySave
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#pragma once
2+
3+
#include <cstdint>
4+
5+
#include "../../../../IO/Archive/Archive.h"
6+
#include "../../Core/Containers/DynamicRHIResourceArray.h"
7+
#include "../EngineUtils.h"
8+
#include "satisfactorysave_export.h"
9+
10+
namespace SatisfactorySave {
11+
struct SATISFACTORYSAVE_API FColorVertexBuffer {
12+
uint32_t Stride = 0;
13+
uint32_t NumVertices = 0;
14+
15+
/*FColorVertexData*/ TResourceArray VertexData;
16+
17+
void serialize(Archive& ar) {
18+
FStripDataFlags dataFlags;
19+
ar << dataFlags;
20+
dataFlags.validateOnlyEditorDataIsStripped();
21+
22+
ar << Stride;
23+
ar << NumVertices;
24+
25+
if (NumVertices > 0) {
26+
ar << VertexData;
27+
}
28+
}
29+
};
30+
} // namespace SatisfactorySave
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#pragma once
2+
3+
#include <cstdint>
4+
5+
#include "../../../../IO/Archive/Archive.h"
6+
#include "../../Core/Containers/DynamicRHIResourceArray.h"
7+
#include "satisfactorysave_export.h"
8+
9+
namespace SatisfactorySave {
10+
struct SATISFACTORYSAVE_API FPositionVertexBuffer {
11+
uint32_t Stride = 0;
12+
uint32_t NumVertices = 0;
13+
/*FPositionVertexData*/ TResourceArray VertexData;
14+
15+
void serialize(Archive& ar) {
16+
ar << Stride;
17+
ar << NumVertices;
18+
19+
ar << VertexData;
20+
}
21+
};
22+
} // namespace SatisfactorySave
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#pragma once
2+
3+
#include <cstdint>
4+
5+
#include "../../../../IO/Archive/Archive.h"
6+
#include "../../Core/Containers/DynamicRHIResourceArray.h"
7+
#include "../EngineUtils.h"
8+
#include "satisfactorysave_export.h"
9+
10+
namespace SatisfactorySave {
11+
struct SATISFACTORYSAVE_API FStaticMeshVertexBuffer {
12+
uint32_t NumTexCoords = 0;
13+
uint32_t NumVertices = 0;
14+
bool bUseFullPrecisionUVs = false;
15+
bool bUseHighPrecisionTangentBasis = false;
16+
17+
/*FStaticMeshVertexDataInterface*/ TResourceArray TangentsData;
18+
/*FStaticMeshVertexDataInterface*/ TResourceArray TexcoordData;
19+
20+
void serialize(Archive& ar) {
21+
FStripDataFlags dataFlags;
22+
ar << dataFlags;
23+
dataFlags.validateOnlyEditorDataIsStripped();
24+
25+
ar << NumTexCoords;
26+
ar << NumVertices;
27+
ar << bUseFullPrecisionUVs;
28+
ar << bUseHighPrecisionTangentBasis;
29+
30+
ar << TangentsData;
31+
ar << TexcoordData;
32+
}
33+
};
34+
} // namespace SatisfactorySave

libsave/include/SatisfactorySave/Pak/Serialization/StaticMesh.h renamed to libsave/include/SatisfactorySave/GameTypes/UE/Engine/StaticMeshResources.h

Lines changed: 8 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
#pragma once
22

3-
#include <optional>
3+
#include <cstdint>
44
#include <vector>
55

6-
#include "../../GameTypes/Properties/Base/PropertyList.h"
7-
#include "../../GameTypes/UE/Core/Misc/Guid.h"
8-
#include "../../IO/Archive/Archive.h"
9-
#include "StripDataFlags.h"
6+
#include "../../../IO/Archive/Archive.h"
7+
#include "EngineUtils.h"
8+
#include "RawIndexBuffer.h"
9+
#include "Rendering/ColorVertexBuffer.h"
10+
#include "Rendering/PositionVertexBuffer.h"
11+
#include "Rendering/StaticMeshVertexBuffer.h"
12+
#include "WeightedRandomSampler.h"
1013
#include "satisfactorysave_export.h"
1114

1215
namespace SatisfactorySave {
13-
1416
struct SATISFACTORYSAVE_API FStaticMeshSection {
1517
int32_t MaterialIndex = 0;
1618
uint32_t FirstIndex = 0;
@@ -37,115 +39,18 @@ namespace SatisfactorySave {
3739
}
3840
};
3941

40-
// TResourceArray
41-
struct SATISFACTORYSAVE_API ResourceArray {
42-
int32_t SerializedElementSize = 0;
43-
int32_t Num = 0;
44-
std::vector<char> data;
45-
46-
void serialize(Archive& ar) {
47-
// BulkSerialize
48-
ar << SerializedElementSize;
49-
ar << Num;
50-
51-
auto& inAr = dynamic_cast<IStreamArchive&>(ar);
52-
data = inAr.read_buffer(SerializedElementSize * Num);
53-
}
54-
};
55-
56-
struct SATISFACTORYSAVE_API FStaticMeshVertexBuffer {
57-
uint32_t NumTexCoords = 0;
58-
uint32_t NumVertices = 0;
59-
bool bUseFullPrecisionUVs = false;
60-
bool bUseHighPrecisionTangentBasis = false;
61-
62-
ResourceArray TangentsData;
63-
ResourceArray TexcoordData;
64-
65-
void serialize(Archive& ar) {
66-
FStripDataFlags dataFlags;
67-
ar << dataFlags;
68-
dataFlags.validateOnlyEditorDataIsStripped();
69-
70-
ar << NumTexCoords;
71-
ar << NumVertices;
72-
ar << bUseFullPrecisionUVs;
73-
ar << bUseHighPrecisionTangentBasis;
74-
75-
ar << TangentsData;
76-
ar << TexcoordData;
77-
}
78-
};
79-
80-
struct SATISFACTORYSAVE_API FPositionVertexBuffer {
81-
uint32_t Stride = 0;
82-
uint32_t NumVertices = 0;
83-
ResourceArray VertexData;
84-
85-
void serialize(Archive& ar) {
86-
ar << Stride;
87-
ar << NumVertices;
88-
89-
ar << VertexData;
90-
}
91-
};
92-
93-
struct SATISFACTORYSAVE_API FColorVertexBuffer {
94-
uint32_t Stride = 0;
95-
uint32_t NumVertices = 0;
96-
97-
ResourceArray VertexData;
98-
99-
void serialize(Archive& ar) {
100-
FStripDataFlags dataFlags;
101-
ar << dataFlags;
102-
dataFlags.validateOnlyEditorDataIsStripped();
103-
104-
ar << Stride;
105-
ar << NumVertices;
106-
107-
if (NumVertices > 0) {
108-
ar << VertexData;
109-
}
110-
}
111-
};
112-
11342
struct SATISFACTORYSAVE_API FStaticMeshVertexBuffers {
11443
FStaticMeshVertexBuffer StaticMeshVertexBuffer;
11544
FPositionVertexBuffer PositionVertexBuffer;
11645
FColorVertexBuffer ColorVertexBuffer;
11746
};
11847

119-
struct SATISFACTORYSAVE_API FRawStaticIndexBuffer {
120-
ResourceArray IndexStorage;
121-
bool b32Bit = false;
122-
bool bShouldExpandTo32Bit = false;
123-
124-
void serialize(Archive& ar) {
125-
ar << b32Bit;
126-
ar << IndexStorage;
127-
ar << bShouldExpandTo32Bit;
128-
}
129-
};
130-
13148
struct SATISFACTORYSAVE_API FAdditionalStaticMeshIndexBuffers {
13249
FRawStaticIndexBuffer ReversedIndexBuffer;
13350
FRawStaticIndexBuffer ReversedDepthOnlyIndexBuffer;
13451
FRawStaticIndexBuffer WireframeIndexBuffer;
13552
};
13653

137-
struct SATISFACTORYSAVE_API FWeightedRandomSampler {
138-
std::vector<float> Prob; // TArray<float>
139-
std::vector<int32_t> Alias; // TArray<int32>
140-
float TotalWeight = 0.0f;
141-
142-
void serialize(Archive& ar) {
143-
ar << Prob;
144-
ar << Alias;
145-
ar << TotalWeight;
146-
}
147-
};
148-
14954
struct SATISFACTORYSAVE_API FStaticMeshBuffersSize {
15055
uint32_t SerializedBuffersSize = 0;
15156
uint32_t DepthOnlyIBSize = 0;
@@ -256,21 +161,4 @@ namespace SatisfactorySave {
256161
// TODO ...
257162
}
258163
};
259-
260-
// FStaticMesh
261-
class SATISFACTORYSAVE_API StaticMesh {
262-
public:
263-
StaticMesh() = default;
264-
265-
void serialize(Archive& ar);
266-
267-
[[nodiscard]] const FStaticMeshRenderData& renderData() const {
268-
return RenderData;
269-
}
270-
271-
protected:
272-
PropertyList properties_;
273-
std::optional<FGuid> guid_;
274-
FStaticMeshRenderData RenderData;
275-
};
276164
} // namespace SatisfactorySave

0 commit comments

Comments
 (0)