testqbsp: add origin brush test

This commit is contained in:
Eric Wasylishen 2022-04-26 23:16:43 -06:00
parent 25dc4f5871
commit 9f3b752bec
2 changed files with 47 additions and 47 deletions

View File

@ -7,6 +7,7 @@
#include <common/qvec.hh>
#include <testmaps.hh>
#include <algorithm>
#include <cstring>
#include <map>
@ -484,3 +485,30 @@ TEST(testmaps_q1, brush_clipping_order)
ASSERT_NE(nullptr, func_wall_button_face);
ASSERT_STREQ("sbutt2", Face_TextureName(&bsp, func_wall_button_face));
}
/**
* Box room with a rotating fan (just a cube). Works in a mod with hiprotate - AD, Quoth, etc.
*/
TEST(testmaps_q1, origin)
{
const mbsp_t bsp = LoadTestmap("qbsp_origin.map");
ASSERT_FALSE(map.leakfile);
// 0 = world, 1 = rotate_object
ASSERT_EQ(2, bsp.dmodels.size());
// check that the origin brush didn't clip away any solid faces, or generate faces
ASSERT_EQ(6, bsp.dmodels[1].numfaces);
// FIXME: should the origin brush update the dmodel's origin too?
ASSERT_EQ(qvec3f(0, 0, 0), bsp.dmodels[1].origin);
// check that the origin brush updated the entity lump
auto ents = EntData_Parse(bsp.dentdata);
auto it = std::find_if(ents.begin(), ents.end(),
[](const entdict_t &dict) -> bool { return dict.get("classname") == "rotate_object"; });
ASSERT_NE(it, ents.end());
ASSERT_EQ("216 -216 340", it->get("origin"));
}

View File

@ -79,56 +79,28 @@
"targetname" "fan"
// brush 0
{
( 208 -208 352 ) ( 208 -224 352 ) ( 208 -224 336 ) origin [ 0 -0.5 0 24 ] [ 0 0 -0.5 8 ] 0 1 1
( 208 -224 352 ) ( 224 -224 352 ) ( 224 -224 336 ) origin [ 0.5 0 0 -52 ] [ 0 0 -0.5 8 ] 0 1 1
( 224 -224 336 ) ( 224 -208 336 ) ( 208 -208 336 ) origin [ -0.5 0 0 52 ] [ 0 -0.5 0 24 ] 0 1 1
( 208 -208 352 ) ( 224 -208 352 ) ( 224 -224 352 ) origin [ 0.5 0 0 -52 ] [ 0 -0.5 0 24 ] 0 1 1
( 224 -208 336 ) ( 224 -208 352 ) ( 208 -208 352 ) origin [ -0.5 0 0 52 ] [ 0 0 -0.5 8 ] 0 1 1
( 224 -224 352 ) ( 224 -208 352 ) ( 224 -208 336 ) origin [ 0 0.5 0 -24 ] [ 0 0 -0.5 8 ] 0 1 1
( 208 -208 344 ) ( 208 -224 344 ) ( 208 -224 328 ) origin [ 0 -0.5 0 24 ] [ 0 0 -0.5 8 ] 0 1 1
( 208 -224 344 ) ( 224 -224 344 ) ( 224 -224 328 ) origin [ 0.5 0 0 -52 ] [ 0 0 -0.5 8 ] 0 1 1
( 224 -224 332 ) ( 224 -208 332 ) ( 208 -208 332 ) origin [ -0.5 0 0 52 ] [ 0 -0.5 0 24 ] 0 1 1
( 208 -208 348 ) ( 224 -208 348 ) ( 224 -224 348 ) origin [ 0.5 0 0 -52 ] [ 0 -0.5 0 24 ] 0 1 1
( 224 -208 328 ) ( 224 -208 344 ) ( 208 -208 344 ) origin [ -0.5 0 0 52 ] [ 0 0 -0.5 8 ] 0 1 1
( 224 -224 344 ) ( 224 -208 344 ) ( 224 -208 328 ) origin [ 0 0.5 0 -24 ] [ 0 0 -0.5 8 ] 0 1 1
}
// brush 1
{
( 212 -220 348 ) ( 204 -272 348 ) ( 204 -272 340 ) bolt14 [ -6.123233995736766e-17 -1 0 16 ] [ 0 0 -1 -12 ] 0 1 1
( 204 -272 348 ) ( 228 -272 348 ) ( 228 -272 340 ) bolt14 [ 1 -6.123233995736766e-17 0 -20 ] [ 0 0 -1 -12 ] 0 1 1
( 204 -272 340 ) ( 228 -272 340 ) ( 220 -220 340 ) bolt14 [ -6.123233995736766e-17 -1 0 16 ] [ 1 -6.123233995736766e-17 0 -20 ] 90 1 1
( 220 -220 348 ) ( 228 -272 348 ) ( 204 -272 348 ) bolt14 [ 6.123233995736766e-17 1 0 -16 ] [ 1 -6.123233995736766e-17 0 -20 ] 270 1 1
( 220 -220 340 ) ( 220 -220 348 ) ( 212 -220 348 ) bolt14 [ -1 6.123233995736766e-17 0 20 ] [ 0 0 -1 -12 ] 0 1 1
( 228 -272 340 ) ( 228 -272 348 ) ( 220 -220 348 ) bolt14 [ 6.123233995736766e-17 1 0 -16 ] [ 0 0 -1 -12 ] 0 1 1
( 168 -192 344 ) ( 168 -240 344 ) ( 168 -240 336 ) bolt14 [ -0.7071067811865477 0.7071067811865477 0 0 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1
( 168 -240 344 ) ( 264 -240 344 ) ( 264 -240 336 ) bolt14 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 264 -240 336 ) ( 264 -192 336 ) ( 168 -192 336 ) bolt14 [ -1 0 0 24 ] [ 0 -1 0 20 ] 0 1 1
( 168 -192 344 ) ( 264 -192 344 ) ( 264 -240 344 ) bolt14 [ 1 0 0 -24 ] [ 0 -1 0 20 ] 0 1 1
( 264 -192 336 ) ( 264 -192 344 ) ( 168 -192 344 ) bolt14 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 264 -240 344 ) ( 264 -192 344 ) ( 264 -192 336 ) bolt14 [ 0.7071067811865477 -0.7071067811865477 0 0 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1
}
// brush 2
}
// entity 4
{
( 160 -204 348 ) ( 160 -228 348 ) ( 160 -228 340 ) bolt14 [ 0 -1 0 44 ] [ 0 0 -1 -12 ] 0 1 1
( 212 -220 340 ) ( 212 -212 340 ) ( 160 -204 340 ) bolt14 [ -1 0 0 0 ] [ 0 -1 0 44 ] 0 1 1
( 160 -204 348 ) ( 212 -212 348 ) ( 212 -220 348 ) bolt14 [ 1 0 0 0 ] [ 0 -1 0 44 ] 0 1 1
( 160 -228 348 ) ( 212 -220 348 ) ( 212 -220 340 ) bolt14 [ 1 0 0 0 ] [ 0 0 -1 -12 ] 0 1 1
( 212 -212 340 ) ( 212 -212 348 ) ( 160 -204 348 ) bolt14 [ -1 0 0 0 ] [ 0 0 -1 -12 ] 0 1 1
( 212 -220 348 ) ( 212 -212 348 ) ( 212 -212 340 ) bolt14 [ 0 1 0 -44 ] [ 0 0 -1 -12 ] 0 1 1
}
// brush 3
{
( 212 -212 340 ) ( 204 -160 340 ) ( 204 -160 348 ) bolt14 [ -6.123233995736766e-17 -1 0 16 ] [ 0 0 -1 -12 ] 0 1 1
( 212 -212 348 ) ( 220 -212 348 ) ( 220 -212 340 ) bolt14 [ 1 -6.123233995736766e-17 0 -20 ] [ 0 0 -1 -12 ] 0 1 1
( 220 -212 340 ) ( 228 -160 340 ) ( 204 -160 340 ) bolt14 [ -6.123233995736766e-17 -1 0 16 ] [ 1 -6.123233995736766e-17 0 -20 ] 90 1 1
( 204 -160 348 ) ( 228 -160 348 ) ( 220 -212 348 ) bolt14 [ 6.123233995736766e-17 1 0 -16 ] [ 1 -6.123233995736766e-17 0 -20 ] 270 1 1
( 228 -160 340 ) ( 228 -160 348 ) ( 204 -160 348 ) bolt14 [ -1 6.123233995736766e-17 0 20 ] [ 0 0 -1 -12 ] 0 1 1
( 220 -212 348 ) ( 228 -160 348 ) ( 228 -160 340 ) bolt14 [ 6.123233995736766e-17 1 0 -16 ] [ 0 0 -1 -12 ] 0 1 1
}
// brush 4
{
( 220 -212 348 ) ( 220 -220 348 ) ( 220 -220 340 ) bolt14 [ 0 -1 0 44 ] [ 0 0 -1 -12 ] 0 1 1
( 220 -220 348 ) ( 272 -228 348 ) ( 272 -228 340 ) bolt14 [ 1 0 0 0 ] [ 0 0 -1 -12 ] 0 1 1
( 272 -204 340 ) ( 272 -204 348 ) ( 220 -212 348 ) bolt14 [ -1 0 0 0 ] [ 0 0 -1 -12 ] 0 1 1
( 272 -228 340 ) ( 272 -204 340 ) ( 220 -212 340 ) bolt14 [ -1 0 0 0 ] [ 0 -1 0 44 ] 0 1 1
( 220 -212 348 ) ( 272 -204 348 ) ( 272 -228 348 ) bolt14 [ 1 0 0 0 ] [ 0 -1 0 44 ] 0 1 1
( 272 -228 348 ) ( 272 -204 348 ) ( 272 -204 340 ) bolt14 [ 0 1 0 -44 ] [ 0 0 -1 -12 ] 0 1 1
}
// brush 5
{
( 212 -220 348 ) ( 212 -212 340 ) ( 212 -212 348 ) bolt14 [ 0 -1 0 20 ] [ 0 0 -1 20 ] 0 1 1
( 220 -220 348 ) ( 212 -220 340 ) ( 212 -220 348 ) bolt14 [ 1 0 0 -24 ] [ 0 0 -1 20 ] 0 1 1
( 220 -212 340 ) ( 212 -220 340 ) ( 220 -220 340 ) bolt14 [ -1 0 0 24 ] [ 0 -1 0 20 ] 0 1 1
( 220 -212 348 ) ( 212 -220 348 ) ( 212 -212 348 ) bolt14 [ 1 0 0 -24 ] [ 0 -1 0 20 ] 0 1 1
( 220 -212 348 ) ( 212 -212 340 ) ( 220 -212 340 ) bolt14 [ -1 0 0 24 ] [ 0 0 -1 20 ] 0 1 1
( 220 -212 348 ) ( 220 -220 340 ) ( 220 -220 348 ) bolt14 [ 0 1 0 -20 ] [ 0 0 -1 20 ] 0 1 1
}
"classname" "func_rotate_entity"
"origin" "216 -216 340"
"target" "fan"
"rotate" "0 -90 0"
"spawnflags" "2"
}