Commit Graph

1403 Commits

Author SHA1 Message Date
Jonathan 84870cf366 since tree_t only exists as a type that only allocates heap memory, we don't need to wrap it in a unique_ptr; this also allows the vectors to keep their memory on the next pass, which may improve performance for huge maps
removed tree_t parameter from functions that don't need it
pass reference to tree_t instead of ptr
use an enum instead of std::optional<bool> for the ternary value to store split type, since it's more explicit and obvious now what the three values do
2022-08-19 15:15:53 -04:00
Jonathan 69aad26097 move & document bevel boolean
don't report invalid winding more than once
ceil the extents, so we don't get weird values like "world extents calculated to 5082.29327318318"
2022-08-19 13:46:37 -04:00
Jonathan 057ae544c4 use references in places where we know it's non-null 2022-08-19 12:11:35 -04:00
Jonathan 39475e3213 use on_epsilon instead of 0.1, to match Q1 2022-08-19 09:44:11 -04:00
Jonathan 0c4888d5d1 remove leftover debug code 2022-08-19 09:42:11 -04:00
Jonathan 9596855c62 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-08-19 07:15:51 -04:00
Jonathan a5557bc87d Revert "remove the Q1 bevel stuff"
This reverts commit f5f80479a3.

# Conflicts:
#	qbsp/map.cc
2022-08-19 07:15:39 -04:00
Eric Wasylishen 6eab754ca3 qbsp: reset onnode at the beginning of BrushBSP 2022-08-18 22:26:33 -06:00
Jonathan f57ecaf599 Q3 didn't need chop, we don't either! 2022-08-18 19:47:34 -04:00
Jonathan 424e3ee110 remove unused portal_t::face, unused
rename and re-type a few things to use twosided
2022-08-17 09:10:58 -04:00
Jonathan 9e764d8035 document some stuff
remove mapface_t::value and mapface_t::flags; they are duplicated by texinfo
add mapface_t::get_texinfo and face_t::get_texinfo so that you can fetch them easier
2022-08-17 07:30:31 -04:00
Jonathan a2d6b63533 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
# Conflicts:
#	qbsp/brush.cc
#	qbsp/map.cc
2022-08-17 03:50:52 -04:00
Jonathan f5f80479a3 remove the Q1 bevel stuff 2022-08-17 03:49:42 -04:00
Eric Wasylishen fe43928802 fix build (unwanted static on TestExpandBrushes) 2022-08-17 01:18:11 -06:00
Eric Wasylishen a2a7b987bc revert last commit, q1 code is still producing better results with q1_rocks.map 2022-08-17 01:17:19 -06:00
Eric Wasylishen 688a033288 qbsp: switch back to qbsp3 brush bevels in q1 mode
now that the bug in the previous commit is fixed
2022-08-16 23:15:09 -06:00
Eric Wasylishen 6b1720e095 qbsp: fix bug from qbsp3's AddBrushBevels where edge bevels are wrongly rejected
fixes bad result in q1_hull_expansion_lip.map
2022-08-16 23:11:43 -06:00
Jonathan 95c728a5b6 fix legacy bevel bug
pushing up changes for Q1 hulls just in case we ever want these back
2022-08-16 13:52:30 -04:00
Jonathan 0c90a33f28 enable Q1-style hull expansion; these expanded brushes seem to look better. hopefully we can figure out a way to backport & optimize this code for mapbrush_t, but for now it's only used in Q1 hull expansions 2022-08-16 05:33:38 -04:00
Eric Wasylishen f62136e04d qbsp: wip fixing -expand feature 2022-08-16 01:36:09 -06:00
Eric Wasylishen 83cf63e77f revert using detail on hull1/2 for now as it's breaking tests 2022-08-15 21:17:17 -06:00
Jonathan 92fdff1222 FreeTreePortals call missing
allow decompiling hulls (not hooked up to console yet)
2022-08-15 12:23:09 -04:00
Jonathan 027c45d608 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-08-15 06:13:38 -04:00
Jonathan f7b8f85ece use an optional<uint8_t> to store hull number, which gets rid of special -1 collision hull number.
fixed no-hull always chopping even with chop off
2022-08-15 06:13:30 -04:00
Jonathan 20f5d73a3c always use inside filling for auto
allow details in hulls
use std::optional for an optional-esque value
2022-08-15 04:53:36 -04:00
Jonathan 97665d15a9 fix slight mistype in Brush_LoadEntity
make ~settings_container virtual so light_t can be freed properly
reset visible to false on all brush sides
2022-08-15 03:37:38 -04:00
Eric Wasylishen c2be045f65 qbsp: add WriteDebugTreePortalFile 2022-08-15 00:34:18 -06:00
Eric Wasylishen 854e1f48f5 qbsp: rewrite/fix hull and bmodel logging with new -loghulls and -logbmodels flags 2022-08-14 12:40:42 -06:00
Jonathan 2fe8ef2182 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-08-14 07:33:49 -04:00
Jonathan 781a772d8a move immediately instead of splicing after construction (probably compiles to the same code but whatever)
don't add all of the `result_portals_onnode` one at a time; just directly copy-elision the result.
2022-08-14 07:33:41 -04:00
Eric Wasylishen e7adc1108a qbsp: reset more settings between test cases 2022-08-13 20:38:57 -06:00
Jonathan 40b04b9518 use alloca instead of thread-local static 2022-08-13 20:30:51 -04:00
Jonathan da5b40ce73 since buildportal_t is small and being stored in an std::list (which already stores them in nodes that require allocation & non-moving locations) we don't need to wrap them in unique_ptr; this saves a malloc/free per buildportal_t 2022-08-13 08:24:13 -04:00
Jonathan 2059835a47 use a more optimized version of SplitBrush for CheckPlaneAgainstVolume that doesn't require allocating/freeing a lot of memory 2022-08-13 06:39:30 -04:00
Jonathan 6d66e6d5cf group together # of clipped faces, to reduce console spam of Q1 maps
always allow midplane split for hulls
2022-08-12 21:38:41 -04:00
Eric Wasylishen 06a116670b winding_t: make non-copyable 2022-08-12 02:06:23 -06:00
Jonathan ea38e5eeb7 fix missing move
fix clip_back causing extra copies
2022-08-12 02:03:00 -04:00
Jonathan bf162c7a86 allow explicit calling of percent_clock so it can be simplified a bit
add more timers in a few spots
by default, display percent timers but don't display elapsed for non-verbose stuff (bmodels); this is so it still shows that it's "working" instead of just showing blank for large maps, give user an idea on progress for certain stuff
merge all "side not found"s into a single line
time `FillOutside`
time `ProcessMapBrushes`
time `Brush_LoadEntity`
2022-08-12 01:30:04 -04:00
Jonathan 4bf2ab338c allowing logging::percent to handle indeterminate values
fix logging::percent getting stomped in multi-threaded operations
add new stats facility to make creating lists of single-use stats easier to manage
fix SplitBrush storing a bunch of extra stats for ChopBrushes
2022-08-11 20:33:12 -04:00
Jonathan f851fac655 speed up compilation - we don't need to make a copy of node->volume going into SplitBrush now 2022-08-11 02:58:49 -04:00
Jonathan f17ce185f6 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-08-11 00:27:36 -04:00
Jonathan 0db1e0fc01 add chop control to settings
only chop if desired or if hull is -1 or > 0 since those can be chopped without affecting visuals
farewell, shared_lock
fix brush contents issue
2022-08-11 00:27:28 -04:00
Eric Wasylishen 1f3bf6edbc qbsp: log BrushBSP function name 2022-08-10 21:45:08 -06:00
Jonathan 129dedb268 reset onnode between BrushBSP passes 2022-08-10 23:28:16 -04:00
Jonathan 4b4a1738fd more partial revert 2022-08-10 23:06:37 -04:00
Jonathan 02e80645e6 partial revert of 097b564cc6 2022-08-10 22:43:42 -04:00
Jonathan eb7c65362c fix typo
assume non-sourced sides are non-visible
2022-08-10 22:27:40 -04:00
Jonathan 6ab037b03a implement ChopBrushes 2022-08-10 22:12:23 -04:00
Jonathan 097b564cc6 remove bspbrush_t::original; it is no longer required since mapbrush_t is what the output is being written to
use some explicit types (bspbrush_t::ptr for pointer, bspbrush_t::container for container of pointers, and bspbrush_t::make_ptr to create one) so that we can swap it out with different pointers easier later
swap out bspbrush_t::ptr from unique_ptr to shared_ptr; it's not important yet, but it does not increase compilation time and will allow us to pass things to functions like SplitBrush without destroying the original as long as we still have a reference to it somewhere (important for ChopBrushes)
add get_positive_plane to mapface_t
instead of creating a whole copy of the bspbrush_t list, BrushBSP now just creates copies of the shared_ptrs which are then filtered down the tree; the originals are never modified by SplitBrushList and friends, only split into new brushes, so this is safe from what I can tell
portals now directly reference the mapface_ts
original_brushes now directly reference the mapbrush_ts
early exit in `BrushBSP` if brush list is empty (moved to top)
2022-08-10 16:02:16 -04:00
Jonathan faf9173f10 remove file_order; we can infer this from the pointers now
remove unnecessary early microbrush check, use microbrush option value on later one
2022-08-10 02:22:32 -04:00