Merge branch 'type-cleanup' of https://github.com/Paril/ericw-tools into type-cleanup
This commit is contained in:
commit
487c0fa1c6
|
|
@ -75,6 +75,11 @@ if (ERICWTOOLS_ASAN)
|
|||
message(STATUS "Enabling ASan on all targets")
|
||||
add_compile_options(-fsanitize=address)
|
||||
add_link_options(-fsanitize=address)
|
||||
|
||||
# https://github.com/catchorg/Catch2/issues/898#issuecomment-841733322
|
||||
if (WIN32)
|
||||
add_compile_definitions(CATCH_CONFIG_NO_WINDOWS_SEH)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
|
||||
|
|
|
|||
|
|
@ -511,3 +511,63 @@ void Face_DebugPrint(const mbsp_t *bsp, const mface_t *face)
|
|||
point[1], point[2], edge);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
===============
|
||||
CompressRow
|
||||
===============
|
||||
*/
|
||||
int CompressRow(const uint8_t *vis, const int numbytes, uint8_t *out)
|
||||
{
|
||||
int i, rep;
|
||||
uint8_t *dst;
|
||||
|
||||
dst = out;
|
||||
for (i = 0; i < numbytes; i++) {
|
||||
*dst++ = vis[i];
|
||||
if (vis[i])
|
||||
continue;
|
||||
|
||||
rep = 1;
|
||||
for (i++; i < numbytes; i++)
|
||||
if (vis[i] || rep == 255)
|
||||
break;
|
||||
else
|
||||
rep++;
|
||||
*dst++ = rep;
|
||||
i--;
|
||||
}
|
||||
|
||||
return dst - out;
|
||||
}
|
||||
|
||||
/*
|
||||
===================
|
||||
DecompressRow
|
||||
===================
|
||||
*/
|
||||
void DecompressRow(const uint8_t *in, const int numbytes, uint8_t *decompressed)
|
||||
{
|
||||
int c;
|
||||
uint8_t *out;
|
||||
int row;
|
||||
|
||||
row = numbytes;
|
||||
out = decompressed;
|
||||
|
||||
do {
|
||||
if (*in) {
|
||||
*out++ = *in++;
|
||||
continue;
|
||||
}
|
||||
|
||||
c = in[1];
|
||||
if (!c)
|
||||
FError("0 repeat");
|
||||
in += 2;
|
||||
while (c) {
|
||||
*out++ = 0;
|
||||
c--;
|
||||
}
|
||||
} while (out - decompressed < row);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,3 +79,6 @@ qvec3d Face_Normal(const mbsp_t *bsp, const mface_t *f);
|
|||
std::vector<qvec3f> GLM_FacePoints(const mbsp_t *bsp, const mface_t *face);
|
||||
qvec3f Face_Centroid(const mbsp_t *bsp, const mface_t *face);
|
||||
void Face_DebugPrint(const mbsp_t *bsp, const mface_t *face);
|
||||
|
||||
int CompressRow(const uint8_t *vis, const int numbytes, uint8_t *out);
|
||||
void DecompressRow(const uint8_t *in, const int numbytes, uint8_t *decompressed);
|
||||
|
|
|
|||
|
|
@ -204,9 +204,6 @@ extern time_point starttime, endtime, statetime;
|
|||
void SaveVisState(void);
|
||||
bool LoadVisState(void);
|
||||
|
||||
void DecompressRow(const uint8_t *in, const int numbytes, uint8_t *decompressed);
|
||||
int CompressRow(const uint8_t *vis, const int numbytes, uint8_t *out);
|
||||
|
||||
#include <common/settings.hh>
|
||||
#include <common/fs.hh>
|
||||
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ static std::vector<face_t> CreateBrushFaces(const mapentity_t *src, hullbrush_t
|
|||
vec_t r;
|
||||
std::optional<winding_t> w;
|
||||
qbsp_plane_t plane;
|
||||
std::list<face_t> facelist;
|
||||
std::vector<face_t> facelist;
|
||||
qvec3d point;
|
||||
vec_t max, min;
|
||||
|
||||
|
|
@ -404,7 +404,7 @@ static std::vector<face_t> CreateBrushFaces(const mapentity_t *src, hullbrush_t
|
|||
hullbrush->bounds = {-delta, delta};
|
||||
}
|
||||
|
||||
return {std::make_move_iterator(facelist.begin()), std::make_move_iterator(facelist.end())};
|
||||
return facelist;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ static mbsp_t LoadTestmap(const std::filesystem::path &name, std::vector<std::st
|
|||
auto bsp_path = map_path;
|
||||
bsp_path.replace_extension(".bsp");
|
||||
|
||||
std::vector<std::string> args{"", "-nopercent", "-noprogress", "-keepprt"};
|
||||
std::vector<std::string> args{"", "-nopercent", "-keepprt"};
|
||||
for (auto &arg : extra_args) {
|
||||
args.push_back(arg);
|
||||
}
|
||||
|
|
@ -389,10 +389,11 @@ TEST_CASE("chop_no_change", "[testmaps_q1]")
|
|||
// TODO: ideally we should check we get back the same brush pointers from ChopBrushes
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("simple_sealed", "[testmaps_q1]")
|
||||
{
|
||||
mbsp_t result = LoadTestmap("qbsp_simple_sealed.map");
|
||||
auto mapname = GENERATE("qbsp_simple_sealed.map", "qbsp_simple_sealed_rotated.map");
|
||||
|
||||
mbsp_t result = LoadTestmap(mapname);
|
||||
|
||||
REQUIRE(map.brushes.size() == 6);
|
||||
|
||||
|
|
@ -805,6 +806,56 @@ TEST_CASE("features", "[testmaps_q1]")
|
|||
REQUIRE_FALSE(map.leakfile);
|
||||
}
|
||||
|
||||
TEST_CASE("qbsp_func_detail various types", "[testmaps_q1]") {
|
||||
const mbsp_t bsp = LoadTestmap("qbsp_func_detail.map");
|
||||
|
||||
CHECK_FALSE(map.leakfile);
|
||||
CHECK(GAME_QUAKE == bsp.loadversion->game->id);
|
||||
|
||||
CHECK(1 == bsp.dmodels.size());
|
||||
|
||||
const qvec3d in_func_detail{56, -56, 120};
|
||||
const qvec3d in_func_detail_wall{56, -136, 120};
|
||||
const qvec3d in_func_detail_illusionary{56, -216, 120};
|
||||
const qvec3d in_func_detail_illusionary_mirrorinside{56, -296, 120};
|
||||
|
||||
const double floor_z = 96;
|
||||
|
||||
// detail clips away world faces, others don't
|
||||
CHECK(nullptr == BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], in_func_detail - qvec3d(0,0,24), {0, 0, 1}));
|
||||
CHECK(nullptr != BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], in_func_detail_wall - qvec3d(0,0,24), {0, 0, 1}));
|
||||
CHECK(nullptr != BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], in_func_detail_illusionary - qvec3d(0,0,24), {0, 0, 1}));
|
||||
CHECK(nullptr != BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], in_func_detail_illusionary_mirrorinside - qvec3d(0,0,24), {0, 0, 1}));
|
||||
|
||||
// check for correct contents
|
||||
auto *detail_leaf = BSP_FindLeafAtPoint(&bsp, &bsp.dmodels[0], in_func_detail);
|
||||
auto *detail_wall_leaf = BSP_FindLeafAtPoint(&bsp, &bsp.dmodels[0], in_func_detail_wall);
|
||||
auto *detail_illusionary_leaf = BSP_FindLeafAtPoint(&bsp, &bsp.dmodels[0], in_func_detail_illusionary);
|
||||
auto *detail_illusionary_mirrorinside_leaf = BSP_FindLeafAtPoint(&bsp, &bsp.dmodels[0], in_func_detail_illusionary_mirrorinside);
|
||||
|
||||
CHECK(CONTENTS_SOLID == detail_leaf->contents);
|
||||
CHECK(CONTENTS_SOLID == detail_wall_leaf->contents);
|
||||
CHECK(CONTENTS_EMPTY == detail_illusionary_leaf->contents);
|
||||
CHECK(CONTENTS_EMPTY == detail_illusionary_mirrorinside_leaf->contents);
|
||||
}
|
||||
|
||||
TEST_CASE("qbsp_angled_brush", "[testmaps_q1]") {
|
||||
const mbsp_t bsp = LoadTestmap("qbsp_angled_brush.map");
|
||||
|
||||
CHECK_FALSE(map.leakfile);
|
||||
CHECK(GAME_QUAKE == bsp.loadversion->game->id);
|
||||
|
||||
CHECK(1 == bsp.dmodels.size());
|
||||
// tilted cuboid floating in a box room, so shared solid leaf + 6 empty leafs around the cube
|
||||
CHECK(6 + 1 == bsp.dleafs.size());
|
||||
}
|
||||
|
||||
TEST_CASE("qbsp_sealing_point_entity_on_outside", "[testmaps_q1]") {
|
||||
const mbsp_t bsp = LoadTestmap("qbsp_sealing_point_entity_on_outside.map");
|
||||
|
||||
CHECK_FALSE(map.leakfile);
|
||||
}
|
||||
|
||||
// q2 testmaps
|
||||
|
||||
TEST_CASE("detail", "[testmaps_q2]") {
|
||||
|
|
|
|||
|
|
@ -1,176 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# usage:
|
||||
# ./automated_tests.sh [--update-hashes|--continue-on-failure]
|
||||
#
|
||||
# If --update-hashes is given, updates the expected hash files.
|
||||
# Otherwise tests the generated .bsp's match the expected hashes.
|
||||
#
|
||||
# qbsp, vis, light, bspinfo need to be in PATH before running.
|
||||
#
|
||||
# Returns exit status 1 if any tests failed, otherwise 0
|
||||
|
||||
# print statements as they are executed
|
||||
set -x
|
||||
|
||||
UPDATE_HASHES=0
|
||||
|
||||
# FIXME: reset back to 0
|
||||
CONTINUE_ON_FAILURE=1
|
||||
|
||||
if [[ "$1" == "--update-hashes" ]]; then
|
||||
UPDATE_HASHES=1
|
||||
elif [[ "$1" == "--continue-on-failure" ]]; then
|
||||
CONTINUE_ON_FAILURE=1
|
||||
elif [[ "$1" != "" ]]; then
|
||||
echo "usage: ./automated_tests.sh [--update-hashes]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# checking for lack of crashes
|
||||
|
||||
qbsp -noverbose invalid_texture_axes.map || exit 1
|
||||
light invalid_texture_axes.map || exit 1
|
||||
|
||||
# hash checks
|
||||
|
||||
# Compiles Quake E1M1 under all supported output formats,
|
||||
# then compare the hashes with what's been committed to the repo.
|
||||
# Then vis all of the bsp's, and check the hashes again.
|
||||
# Then light them, and check the hashes again.
|
||||
#
|
||||
# This check will naturally fail if any changes are made to the
|
||||
# tools that alter the .bsp output - the idea is you would just
|
||||
# regenerate the expected hashes, but check that the .bsp's still
|
||||
# work in game at the same time.
|
||||
|
||||
# qbsp_brush_clipping_order.bsp omitted because it is not sealed, so doesn't have a .prt
|
||||
HASH_CHECK_BSPS="qbsp_func_detail.bsp \
|
||||
qbsp_func_detail_illusionary_plus_water.bsp \
|
||||
qbsp_origin.bsp \
|
||||
qbsp_angled_brush.bsp \
|
||||
qbsp_sealing_point_entity_on_outside.bsp \
|
||||
qbsp_tjunc_many_sided_face.bsp \
|
||||
e1m1-bsp29.bsp \
|
||||
e1m1-bsp2.bsp \
|
||||
e1m1-2psb.bsp \
|
||||
e1m1-hexen2.bsp \
|
||||
e1m1-hexen2-bsp2.bsp \
|
||||
e1m1-hexen2-2psb.bsp \
|
||||
e1m1-hlbsp.bsp \
|
||||
e1m1-bspxbrushes.bsp \
|
||||
e1m1-bsp29-onlyents.bsp \
|
||||
qbspfeatures.bsp"
|
||||
|
||||
HASH_CHECK_PRTS=${HASH_CHECK_BSPS//.bsp/.prt}
|
||||
|
||||
# for tiny test maps, we'll commit the .json export of the .bsp's
|
||||
# directly to the git repo, so we can print a diff
|
||||
COMMIT_JSON_MAPS="qbsp_func_detail.bsp \
|
||||
qbsp_func_detail_illusionary_plus_water.bsp \
|
||||
qbsp_origin.bsp \
|
||||
qbsp_angled_brush.bsp \
|
||||
qbsp_sealing_point_entity_on_outside.bsp \
|
||||
qbsp_brush_clipping_order.bsp \
|
||||
qbsp_tjunc_many_sided_face.bsp"
|
||||
|
||||
# smaller test maps for specific features/combinations
|
||||
# check .json diff of COMMIT_JSON_MAPS
|
||||
for bsp in ${COMMIT_JSON_MAPS}; do
|
||||
# save regular verbosity log to file, to avoid spamming the CI log
|
||||
qbsp -nopercent ${bsp} &> ${bsp}.qbsplog
|
||||
|
||||
# dump .bsp to .bsp.json
|
||||
bspinfo ${bsp} || exit 1
|
||||
|
||||
if [[ $UPDATE_HASHES -ne 0 ]]; then
|
||||
mkdir reference_bsp_json
|
||||
cp ${bsp}.json reference_bsp_json/${bsp}.json
|
||||
cp ${bsp}.qbsplog reference_bsp_json/${bsp}.qbsplog
|
||||
else
|
||||
echo "Diff of reference_bsp_json/${bsp}.qbsplog and ${bsp}.qbsplog:"
|
||||
diff -U3 -w reference_bsp_json/${bsp}.qbsplog ${bsp}.qbsplog
|
||||
|
||||
echo "Diff of reference_bsp_json/${bsp}.json and ${bsp}.json:"
|
||||
diff -U3 -w reference_bsp_json/${bsp}.json ${bsp}.json
|
||||
|
||||
diffreturn=$?
|
||||
if [[ $diffreturn -ne 0 ]]; then
|
||||
echo "Diff returned $diffreturn"
|
||||
file reference_bsp_json/${bsp}.json
|
||||
file ${bsp}.json
|
||||
|
||||
if [[ $CONTINUE_ON_FAILURE -ne 1 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# larger test maps (E1M1)
|
||||
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 -2psb quake_map_source/E1M1.map e1m1-2psb.bsp || exit 1
|
||||
qbsp -noverbose -hexen2 quake_map_source/E1M1.map e1m1-hexen2.bsp || exit 1
|
||||
qbsp -noverbose -hexen2 -bsp2 quake_map_source/E1M1.map e1m1-hexen2-bsp2.bsp || exit 1
|
||||
qbsp -noverbose -hexen2 -2psb quake_map_source/E1M1.map e1m1-hexen2-2psb.bsp || exit 1
|
||||
qbsp -noverbose -hlbsp quake_map_source/E1M1.map e1m1-hlbsp.bsp || exit 1
|
||||
qbsp -noverbose -wrbrushes quake_map_source/E1M1.map e1m1-bspxbrushes.bsp || exit 1
|
||||
|
||||
# -onlyents test:
|
||||
# - start with a copy of e1m1-bsp29.bsp called e1m1-bsp29-onlyents.bsp
|
||||
# - make a E1M1-edited-ents.map by adding an extra entity
|
||||
# - patch e1m1-bsp29-onlyents.bsp with the entities lump from E1M1-edited-ents.map
|
||||
cp e1m1-bsp29.bsp e1m1-bsp29-onlyents.bsp || exit 1
|
||||
cp e1m1-bsp29.prt e1m1-bsp29-onlyents.prt || exit 1
|
||||
qbsp -onlyents E1M1-edited-ents.map e1m1-bsp29-onlyents.bsp || exit 1
|
||||
|
||||
qbsp -noverbose qbspfeatures.map || exit 1
|
||||
|
||||
# check (or regenerate) hashes of .bsp's
|
||||
if [[ $UPDATE_HASHES -ne 0 ]]; then
|
||||
sha256sum ${HASH_CHECK_BSPS} ${HASH_CHECK_PRTS} > qbsp.sha256sum || exit 1
|
||||
else
|
||||
sha256sum --strict --check qbsp.sha256sum
|
||||
|
||||
hash_check_return=$?
|
||||
if [[ $hash_check_return -ne 0 ]] && [[ $CONTINUE_ON_FAILURE -ne 1 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# now run vis
|
||||
# FIXME: vis output is nondeterministic when run with multiple threads, so force 1 thread per process
|
||||
|
||||
for bsp in ${HASH_CHECK_BSPS}; do
|
||||
vis -nostate -threads 1 ${bsp} || exit 1
|
||||
done
|
||||
|
||||
if [[ $UPDATE_HASHES -ne 0 ]]; then
|
||||
sha256sum ${HASH_CHECK_BSPS} > qbsp-vis.sha256sum || exit 1
|
||||
else
|
||||
sha256sum --strict --check qbsp-vis.sha256sum
|
||||
|
||||
hash_check_return=$?
|
||||
if [[ $hash_check_return -ne 0 ]] && [[ $CONTINUE_ON_FAILURE -ne 1 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# FIXME: light output is nondeterministic so we can't check the hashes currently
|
||||
|
||||
for bsp in ${HASH_CHECK_BSPS}; do
|
||||
light -threads 1 ${bsp} || exit 1
|
||||
done
|
||||
|
||||
# if [[ $UPDATE_HASHES -ne 0 ]]; then
|
||||
# sha256sum ${HASH_CHECK_BSPS} > qbsp-vis-light.sha256sum || exit 1
|
||||
# else
|
||||
# sha256sum --strict --check qbsp-vis-light.sha256sum || exit 1
|
||||
# fi
|
||||
|
||||
# leak tests on all id1 maps
|
||||
cd quake_map_source
|
||||
./leaktest.sh || exit 1
|
||||
|
||||
exit 0
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
c2fd477801a3c02a01d172454378c5d1f59cae43713977e82345240530fbed80 *qbsp_func_detail.bsp
|
||||
620bd6ec7180d97127909eda95a97313e1bcbe50d3b76971eb46fc8839132008 *qbsp_func_detail_illusionary_plus_water.bsp
|
||||
ed3d85f3f5f6bd1627df667605569a0f31f49c88e74de0d2b033a413d98a5f1e *qbsp_origin.bsp
|
||||
8ddab9e66cc94abed3ba387b9e077fe131d5bf2fae7f29099aa9f3eed8712944 *qbsp_angled_brush.bsp
|
||||
18fbd0f2cc27c3ef584b6335fad8b41a9db4a37e916f532e3e7abe770c299fad *qbsp_sealing_point_entity_on_outside.bsp
|
||||
3b0557534e37114434d5541143932dfe3522dea9a627962901249e1f8bb8015f *qbsp_tjunc_many_sided_face.bsp
|
||||
747ae0bcb09b15177b9d7f31f91a5955edd54b60bc558b5ff0332bb01b746a17 *e1m1-bsp29.bsp
|
||||
11c8a0a593c081c8cea6f5e21f53766adc20e19be8a67a5d53aea782dde5f650 *e1m1-bsp2.bsp
|
||||
79ada91c75217c04ba0648a9351b92a1d2f2b9a575920eb553c28231b8fccc2e *e1m1-2psb.bsp
|
||||
c82d1423bd2a9cb7b163ca12fd7a3757680b43170cc14a6e91ac51c7d7a08708 *e1m1-hexen2.bsp
|
||||
0c1834a471d6dda55ee4eb6559793fdefb7985b7d5305838852ca9828c08fbe2 *e1m1-hexen2-bsp2.bsp
|
||||
ba0b8c59640b94eb8b39dbf29db10a8c0f8164891a1b4385ff2119fbc54b0d93 *e1m1-hexen2-2psb.bsp
|
||||
2a60784f2d3aef6dc3ed64ef09e65a50dd448047d2f02442ab5e7c3dad45fa3a *e1m1-hlbsp.bsp
|
||||
0c8ded46ce98663981ea97e3d92ba3c6a0a4c16637fcc9aad06b2d4da5b2d0bd *e1m1-bspxbrushes.bsp
|
||||
c630ff41dcd9183ba19cc4ab9d882db729427a30fa52e45b7763bca3db22e816 *e1m1-bsp29-onlyents.bsp
|
||||
7c2549ea81c40cc6fac4c7428c8f6ed0997ad04ffc24f8632de258ebf70f3aeb *qbspfeatures.bsp
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
6a22bf066280a4fff3ba9fb183642761fe55cc6063bae3fa55dd01ad549c8550 *qbsp_func_detail.bsp
|
||||
ed1623a1313d859e2118994865e2680c8348533682898672a5ed002d51ca58ce *qbsp_func_detail_illusionary_plus_water.bsp
|
||||
f8b06839c07f71c7c897d150333224412b976ddb21653195579da5e37be82f8c *qbsp_origin.bsp
|
||||
5539b0753d4232609017253688081cf359a83cddbe07edc906dd87592b9c919a *qbsp_angled_brush.bsp
|
||||
02fef37f2523125498b00d2e4ab77808cb11165c6cbeef98e42f98511b4df170 *qbsp_sealing_point_entity_on_outside.bsp
|
||||
e963f38e3af7d0db84519786575468a01b30a5a29baa9bf5c86823b0c73d72fc *qbsp_tjunc_many_sided_face.bsp
|
||||
c33feeeb2d66eac835c66449d871b533d7f0cbea6b1c556f94d387efee877659 *e1m1-bsp29.bsp
|
||||
9b082b3ae17efb2cee1332a6c19a919106f035ec8bee6f89ebb4a8a0967190b8 *e1m1-bsp2.bsp
|
||||
986c209b31bd336888b6f754f6fdac8303398517183316a401124704dbc98f55 *e1m1-2psb.bsp
|
||||
52e896a5bf2e285be6e1362acc261758570f057eed0c8430856bd4970d583057 *e1m1-hexen2.bsp
|
||||
46849fd2b354624ed15ff4571c3fc41331bb08f7d09baa6c50876f4357424f18 *e1m1-hexen2-bsp2.bsp
|
||||
2b04e897da043597b5cc60c3abbc891c4ba204eb2208c69327f42d2e8c594cc5 *e1m1-hexen2-2psb.bsp
|
||||
5bab3bceb303e3f8328608c544b98e5f18b08fecd4723d08f2c94d40353b3f23 *e1m1-hlbsp.bsp
|
||||
1906e03553063f0519c966d12b2b669c568a53cddae8fce285cc576b90b9848d *e1m1-bspxbrushes.bsp
|
||||
1536fbd891ad17fb26c7f3f4a45af86ee1b4e0e42fa322f4355d781bbf4e9f61 *e1m1-bsp29-onlyents.bsp
|
||||
7f930d4f1a0383f3b4128afe2cffbac34240c9194dda5527e2918df74b2ea80a *qbspfeatures.bsp
|
||||
abf3633d5a6d0e167ce9bacec476d3408c8240df5f3d72d14867cd201d4e3674 *qbsp_func_detail.prt
|
||||
c0995c6b92256fa048c1a755ebe7e07f5fae33cb64e3c53adc234380fe44f267 *qbsp_func_detail_illusionary_plus_water.prt
|
||||
b1ac538e53efc28ace2088324b1c0504d0f09b013d30b39ce231d76124bc6c22 *qbsp_origin.prt
|
||||
00cc54b056ec14bb918fc3b30dab4b01b71f95bbca628206734b6d6f9aa19e10 *qbsp_angled_brush.prt
|
||||
b1ac538e53efc28ace2088324b1c0504d0f09b013d30b39ce231d76124bc6c22 *qbsp_sealing_point_entity_on_outside.prt
|
||||
b1ac538e53efc28ace2088324b1c0504d0f09b013d30b39ce231d76124bc6c22 *qbsp_tjunc_many_sided_face.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-bsp29.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-bsp2.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-2psb.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-hexen2.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-hexen2-bsp2.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-hexen2-2psb.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-hlbsp.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-bspxbrushes.prt
|
||||
fcfd84b56d9f22f646903202b06ffc904d4fc38fdb70fba2b09110ad20b4f1a1 *e1m1-bsp29-onlyents.prt
|
||||
db4b8fee3195c424b6e79282e958b0ac078b7b5db0217ea9dbe2b9e6ea8b61db *qbspfeatures.prt
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
// 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"
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
// Game: Quake
|
||||
// Format: Valve
|
||||
// entity 0
|
||||
{
|
||||
"mapversion" "220"
|
||||
"classname" "worldspawn"
|
||||
"wad" "deprecated/free_wad.wad;deprecated/fence.wad;deprecated/origin.wad;deprecated/hintskip.wad"
|
||||
"_wateralpha" "0.5"
|
||||
"_tb_def" "builtin:Quake.fgd"
|
||||
// brush 0
|
||||
{
|
||||
( 121.17142559585812 -0.8040405071069046 208 ) ( 63.195959492893095 -217.17142559585812 208 ) ( 121.17142559585812 -0.8040405071069046 48 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 -16 ] 0 2 2
|
||||
( 82.79187743515854 -205.8577170968734 48 ) ( 67.33706421453346 -201.71661237523304 48 ) ( 82.79187743515854 -205.8577170968734 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 -16 ] 180 2 2
|
||||
( 136.6262388164832 -4.945145228747261 48 ) ( 121.17142559585812 -0.8040405071069046 48 ) ( 78.65077271351818 -221.31253031749847 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( 78.65077271351818 -221.31253031749847 208 ) ( 63.195959492893095 -217.17142559585812 208 ) ( 136.6262388164832 -4.945145228747261 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( 132.48513409484283 -20.39995844937235 208 ) ( 117.03032087421775 -16.25885372773199 208 ) ( 132.48513409484283 -20.39995844937235 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 -16 ] 180 2 2
|
||||
( 78.65077271351818 -221.31253031749847 208 ) ( 136.6262388164832 -4.945145228747261 208 ) ( 78.65077271351818 -221.31253031749847 48 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 -16 ] 0 2 2
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( -168.6262388164832 -155.05485477125274 48 ) ( -110.6507727135182 61.31253031749847 48 ) ( -168.6262388164832 -155.05485477125274 208 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 -16 ] 0 2 2
|
||||
( -164.48513409484286 -139.60004155062765 208 ) ( -149.03032087421775 -143.741146272268 208 ) ( -164.48513409484286 -139.60004155062765 48 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 -16 ] 180 2 2
|
||||
( -168.6262388164832 -155.05485477125274 48 ) ( -153.17142559585812 -159.1959594928931 48 ) ( -110.6507727135182 61.31253031749847 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( -110.6507727135182 61.31253031749847 208 ) ( -95.19595949289308 57.17142559585811 208 ) ( -168.6262388164832 -155.05485477125274 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( -114.79187743515857 45.85771709687339 48 ) ( -99.33706421453346 41.71661237523303 48 ) ( -114.79187743515857 45.85771709687339 208 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 -16 ] 180 2 2
|
||||
( -153.17142559585812 -159.1959594928931 48 ) ( -153.17142559585812 -159.1959594928931 208 ) ( -95.19595949289308 57.17142559585811 48 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 -16 ] 0 2 2
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( -95.19595949289308 57.17142559585811 208 ) ( -99.33706421453346 41.71661237523303 208 ) ( -95.19595949289308 57.17142559585811 48 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 -16 ] 0 2 2
|
||||
( 117.03032087421775 -16.25885372773199 208 ) ( 117.03032087421775 -16.25885372773199 48 ) ( -99.33706421453346 41.71661237523303 208 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 -16 ] 180 2 2
|
||||
( -95.19595949289308 57.17142559585811 48 ) ( -99.33706421453346 41.71661237523303 48 ) ( 121.17142559585812 -0.8040405071069046 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( 121.17142559585812 -0.8040405071069046 208 ) ( 117.03032087421775 -16.25885372773199 208 ) ( -95.19595949289308 57.17142559585811 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( 121.17142559585812 -0.8040405071069046 208 ) ( -95.19595949289308 57.17142559585811 208 ) ( 121.17142559585812 -0.8040405071069046 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 -16 ] 180 2 2
|
||||
( 121.17142559585812 -0.8040405071069046 48 ) ( 117.03032087421775 -16.25885372773199 48 ) ( 121.17142559585812 -0.8040405071069046 208 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 -16 ] 0 2 2
|
||||
}
|
||||
// brush 3
|
||||
{
|
||||
( -153.17142559585812 -159.1959594928931 48 ) ( -149.03032087421775 -143.741146272268 48 ) ( -153.17142559585812 -159.1959594928931 208 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 -16 ] 0 2 2
|
||||
( 63.195959492893095 -217.17142559585812 48 ) ( -153.17142559585812 -159.1959594928931 48 ) ( 63.195959492893095 -217.17142559585812 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 -16 ] 180 2 2
|
||||
( 63.195959492893095 -217.17142559585812 48 ) ( 67.33706421453346 -201.71661237523304 48 ) ( -153.17142559585812 -159.1959594928931 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( -153.17142559585812 -159.1959594928931 208 ) ( -149.03032087421775 -143.741146272268 208 ) ( 63.195959492893095 -217.17142559585812 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( -149.03032087421775 -143.741146272268 48 ) ( 67.33706421453346 -201.71661237523304 48 ) ( -149.03032087421775 -143.741146272268 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 -16 ] 180 2 2
|
||||
( 63.195959492893095 -217.17142559585812 208 ) ( 67.33706421453346 -201.71661237523304 208 ) ( 63.195959492893095 -217.17142559585812 48 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 -16 ] 0 2 2
|
||||
}
|
||||
// brush 4
|
||||
{
|
||||
( -149.03032087421775 -143.741146272268 224 ) ( -149.03032087421775 -143.741146272268 208 ) ( -99.33706421453346 41.71661237523303 224 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 0 ] 0 2 2
|
||||
( 67.33706421453346 -201.71661237523304 224 ) ( 67.33706421453346 -201.71661237523304 208 ) ( -149.03032087421775 -143.741146272268 224 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 0 ] 180 2 2
|
||||
( 117.03032087421775 -16.25885372773199 208 ) ( -99.33706421453346 41.71661237523303 208 ) ( 67.33706421453346 -201.71661237523304 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( 117.03032087421775 -16.25885372773199 224 ) ( 67.33706421453346 -201.71661237523304 224 ) ( -99.33706421453346 41.71661237523303 224 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( -99.33706421453346 41.71661237523303 224 ) ( -99.33706421453346 41.71661237523303 208 ) ( 117.03032087421775 -16.25885372773199 224 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 0 ] 180 2 2
|
||||
( 117.03032087421775 -16.25885372773199 224 ) ( 117.03032087421775 -16.25885372773199 208 ) ( 67.33706421453346 -201.71661237523304 224 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 0 ] 0 2 2
|
||||
}
|
||||
// brush 5
|
||||
{
|
||||
( -99.33706421453346 41.71661237523303 32 ) ( -99.33706421453346 41.71661237523303 48 ) ( -149.03032087421775 -143.741146272268 32 ) bolt16 [ 0 1 0 16 ] [ 0 0 -1 32 ] 0 2 2
|
||||
( -149.03032087421775 -143.741146272268 32 ) ( -149.03032087421775 -143.741146272268 48 ) ( 67.33706421453346 -201.71661237523304 32 ) bolt16 [ -1 0 0 -16 ] [ 0 0 -1 32 ] 180 2 2
|
||||
( -99.33706421453346 41.71661237523303 32 ) ( -149.03032087421775 -143.741146272268 32 ) ( 117.03032087421775 -16.25885372773199 32 ) bolt16 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( -149.03032087421775 -143.741146272268 48 ) ( -99.33706421453346 41.71661237523303 48 ) ( 67.33706421453346 -201.71661237523304 48 ) bolt16 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 2 2
|
||||
( 117.03032087421775 -16.25885372773199 32 ) ( 117.03032087421775 -16.25885372773199 48 ) ( -99.33706421453346 41.71661237523303 32 ) bolt16 [ 1 0 0 16 ] [ 0 0 -1 32 ] 180 2 2
|
||||
( 67.33706421453346 -201.71661237523304 32 ) ( 67.33706421453346 -201.71661237523304 48 ) ( 117.03032087421775 -16.25885372773199 32 ) bolt16 [ 0 -1 0 -16 ] [ 0 0 -1 32 ] 0 2 2
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
"classname" "info_player_start"
|
||||
"origin" "-58.7781 -85.1021 120"
|
||||
"angle" "345"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,80 +0,0 @@
|
|||
---- qbsp / ericw-tools v0.18.1-636-g19dbc1c ----
|
||||
Input file: qbsp_angled_brush.map
|
||||
Output file: qbsp_angled_brush.bsp
|
||||
|
||||
WARNING: No info_player_deathmatch entities in level
|
||||
Opened WAD: deprecated/free_wad.wad
|
||||
Opened WAD: deprecated/fence.wad
|
||||
Opened WAD: deprecated/origin.wad
|
||||
Opened WAD: deprecated/hintskip.wad
|
||||
Processing hull 0...
|
||||
---- Brush_LoadEntity ----
|
||||
7 solid brushes
|
||||
18 planes
|
||||
---- CSGFaces ----
|
||||
42 brushfaces
|
||||
42 csgfaces
|
||||
42 mergedfaces
|
||||
18 surfaces
|
||||
---- SolidBSP ----
|
||||
30 split nodes
|
||||
7 solid leafs
|
||||
24 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
156 leaffaces
|
||||
126 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
24 vis leafs
|
||||
24 vis clusters
|
||||
52 vis portals
|
||||
---- FillOutside ----
|
||||
18 outleafs
|
||||
---- MergeAll ----
|
||||
12 mergefaces
|
||||
---- SolidBSP ----
|
||||
12 split nodes
|
||||
7 solid leafs
|
||||
6 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
68 leaffaces
|
||||
38 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
6 vis leafs
|
||||
6 vis clusters
|
||||
12 vis portals
|
||||
---- TJunc ----
|
||||
40 world edges
|
||||
124 edge points
|
||||
16 edges added by tjunctions
|
||||
0 faces added by tjunctions
|
||||
---- MakeFaceEdges ----
|
||||
---- GrowRegions ----
|
||||
Processing hull 1...
|
||||
Processing hull 2...
|
||||
Writing qbsp_angled_brush.bsp as BSP version Quake BSP
|
||||
Wrote qbsp_angled_brush.bsp
|
||||
1 models
|
||||
58 planes 1160
|
||||
50 vertexes 600
|
||||
12 nodes 288
|
||||
9 texinfos 360
|
||||
38 faces 760
|
||||
70 clipnodes 560
|
||||
7 leafs 196
|
||||
68 marksurfaces 136
|
||||
85 edges 340
|
||||
168 surfedges 672
|
||||
textures 2
|
||||
lightdata 0
|
||||
visdata 0
|
||||
entdata 319
|
||||
|
||||
0.018s seconds elapsed
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,58 +0,0 @@
|
|||
---- qbsp / ericw-tools v0.18.1-636-g19dbc1c ----
|
||||
Input file: qbsp_brush_clipping_order.map
|
||||
Output file: qbsp_brush_clipping_order.bsp
|
||||
|
||||
WARNING: No info_player_deathmatch entities in level
|
||||
Opened WAD: deprecated/free_wad.wad
|
||||
Processing hull 0...
|
||||
---- Brush_LoadEntity ----
|
||||
2 solid brushes
|
||||
11 planes
|
||||
---- CSGFaces ----
|
||||
12 brushfaces
|
||||
10 csgfaces
|
||||
10 mergedfaces
|
||||
6 surfaces
|
||||
---- SolidBSP ----
|
||||
6 split nodes
|
||||
1 solid leafs
|
||||
6 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
10 leaffaces
|
||||
10 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
6 vis leafs
|
||||
6 vis clusters
|
||||
12 vis portals
|
||||
---- FillOutside ----
|
||||
WARNING: Reached occupant "info_player_start" at (-104 -8 40), no filling performed.
|
||||
Leak file written to qbsp_brush_clipping_order.pts
|
||||
---- MakeFaceEdges ----
|
||||
---- GrowRegions ----
|
||||
Processing hull 1...
|
||||
WARNING: No entities in empty space -- no filling performed (hull 1)
|
||||
Processing hull 2...
|
||||
WARNING: No entities in empty space -- no filling performed (hull 2)
|
||||
Writing qbsp_brush_clipping_order.bsp as BSP version Quake BSP
|
||||
Wrote qbsp_brush_clipping_order.bsp
|
||||
2 models
|
||||
20 planes 400
|
||||
32 vertexes 384
|
||||
12 nodes 288
|
||||
4 texinfos 160
|
||||
20 faces 400
|
||||
24 clipnodes 192
|
||||
13 leafs 364
|
||||
20 marksurfaces 40
|
||||
55 edges 220
|
||||
88 surfedges 352
|
||||
textures 2
|
||||
lightdata 0
|
||||
visdata 0
|
||||
entdata 180
|
||||
|
||||
0.010s seconds elapsed
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,81 +0,0 @@
|
|||
---- qbsp / ericw-tools v0.18.1-636-g19dbc1c ----
|
||||
Input file: qbsp_func_detail.map
|
||||
Output file: qbsp_func_detail.bsp
|
||||
|
||||
WARNING: No info_player_deathmatch entities in level
|
||||
Opened WAD: deprecated/free_wad.wad
|
||||
Opened WAD: deprecated/fence.wad
|
||||
Opened WAD: deprecated/origin.wad
|
||||
Opened WAD: deprecated/hintskip.wad
|
||||
Processing hull 0...
|
||||
---- Brush_LoadEntity ----
|
||||
7 solid brushes
|
||||
1 detail brushes
|
||||
21 planes
|
||||
---- CSGFaces ----
|
||||
48 brushfaces
|
||||
53 csgfaces
|
||||
58 mergedfaces
|
||||
21 surfaces
|
||||
---- SolidBSP ----
|
||||
62 split nodes
|
||||
17 solid leafs
|
||||
45 empty leafs
|
||||
0 water leafs
|
||||
1 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
157 leaffaces
|
||||
146 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
46 vis leafs
|
||||
46 vis clusters
|
||||
99 vis portals
|
||||
---- FillOutside ----
|
||||
37 outleafs
|
||||
---- MergeAll ----
|
||||
28 mergefaces
|
||||
---- SolidBSP ----
|
||||
17 split nodes
|
||||
9 solid leafs
|
||||
8 empty leafs
|
||||
0 water leafs
|
||||
1 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
70 leaffaces
|
||||
52 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
8 vis leafs
|
||||
4 vis clusters
|
||||
5 vis portals
|
||||
---- TJunc ----
|
||||
50 world edges
|
||||
164 edge points
|
||||
40 edges added by tjunctions
|
||||
0 faces added by tjunctions
|
||||
---- MakeFaceEdges ----
|
||||
---- GrowRegions ----
|
||||
Processing hull 1...
|
||||
Processing hull 2...
|
||||
Writing qbsp_func_detail.bsp as BSP version Quake BSP
|
||||
Wrote qbsp_func_detail.bsp
|
||||
1 models
|
||||
40 planes 800
|
||||
68 vertexes 816
|
||||
17 nodes 408
|
||||
12 texinfos 480
|
||||
46 faces 920
|
||||
62 clipnodes 496
|
||||
9 leafs 252
|
||||
64 marksurfaces 128
|
||||
113 edges 452
|
||||
224 surfedges 896
|
||||
textures 6
|
||||
lightdata 0
|
||||
visdata 0
|
||||
entdata 320
|
||||
|
||||
0.018s seconds elapsed
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,80 +0,0 @@
|
|||
---- qbsp / ericw-tools v0.18.1-636-g19dbc1c ----
|
||||
Input file: qbsp_func_detail_illusionary_plus_water.map
|
||||
Output file: qbsp_func_detail_illusionary_plus_water.bsp
|
||||
|
||||
WARNING: No info_player_deathmatch entities in level
|
||||
Opened WAD: deprecated/fence.wad
|
||||
Opened WAD: deprecated/free_wad.wad
|
||||
Processing hull 0...
|
||||
---- Brush_LoadEntity ----
|
||||
6 solid brushes
|
||||
1 detail illusionary brushes
|
||||
1 liquid brushes
|
||||
18 planes
|
||||
---- CSGFaces ----
|
||||
48 brushfaces
|
||||
50 csgfaces
|
||||
60 mergedfaces
|
||||
18 surfaces
|
||||
---- SolidBSP ----
|
||||
34 split nodes
|
||||
6 solid leafs
|
||||
23 empty leafs
|
||||
5 water leafs
|
||||
0 detail leafs
|
||||
1 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
84 leaffaces
|
||||
60 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
29 vis leafs
|
||||
29 vis clusters
|
||||
56 vis portals
|
||||
---- FillOutside ----
|
||||
18 outleafs
|
||||
---- MergeAll ----
|
||||
30 mergefaces
|
||||
---- SolidBSP ----
|
||||
16 split nodes
|
||||
6 solid leafs
|
||||
5 empty leafs
|
||||
5 water leafs
|
||||
0 detail leafs
|
||||
1 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
54 leaffaces
|
||||
30 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
11 vis leafs
|
||||
2 vis clusters
|
||||
1 vis portals
|
||||
---- TJunc ----
|
||||
32 world edges
|
||||
72 edge points
|
||||
0 edges added by tjunctions
|
||||
0 faces added by tjunctions
|
||||
---- MakeFaceEdges ----
|
||||
---- GrowRegions ----
|
||||
Processing hull 1...
|
||||
Processing hull 2...
|
||||
Writing qbsp_func_detail_illusionary_plus_water.bsp as BSP version Quake BSP
|
||||
Wrote qbsp_func_detail_illusionary_plus_water.bsp
|
||||
1 models
|
||||
23 planes 460
|
||||
24 vertexes 288
|
||||
16 nodes 384
|
||||
9 texinfos 360
|
||||
30 faces 600
|
||||
12 clipnodes 96
|
||||
12 leafs 336
|
||||
54 marksurfaces 108
|
||||
65 edges 260
|
||||
120 surfedges 480
|
||||
textures 4
|
||||
lightdata 0
|
||||
visdata 0
|
||||
entdata 223
|
||||
|
||||
0.015s seconds elapsed
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,80 +0,0 @@
|
|||
---- qbsp / ericw-tools v0.18.1-636-g19dbc1c ----
|
||||
Input file: qbsp_origin.map
|
||||
Output file: qbsp_origin.bsp
|
||||
|
||||
WARNING: No info_player_deathmatch entities in level
|
||||
Opened WAD: deprecated/free_wad.wad
|
||||
Opened WAD: deprecated/fence.wad
|
||||
Opened WAD: deprecated/origin.wad
|
||||
Opened WAD: deprecated/hintskip.wad
|
||||
Processing hull 0...
|
||||
---- Brush_LoadEntity ----
|
||||
6 solid brushes
|
||||
12 planes
|
||||
---- CSGFaces ----
|
||||
36 brushfaces
|
||||
36 csgfaces
|
||||
36 mergedfaces
|
||||
12 surfaces
|
||||
---- SolidBSP ----
|
||||
24 split nodes
|
||||
6 solid leafs
|
||||
19 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
120 leaffaces
|
||||
120 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
19 vis leafs
|
||||
19 vis clusters
|
||||
40 vis portals
|
||||
---- FillOutside ----
|
||||
18 outleafs
|
||||
---- MergeAll ----
|
||||
6 mergefaces
|
||||
---- SolidBSP ----
|
||||
6 split nodes
|
||||
6 solid leafs
|
||||
1 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
32 leaffaces
|
||||
32 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
1 vis leafs
|
||||
1 vis clusters
|
||||
0 vis portals
|
||||
---- TJunc ----
|
||||
28 world edges
|
||||
100 edge points
|
||||
16 edges added by tjunctions
|
||||
0 faces added by tjunctions
|
||||
---- MakeFaceEdges ----
|
||||
---- GrowRegions ----
|
||||
Processing hull 1...
|
||||
Processing hull 2...
|
||||
Writing qbsp_origin.bsp as BSP version Quake BSP
|
||||
Wrote qbsp_origin.bsp
|
||||
2 models
|
||||
58 planes 1160
|
||||
66 vertexes 792
|
||||
20 nodes 480
|
||||
18 texinfos 720
|
||||
54 faces 1080
|
||||
64 clipnodes 512
|
||||
12 leafs 336
|
||||
54 marksurfaces 108
|
||||
117 edges 468
|
||||
232 surfedges 928
|
||||
textures 4
|
||||
lightdata 0
|
||||
visdata 0
|
||||
entdata 408
|
||||
|
||||
0.017s seconds elapsed
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,80 +0,0 @@
|
|||
---- qbsp / ericw-tools v0.18.1-636-g19dbc1c ----
|
||||
Input file: qbsp_sealing_point_entity_on_outside.map
|
||||
Output file: qbsp_sealing_point_entity_on_outside.bsp
|
||||
|
||||
WARNING: No info_player_deathmatch entities in level
|
||||
Opened WAD: deprecated/free_wad.wad
|
||||
Opened WAD: deprecated/fence.wad
|
||||
Opened WAD: deprecated/origin.wad
|
||||
Opened WAD: deprecated/hintskip.wad
|
||||
Processing hull 0...
|
||||
---- Brush_LoadEntity ----
|
||||
6 solid brushes
|
||||
12 planes
|
||||
---- CSGFaces ----
|
||||
36 brushfaces
|
||||
36 csgfaces
|
||||
36 mergedfaces
|
||||
12 surfaces
|
||||
---- SolidBSP ----
|
||||
24 split nodes
|
||||
6 solid leafs
|
||||
19 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
120 leaffaces
|
||||
120 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
19 vis leafs
|
||||
19 vis clusters
|
||||
40 vis portals
|
||||
---- FillOutside ----
|
||||
18 outleafs
|
||||
---- MergeAll ----
|
||||
6 mergefaces
|
||||
---- SolidBSP ----
|
||||
6 split nodes
|
||||
6 solid leafs
|
||||
1 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
32 leaffaces
|
||||
32 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
1 vis leafs
|
||||
1 vis clusters
|
||||
0 vis portals
|
||||
---- TJunc ----
|
||||
28 world edges
|
||||
100 edge points
|
||||
16 edges added by tjunctions
|
||||
0 faces added by tjunctions
|
||||
---- MakeFaceEdges ----
|
||||
---- GrowRegions ----
|
||||
Processing hull 1...
|
||||
Processing hull 2...
|
||||
Writing qbsp_sealing_point_entity_on_outside.bsp as BSP version Quake BSP
|
||||
Wrote qbsp_sealing_point_entity_on_outside.bsp
|
||||
1 models
|
||||
17 planes 340
|
||||
42 vertexes 504
|
||||
6 nodes 144
|
||||
4 texinfos 160
|
||||
32 faces 640
|
||||
12 clipnodes 96
|
||||
2 leafs 56
|
||||
32 marksurfaces 64
|
||||
73 edges 292
|
||||
144 surfedges 576
|
||||
textures 2
|
||||
lightdata 0
|
||||
visdata 0
|
||||
entdata 463
|
||||
|
||||
0.013s seconds elapsed
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,79 +0,0 @@
|
|||
---- qbsp / ericw-tools v0.18.1-636-g19dbc1c ----
|
||||
Input file: qbsp_tjunc_many_sided_face.map
|
||||
Output file: qbsp_tjunc_many_sided_face.bsp
|
||||
|
||||
WARNING: No info_player_deathmatch entities in level
|
||||
Opened WAD: deprecated/free_wad.wad
|
||||
Processing hull 0...
|
||||
---- Brush_LoadEntity ----
|
||||
82 solid brushes
|
||||
50 planes
|
||||
---- CSGFaces ----
|
||||
492 brushfaces
|
||||
340 csgfaces
|
||||
340 mergedfaces
|
||||
12 surfaces
|
||||
---- SolidBSP ----
|
||||
24 split nodes
|
||||
6 solid leafs
|
||||
19 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
732 leaffaces
|
||||
732 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
19 vis leafs
|
||||
19 vis clusters
|
||||
40 vis portals
|
||||
---- FillOutside ----
|
||||
18 outleafs
|
||||
---- MergeAll ----
|
||||
82 mergefaces
|
||||
---- SolidBSP ----
|
||||
6 split nodes
|
||||
6 solid leafs
|
||||
1 empty leafs
|
||||
0 water leafs
|
||||
0 detail leafs
|
||||
0 detail illusionary leafs
|
||||
0 detail fence leafs
|
||||
0 illusionary visblocker leafs
|
||||
386 leaffaces
|
||||
386 nodefaces
|
||||
---- PortalizeWorld ----
|
||||
1 vis leafs
|
||||
1 vis clusters
|
||||
0 vis portals
|
||||
---- TJunc ----
|
||||
120 world edges
|
||||
988 edge points
|
||||
192 edges added by tjunctions
|
||||
1 faces added by tjunctions
|
||||
---- MakeFaceEdges ----
|
||||
---- GrowRegions ----
|
||||
Processing hull 1...
|
||||
WARNING: No entities in empty space -- no filling performed (hull 1)
|
||||
Processing hull 2...
|
||||
WARNING: No entities in empty space -- no filling performed (hull 2)
|
||||
Writing qbsp_tjunc_many_sided_face.bsp as BSP version Quake BSP
|
||||
Wrote qbsp_tjunc_many_sided_face.bsp
|
||||
1 models
|
||||
39 planes 780
|
||||
484 vertexes 5808
|
||||
6 nodes 144
|
||||
18 texinfos 720
|
||||
387 faces 7740
|
||||
112 clipnodes 896
|
||||
2 leafs 56
|
||||
387 marksurfaces 774
|
||||
870 edges 3480
|
||||
1738 surfedges 6952
|
||||
textures 3
|
||||
lightdata 0
|
||||
visdata 0
|
||||
entdata 139
|
||||
|
||||
0.056s seconds elapsed
|
||||
61
vis/vis.cc
61
vis/vis.cc
|
|
@ -7,6 +7,7 @@
|
|||
#include <vis/leafbits.hh>
|
||||
#include <vis/vis.hh>
|
||||
#include <common/log.hh>
|
||||
#include <common/bsputils.hh>
|
||||
#include <common/threads.hh>
|
||||
#include <common/fs.hh>
|
||||
#include <common/parallel.hh>
|
||||
|
|
@ -65,66 +66,6 @@ settings::vis_settings options;
|
|||
|
||||
fs::path portalfile, statefile, statetmpfile;
|
||||
|
||||
/*
|
||||
===============
|
||||
CompressRow
|
||||
===============
|
||||
*/
|
||||
int CompressRow(const uint8_t *vis, const int numbytes, uint8_t *out)
|
||||
{
|
||||
int i, rep;
|
||||
uint8_t *dst;
|
||||
|
||||
dst = out;
|
||||
for (i = 0; i < numbytes; i++) {
|
||||
*dst++ = vis[i];
|
||||
if (vis[i])
|
||||
continue;
|
||||
|
||||
rep = 1;
|
||||
for (i++; i < numbytes; i++)
|
||||
if (vis[i] || rep == 255)
|
||||
break;
|
||||
else
|
||||
rep++;
|
||||
*dst++ = rep;
|
||||
i--;
|
||||
}
|
||||
|
||||
return dst - out;
|
||||
}
|
||||
|
||||
/*
|
||||
===================
|
||||
DecompressRow
|
||||
===================
|
||||
*/
|
||||
void DecompressRow(const uint8_t *in, const int numbytes, uint8_t *decompressed)
|
||||
{
|
||||
int c;
|
||||
uint8_t *out;
|
||||
int row;
|
||||
|
||||
row = numbytes;
|
||||
out = decompressed;
|
||||
|
||||
do {
|
||||
if (*in) {
|
||||
*out++ = *in++;
|
||||
continue;
|
||||
}
|
||||
|
||||
c = in[1];
|
||||
if (!c)
|
||||
FError("0 repeat");
|
||||
in += 2;
|
||||
while (c) {
|
||||
*out++ = 0;
|
||||
c--;
|
||||
}
|
||||
} while (out - decompressed < row);
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
AllocStackWinding
|
||||
|
|
|
|||
Loading…
Reference in New Issue