1750 Commits

Author SHA1 Message Date
Kawe Mazidjatari
6e1f15933f CUtlRBTree int64 promotion
Promote parameter types to int64 as CUtlMemory has been modified to use int64 for size types.
2022-11-27 22:26:02 +01:00
Kawe Mazidjatari
31a9d1cb25 Update IKeyValuesMemory method string parameter names 2022-11-27 22:13:47 +01:00
Kawe Mazidjatari
3d72d60385 Update IKeyValuesMemory method parameter types
These have been promoted to 64bit integers as CKeyValuesSystem::m_iMaxKeyValuesSize has been changed a 64bit
2022-11-27 22:12:30 +01:00
Kawe Mazidjatari
806f2514db Add new method to IKeyValuesSystem class
This is a new virtual method introduced in Respawn's engine.
2022-11-27 21:57:17 +01:00
Kawe Mazidjatari
f6c26464c7 Add IKeyValuesSystem class from Valve Source SDK 2013 2022-11-27 21:53:54 +01:00
rexx
b1b1e85b69 add MilesBankPatch hook for future debug print 2022-11-27 20:44:37 +00:00
rexx
6695a9bdaf add MilesQueueEventRun debug print 2022-11-27 20:44:17 +00:00
rexx
b15b876eed Revert "add more miles debug hooks"
This reverts commit feeaf5c54536a6ff7dae385314f9036ff45c4cd2.
2022-11-27 20:26:58 +00:00
rexx
feeaf5c545 add more miles debug hooks 2022-11-27 20:14:41 +00:00
Kawe Mazidjatari
3ab4597121 Use 'Warning()' if 'Miles_Initialize' failed 2022-11-27 17:41:03 +01:00
Kawe Mazidjatari
03dc4eada5 Move Miles and Bink hooks/implementations to shared 'codecs' folder 2022-11-27 17:27:35 +01:00
rexx
2636a5faa5 fix semicolon 2022-11-27 16:20:17 +00:00
rexx
70c64202b8 added Miles_Initialize print 2022-11-27 16:19:29 +00:00
Kawe Mazidjatari
4de66e7866 Add logging hook for Bink Video error output
Hook BinkOpen, and retrieve error message from exported function BinkGetError if BinkOpen failed.
2022-11-27 17:07:03 +01:00
Kawe Mazidjatari
6fbf78a4eb Add logging hook for Miles Sound System debug output
Miles Sound System sets a pointer to a logger function in the exported function "MilesStartup", which can be set by passing a pointer to your logging function in the first parameter. Since this call is inline, we just hook the function that Respawn used for the audio logger instead, which has the actual print within the function stripped.
2022-11-27 15:02:22 +01:00
Kawe Mazidjatari
d20250e436 Heavy output code cleanup
Only add to detour if the VFTable pointer didn't exist yet. Not declaring these in the anonymous namespace significantly reduces code size and unnecessary memory allocations. We might want to consider refactoring this, although it will probably require a big change.
2022-11-27 15:01:55 +01:00
Kawe Mazidjatari
9e7495e407 Added new logger types (AudioSystem & VideoSystem)
These loggers are to be used for hooking and logging Miles Audio and Bink Video systems.
2022-11-27 10:19:23 +01:00
Kawe Mazidjatari
befd3bbe8c Fix compile errors for client dll project
Server classes are only included on dedicated and host, client didn't use them. These files included the keyvalues header. Added header file to fix the compile errors.
2022-11-27 10:12:42 +01:00
Kawe Mazidjatari
81154df155 Improve Server Browser host panel
* Immediately display the "Stop Server" and "Change Level" buttons when hoststate indicated there is an active game, since stopping the server or switching levels is still valid when the server is not simulating.
* Only display the AINetwork/NavMesh rebuild/reload and Settings Reparse buttons when the server is simulating.
2022-11-26 17:04:12 +01:00
Kawe Mazidjatari
c13fe64abc Use correct types for RPak virtual pointers 2022-11-25 23:16:13 +01:00
Kawe Mazidjatari
adbd1816df Rename new RPak struct fields
Correct field names for RPakDescriptor_t, RPakMemPageInfo_t and RPakVirtualSegment_t.
2022-11-25 23:12:23 +01:00
Kawe Mazidjatari
277e05b2b8 Improve logging throughout SDK
Used proper enum for context. The low level tier1 stuff should print in COMMON.
Also added newlines where missing, the logging system will undergo a change where a newline will only be appended if we are logging in the same context without a newline.
2022-11-25 23:03:56 +01:00
Kawe Mazidjatari
8373cc70ca Rename/improve RPak structure fields
* Renamed for consistency.
* Added new structures for known fields.
2022-11-25 23:01:59 +01:00
Kawe Mazidjatari
69396d5f42 Fix edge case bug where client doesn't load pak files when connected to a remote server
We used the hoststate levelname string, but this only applies to the host. Keep the levelname that was passed to 'Mod_LoadPakForMap()', and set the init bool after we ran 'Mod_GetLevelSettings()'.
2022-11-25 02:34:34 +01:00
Kawe Mazidjatari
00bf56a6bb Log RPak patch header descriptors as well 2022-11-25 02:15:25 +01:00
Kawe Mazidjatari
9bc1a7f4e4 Fix RPak patch header size fields not getting set properly
Small mistake that happened when porting the decompressor over to the engine FileSystem API.
2022-11-25 02:12:54 +01:00
Kawe Mazidjatari
ad690379ab Log RPak build date/time properly during decompress
Log the date stored in the RPak header in full detail.
2022-11-25 00:57:32 +01:00
Kawe Mazidjatari
57f17a3aad Use engine's FileSystem API for decompressing and patching RPak files 2022-11-25 00:11:17 +01:00
Kawe Mazidjatari
1e76624c9b Increase viewport scroll speed for the recast editor
Due to the large scale of the Apex maps, and the modifications done to the library, this had to be increased significantly.
2022-11-25 00:08:10 +01:00
Kawe Mazidjatari
ea18f30eda Fix incorrect rasterization at tile borders (recastnavigation/recastnavigation#476)
Merge recastnavigation/recastnavigation@3901c5854c
2022-11-25 00:05:36 +01:00
Kawe Mazidjatari
c62620ec6b Fix bug where the playlists file doesn't reload when disconnecting from a server
When you connect to a server, the server sends its playlists down to the client. When we disconnect from the server, we reload the playlists so that our panels, and the game itself, presents the playlists that are on the clients disk. The reload never really happened as we checked if the call was not from the main thread, but since the large refactor several months ago, the call will always be issued from the main thread. I removed the dispatching code and made it only run on the client.
2022-11-24 16:29:53 +01:00
Kawe Mazidjatari
734e24b355 Fix edge case bug where level hasn't changed while it did
Fix bug where  'Mod_LevelHasChanged(...)' returns false even though it had changed. The static var was set in a different function which worked with the old system. The static var is now set within 'Mod_GetLevelSettings()', if 'Mod_LevelHasChanged()' returns true.
2022-11-24 15:47:14 +01:00
Kawe Mazidjatari
634184eb56 Fix bug where 'atof' was used instead of 'atoi'
This operation obtains the entity index, which requires 'atoi'. compiler casted it to int, but ideally we just convert it to an int right away.
2022-11-24 15:43:26 +01:00
Kawe Mazidjatari
4ba88963ff Fix bugs and many compiler warnings
* Promoted size types in CUtlBuffer to int64.
* Fixed bug where CUtlBuffer::GetPtr returns a 64bit pointer that was promoted from a 32bit integral type.
* Use int64/size_t for anything strlen, pointer subtraction, etc..
* Removed invalid structure alignment declarations.
2022-11-24 15:41:52 +01:00
Kawe Mazidjatari
1f10bb1643 Check ptr for 's_pLevelSetKV' before deleting
Only delete if the pointer is valid to prevent segmentation fault.
2022-11-24 13:41:18 +01:00
Kawe Mazidjatari
009fd49e7f Null hlclient pointer on dedicated server properly
We have a pointer to a pointer, as we obtain the address in which the pointer to the hlclient structure is set.
2022-11-24 13:39:57 +01:00
Kawe Mazidjatari
27d00215ac Use memalloc pool pointer directly 2022-11-24 12:10:11 +01:00
Kawe Mazidjatari
c24e8a9f21 Rename 'MOD_' to 'Mod_'
The engine names these functions as 'Mod_'.
2022-11-24 11:58:32 +01:00
Kawe Mazidjatari
8dc12644be Remove unused functions 2022-11-24 11:50:21 +01:00
Kawe Mazidjatari
b8b79385e1 Open ignore file in text mode 2022-11-24 11:48:23 +01:00
Kawe Mazidjatari
a7c33d4df3 Use KeyValues system for level settings file instead
Previously we used Json, however the rest of the game features KeyValues. I changed the system to feature KeyValues instead, to maintain consistency. Also improved the logic behind loading/parsing so we don't reparse the same level settings file if the pointer is still valid and we are on the same level.
2022-11-24 11:10:46 +01:00
Kawe Mazidjatari
d3b2893cdc Change ImGui config file path and use engine's FileSystem API
'ImGuiConfig::Load()' was loading from the new path, however 'ImGuiConfig::Save()' was not. Defined path as constant expression to avoid this problem in the future. Also loading the files through the engine's API from now on.
2022-11-24 10:45:42 +01:00
Kawe Mazidjatari
acc81bf014 Fix KeyValues memory leak
'MemAllocSingleton()->Free()' does not call the object's destructor. Ideally we override the default memalloc system with that of the engine, but unlike other Valve Source games, Apex Legends is monolithic and does not export 'MemAllocSingleton()' from tier0. We could manually patch the executable to 'export' this, might need a code cave as this function got inlined practically everywhere.., but even then, this results in a circular import as we import the gamesdk from the exe, which might just work, but Windows 7 is usually a lot less tolerant in approaches like these.

We should explore this in the future.
2022-11-24 01:53:45 +01:00
Kawe Mazidjatari
7bbfa371be Enable KeyValues leak trace in debug
Assert fails when there is still an un-freed KeyValues structure in memory.
2022-11-23 17:34:20 +01:00
Kawe Mazidjatari
af14cbe170 Small formatting fix 2022-11-23 17:32:24 +01:00
Kawe Mazidjatari
368c4218b4 Move some CPackedStore methods to VPKDir_t
These methods where only used for and by the VPKDir_t structure.
Also renamed variable and method names to reflect new changes regarding the use of KeyValues by creating a structure with all values defined during file lookup rather than doing this during the pack process.
2022-11-23 17:09:48 +01:00
Kawe Mazidjatari
824a9f8bb2 utility.cpp light cleanup
* Use ternary operator for simple tests.
* Default 'GetFileName's 'bRemoveExtension' parameter to false.
2022-11-23 16:54:10 +01:00
Kawe Mazidjatari
2e9aa9a77c Avoid string copy in 'VPKEntryBlock_t::VPKEntryBlock_t'
Avoid a copy when formatting string to that of the VPK directory tree structure.
2022-11-23 14:49:40 +01:00
Kawe Mazidjatari
484f6a779a Clear SDK Launcher console on launch
Clear session
2022-11-23 12:30:38 +01:00
Kawe Mazidjatari
6eb31ad881 Only activate server command panel when server is simulating
Only activate the command panel in the host section of the Server Browser when the server is actually simulating. Else we can crash the server by submitting commands when its in an uninitialized state.
Client AI Settings reparse is also only executed when the client is simulating from now on.
2022-11-23 12:30:15 +01:00