Merge remote-tracking branch 'origin/master' into qbsp-contentflags
This commit is contained in:
commit
d56418ae95
|
|
@ -197,6 +197,33 @@ static void serialize_bsp(const bspdata_t &bspdata, const char *name) {
|
||||||
texinfo.push_back({ "nexttexinfo", src_texinfo.nexttexinfo });
|
texinfo.push_back({ "nexttexinfo", src_texinfo.nexttexinfo });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bsp.numfaces) {
|
||||||
|
json &faces = (j.emplace("faces", json::array())).first.value();
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < bsp.numfaces; i++) {
|
||||||
|
json &face = faces.insert(faces.end(), json::object()).value();
|
||||||
|
auto &src_face = bsp.dfaces[i];
|
||||||
|
|
||||||
|
face.push_back({ "planenum", src_face.planenum });
|
||||||
|
face.push_back({ "side", src_face.side });
|
||||||
|
face.push_back({ "firstedge", src_face.firstedge });
|
||||||
|
face.push_back({ "numedges", src_face.numedges });
|
||||||
|
face.push_back({ "texinfo", src_face.texinfo });
|
||||||
|
face.push_back({ "styles", json::array({ src_face.styles[0], src_face.styles[1], src_face.styles[2], src_face.styles[3] }) });
|
||||||
|
face.push_back({ "lightofs", src_face.lightofs });
|
||||||
|
|
||||||
|
// for readibility, also output the actual vertices
|
||||||
|
auto verts = json::array();
|
||||||
|
for (int32_t k = 0; k < src_face.numedges; ++k) {
|
||||||
|
auto se = bsp.dsurfedges[src_face.firstedge + k];
|
||||||
|
uint32_t v = (se < 0) ? bsp.dedges[-se].v[1] : bsp.dedges[se].v[0];
|
||||||
|
auto dv = bsp.dvertexes[v];
|
||||||
|
verts.push_back(json::array({ dv.point[0], dv.point[1], dv.point[2] }));
|
||||||
|
}
|
||||||
|
face.push_back({ "vertices", verts });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (bsp.numclipnodes) {
|
if (bsp.numclipnodes) {
|
||||||
json &clipnodes = (j.emplace("clipnodes", json::array())).first.value();
|
json &clipnodes = (j.emplace("clipnodes", json::array())).first.value();
|
||||||
|
|
@ -210,6 +237,32 @@ static void serialize_bsp(const bspdata_t &bspdata, const char *name) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bsp.numedges) {
|
||||||
|
json &edges = (j.emplace("edges", json::array())).first.value();
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < bsp.numedges; i++) {
|
||||||
|
auto &src_edge = bsp.dedges[i];
|
||||||
|
|
||||||
|
edges.insert(edges.end(), json::array({src_edge.v[0], src_edge.v[1]}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bsp.numleaffaces) {
|
||||||
|
json &leaffaces = (j.emplace("leaffaces", json::array())).first.value();
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < bsp.numleaffaces; i++) {
|
||||||
|
leaffaces.insert(leaffaces.end(), bsp.dleaffaces[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bsp.numsurfedges) {
|
||||||
|
json &surfedges = (j.emplace("surfedges", json::array())).first.value();
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < bsp.numsurfedges; i++) {
|
||||||
|
surfedges.insert(surfedges.end(), bsp.dsurfedges[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (bsp.numbrushsides) {
|
if (bsp.numbrushsides) {
|
||||||
json &brushsides = (j.emplace("brushsides", json::array())).first.value();
|
json &brushsides = (j.emplace("brushsides", json::array())).first.value();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ light invalid_texture_axes.map || exit 1
|
||||||
# work in game at the same time.
|
# work in game at the same time.
|
||||||
|
|
||||||
HASH_CHECK_BSPS="qbsp_func_detail.bsp \
|
HASH_CHECK_BSPS="qbsp_func_detail.bsp \
|
||||||
|
qbsp_func_detail_illusionary_plus_water.bsp \
|
||||||
e1m1-bsp29.bsp \
|
e1m1-bsp29.bsp \
|
||||||
e1m1-bsp2.bsp \
|
e1m1-bsp2.bsp \
|
||||||
e1m1-2psb.bsp \
|
e1m1-2psb.bsp \
|
||||||
|
|
@ -49,7 +50,9 @@ qbspfeatures.bsp"
|
||||||
|
|
||||||
HASH_CHECK_PRTS=${HASH_CHECK_BSPS//.bsp/.prt}
|
HASH_CHECK_PRTS=${HASH_CHECK_BSPS//.bsp/.prt}
|
||||||
|
|
||||||
|
# smaller test maps for specific features/combinations
|
||||||
qbsp -noverbose qbsp_func_detail.map || exit 1
|
qbsp -noverbose qbsp_func_detail.map || exit 1
|
||||||
|
qbsp -noverbose qbsp_func_detail_illusionary_plus_water.bsp || exit 1
|
||||||
|
|
||||||
qbsp -noverbose quake_map_source/E1M1.map e1m1-bsp29.bsp || exit 1
|
qbsp -noverbose quake_map_source/E1M1.map e1m1-bsp29.bsp || exit 1
|
||||||
qbsp -noverbose -bsp2 quake_map_source/E1M1.map e1m1-bsp2.bsp || exit 1
|
qbsp -noverbose -bsp2 quake_map_source/E1M1.map e1m1-bsp2.bsp || exit 1
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
416e68cd92c817f206c11006db21bd6b0cbc330eee63bdfc66afc5152b406760 *qbsp_func_detail.bsp
|
416e68cd92c817f206c11006db21bd6b0cbc330eee63bdfc66afc5152b406760 *qbsp_func_detail.bsp
|
||||||
|
c338b813b6529e5cd790720e3bc6a9e8f74e02e3348db04756174403f3331b8c *qbsp_func_detail_illusionary_plus_water.bsp
|
||||||
c9683e945bb01528a768653cdb79584dfbc8be6f76b712cbf0d24482a4ae3cc3 *e1m1-bsp29.bsp
|
c9683e945bb01528a768653cdb79584dfbc8be6f76b712cbf0d24482a4ae3cc3 *e1m1-bsp29.bsp
|
||||||
a8024b07d48abc0553ff3628d6d4cb62138f67808b425b833e5643068231c2e4 *e1m1-bsp2.bsp
|
a8024b07d48abc0553ff3628d6d4cb62138f67808b425b833e5643068231c2e4 *e1m1-bsp2.bsp
|
||||||
cb11d4f40d92c9d349fd11f9e4901e9cd9aa82db9971181a615c197f75f4b4a6 *e1m1-2psb.bsp
|
cb11d4f40d92c9d349fd11f9e4901e9cd9aa82db9971181a615c197f75f4b4a6 *e1m1-2psb.bsp
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
45d60368c37ee3523f9a1dbc140f34ae7728fc13d3cb8a43e7b22caefe46edb1 *qbsp_func_detail.bsp
|
45d60368c37ee3523f9a1dbc140f34ae7728fc13d3cb8a43e7b22caefe46edb1 *qbsp_func_detail.bsp
|
||||||
|
565e9aef399341eef99fc37212d7ab314df8f6dd850a8ca5a471661088d7d3bc *qbsp_func_detail_illusionary_plus_water.bsp
|
||||||
d289427e3c8a7046dce509a83401f6732a9c5f8194f8beb3eee431e33215656c *e1m1-bsp29.bsp
|
d289427e3c8a7046dce509a83401f6732a9c5f8194f8beb3eee431e33215656c *e1m1-bsp29.bsp
|
||||||
85002a12afa023d850199e205f01fc58de2743f97aea9b2a22a3b0ac3ce8f7ad *e1m1-bsp2.bsp
|
85002a12afa023d850199e205f01fc58de2743f97aea9b2a22a3b0ac3ce8f7ad *e1m1-bsp2.bsp
|
||||||
832ec9aff302ddfcc5ab4fe0911afec0b4d57c60e02dc1c8f61e1edbf8f53eda *e1m1-2psb.bsp
|
832ec9aff302ddfcc5ab4fe0911afec0b4d57c60e02dc1c8f61e1edbf8f53eda *e1m1-2psb.bsp
|
||||||
|
|
@ -10,6 +11,7 @@ d289427e3c8a7046dce509a83401f6732a9c5f8194f8beb3eee431e33215656c *e1m1-bsp29.bsp
|
||||||
af7bc468d76aa1b11d1881a3378877059c6fd33fb37bea555d332e17d0e1e23c *e1m1-bsp29-onlyents.bsp
|
af7bc468d76aa1b11d1881a3378877059c6fd33fb37bea555d332e17d0e1e23c *e1m1-bsp29-onlyents.bsp
|
||||||
9f6db65a0c8a3eaa369deb3bb3168b5da69f23eb80a12788ff50d3c30b8a469a *qbspfeatures.bsp
|
9f6db65a0c8a3eaa369deb3bb3168b5da69f23eb80a12788ff50d3c30b8a469a *qbspfeatures.bsp
|
||||||
abf3633d5a6d0e167ce9bacec476d3408c8240df5f3d72d14867cd201d4e3674 *qbsp_func_detail.prt
|
abf3633d5a6d0e167ce9bacec476d3408c8240df5f3d72d14867cd201d4e3674 *qbsp_func_detail.prt
|
||||||
|
c0995c6b92256fa048c1a755ebe7e07f5fae33cb64e3c53adc234380fe44f267 *qbsp_func_detail_illusionary_plus_water.prt
|
||||||
08349ab23c97120c41493d8fb00b9a6c41553aba64b1710ba11cc5bdfbe51e45 *e1m1-bsp29.prt
|
08349ab23c97120c41493d8fb00b9a6c41553aba64b1710ba11cc5bdfbe51e45 *e1m1-bsp29.prt
|
||||||
08349ab23c97120c41493d8fb00b9a6c41553aba64b1710ba11cc5bdfbe51e45 *e1m1-bsp2.prt
|
08349ab23c97120c41493d8fb00b9a6c41553aba64b1710ba11cc5bdfbe51e45 *e1m1-bsp2.prt
|
||||||
08349ab23c97120c41493d8fb00b9a6c41553aba64b1710ba11cc5bdfbe51e45 *e1m1-2psb.prt
|
08349ab23c97120c41493d8fb00b9a6c41553aba64b1710ba11cc5bdfbe51e45 *e1m1-2psb.prt
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,96 @@
|
||||||
|
// Game: Quake
|
||||||
|
// Format: Valve
|
||||||
|
// entity 0
|
||||||
|
{
|
||||||
|
"mapversion" "220"
|
||||||
|
"classname" "worldspawn"
|
||||||
|
"wad" "deprecated/fence.wad;deprecated/free_wad.wad"
|
||||||
|
// brush 0
|
||||||
|
{
|
||||||
|
( -160 -256 80 ) ( -160 64 16 ) ( -160 64 80 ) *swater4 [ 0 -1 0 -16 ] [ 0 0 -1 0 ] 0 6 6
|
||||||
|
( 192 -432 80 ) ( -64 -432 16 ) ( -64 -432 80 ) *swater4 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 6 6
|
||||||
|
( 192 64 16 ) ( -64 -256 16 ) ( 192 -256 16 ) *swater4 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 6 6
|
||||||
|
( 192 64 80 ) ( -64 -256 80 ) ( -64 64 80 ) *swater4 [ 1 0 0 0 ] [ 0 -1 0 -16 ] 0 6 6
|
||||||
|
( 192 176 80 ) ( -64 176 16 ) ( 192 176 16 ) *swater4 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 6 6
|
||||||
|
( 288 64 80 ) ( 288 -256 16 ) ( 288 -256 80 ) *swater4 [ 0 -1 0 -16 ] [ 0 0 -1 0 ] 0 6 6
|
||||||
|
}
|
||||||
|
// brush 1
|
||||||
|
{
|
||||||
|
( -176 -256 -16 ) ( -176 -255 -16 ) ( -176 -256 -15 ) tsl_wall1 [ 0 -1 0 0 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
( -176 -432 -16 ) ( -176 -432 -15 ) ( -175 -432 -16 ) tsl_wall1 [ 1 0 0 16 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
( -176 -256 16 ) ( -175 -256 16 ) ( -176 -255 16 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 -1 0 0 ] 0 6 6
|
||||||
|
( -160 192 272 ) ( -160 193 272 ) ( -159 192 272 ) tsl_wall1 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 6 6
|
||||||
|
( -160 176 0 ) ( -159 176 0 ) ( -160 176 1 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
( -160 192 0 ) ( -160 192 1 ) ( -160 193 0 ) tsl_wall1 [ 0 1 0 0 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
}
|
||||||
|
// brush 2
|
||||||
|
{
|
||||||
|
( -160 176 8 ) ( -160 177 8 ) ( -160 176 9 ) tsl_wall1 [ 0 1.0000000000000002 0 -32 ] [ 0 0 -1.0000000000000002 16 ] 0 6 6
|
||||||
|
( -160 176 8 ) ( -160 176 9 ) ( -159 176 8 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
( -160 176 16 ) ( -159 176 16 ) ( -160 177 16 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 -40 ] 0 6 6
|
||||||
|
( 288 192 272 ) ( 288 193 272 ) ( 289 192 272 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 48 ] 0 6 6
|
||||||
|
( 288 192 16 ) ( 289 192 16 ) ( 288 192 17 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
( 288 192 16 ) ( 288 192 17 ) ( 288 193 16 ) tsl_wall1 [ 0 -1.0000000000000002 0 0 ] [ 0 0 -1.0000000000000002 16 ] 0 6 6
|
||||||
|
}
|
||||||
|
// brush 3
|
||||||
|
{
|
||||||
|
( -160 -112 16 ) ( -160 -111 16 ) ( -160 -112 17 ) orangestuff8 [ 0 1 0 -16 ] [ 0 0 -1 -16 ] 0 6 6
|
||||||
|
( -80 -432 0 ) ( -81 -432 0 ) ( -80 -432 1 ) orangestuff8 [ -1 0 0 16 ] [ 0 0 -1 -16 ] 180 6 6
|
||||||
|
( -80 -432 0 ) ( -80 -431 0 ) ( -81 -432 0 ) orangestuff8 [ 1 0 0 -16 ] [ 0 -1 0 16 ] 180 6 6
|
||||||
|
( -160 -112 16 ) ( -161 -112 16 ) ( -160 -111 16 ) orangestuff8 [ -1 0 0 16 ] [ 0 -1 0 16 ] 180 6 6
|
||||||
|
( -160 176 16 ) ( -160 176 17 ) ( -161 176 16 ) orangestuff8 [ 1 0 0 -16 ] [ 0 0 -1 -16 ] 180 6 6
|
||||||
|
( 288 -432 0 ) ( 288 -432 1 ) ( 288 -431 0 ) orangestuff8 [ 0 -1 0 16 ] [ 0 0 -1 -16 ] 0 6 6
|
||||||
|
}
|
||||||
|
// brush 4
|
||||||
|
{
|
||||||
|
( -160 -448 8 ) ( -160 -447 8 ) ( -160 -448 9 ) tsl_wall1 [ 0 1.0000000000000002 0 80 ] [ 0 0 -1.0000000000000002 16 ] 0 6 6
|
||||||
|
( -160 -448 8 ) ( -160 -448 9 ) ( -159 -448 8 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
( -160 -448 16 ) ( -159 -448 16 ) ( -160 -447 16 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 72 ] 0 6 6
|
||||||
|
( 288 -432 272 ) ( 288 -431 272 ) ( 289 -432 272 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 -64 ] 0 6 6
|
||||||
|
( 288 -432 16 ) ( 289 -432 16 ) ( 288 -432 17 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
( 288 -432 16 ) ( 288 -432 17 ) ( 288 -431 16 ) tsl_wall1 [ 0 -1.0000000000000002 0 -112 ] [ 0 0 -1.0000000000000002 16 ] 0 6 6
|
||||||
|
}
|
||||||
|
// brush 5
|
||||||
|
{
|
||||||
|
( -160 -256 272 ) ( -160 -255 272 ) ( -160 -256 273 ) orangestuff8 [ 0 0 -1.0000000000000002 -16 ] [ 0 -1.0000000000000002 0 0 ] 180 6 6
|
||||||
|
( 288 -432 280 ) ( 288 -432 281 ) ( 289 -432 280 ) orangestuff8 [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 0 ] 180 6 6
|
||||||
|
( -160 -256 272 ) ( -159 -256 272 ) ( -160 -255 272 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 6 6
|
||||||
|
( 288 176 288 ) ( 288 177 288 ) ( 289 176 288 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 6 6
|
||||||
|
( 288 176 280 ) ( 289 176 280 ) ( 288 176 281 ) orangestuff8 [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 0 ] 180 6 6
|
||||||
|
( 288 176 280 ) ( 288 176 281 ) ( 288 177 280 ) orangestuff8 [ 0 0 1.0000000000000002 16 ] [ 0 -1.0000000000000002 0 0 ] 180 6 6
|
||||||
|
}
|
||||||
|
// brush 6
|
||||||
|
{
|
||||||
|
( 288 192 0 ) ( 288 193 0 ) ( 288 192 1 ) tsl_wall1 [ 0 1 0 0 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
( 304 -432 -16 ) ( 303 -432 -16 ) ( 304 -432 -15 ) tsl_wall1 [ -1 0 0 16 ] [ 0 0 -1 16 ] 180 6 6
|
||||||
|
( 304 -256 16 ) ( 304 -255 16 ) ( 303 -256 16 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 -1 0 0 ] 180 6 6
|
||||||
|
( 304 -256 272 ) ( 303 -256 272 ) ( 304 -255 272 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 -1 0 0 ] 180 6 6
|
||||||
|
( 288 176 0 ) ( 288 176 1 ) ( 287 176 0 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 0 -1 16 ] 180 6 6
|
||||||
|
( 304 -256 -16 ) ( 304 -256 -15 ) ( 304 -255 -16 ) tsl_wall1 [ 0 -1 0 0 ] [ 0 0 -1 16 ] 0 6 6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// entity 1
|
||||||
|
{
|
||||||
|
"classname" "func_detail_illusionary"
|
||||||
|
"_mirrorinside" "1"
|
||||||
|
// brush 0
|
||||||
|
{
|
||||||
|
( 16 -144 48 ) ( 16 -143 48 ) ( 16 -144 49 ) {trigger [ 0 1.0000000000000002 0 42.666664 ] [ 0 0 -1.0000000000000002 -32 ] 0 6 6
|
||||||
|
( 16 -104 48 ) ( 16 -104 49 ) ( 17 -104 48 ) {trigger [ -1 0 0 32 ] [ 0 0 -1 -32 ] 0 6 6
|
||||||
|
( 16 -144 16 ) ( 17 -144 16 ) ( 16 -143 16 ) {trigger [ -1.0000000000000002 0 0 32 ] [ 0 1.0000000000000002 0 -21.333336 ] 0 6 6
|
||||||
|
( 96 -128 128 ) ( 96 -127 128 ) ( 97 -128 128 ) {trigger [ -1.0000000000000002 0 0 32 ] [ 0 -1.0000000000000002 0 -8 ] 0 6 6
|
||||||
|
( 96 -80 64 ) ( 97 -80 64 ) ( 96 -80 65 ) {trigger [ -1 0 0 32 ] [ 0 0 -1 -32 ] 0 6 6
|
||||||
|
( 40 -128 64 ) ( 40 -128 65 ) ( 40 -127 64 ) {trigger [ 0 -1.0000000000000002 0 12.000002 ] [ 0 0 -1.0000000000000002 -32 ] 0 6 6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// entity 2
|
||||||
|
{
|
||||||
|
"classname" "light"
|
||||||
|
"origin" "72 -136 168"
|
||||||
|
"light" "3000"
|
||||||
|
}
|
||||||
|
// entity 3
|
||||||
|
{
|
||||||
|
"classname" "info_player_start"
|
||||||
|
"origin" "-88 -64 120"
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue