Commit graph

38 commits

Author SHA1 Message Date
Sally Coolatta
357b2cd571 Opening_t typedef 2024-10-29 12:15:20 -04:00
Eidolon
d08b923f06 Merge branch 'extern-c-everything' into 'master'
Add extern "C" in C++ to all headers

See merge request KartKrew/Kart!842
2024-10-15 14:14:43 -04:00
James R
9e801c66d5 Merge branch 'universal-typedef' into 'master'
Move all typedef into one file

See merge request KartKrew/Kart!791
2024-10-15 04:16:58 -04:00
NepDisk
1593ba7041 Fix midtexture stepup issue
Thanks Indev!!!!
2024-09-13 15:33:38 -04:00
Sally Coolatta
b21352d8ac Evict the wall gremlin
Gremlins happened whenever P_TryMove and P_SlideMove/P_BounceMove disagreed on what an object collided with. When TryMove said you collided with a line, but P_BounceMove said that you didn't, then you'd get gremlin'd.

To fix this, P_TryMove now can edit a struct to contain information on what it collides with. P_SlideMove and P_BounceMove no longer try to detect walls on their own and now requires this result from P_TryMove. If a slide/bounce is needed without moving the object, then you'd want to use P_CheckMove to get the result.

Nep Note: I tried implementing lua support, its probably shit lmao
2024-09-13 11:49:12 -04:00
Sally Coolatta
55a8643dd3 Put tm* variables into a struct
This makes it significantly easier to save/restore the state of these variables, whenever we need to do so for calling movement functions in the middle of other movement functions. This will also make it easier to move it out of global variable hell if desired later.
2024-09-13 11:29:30 -04:00
Sally Coolatta
4361b5f9a8 P_PathTraverse improvements
Many improvements that were in the raycast-physics branch, backported since that branch is probably dead, and if I ever revive it then it will be with a new approach. Many are sourced from PRBoom +ZDoom + Eternity Engine.
- Some line / divline comparison functions use const.
- P_PointOnLineSide and P_BoxOnLineSize use PrBoom's version.
- P_InterceptVector is more resistant to overflow.
- PIT_AddThingIntercepts checks against actual bounding box, instead of a corner-to-corner cross-section.
- P_TraverseIntercepts doesn't run the callback function on NULL intercepts.
- P_PathTraverse handles traces that go through blockmap corners properly.
- Removed unused earlyout flag to simplify logic.
- Added g_ prefix to trace.
2024-09-05 03:24:14 -04:00
Sally Coolatta
5c6e894ee3 Add FOF behavior switch to P_LineOpening
Finally fixes the very specific issue on Endless Mine ( https://cdn.discordapp.com/attachments/1006454720686202951/1106749881663631420/image.png )
2024-09-01 20:39:53 -04:00
Sally Coolatta
6bcca94805 Local P_LineOpening result
P_LineOpening results are stored in a locally made struct instead of being a bunch of disorganized globals.
2024-09-01 20:33:16 -04:00
NepDisk
6491960430 Revert "Mostly revert "Revert Revert the-big-step-up since it has regressions""
This reverts commit 8e61036c9e.
2024-08-25 01:03:24 -04:00
Wumbo
8e61036c9e Mostly revert "Revert Revert the-big-step-up since it has regressions"
This reverts everything except P_TryMove, which fixes the Hill Top ramp without breaking the Opulence shortcut.
2024-08-24 17:07:48 -04:00
NepDisk
46c015d317 Revert Revert the-big-step-up since it has regressions
This revert causes issues on some slope types for whatever reason so back it comes for now

This reverts commit 515c531d51.
2024-08-24 15:36:23 -04:00
NepDisk
515c531d51 Revert the-big-step-up since it has regressions 2024-08-02 20:53:52 -04:00
James R
f52afc0491 Add P_GetMidtextureTopBottom 2022-08-01 07:16:53 -07:00
Sally Coolatta
d053d5f8ba Fix blockmap WILD inconsistency when it's not PIT_CheckThing
An optimized error check was put into P_BlockThingsIterator for tmthing, but this meant that anything that was not using or even setting this variable (the supermajority of them) would exit after finding 1 thing in each block.

To keep this error check & keep it optimized, the PIT_ functions were expanded to three options instead of two: BMIT_CONTINUE lets the search continue. If used as the last mobj, it will return true when the iterator finishes. BMIT_ABORT ends the search and forces the iterator to return false.
BMIT_STOP ends the search and forces the iterator to return true.
2022-05-23 17:37:29 -04:00
Sally Coolatta
150faf9de6 Add terrain pointer to mobj_t 2021-12-09 00:56:05 -05:00
James R
82718216cc Respawn slightly before a waypoint, in the direction you came from, if the waypoint is exactly on a line
See notably the finish line. Basically respawning exactly on a line can let you
cross it twice, if you crossed it before respawning, or NOT cross it, depending
on which direction you drive after landing. So this just respawns very slightly
before the line so you can cross (or not cross) it normally.
2021-02-15 23:01:13 -08:00
Sally Coolatta
fc934b38e1 Merge public next 2020-11-10 15:32:48 -05:00
Sally Coolatta
b3f4483ac2 Actually, lets just fix FixedHypot instead.
Now FixedHypot uses the code from R_PointToDist2, and R_PointToDist2 just calls FixedHypot.

Ultimately, this branch was intended to get rid of a redundant way to retrieve distance and replace it with the one that was actually good at its job. So consolidating FixedHypot and R_PointToDist2 together is just an extension of that.
2020-11-08 00:45:16 -05:00
Sally Coolatta
def9b7112a Use R_PointToDist2 instead
Apparently overflows less often
2020-11-07 23:56:46 -05:00
Sally Coolatta
f27a2b904b Use FixedHypot over P_AproxDistance
Not convinced that the small speed benefit from P_AproxDistance is worth the "aproximate"[sic] results it gives. Let's instead try a define to replace it with FixedHypot. In Lua, the function gives a deprecated warning.

Inspired by the hyperwall fix for vanilla, except for everything. From little testing, actively improves waypoint checks, bumping, speed checks, wall collisions, Jawz targetting, Lightning Shield attacks, so on.

The only way I see this as a potential downgrade is A_Look (and related functions) getting slower, which are barely used in Kart.
2020-11-07 19:47:50 -05:00
James R
0bf00aad35 Condense variables, rename 'diff' to 'step' 2020-10-15 14:23:02 -07:00
James R
3a4a687da0 Use height difference between front and backside of line when stepping down
This should fix the janky falling off steep slopes and let you cling to them.
Because when falling off a sector the edge of the player must not intersect
the edge of the higher sector, it is trickier than step up. The height
difference at the line must be stored to be useful.
2020-10-14 21:10:02 -07:00
James R
0d116b39c5 Compare height for step up on edge of sector
This is for slopes. When moving across a slope the height changes. Therefore
compare the height at the edge where slopes meet so only a wall will block the
player, and not a very steep slope.
2020-10-13 20:27:36 -07:00
FlykeSpice
2424418390 Remove ESLOPE #ifdef(backport from srb2 2.2) 2020-08-20 13:02:13 -04:00
Sally Coolatta
f9ca40e673 Merge branch 'master' into the-scary-22-merge 2020-08-12 20:59:09 -04:00
Sally Coolatta
cf1c7f9f10 FULLY fix the respawn finish line exploit, by adding a "P_HitSpecialLines" function 2020-05-29 11:49:32 -04:00
Louis-Antoine
4e7605f0e2 Make SRB2 flat like Earth 2020-03-20 18:55:29 +01:00
James R
2274129f57 Update copyright year to 2020 2020-02-19 14:08:45 -08:00
Nev3r
ab63d3e33f Adapt P_ClosestPointOnLine3D() to be much like FV3_ClosestPointOnLine() and use vector3_t's as args, save for the hypotenuse calculation, which remains the same; the output should be the same as before.
Adapt the rope hang snapping to the new function's form.
2020-01-04 18:28:25 +01:00
Steel Titanium
a5cdb0a4b3 Update copyright date on source files 2019-12-06 13:49:42 -05:00
Monster Iestyn
2cfe575c20 Add openfloorrover and openceilingrover vars so that PIT_CheckLine can update tmfloorrover and tmceilingrover properly via P_LineOpening
...which should hopefully stop that issue where you just teleport back to the ground. Assuming this works as expected.

Also this is untested lol.
2019-08-01 18:56:00 +01:00
mazmazz
c91b2b4456 Update source copyrights to 2018 2018-11-25 07:35:38 -05:00
Monster Iestyn
f1a9634260 P_LineOpening now takes a mobj_t argument, instead of relying on tmthing
. tmthing can be NULL if called from PTR_SlideTraverse, so we should use slidemo instead

This fixes a crash that occurs in yet ANOTHER SUGOI map, involving bouncy walls next to sloped floors/ceilings
2016-08-13 21:41:18 +01:00
Inuyasha
f07585191b copyright dates/statements updated and such
(no actual SLOC changes)
2016-05-17 17:42:11 -07:00
RedEnchilada
1f0f6b64c1 Store the slope an object is resting on (if applicable) 2015-04-29 00:33:04 -05:00
Alam Ed Arias
c028c83235 SRB2 2.1.9 release 2014-08-03 23:49:33 -04:00
Alam Ed Arias
b93cb1b65a SRB2 2.1 release 2014-03-15 13:11:35 -04:00