Commit Graph

293 Commits

Author SHA1 Message Date
Eric Wasylishen b06736dea4 qbsp: fix leak in base1leak test 2022-05-05 01:01:33 -06:00
Eric Wasylishen 5cae1919ce qbsp: fix areaportals 2022-05-04 21:04:36 -06:00
Eric Wasylishen 893b0b080e qbsp: move to unique_ptr<brush_t> vectors 2022-05-03 02:35:43 -06:00
Eric Wasylishen bec0357352 qbsp: proper marksurfaces population 2022-05-02 02:35:13 -06:00
Eric Wasylishen e1eb0e8cbd qbsp: fix noclipfaces issues 2022-05-02 00:05:50 -06:00
Eric Wasylishen 2ad9e27d3b qbsp: remove unused face csg code 2022-05-01 01:13:03 -06:00
Eric Wasylishen 81e0da4d62 qbsp: mark invisible sides on brush entities
fixes brush_clipping_order test failure
2022-05-01 00:01:11 -06:00
Eric Wasylishen 5b4a9956c6 qbsp: add -debugchop 2022-04-30 15:10:19 -06:00
Eric Wasylishen cb2268efdf qbsp: initial ChopBrushes implementation 2022-04-30 14:33:26 -06:00
Eric Wasylishen 029e95dc3b qbsp: add PruneNodes 2022-04-28 00:49:26 -06:00
Eric Wasylishen 8efb6f689b qbsp: add -outsidedebug flag 2022-04-27 19:18:27 -06:00
Eric Wasylishen 90e064e9e1 testqbsp: attempt to add a q2 test case (not working yet) 2022-04-26 23:45:44 -06:00
Eric Wasylishen d5320d5aaa qbsp: subdivide faces after merging 2022-04-26 21:41:03 -06:00
Eric Wasylishen df9d530c21 qbsp: fix weird calling convention of SubdivideFace 2022-04-26 21:32:24 -06:00
Eric Wasylishen f9aa40a50f qbsp: fix outside filling in maps with detail 2022-04-26 00:25:52 -06:00
Eric Wasylishen 064147b908 qbsp: move PortalizeWorld() to portals.hh 2022-04-24 01:07:20 -06:00
Eric Wasylishen 133ee77fc5 testqbsp: fix textures not loading in tests 2022-04-20 01:31:26 -06:00
Eric Wasylishen aa3174d732 testqbsp: initialize filesystem the same as a regular qbsp run 2022-04-20 01:25:29 -06:00
Eric Wasylishen 78210947ff qbsp: add -keepprt option 2022-04-19 01:03:18 -06:00
Eric Wasylishen 28c9cda561 Merge remote-tracking branch 'Paril/type-cleanup' into brushbsp 2022-04-17 13:46:50 -06:00
Eric Wasylishen 20a1b7b94b qbsp: szBSPName -> bsp_path, szMapName -> map_path 2022-04-17 13:41:23 -06:00
Jonathan 0b41f0a03b notriggermodels support 2022-04-16 22:20:29 -04:00
Eric Wasylishen f467257f72 qbsp: start test case for qbsp_simple_sealed2.map 2022-04-15 21:05:14 -06:00
Eric Wasylishen 8a71b372bd qbsp: remove unnecessary num*() helpers from mapdata_t 2022-04-15 00:27:50 -06:00
Eric Wasylishen 5df0dde756 map.cc: move rgfStartSpots to map struct 2022-04-11 17:49:49 -06:00
Eric Wasylishen 9d2f00a1b2 qbsp: tidying: move pWorldEnt() to mapdata_t 2022-04-11 00:13:42 -06:00
Eric Wasylishen b7fbb48763 qbsp: enable new outside filling 2022-04-10 00:00:28 -06:00
Eric Wasylishen a3d54cf48d qbsp: remove unused face_t::original 2022-04-09 23:40:35 -06:00
Eric Wasylishen 407b39cad1 qbsp.hh: remove writebsp.hh and outside.hh includes 2022-04-09 23:30:42 -06:00
Eric Wasylishen b736704e5e qbsp.hh: remove portals.hh include 2022-04-09 23:28:12 -06:00
Eric Wasylishen 95824d26e4 qbsp.hh: remove surfaces.hh include 2022-04-09 23:25:54 -06:00
Eric Wasylishen ca589906d8 qbsp.hh: remove merge.hh include 2022-04-09 23:25:01 -06:00
Eric Wasylishen 2e14909e84 qbsp.hh: remove map.hh include 2022-04-09 23:23:26 -06:00
Eric Wasylishen f71ae3658e qbsp.hh: remove solidbsp.hh include 2022-04-09 23:19:34 -06:00
Eric Wasylishen 147a76c11b qbsp.hh: remove csg4.hh include 2022-04-09 23:17:43 -06:00
Eric Wasylishen 9295181f84 qbsp.hh: remove brush.hh include 2022-04-09 23:15:21 -06:00
Eric Wasylishen 39d1930446 outside.cc: prototype marking visible brush sides 2022-04-09 21:46:01 -06:00
Eric Wasylishen edad06cc5a qbsp: planning outside filling approach, wip 2022-04-05 19:46:59 -06:00
Eric Wasylishen 449b76db70 qbsp: remove unused region.hh header 2022-04-05 19:46:59 -06:00
Eric Wasylishen a019088c2f Merge branch 'type-cleanup' into brushbsp 2022-04-02 21:05:46 -06:00
Jonathan c81e9ace28 remove old threading code entirely
add new parallel logging stuff in common/parallel which wraps parallel_for(_each) and provides automatic percentage indicator
fix issue with light not pulling in settings
move logging stuff into its own namespace and simplify
2022-03-01 10:28:59 -05:00
Jonathan df92d9ce12
Command line args systems (#2)
* cmd

* cmake change for tbb DLLs
add in test for double-hyphens

* cmd

* game version

* settings!

* bsp texture usage
decompile fix for q1bsp

* finish up the options for qbsp

* light finished?

* finish up the few missing bits

* move scalar/int32 up

* Run clang-format pass

* natvis for our mathlib
use slightly faster storage for winding
fix light tests

* allow dictionary to be a base type

* re-run style

* Remove cfg_static
Fix options summary

* natvis for lockable_value<T>

* last-ish pass?

* format

* forgot last few lockables
2022-02-27 00:01:57 -05:00
Eric Wasylishen b04a6e9a30 qbsp: csg: re-add checking of map file order 2022-02-21 12:00:26 -07:00
Eric Wasylishen 3b348af301 qbsp: wip mirroring faces 2022-02-21 00:47:57 -07:00
Eric Wasylishen 91f7d9adaa qbsp: remove surface_t 2022-02-21 00:05:48 -07:00
Eric Wasylishen 70ea752587 qbsp: restore MergeAll 2022-02-20 23:57:42 -07:00
Eric Wasylishen cb464031da qbsp: track original brushes, populate q2 leafbrushes accurately 2022-02-20 16:10:44 -07:00
Eric Wasylishen 8c84871129 qbsp: wip: add CSG-ing back in 2022-02-20 01:19:55 -07:00
Eric Wasylishen 2a257693c6 Merge branch 'type-cleanup' into brushbsp 2022-02-17 00:43:08 -07:00
Jonathan b0ece93f83 Fix/implement animated textures for Q2 2022-02-16 19:23:19 -05:00
Eric Wasylishen 055f865ef0 qbsp: add very rough pass of building visible faces
- faces are subdivided where neeed
- markfaces not calculated accurately
- overlaps/clipping not handled
2022-02-13 19:51:59 -07:00
Eric Wasylishen 1fbfd199c5 qbsp: wip port of BrushBSP from Q2 tools
currently can compile qbsp_simple.map (2 brushes)
no faces, but generates leafs/nodes which seem OK
2022-02-13 12:03:27 -07:00
Eric Wasylishen dc10d90c36 add missing <list> include 2022-02-07 00:35:27 -07:00
Eric Wasylishen 6b5b426636 qbsp: remove internal list in face_t 2022-02-07 00:02:51 -07:00
Jonathan ed325eedea surface faces now use list/vector 2022-02-06 11:39:22 -07:00
Eric Wasylishen 8531286777 qbsp: replace `-nothreads` with `-threads 1` for consistency with light/vis 2022-01-30 17:50:21 -07:00
Jonathan d076920665 Revert "Instead of calculating brush extents globally, do it per brush creation"
This reverts commit 069720078f.
2022-01-27 01:52:08 -05:00
Jonathan 069720078f Instead of calculating brush extents globally, do it per brush creation
Use portal node bounds for extents
2022-01-27 01:03:38 -05:00
Jonathan 3f37de95a5 Fix tests 2022-01-26 18:15:53 -05:00
Jonathan 571e7337fc Fix the temporary hintskip detection and finally move it to gamedef
Dynamic extent calculation - turned on by default - will automatically determine the extents used for winding_from_plane beforehand. On a 50kb .map file it only takes about 10ms, so for the majority of maps it should be instantaneous.
2022-01-26 18:03:31 -05:00
Jonathan f9f76b6dbb skip the flips - saves us a bit of time! 2022-01-25 04:18:52 -05:00
Jonathan 674be0c812 Fix a few messages (missing newlines, period in wrong place)
Use fragments to store TJunction bits instead of having them in separate-but-chained faces
2022-01-25 03:23:39 -05:00
Jonathan dfd31d7441 make markfaces a vector to simplify usage 2022-01-25 00:13:12 -05:00
Jonathan 1764afb475 Revert "Revert "make brush::faces a vector""
This reverts commit 11d2d51165.

Fixes implementation - was swapped logic in brush bevels
2022-01-24 14:55:21 -05:00
Jonathan 11d2d51165 Revert "make brush::faces a vector"
This reverts commit 30c7ef94ac.

This was causing issues with bevel brushes in Q2 mode. Not sure why yet. Will attempt this again soonish.
2022-01-24 14:26:28 -05:00
Jonathan be865bc5b8 Fix `face_get_contents` not handling hintskip properly
Simplify `Brush_GetContents` and use the first non-skip face as the base contents
Move period out of `LoadExternalMap` error message so it doesn't confuse the reader
Fix `WriteEntitiesToString` crashing on entities without any brushes (note: need a column/line on mapentity in future)
2022-01-23 23:18:59 -05:00
Jonathan e92b9f1ff9 Fix miscalculation for has_struct
Remove unused variable
2022-01-23 21:48:24 -05:00
Jonathan 5d6d7a71a2 Fix missing includes for list 2022-01-23 19:28:50 -05:00
Jonathan 75339df231 Simplify surface_t by using lists 2022-01-23 19:00:01 -05:00
Jonathan 5f81657621 move calculatesurfaceinfo into a member func 2022-01-23 00:46:11 -05:00
Jonathan 5dd2deba8e use custom type for two-sided things to simplify brain power (.front/.back is easier to process than [0]/[1]) 2022-01-23 00:26:58 -05:00
Jonathan 07dd73e5bc Persist native contents when converting them to detail
Simplify hull areas
Q2's `face_get_contents` generated empty surfaces when SKIP was used. It now has another line of defense to ensure contents aren't set to empty, but I'm not sure where the other line of defense went that was supposed to do this.
Remove old comment
2022-01-22 17:23:51 -05:00
Jonathan 63b8608799 Remove unused functions & tests
Fix test harness
2022-01-17 14:35:18 -05:00
Jonathan 53b4f640e2 use vector<brush_t> directly now 2022-01-17 11:06:13 -05:00
Jonathan 1a0b8c724a use vector of unique_ptrs for brushes; temporary, going to simplify it further 2022-01-17 10:42:24 -05:00
Jonathan 30c7ef94ac make brush::faces a vector 2022-01-17 09:49:10 -05:00
Eric Wasylishen b681690807 qbsp: fix some memory leaks 2022-01-16 12:47:19 -07:00
Jonathan e2d64e0e5d FS simplification
Fix transparency calculation (33% is 33% opacity, not 33% transparency)
2021-12-20 14:51:14 -05:00
Jonathan 0c827208ec Allow `-subdivide 0` to turn off subdivision
imglib now lives in common
fs 'load' split into two functions, where and load. the former allows you to query for and return archive & path for a given file, whereas the latter handles that for you.
use log verbose in light rather than own verbose flag
2021-11-21 15:08:02 -05:00
Jonathan 8cadf06d81 New FS!
First FS test: use it for decompile for Q2 to prevent unnecessary suffixes
2021-11-05 19:25:37 -04:00
Eric Wasylishen a937e3cdba qbsp: areaportal support 2021-10-27 22:51:43 -06:00
Jonathan c37ec80667 Implement game-agnostic Brush_GetContents 2021-10-26 09:13:48 -04:00
Jonathan cb3c81aaf8 vec3_t gonedy 2021-10-21 20:21:28 -04:00
Jonathan 84b4388f4b Added a deprecation sniffer so I can find problematic areas later
Revert tjunc fixes
Add -notjunc to match other editors
Rid Light_Add since it's too simple
2021-10-20 04:27:22 -04:00
Jonathan 1bf6261826 constexpr/inline qv:: where appropriate
comment out rewrite test in bspinfo
updated tjunc code
2021-10-19 23:26:43 -04:00
Jonathan a7de4bdae2 Remove unused thingies
Use qplane3 where we can
2021-10-17 06:24:02 -04:00
Jonathan e974285fe7 Merge branch 'type-cleanup' of https://github.com/Paril/ericw-tools into type-cleanup 2021-10-12 13:52:53 -04:00
Jonathan e1290fd0f4 Snap normals/tangents/bitangents written from WriteNormals to save some bits
Texvec inherits mat<2, 4> now, since it's the most logical type for it to be based on.
2021-10-12 13:52:47 -04:00
Jonathan e6fd6b653e A few more vec3_t -> qvec
qmat follows other type conventions (T, N, M) and is annotated differently so it's not as confusing to follow
Removed qmat::operator[] - it's not clear from calling it that it's column-major (as evidenced by the comments needing to explicitly make clear at call sites that it's column, not row), so I've collapsed them into two separate functions that explicitly fetch either a column or a row. This also ties them nicely into qvec<N>.
2021-10-12 12:03:59 -04:00
Eric Wasylishen c88274f806 qbsp: outside.cc: rewrite with outside -> in filling 2021-10-11 22:40:26 -06:00
Jonathan bd6bc0dc56 surfflags remap -> is_valid to match contentflags
warn on excessive key/value lengths, per-game
2021-10-11 19:45:55 -04:00
Jonathan 01b8abf93c Removed a lot of unused functions
Moved vector-related operations from mathlib to qvec, moved a few into qv::
Use clamp/max/min directly instead of #define'ing them
Move a few single-use functions directly above their usages
2021-10-10 14:04:09 -04:00
Jonathan a8d5125321 Merge branch 'type-cleanup' of https://github.com/Paril/ericw-tools into type-cleanup 2021-10-09 14:14:54 -04:00
Jonathan eb4bcf96dc -includeskip for Q2RTX
Fix missing fmt include
Default nexttexinfo to -1 to match other tools
Fmt support for bspversion_t, use that instead of a static function
Cleanup write functions
2021-10-09 14:14:49 -04:00
Eric Wasylishen 5cf82ee023 qbsp: restore use of options.worldExtent
should fix minor precision differences in .prt files
2021-10-08 19:04:11 -06:00
Eric Wasylishen f6e9ba4eb2 qbsp: drop mapentity_t::epair_order and std::map for epairs
just store as a std::vector of pairs. Lookups aren't done much in qbsp
so linear search performance should be fine.

epair_order approach gets messy because we sometimes add epairs
2021-10-06 18:26:25 -06:00
Eric Wasylishen c54fea1e87 qbsp: face_t: use a std::vector for edges
shared_ptr of C arrays is not working on macOS,
but std::vector is also more correct semantically
2021-10-05 23:15:43 -06:00
Jonathan ca0111ce5d Fix missing unordered_map
Maybe fix for tons of -Wunused-value
2021-10-05 23:00:13 -04:00
Jonathan 52839d4e7f Run clang-format pass 2021-10-05 15:54:06 -04:00
Jonathan ae4512da2c BSPX structurization and cleanup
Some more vec3_t removals
A bunch of float -> vec_t in light
Simplified construction of lockables
mapdata_t writes directly to an mbsp instead of vector copies
2021-10-03 12:16:13 -04:00