From ca7002cb389ec20021441ee1fb009abf100a083c Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Wed, 6 Oct 2021 17:54:34 -0600 Subject: [PATCH] qbsp: preserve .map file order of epairs --- qbsp/map.cc | 8 +++++-- testmaps/qbsp-vis.sha256sum | 24 +++++++++---------- testmaps/qbsp.sha256sum | 24 +++++++++---------- .../qbsp_func_detail.bsp.json | 2 +- ...unc_detail_illusionary_plus_water.bsp.json | 2 +- 5 files changed, 32 insertions(+), 28 deletions(-) diff --git a/qbsp/map.cc b/qbsp/map.cc index 252dae4e..6aca436a 100644 --- a/qbsp/map.cc +++ b/qbsp/map.cc @@ -486,9 +486,13 @@ ParseEpair(parser_t *parser, mapentity_t *entity) { epair_t *epair; + epair_t **next_ptr = &entity->epairs; + while (*next_ptr) { + next_ptr = &(*next_ptr)->next; + } + epair = (epair_t *)AllocMem(OTHER, sizeof(epair_t), true); - epair->next = entity->epairs; - entity->epairs = epair; + *next_ptr = epair; if (strlen(parser->token) >= MAX_KEY - 1) goto parse_error; diff --git a/testmaps/qbsp-vis.sha256sum b/testmaps/qbsp-vis.sha256sum index d56a413b..e0c0457d 100644 --- a/testmaps/qbsp-vis.sha256sum +++ b/testmaps/qbsp-vis.sha256sum @@ -1,12 +1,12 @@ -416e68cd92c817f206c11006db21bd6b0cbc330eee63bdfc66afc5152b406760 *qbsp_func_detail.bsp -c338b813b6529e5cd790720e3bc6a9e8f74e02e3348db04756174403f3331b8c *qbsp_func_detail_illusionary_plus_water.bsp -c9683e945bb01528a768653cdb79584dfbc8be6f76b712cbf0d24482a4ae3cc3 *e1m1-bsp29.bsp -a8024b07d48abc0553ff3628d6d4cb62138f67808b425b833e5643068231c2e4 *e1m1-bsp2.bsp -cb11d4f40d92c9d349fd11f9e4901e9cd9aa82db9971181a615c197f75f4b4a6 *e1m1-2psb.bsp -f5656ae5a98b4044568e70a411afe2b37cae41c14f7262f26be2aa45aebc3672 *e1m1-hexen2.bsp -4e0fec87702736481d08d67366f300bf351944f0ebcd4daafa56cbfb2f509893 *e1m1-hexen2-bsp2.bsp -a5eb5b451baab8db48a141285479669656010fc7d3945e30672d609169b040e5 *e1m1-hexen2-2psb.bsp -ecf7a82cfad86c3b8a330645233c17011f77b8fef844130ac85dd6e8972eea8f *e1m1-hlbsp.bsp -ce687f32a1059eb60bfb2b3868dc5fa8446a62aefc40f9cb459d0242b16b39ef *e1m1-bspxbrushes.bsp -0feeb8e76b2c3e0a9d8abf1233fc1450e85c6b54ade5a96dea9f965f0fbc2dde *e1m1-bsp29-onlyents.bsp -8536a7000d995ec1c9365aebe492412f0d175ef49b72f30990b621b48145d881 *qbspfeatures.bsp +d826cb6697a05a349942df7cc016ef3c7a01dd1ad220a7555ec4b7c99ed50840 *qbsp_func_detail.bsp +8e28e1c2dbaf670e4b38e50ec79d4806b7c866a37c1bca492ffb6b554de2072d *qbsp_func_detail_illusionary_plus_water.bsp +e6b67b2cc464e000896dc547b19b77074bbcb029fd9e39546a2a56da2eb74894 *e1m1-bsp29.bsp +9d15751394e7192c8f0fb5e9b832aca9c04bcf97213935e37680273cb90bcfe0 *e1m1-bsp2.bsp +97e0e9fa25ab257a0ea610964d821bee0cbd55dddd4c8fd60bffe9a11de1739d *e1m1-2psb.bsp +b617f77a387efe4c6eb398f254d5b72e85fb4b377f0512ec65232092ca4dc30b *e1m1-hexen2.bsp +cde34a66f76fc4dd7cdf36f43b68a7256f80f1083ef50822ef1b60484d4985ab *e1m1-hexen2-bsp2.bsp +8f038b13625aa708daea90a0a63b5481d3314ea603572165dc79243d14ba8034 *e1m1-hexen2-2psb.bsp +bd4ecbfb7ca9002fc54d6c42a54d120ec67e9638f7329a7d0465afcfeb30dc88 *e1m1-hlbsp.bsp +48fc09913eec1ea1c09edf651824b3fd63a55274d1b3f54e39aa537b93132959 *e1m1-bspxbrushes.bsp +e5cd1c62ddc896d8e0363877df05ca41e305818c93044e7952738a99cfc5e5a1 *e1m1-bsp29-onlyents.bsp +e8a677558ea4d0e870ad2b3eae0150a20f1e06295a0089a966becd61401d53a5 *qbspfeatures.bsp diff --git a/testmaps/qbsp.sha256sum b/testmaps/qbsp.sha256sum index 3ae8cee3..5eb38777 100644 --- a/testmaps/qbsp.sha256sum +++ b/testmaps/qbsp.sha256sum @@ -1,15 +1,15 @@ -45d60368c37ee3523f9a1dbc140f34ae7728fc13d3cb8a43e7b22caefe46edb1 *qbsp_func_detail.bsp -565e9aef399341eef99fc37212d7ab314df8f6dd850a8ca5a471661088d7d3bc *qbsp_func_detail_illusionary_plus_water.bsp -d289427e3c8a7046dce509a83401f6732a9c5f8194f8beb3eee431e33215656c *e1m1-bsp29.bsp -85002a12afa023d850199e205f01fc58de2743f97aea9b2a22a3b0ac3ce8f7ad *e1m1-bsp2.bsp -832ec9aff302ddfcc5ab4fe0911afec0b4d57c60e02dc1c8f61e1edbf8f53eda *e1m1-2psb.bsp -5e20fca2a3b6c975efe257a5768d8f8cde10ecb96abec535ea2c2d0b45d3a051 *e1m1-hexen2.bsp -018b759817dcc2ca343bdd38d511c455c13be992734e97e2fa1ad88e614240b1 *e1m1-hexen2-bsp2.bsp -015c582d9a76ec0f911c5d5f2e7ebcc1ad01ee81860dd113222259f65a40e953 *e1m1-hexen2-2psb.bsp -66936b95d27716cbcb28bc6bf8a0191f8d53bc7e2823abcb85cd04fec9d2fcb6 *e1m1-hlbsp.bsp -015c5fb3f350dfb10c031ed3ae44b3e094fbde38c48dec0897d0710fcbc7666c *e1m1-bspxbrushes.bsp -af7bc468d76aa1b11d1881a3378877059c6fd33fb37bea555d332e17d0e1e23c *e1m1-bsp29-onlyents.bsp -9f6db65a0c8a3eaa369deb3bb3168b5da69f23eb80a12788ff50d3c30b8a469a *qbspfeatures.bsp +1a6d64c09916e89ca9be0f78f1382bb26758249a6ea37673a974f746a7ae73a6 *qbsp_func_detail.bsp +6224e51aa5d697f79bc98971964916fc8abea4b87d809bb1aa9cf618bdd26493 *qbsp_func_detail_illusionary_plus_water.bsp +ff6481312cecce94f5702eef01e296d23b44cce0649a50a2c5ef88d18bd4d937 *e1m1-bsp29.bsp +ed6e532713ac624d046514d2dac54bb0d039298bcd5440c8024b17182d912365 *e1m1-bsp2.bsp +f5e6594ca62d9cb84463537d6c7fd688d9ed770820689e8ce116ebf4cd694e3c *e1m1-2psb.bsp +f9ec3608af2116ee0feca5cfac41f2052ad8881a094e2a274419f6ed35b974fd *e1m1-hexen2.bsp +2bbf7fc86a055fddcf98fbb160c790c5d09f504a45832792ee89b2d0846d28be *e1m1-hexen2-bsp2.bsp +529b542a6fb7e0874e84e815ed00ac9e90d9e8e1c4c46b4f6fa3114ca2da8fae *e1m1-hexen2-2psb.bsp +fe1ed71ea322fbdb4a94522410271afb53e8b11be95cd87d20622598bfd528e3 *e1m1-hlbsp.bsp +a0c244963bdf845beedc875cf3594045657d7f242f720e045e0fa3a8b031962a *e1m1-bspxbrushes.bsp +62fe5d3425b50d0d8d2b0adf781426af4ee4716152d3029b07391f3aca81c712 *e1m1-bsp29-onlyents.bsp +f8d672603bdf91c08fc37d8df7f6d51fc42b3258e94229b91896986a9c452704 *qbspfeatures.bsp abf3633d5a6d0e167ce9bacec476d3408c8240df5f3d72d14867cd201d4e3674 *qbsp_func_detail.prt c0995c6b92256fa048c1a755ebe7e07f5fae33cb64e3c53adc234380fe44f267 *qbsp_func_detail_illusionary_plus_water.prt 08349ab23c97120c41493d8fb00b9a6c41553aba64b1710ba11cc5bdfbe51e45 *e1m1-bsp29.prt diff --git a/testmaps/reference_bsp_json/qbsp_func_detail.bsp.json b/testmaps/reference_bsp_json/qbsp_func_detail.bsp.json index 770ed005..33f34b0e 100644 --- a/testmaps/reference_bsp_json/qbsp_func_detail.bsp.json +++ b/testmaps/reference_bsp_json/qbsp_func_detail.bsp.json @@ -889,7 +889,7 @@ 67 ] ], - "entdata": "{\n\"_tb_def\" \"builtin:Quoth2.fgd\"\n\"_wateralpha\" \"0.5\"\n\"wad\" \"deprecated/free_wad.wad;deprecated/fence.wad;deprecated/origin.wad;deprecated/hintskip.wad\"\n\"classname\" \"worldspawn\"\n\"mapversion\" \"220\"\n}\n{\n\"light\" \"3000\"\n\"origin\" \"72 -136 168\"\n\"classname\" \"light\"\n}\n{\n\"origin\" \"-88 -64 120\"\n\"classname\" \"info_player_start\"\n}\n\u0000", + "entdata": "{\n\"mapversion\" \"220\"\n\"classname\" \"worldspawn\"\n\"wad\" \"deprecated/free_wad.wad;deprecated/fence.wad;deprecated/origin.wad;deprecated/hintskip.wad\"\n\"_wateralpha\" \"0.5\"\n\"_tb_def\" \"builtin:Quoth2.fgd\"\n}\n{\n\"classname\" \"light\"\n\"origin\" \"72 -136 168\"\n\"light\" \"3000\"\n}\n{\n\"classname\" \"info_player_start\"\n\"origin\" \"-88 -64 120\"\n}\n\u0000", "faces": [ { "firstedge": 0, diff --git a/testmaps/reference_bsp_json/qbsp_func_detail_illusionary_plus_water.bsp.json b/testmaps/reference_bsp_json/qbsp_func_detail_illusionary_plus_water.bsp.json index 0c9b29e2..3a7090d7 100644 --- a/testmaps/reference_bsp_json/qbsp_func_detail_illusionary_plus_water.bsp.json +++ b/testmaps/reference_bsp_json/qbsp_func_detail_illusionary_plus_water.bsp.json @@ -347,7 +347,7 @@ 19 ] ], - "entdata": "{\n\"wad\" \"deprecated/fence.wad;deprecated/free_wad.wad\"\n\"classname\" \"worldspawn\"\n\"mapversion\" \"220\"\n}\n{\n\"light\" \"3000\"\n\"origin\" \"72 -136 168\"\n\"classname\" \"light\"\n}\n{\n\"origin\" \"-88 -64 120\"\n\"classname\" \"info_player_start\"\n}\n\u0000", + "entdata": "{\n\"mapversion\" \"220\"\n\"classname\" \"worldspawn\"\n\"wad\" \"deprecated/fence.wad;deprecated/free_wad.wad\"\n}\n{\n\"classname\" \"light\"\n\"origin\" \"72 -136 168\"\n\"light\" \"3000\"\n}\n{\n\"classname\" \"info_player_start\"\n\"origin\" \"-88 -64 120\"\n}\n\u0000", "faces": [ { "firstedge": 0,