SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Toggle main menu visibility
Loading...
Searching...
No Matches
LumpData.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <vector>
4
5
#include <
sourcepp/parser/Binary.h
>
6
#include <
sourcepp/Math.h
>
7
8
namespace
bsppp
{
9
10
//region Lump 1 (Planes)
11
12
struct
BSPPlane_v0
{
13
sourcepp::math::Vec3f
normal
;
14
float
dist
;
15
int32_t
type
;
16
};
17
18
using
BSPPlane
=
BSPPlane_v0
;
19
20
//endregion
21
22
//region Lump 2 (Texture Data)
23
24
struct
BSPTextureData_v0
{
25
sourcepp::math::Vec3f
reflectivity
;
26
int32_t
nameStringTableID
;
27
int32_t
width
;
28
int32_t
height
;
29
int32_t
viewWidth
;
30
int32_t
viewHeight
;
31
};
32
33
using
BSPTextureData
=
BSPTextureData_v0
;
34
35
//endregion
36
37
//region Lump 3 (Vertices)
38
39
struct
BSPVertex_v0
{
40
sourcepp::math::Vec3f
position
;
41
};
42
43
using
BSPVertex
=
BSPVertex_v0
;
44
45
//endregion
46
47
//region Lump 5 (Nodes)
48
49
struct
BSPNode_v0
{
50
uint32_t
planeNum
;
51
sourcepp::math::Vec2i
children
;
52
sourcepp::math::Vec3i16
mins
;
53
sourcepp::math::Vec3i16
maxs
;
54
uint16_t
firstFace
;
55
uint16_t
numFaces
;
56
int16_t
area
;
57
uint16_t
_unused0
;
58
};
59
60
struct
BSPNode_v1
{
61
uint32_t
planeNum
;
62
sourcepp::math::Vec2i
children
;
63
sourcepp::math::Vec3f
mins
;
64
sourcepp::math::Vec3f
maxs
;
65
uint32_t
firstFace
;
66
uint32_t
numFaces
;
67
int16_t
area
;
68
69
[[nodiscard]]
static
BSPNode_v1
upgrade
(
const
BSPNode_v0
& old) {
70
return
{
71
old.
planeNum
,
72
{
73
old.
children
[0],
74
old.
children
[1],
75
},
76
{
77
static_cast<
float
>
(old.
mins
[0]),
78
static_cast<
float
>
(old.
mins
[1]),
79
static_cast<
float
>
(old.
mins
[2]),
80
},
81
{
82
static_cast<
float
>
(old.
maxs
[0]),
83
static_cast<
float
>
(old.
maxs
[1]),
84
static_cast<
float
>
(old.
maxs
[2]),
85
},
86
old.
firstFace
,
87
old.
numFaces
,
88
old.
area
,
89
};
90
}
91
};
92
93
using
BSPNode
=
BSPNode_v1
;
94
95
//endregion
96
97
//region Lump 6 (Texture Info)
98
99
struct
BSPTextureInfo_v0
{
100
sourcepp::math::Vec4f
textureVector1
;
101
sourcepp::math::Vec4f
textureVector2
;
102
sourcepp::math::Vec4f
lightmapVector1
;
103
sourcepp::math::Vec4f
lightmapVector2
;
104
int32_t
flags
;
105
int32_t
textureData
;
106
};
107
108
using
BSPTextureInfo
=
BSPTextureInfo_v0
;
109
110
//endregion
111
112
//region Lump 7/27 (Faces/Original Faces)
113
114
struct
BSPFace_v1
{
115
uint16_t
planeNum
;
116
uint8_t
side
;
117
uint8_t
onNode
;
118
int32_t
firstEdge
;
119
int16_t
numEdges
;
120
int16_t
texInfo
;
121
int16_t
dispInfo
;
122
int16_t
surfaceFogVolumeID
;
123
sourcepp::math::Vec4ui8
styles
;
124
int32_t
lightOffset
;
125
float
area
;
126
sourcepp::math::Vec2i
lightmapTextureMinsInLuxels
;
127
sourcepp::math::Vec2i
lightmapTextureSizeInLuxels
;
128
int32_t
originalFace
;
129
uint16_t
numPrims
;
130
uint16_t
firstPrimID
;
131
uint32_t
smoothingGroups
;
132
};
133
134
struct
BSPFace_v2
{
135
uint32_t
planeNum
;
136
uint8_t
side
;
137
uint8_t
onNode
;
138
int32_t
firstEdge
;
139
int32_t
numEdges
;
140
int32_t
texInfo
;
141
int32_t
dispInfo
;
142
int32_t
surfaceFogVolumeID
;
143
sourcepp::math::Vec4ui8
styles
;
144
int32_t
lightOffset
;
145
float
area
;
146
sourcepp::math::Vec2i
lightmapTextureMinsInLuxels
;
147
sourcepp::math::Vec2i
lightmapTextureSizeInLuxels
;
148
int32_t
originalFace
;
149
uint32_t
enableShadows
: 1;
150
uint32_t
numPrims
: 31;
151
uint32_t
firstPrimID
;
152
uint32_t
smoothingGroups
;
153
154
[[nodiscard]]
static
BSPFace_v2
upgrade
(
const
BSPFace_v1
& old) {
155
return
{
156
old.
planeNum
,
157
old.
side
,
158
old.
onNode
,
159
old.
firstEdge
,
160
old.
numEdges
,
161
old.
texInfo
,
162
old.
dispInfo
,
163
old.
surfaceFogVolumeID
,
164
{
165
old.
styles
[0],
166
old.
styles
[1],
167
old.
styles
[2],
168
old.
styles
[3],
169
},
170
old.
lightOffset
,
171
old.
area
,
172
{
173
old.
lightmapTextureMinsInLuxels
[0],
174
old.
lightmapTextureMinsInLuxels
[1],
175
},
176
{
177
old.
lightmapTextureSizeInLuxels
[0],
178
old.
lightmapTextureSizeInLuxels
[1],
179
},
180
old.
originalFace
,
181
1,
182
old.
numPrims
,
183
old.
firstPrimID
,
184
old.
smoothingGroups
,
185
};
186
}
187
};
188
189
using
BSPFace
=
BSPFace_v2
;
190
191
//endregion
192
193
//region Lump 12 (Edges)
194
195
struct
BSPEdge_v0
{
196
uint16_t
v0
;
197
uint16_t
v1
;
198
};
199
200
struct
BSPEdge_v1
{
201
uint32_t
v0
;
202
uint32_t
v1
;
203
204
[[nodiscard]]
static
BSPEdge_v1
upgrade
(
const
BSPEdge_v0
& old) {
205
return
{
206
old.
v0
,
207
old.
v1
,
208
};
209
}
210
};
211
212
using
BSPEdge
=
BSPEdge_v1
;
213
214
//endregion
215
216
//region Lump 13 (SurfEdges)
217
218
struct
BSPSurfEdge_v0
{
219
int32_t
surfEdge
;
220
};
221
222
using
BSPSurfEdge
=
BSPSurfEdge_v0
;
223
224
//endregion
225
226
//region Lump 14 (Brush Models)
227
228
struct
BSPBrushModel_v0
{
229
sourcepp::math::Vec3f
min
;
230
sourcepp::math::Vec3f
max
;
231
sourcepp::math::Vec3f
origin
;
232
int32_t
headNode
;
233
int32_t
firstFace
;
234
int32_t
numFaces
;
235
};
236
237
using
BSPBrushModel
=
BSPBrushModel_v0
;
238
239
//endregion
240
241
//region Lump 35 (Game Lump)
242
243
struct
BSPGameLump
{
244
enum
Signature
: uint32_t {
245
SIGNATURE_STATIC_PROPS
=
sourcepp::parser::binary::makeFourCC
(
"sprp"
),
246
SIGNATURE_DETAIL_PROPS
=
sourcepp::parser::binary::makeFourCC
(
"dprp"
),
247
SIGNATURE_DETAIL_PROP_LIGHTING_LDR
=
sourcepp::parser::binary::makeFourCC
(
"dplt"
),
248
SIGNATURE_DETAIL_PROP_LIGHTING_HDR
=
sourcepp::parser::binary::makeFourCC
(
"dplh"
),
249
}
signature
;
250
uint16_t
isCompressed
;
251
uint16_t
version
;
252
// Offset from beginning of file, not game lump (except Portal 2 on console but we'll ignore that for now)
253
uint32_t
offset
;
254
// Compressed size is determined by subtracting the next entry's offset with this one like VTF resources
255
uint32_t
uncompressedLength
;
256
257
std::vector<std::byte>
data
;
258
};
259
260
//endregion
261
262
}
// namespace bsppp
Binary.h
Math.h
bsppp
Definition
BSP.h:18
bsppp::BSPPlane
BSPPlane_v0 BSPPlane
Definition
LumpData.h:18
bsppp::BSPVertex
BSPVertex_v0 BSPVertex
Definition
LumpData.h:43
bsppp::BSPFace
BSPFace_v2 BSPFace
Definition
LumpData.h:189
bsppp::BSPEdge
BSPEdge_v1 BSPEdge
Definition
LumpData.h:212
bsppp::BSPTextureData
BSPTextureData_v0 BSPTextureData
Definition
LumpData.h:33
bsppp::BSPTextureInfo
BSPTextureInfo_v0 BSPTextureInfo
Definition
LumpData.h:108
bsppp::BSPNode
BSPNode_v1 BSPNode
Definition
LumpData.h:93
bsppp::BSPBrushModel
BSPBrushModel_v0 BSPBrushModel
Definition
LumpData.h:237
bsppp::BSPSurfEdge
BSPSurfEdge_v0 BSPSurfEdge
Definition
LumpData.h:222
sourcepp::parser::binary::makeFourCC
consteval uint32_t makeFourCC(const char fourCC[4])
Creates a FourCC identifier from a string of 4 characters.
Definition
Binary.h:20
bsppp::BSPBrushModel_v0
Definition
LumpData.h:228
bsppp::BSPBrushModel_v0::firstFace
int32_t firstFace
Definition
LumpData.h:233
bsppp::BSPBrushModel_v0::headNode
int32_t headNode
Definition
LumpData.h:232
bsppp::BSPBrushModel_v0::numFaces
int32_t numFaces
Definition
LumpData.h:234
bsppp::BSPBrushModel_v0::min
sourcepp::math::Vec3f min
Definition
LumpData.h:229
bsppp::BSPBrushModel_v0::origin
sourcepp::math::Vec3f origin
Definition
LumpData.h:231
bsppp::BSPBrushModel_v0::max
sourcepp::math::Vec3f max
Definition
LumpData.h:230
bsppp::BSPEdge_v0
Definition
LumpData.h:195
bsppp::BSPEdge_v0::v1
uint16_t v1
Definition
LumpData.h:197
bsppp::BSPEdge_v0::v0
uint16_t v0
Definition
LumpData.h:196
bsppp::BSPEdge_v1
Definition
LumpData.h:200
bsppp::BSPEdge_v1::v0
uint32_t v0
Definition
LumpData.h:201
bsppp::BSPEdge_v1::upgrade
static BSPEdge_v1 upgrade(const BSPEdge_v0 &old)
Definition
LumpData.h:204
bsppp::BSPEdge_v1::v1
uint32_t v1
Definition
LumpData.h:202
bsppp::BSPFace_v1
Definition
LumpData.h:114
bsppp::BSPFace_v1::lightOffset
int32_t lightOffset
Definition
LumpData.h:124
bsppp::BSPFace_v1::styles
sourcepp::math::Vec4ui8 styles
Definition
LumpData.h:123
bsppp::BSPFace_v1::surfaceFogVolumeID
int16_t surfaceFogVolumeID
Definition
LumpData.h:122
bsppp::BSPFace_v1::lightmapTextureMinsInLuxels
sourcepp::math::Vec2i lightmapTextureMinsInLuxels
Definition
LumpData.h:126
bsppp::BSPFace_v1::texInfo
int16_t texInfo
Definition
LumpData.h:120
bsppp::BSPFace_v1::smoothingGroups
uint32_t smoothingGroups
Definition
LumpData.h:131
bsppp::BSPFace_v1::lightmapTextureSizeInLuxels
sourcepp::math::Vec2i lightmapTextureSizeInLuxels
Definition
LumpData.h:127
bsppp::BSPFace_v1::area
float area
Definition
LumpData.h:125
bsppp::BSPFace_v1::numEdges
int16_t numEdges
Definition
LumpData.h:119
bsppp::BSPFace_v1::side
uint8_t side
Definition
LumpData.h:116
bsppp::BSPFace_v1::originalFace
int32_t originalFace
Definition
LumpData.h:128
bsppp::BSPFace_v1::planeNum
uint16_t planeNum
Definition
LumpData.h:115
bsppp::BSPFace_v1::firstEdge
int32_t firstEdge
Definition
LumpData.h:118
bsppp::BSPFace_v1::onNode
uint8_t onNode
Definition
LumpData.h:117
bsppp::BSPFace_v1::firstPrimID
uint16_t firstPrimID
Definition
LumpData.h:130
bsppp::BSPFace_v1::numPrims
uint16_t numPrims
Definition
LumpData.h:129
bsppp::BSPFace_v1::dispInfo
int16_t dispInfo
Definition
LumpData.h:121
bsppp::BSPFace_v2
Definition
LumpData.h:134
bsppp::BSPFace_v2::planeNum
uint32_t planeNum
Definition
LumpData.h:135
bsppp::BSPFace_v2::upgrade
static BSPFace_v2 upgrade(const BSPFace_v1 &old)
Definition
LumpData.h:154
bsppp::BSPFace_v2::surfaceFogVolumeID
int32_t surfaceFogVolumeID
Definition
LumpData.h:142
bsppp::BSPFace_v2::numEdges
int32_t numEdges
Definition
LumpData.h:139
bsppp::BSPFace_v2::numPrims
uint32_t numPrims
Definition
LumpData.h:150
bsppp::BSPFace_v2::originalFace
int32_t originalFace
Definition
LumpData.h:148
bsppp::BSPFace_v2::area
float area
Definition
LumpData.h:145
bsppp::BSPFace_v2::side
uint8_t side
Definition
LumpData.h:136
bsppp::BSPFace_v2::lightOffset
int32_t lightOffset
Definition
LumpData.h:144
bsppp::BSPFace_v2::smoothingGroups
uint32_t smoothingGroups
Definition
LumpData.h:152
bsppp::BSPFace_v2::lightmapTextureMinsInLuxels
sourcepp::math::Vec2i lightmapTextureMinsInLuxels
Definition
LumpData.h:146
bsppp::BSPFace_v2::enableShadows
uint32_t enableShadows
Definition
LumpData.h:149
bsppp::BSPFace_v2::styles
sourcepp::math::Vec4ui8 styles
Definition
LumpData.h:143
bsppp::BSPFace_v2::firstPrimID
uint32_t firstPrimID
Definition
LumpData.h:151
bsppp::BSPFace_v2::onNode
uint8_t onNode
Definition
LumpData.h:137
bsppp::BSPFace_v2::lightmapTextureSizeInLuxels
sourcepp::math::Vec2i lightmapTextureSizeInLuxels
Definition
LumpData.h:147
bsppp::BSPFace_v2::dispInfo
int32_t dispInfo
Definition
LumpData.h:141
bsppp::BSPFace_v2::texInfo
int32_t texInfo
Definition
LumpData.h:140
bsppp::BSPFace_v2::firstEdge
int32_t firstEdge
Definition
LumpData.h:138
bsppp::BSPGameLump
Definition
LumpData.h:243
bsppp::BSPGameLump::uncompressedLength
uint32_t uncompressedLength
Definition
LumpData.h:255
bsppp::BSPGameLump::Signature
Signature
Definition
LumpData.h:244
bsppp::BSPGameLump::SIGNATURE_STATIC_PROPS
@ SIGNATURE_STATIC_PROPS
Definition
LumpData.h:245
bsppp::BSPGameLump::SIGNATURE_DETAIL_PROP_LIGHTING_LDR
@ SIGNATURE_DETAIL_PROP_LIGHTING_LDR
Definition
LumpData.h:247
bsppp::BSPGameLump::SIGNATURE_DETAIL_PROPS
@ SIGNATURE_DETAIL_PROPS
Definition
LumpData.h:246
bsppp::BSPGameLump::SIGNATURE_DETAIL_PROP_LIGHTING_HDR
@ SIGNATURE_DETAIL_PROP_LIGHTING_HDR
Definition
LumpData.h:248
bsppp::BSPGameLump::data
std::vector< std::byte > data
Definition
LumpData.h:257
bsppp::BSPGameLump::offset
uint32_t offset
Definition
LumpData.h:253
bsppp::BSPGameLump::signature
enum bsppp::BSPGameLump::Signature signature
bsppp::BSPGameLump::version
uint16_t version
Definition
LumpData.h:251
bsppp::BSPGameLump::isCompressed
uint16_t isCompressed
Definition
LumpData.h:250
bsppp::BSPNode_v0
Definition
LumpData.h:49
bsppp::BSPNode_v0::numFaces
uint16_t numFaces
Definition
LumpData.h:55
bsppp::BSPNode_v0::_unused0
uint16_t _unused0
Definition
LumpData.h:57
bsppp::BSPNode_v0::area
int16_t area
Definition
LumpData.h:56
bsppp::BSPNode_v0::children
sourcepp::math::Vec2i children
Definition
LumpData.h:51
bsppp::BSPNode_v0::planeNum
uint32_t planeNum
Definition
LumpData.h:50
bsppp::BSPNode_v0::mins
sourcepp::math::Vec3i16 mins
Definition
LumpData.h:52
bsppp::BSPNode_v0::firstFace
uint16_t firstFace
Definition
LumpData.h:54
bsppp::BSPNode_v0::maxs
sourcepp::math::Vec3i16 maxs
Definition
LumpData.h:53
bsppp::BSPNode_v1
Definition
LumpData.h:60
bsppp::BSPNode_v1::upgrade
static BSPNode_v1 upgrade(const BSPNode_v0 &old)
Definition
LumpData.h:69
bsppp::BSPNode_v1::numFaces
uint32_t numFaces
Definition
LumpData.h:66
bsppp::BSPNode_v1::planeNum
uint32_t planeNum
Definition
LumpData.h:61
bsppp::BSPNode_v1::mins
sourcepp::math::Vec3f mins
Definition
LumpData.h:63
bsppp::BSPNode_v1::area
int16_t area
Definition
LumpData.h:67
bsppp::BSPNode_v1::children
sourcepp::math::Vec2i children
Definition
LumpData.h:62
bsppp::BSPNode_v1::maxs
sourcepp::math::Vec3f maxs
Definition
LumpData.h:64
bsppp::BSPNode_v1::firstFace
uint32_t firstFace
Definition
LumpData.h:65
bsppp::BSPPlane_v0
Definition
LumpData.h:12
bsppp::BSPPlane_v0::normal
sourcepp::math::Vec3f normal
Definition
LumpData.h:13
bsppp::BSPPlane_v0::dist
float dist
Definition
LumpData.h:14
bsppp::BSPPlane_v0::type
int32_t type
Definition
LumpData.h:15
bsppp::BSPSurfEdge_v0
Definition
LumpData.h:218
bsppp::BSPSurfEdge_v0::surfEdge
int32_t surfEdge
Definition
LumpData.h:219
bsppp::BSPTextureData_v0
Definition
LumpData.h:24
bsppp::BSPTextureData_v0::viewHeight
int32_t viewHeight
Definition
LumpData.h:30
bsppp::BSPTextureData_v0::width
int32_t width
Definition
LumpData.h:27
bsppp::BSPTextureData_v0::height
int32_t height
Definition
LumpData.h:28
bsppp::BSPTextureData_v0::viewWidth
int32_t viewWidth
Definition
LumpData.h:29
bsppp::BSPTextureData_v0::nameStringTableID
int32_t nameStringTableID
Definition
LumpData.h:26
bsppp::BSPTextureData_v0::reflectivity
sourcepp::math::Vec3f reflectivity
Definition
LumpData.h:25
bsppp::BSPTextureInfo_v0
Definition
LumpData.h:99
bsppp::BSPTextureInfo_v0::flags
int32_t flags
Definition
LumpData.h:104
bsppp::BSPTextureInfo_v0::textureData
int32_t textureData
Definition
LumpData.h:105
bsppp::BSPTextureInfo_v0::textureVector2
sourcepp::math::Vec4f textureVector2
Definition
LumpData.h:101
bsppp::BSPTextureInfo_v0::lightmapVector2
sourcepp::math::Vec4f lightmapVector2
Definition
LumpData.h:103
bsppp::BSPTextureInfo_v0::lightmapVector1
sourcepp::math::Vec4f lightmapVector1
Definition
LumpData.h:102
bsppp::BSPTextureInfo_v0::textureVector1
sourcepp::math::Vec4f textureVector1
Definition
LumpData.h:100
bsppp::BSPVertex_v0
Definition
LumpData.h:39
bsppp::BSPVertex_v0::position
sourcepp::math::Vec3f position
Definition
LumpData.h:40
include
bsppp
LumpData.h
Generated on
for SourcePP by
1.17.0