Commit graph

52 commits

Author SHA1 Message Date
Bill Currie
fd5aee1d5e Use the portals to check leaf validity.
If the trace hits a portal on the plane that brought us to the leaf, then
we actually are in the leaf (otherwise, we shouldn't be here and thus
should ignore the leaf). At least, that's my thinking.

Many point tests fail (but they're really using box clipping with a zero
sized box) and two box tests fail.
2011-11-28 20:54:35 +09:00
Bill Currie
e41da2f579 Store the start fraction and position in the right stack slot.
Oops. Yay, valgrind.
2011-11-28 20:54:35 +09:00
Bill Currie
91e65b6c80 Rename mplane_t to plane_t and clean up the mess.
I got rather tired of there being multiple definitions of mostly compatible
plane types (and I need a common type anyway). dplane_t still exists for
now because I want to be careful when messing with the actual bsp format.
2011-11-28 20:54:34 +09:00
Bill Currie
7a1faee460 Bail out when the trace advances past the nearest collision. 2011-11-28 20:54:34 +09:00
Bill Currie
a943cdf2c4 Handle dual collisions.
When the trace collides with something on both sides of a plane, the nearer
collision is required. The code now correctly checks both sides and keeps
the nearer collision.
2011-11-28 20:54:34 +09:00
Bill Currie
0cf5dec5bb Fix the covered step tests.
However,  there is still a problem with moves where the box is always cut
by the plane: both sides need to be tested (done), but when the first side
checked allows longer motion than the second, but still collides, only the
first side is checked. The shorter motion is required.
2011-11-28 20:54:34 +09:00
Bill Currie
8cc320b7ef Move the start point to the near side of the crossed plane.
I'm not sure the end point needs to be moved at all, but I'll leave it
alone for now. I have a couple of failing test cases that seem to be caused
by not handling moves where the box is always cut by the plane.
2011-11-28 20:54:34 +09:00
Bill Currie
fa6390a46a Correct the sign for the shift in frac.
However, this is not entirely correct as the new start point when testing
the other side of the plane also needs to be calculated.
2011-11-28 20:54:34 +09:00
Bill Currie
b82d9f5894 Another test, another bug.
Fix an incorrect test using offset (forgot to negate).
2011-11-28 20:54:34 +09:00
Bill Currie
9984a2e87a Fix some missing usages of offset.
This fixes my one failing box clip test. Now I need to find more broken
cases. At least now, they should be real tests.
2011-11-28 20:54:33 +09:00
Bill Currie
03abb3b27d Add support for ellipsoids.
Not that boxes work yet, but the fix is the same.
2011-11-28 20:54:33 +09:00
Bill Currie
b4da9241f6 Make a fresh start on box clipping.
I even have a failing test to fix :)
2011-11-28 20:54:33 +09:00
Bill Currie
a356ce6572 Assume the trace will be allsolid.
Rather than setting allsolid when the trace fails to leave solid space,
clear it when the trace enters non-solid space. This is necessary because
the trace might visit only one node and thus the failure to leave solid
space will not be detected. This fixes the problem with hipnotic's bobbing
water.
2011-09-27 17:14:42 +09:00
Bill Currie
9daa0b7bde Rename the empty and solid flags, and use them correctly.
seen_empty and seen_solid much better reflect their meanings, and also use
them correctly (eg, visiting an empty node does not clear seen_solid).
Hipnotic's bobbing water is still broken, though.
2011-09-27 12:33:50 +09:00
Bill Currie
981622f969 Make MOD_TraceLine behave "correctly".
MOD_TraceLine now behaves the same as id's SV_RecursiveHullCheck (from
WinQuake). This means that even if the trace would escape from solid space
into non-solid space, the trace is treated as allsolid if it crosses from
one solid space to another before hitting the empty space.

trace-id.c is used only for establishing the behaviour of id's code.
2010-12-06 15:30:56 +09:00
Bill Currie
c2af7896bd Revert "make droptofloor continue the trace if it starts solid"
This reverts commit 10232acdfe.

The problem was really in the trace code, but it got fixed by "accident"
when I had similar problems in hipnotic a couple of years later. Now to
figure out just what the trace could really should be doing.
2010-12-05 14:56:32 +09:00
Bill Currie
31640dd1b9 Clean out the last traces of my boxclip code.
I've been experiencing funny trace issues while playing Soul of Evil. While
I think the boxclip dregs shouldn't be causing problems, it's probably best
to clean them out properly before trying to fix anything.
2010-12-05 14:52:20 +09:00
Bill Currie
8831a109a4 Create and use mclipnode_t.
I didn't realize this was a critical part of fitzquake's large map
support. This should fix the non-solid brush entities in Conflagrant
Rodent.
2010-11-29 09:36:21 +09:00
Bill Currie
8c4fe2f844 Rename Sys_DPrintf to Sys_MaskPrintf.
We now have finer runtime control over what gets printed. Need to do a
SYS_DEV audit, creating new masks as apropriate.
2010-11-26 16:19:26 +09:00
Bill Currie
2185a3dcd0 Remove almost all of my boxclip developement.
This is to prevent others accidently getting headaches from my code.
2010-08-20 14:13:23 +09:00
Bill Currie
51932ee433 --enable-boxclip configure option and some more tweaks, I guess (been too long) 2009-12-19 04:45:01 +00:00
Bill Currie
a26cd68ea9 more tests, more progress. just need to fix a regression that popped up while fixing the new test (18) 2009-03-22 00:31:44 +00:00
Bill Currie
384ad30df8 correct the last 4 edges. all existing testcases now pass. 2009-03-20 11:38:04 +00:00
Bill Currie
fea4189150 complete rewrite of validate_solid. also, put the trace points on the other side of the split plane. Just one more set of related tests to fix. 2009-03-20 11:20:59 +00:00
Bill Currie
0ff4165149 why didn't I do this earlier? 2009-03-20 03:40:30 +00:00
Bill Currie
f59f2dc7b9 some more progress with box clipping and much a saner test harness 2009-03-20 03:33:03 +00:00
Bill Currie
e992edaf31 that fixed the test case (why isn't sgn a standard function? :P) 2009-03-19 04:56:44 +00:00
Bill Currie
3be88c3e1d still disabled since it's still broken, but progress has been made. Fortunately, some of the breakage shows up as a regression in the testcases. 2009-03-19 03:16:24 +00:00
Bill Currie
d66934942d nuke Con_Printf and Con_DPrintf and use Sys_* instead 2007-11-06 10:17:14 +00:00
Bill Currie
e15fae264a well, it finally seems to work, but q1 maps (especially start's ramp to e3) are not such that they're particulary playable due to being designed for point clipping. so still disabled until something can be sorted out. 2007-09-29 23:28:41 +00:00
Bill Currie
0ee9e1cf3e more accurate expects and don't recurse for non-crossings 2007-09-23 08:33:26 +00:00
Bill Currie
3d79256653 closer still. have problems with allsolid traces and flags in general 2007-09-23 05:41:17 +00:00
Bill Currie
f7faad118b didn't quite get that checkin right 2007-09-21 14:04:30 +00:00
Bill Currie
36f5edb9d3 still disabled, but it's mostly working now. serves me right for blindly following the q2 code :P (it be buggy) 2007-09-21 13:58:07 +00:00
Bill Currie
19f0d23f8b it's disabled, but my box clipping is getting close 2007-09-21 12:44:19 +00:00
Bill Currie
37ad41ecb7 MOD_TraceLine doesn't need to return anything... 2007-09-17 11:24:42 +00:00
Bill Currie
2881b4b284 make MOD_TraceLine recursive again so I can work on box clipping without losing so much hair 2007-09-16 07:55:44 +00:00
Bill Currie
ecaa002774 fix items in walls in hipnotic 2007-05-14 11:16:41 +00:00
Bill Currie
b963665ad7 don't stop a trace on transition from solid to non-solid. this fixes the grapple problem in prozaccoop, but really the bug is in the progs but this is a faster fix for now until I decide whether I want to stop a trace on transition or not, or whether to make it optional. 2007-04-28 02:16:47 +00:00
Bill Currie
447a3e8254 fix some nasty catches I was experiencing. I don't know why my logic didn't work, but it definitely didn't. 2007-04-07 06:51:36 +00:00
Bill Currie
99c0954b47 the big dso visibility patch :). Sure, we have to have unique names for static builds, but with controlled visibitly we should get faster program loads (although this isn't C++, so it's not as bad) and complex plugins are cleaner. 2007-03-10 12:00:59 +00:00
Bill Currie
24ab92e68d things seem to be working nicely in point mode 2006-12-25 01:21:52 +00:00
Bill Currie
9a7e4bc5e6 fix some comments 2006-12-24 08:01:39 +00:00
Bill Currie
8dce95b4ba do some renaming of variables to save my sanity 2006-12-24 06:34:12 +00:00
Bill Currie
46a74c831a don't go through the back side of walls 2006-12-24 05:05:27 +00:00
Bill Currie
bcdf710316 bah, missed those 0s 2006-12-24 04:34:08 +00:00
Bill Currie
7624f2eb87 still disabled, but put the box tracing code in the shared code 2006-12-24 03:46:12 +00:00
Bill Currie
b3a2759e5b oops, missed that somehow 2006-12-24 03:03:41 +00:00
Bill Currie
a483f8670d use the vector/plane macros to clean up the code a bit 2006-12-24 03:01:15 +00:00
Bill Currie
3fb03fc2be hah, should have been using __attribute__((used)) all that time (rather
than __attribute__((unused))). fixes the missing console in -x11
2005-08-04 15:27:09 +00:00