4248 Commits

Author SHA1 Message Date
Kawe Mazidjatari
4c2f4e39a0 Recast: optimize and improve traverse link renderer
Only render the cross at the start as the reverse link will render the 2nd one. Else we render 4 crosses. Also made the alpha of the line around 50%, since we render the forward and reverse link, it will render with 100% opacity, if the reverse link is missing, the crosses will disappear and the line will only render at 50% opacity to make it more clear something is wrong.
2024-08-11 02:48:28 +02:00
Kawe Mazidjatari
cf2d873db3 Recast: set edge spans to maximum
Technically the bmin, bmax and side need to be calculated properly, but at the same time, we currently only do internal links, so it shouldn't matter a lot if at all.
2024-08-11 02:43:46 +02:00
Kawe Mazidjatari
3fade09920 Recast: add option to draw tile bounds 2024-08-11 02:42:35 +02:00
Kawe Mazidjatari
eac27efd22 Recast: add note regarding potential bug
Should most likely be RD_EPS.
2024-08-10 23:16:04 +02:00
Kawe Mazidjatari
279a86a2b1 Recast: implement rdClassifyPointInsideBounds
Classify a point within a navmesh tile. Will be used for internal traverse links.
2024-08-10 23:15:31 +02:00
Kawe Mazidjatari
929591d567 Recast: make classifyOffMeshPoint common
Will be used once jump links are generated between neighbor tiles.
2024-08-10 22:45:23 +02:00
Kawe Mazidjatari
5b375d0924 Recast: perform raycast tests before establishing traverse link
This results in very clean generation of jump links. Results are very close to Titanfall 2 single player navmeshes.
2024-08-10 01:45:48 +02:00
Kawe Mazidjatari
cad8f043e5 Recast: move traverse link generation logic to the Editor class
We need access to the input geometry and other intermediate data to properly generate them.
2024-08-10 01:37:49 +02:00
Kawe Mazidjatari
3090634cbd Recast: skip overlapping traverse links
If a traverse type can't overlap, but does overlap with a polygon, then don't add it. This fixes the issue where the jump links run flat over the navmesh surface.
2024-08-10 00:50:46 +02:00
Kawe Mazidjatari
66b493b6b7 Recast: fix bug in connectTileTraverseLinks
Use rdVsad instead of rdVmad. Need to add the vectors first before scaling it instead of scaling the second fector.
2024-08-10 00:49:40 +02:00
Kawe Mazidjatari
c36de0f02e Recast: add math function to perform scale after vectors are added
This is not the same as rdVmad.
2024-08-10 00:48:32 +02:00
Kawe Mazidjatari
66b5ae4084 Recast: initial implementation of traverse type lookup
Still heavy works in progress.
2024-08-09 20:49:30 +02:00
Kawe Mazidjatari
9462564761 Recast: check for poly intersection before creating traverse link
Don't generate if it intersects its own poly. Make sure it only links gaps.
2024-08-09 17:34:34 +02:00
Kawe Mazidjatari
52403f5161 Recast: fix typo (XZY -> XYZ)
Height axis = Z.
2024-08-09 17:32:55 +02:00
Kawe Mazidjatari
be69a8b533 Recast: make sure we always have 2 links before creating a traverse link
Need at least 2 links, one for the reverse link. Not adhering to this results in NULL reverse links which causes incorrect behavior in the renderer and in-game.
2024-08-09 16:11:26 +02:00
Kawe Mazidjatari
3ff36addbd Recast: clean up traverse link builder
Use existing math wrappers.
2024-08-09 14:41:16 +02:00
Kawe Mazidjatari
b63cb1d52c Recast: improve naming consistency for the traverse system
Traversal and traverse were mixed in variable/function naming. Forced consistency. No logic was changed this patch.
2024-08-09 14:35:47 +02:00
Kawe Mazidjatari
7cacc8ee03 Recast: fix static pathing build order
Traverse links should be build after the disjoint poly groups are created, but before the traverse tables are created. Previously, we created traverse links before disjoint poly groups causing isolated poly islands to be grouped under the same id.
2024-08-09 14:22:07 +02:00
Kawe Mazidjatari
d5ddaf3313 Recast: hook up traverse link dumper 2024-08-09 14:20:04 +02:00
Kawe Mazidjatari
c63061419a Recast: add ability to dump traverse link details
Detour dump utilities.
2024-08-09 14:18:33 +02:00
Kawe Mazidjatari
35b465d6c6 Recast: don't link poly edges facing the same direction
Only link them if they are perpendicular or facing the opposite direction.
2024-08-09 14:07:50 +02:00
Kawe Mazidjatari
1a393e6330 Recast: add helper function to calculate slope angle from 2 points 2024-08-09 12:49:11 +02:00
Kawe Mazidjatari
24e09b4b6c Recast: use edge mid point for distance calculation
Use the mid point which is the correct approach.
2024-08-09 12:48:05 +02:00
Kawe Mazidjatari
51eac9c91c Recast: add option to filter traverse links by distance 2024-08-08 19:52:28 +02:00
Kawe Mazidjatari
acaf4cf32b Recast: initial working implementation of traverse link generation algorithm
Traversing now works in-game, but there's still work needed to polish the algorithm and creating a proper lookup for jump types as currently only 1 jump type is supported.
2024-08-08 17:44:27 +02:00
Kawe Mazidjatari
c12690b33c Recast: use the constants 2024-08-08 16:02:16 +02:00
Kawe Mazidjatari
55c98902f3 Recast: optimize traverse link debug draw
Should be checked in the outer loop.
2024-08-08 15:46:24 +02:00
Kawe Mazidjatari
c4ac63ed69 Server: disable view punch by default
View punch on player in Hip is also disabled in retail apparently. Reflect behavior in SDK.
2024-08-08 14:32:21 +02:00
Kawe Mazidjatari
55c230aab8 Recast: remove jumpType from off-mesh links
Probably incorrect for MSET 5, null it.
2024-08-08 11:59:24 +02:00
Kawe Mazidjatari
848fbabc79 Recast: simplify quantization 2024-08-08 01:33:27 +02:00
Kawe Mazidjatari
deb59074c1 Server: only disable view punch during aim by default 2024-08-07 17:35:29 +02:00
Kawe Mazidjatari
ffb8c5992d Server: add cvar that allows enabling/disabling view punch when taking damage 2024-08-07 13:01:50 +02:00
Kawe Mazidjatari
907e0fd8bc Recast: simplify default navmesh render options
Show a clean renderer of the navmesh, toggle higher details off by default for performance and clarity on larger scale maps.
2024-08-07 12:02:58 +02:00
Kawe Mazidjatari
8cfce5ea9a Client: cleanup and optimize C_Player::CurveLook
Don't call C_BaseCombatCharacter::GetActiveWeapon twice.
2024-08-06 20:30:07 +02:00
Kawe Mazidjatari
2348a2dc61 Client: make C_WeaponX::HasTargetZoomFOV() const 2024-08-06 20:29:16 +02:00
Kawe Mazidjatari
07fd1cef8e Client: add method to check if weapon is melee 2024-08-06 20:28:52 +02:00
Kawe Mazidjatari
2914027574 Client: fix aim magnet bug and several other issues with CurveLook
The decompile of this function was still incorrect, after looking at the raw disassembly, bool v36 and bool v35 are now set correctly. Also, a float was never set and the decompiler assigned a local to an incorrect one for some math that was supposed to set the inputSampleFrametime, causing it to work as a counter magnet when target compensation was activated. This now also has been set correctly according to the assembly of the function itself, and now works as intended. So far, all bugs appear to be fixed in this function, its pending tests by users.
2024-08-06 00:59:59 +02:00
Kawe Mazidjatari
886f1c6a53 Client: fix numerous issues with CurveLook rebuild
Fix incorrect type for g_aimCurveConfig, its a static array, so it needs to be a single pointer not a double. Also fixed several blocks inside CurveLook that did not match the assembly code of the game. The aim-assist code is still broken however, pending research.
2024-08-05 20:06:26 +02:00
Kawe Mazidjatari
08a69db020 Client: fix nullptr deref crash when auto aim is enabled 2024-08-05 02:09:03 +02:00
Kawe Mazidjatari
f8331d7ac7 Client: only run ADS per-optic when zoomed in
Should only fire this code when zoomed in.
2024-08-05 01:42:24 +02:00
Kawe Mazidjatari
d95d071afd Tier1: properly implement ConVar change callbacks
Change callbacks actually take a structure of 2 pointers, one being for the callback itself, and the other being 'userdata' which typically is used to sync the ConVar with VGUI slider elements. This issue was noticed after implementing the ADS scalars and attempting to hook them up to VGUI, only to find out it would crash due to this lacking detail. All change callback prototypes had to be adjusted.
2024-08-05 00:45:30 +02:00
Kawe Mazidjatari
2fd2873536 Client: properly clamp gamepad ads scalars 2024-08-05 00:39:40 +02:00
Kawe Mazidjatari
704498aecb Client: add per-optic sensitivity scalars to CurveLook
Implemented by popular demand. Allows setting different sensitivity values per optic zoom level on a weapon. The mouse input handler already had this, but the controller one didn't so it had to be implemented here.
2024-08-04 17:28:33 +02:00
Kawe Mazidjatari
c4098054fa Engine: rename CGlobalVarsBase
Might still not be fully correct, but its definitely more correct now.
2024-08-04 17:26:44 +02:00
Kawe Mazidjatari
f9eb989b3b Game: add method for calculating zoom FOV interp 2024-08-04 17:25:38 +02:00
Kawe Mazidjatari
bfdf601d0d Client: add note, cleanup curve look code and enable it
So far tested, works correctly. Pending test by community.
2024-08-04 14:59:57 +02:00
Kawe Mazidjatari
d298ad0c22 Client: initial rebuild of the curve look function
This function didn't decompile properly, so a bunch of manual assembly work had to be used to reconstruct the truncated bits. The code does work correct for the most part. The call to the subroutine 'sub_1405AD760' has been commented as the parameter appears incorrect; passes in the address of a bool but indexes 4 bytes outside the size of a bool. Most likely incorrect decompile/disasm. Currently being investigated.
2024-08-04 14:12:15 +02:00
Kawe Mazidjatari
74a58b2fd4 InputSystem: return the correct type on IInput::GetUserCmd()
Should return the extended class.
2024-08-03 15:19:31 +02:00
Kawe Mazidjatari
06ea5773d7 Game: rename header file for consistency
C_Player is not a base class.
2024-08-03 15:18:44 +02:00
Kawe Mazidjatari
6715c25b37 Client: add reversed C_WeaponX class
Partially reversed.
2024-08-03 14:21:11 +02:00