r5sdk/r5dev/bsplib/bsplib.cpp

358 lines
14 KiB
C++
Raw Normal View History

Code base refactor + major performance and readability improvement. Read description for details. * Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable. * Document most functions with valve style 'Purpose' blocks. * Rename variables to match the rest of the codebase and Valve's naming convention. * Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK. * Obtain globals or pointers directly instead of waiting for runtime initialized data. * Dynamically search for all functions and globals (this doesn't count for dedicated yet!). * Initialize most in-SDK variables. * Move certain prints and other utilities under ConVars to reduce verbosity and increase performance. * Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future. * Type global var pointers appropriately if class or type is known and implemented. * Forward declare 'CClient' class to avoid having 2 'g_pClient' copies. * Add IDA's pseudo definitions for easier prototyping with decompiled assembly code. * RPAK decompress Command callback implementation. * Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\'). * VPK decompress Command callback implementation. * Move CRC32 ands Adler32 to implementation files. * Server will print out more details about the connecting client. * Upgrade ImGui lib to v1.86. * Don't compile id3dx.h for dedicated. * Don't compile id3dx.cpp for dedicated * Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console * Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors. * Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up. * Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00
#include "core/stdafx.h"
#include "tier1/cvar.h"
#include "datacache/mdlcache.h"
2021-12-25 22:58:51 +01:00
#include "common/pseudodefs.h"
#include "materialsystem/cmaterialglue.h"
#include "engine/host_state.h"
#include "engine/modelloader.h"
#include "bsplib/bsplib.h"
struct CStaticPropMaterialGlue
{
void* m_pVTable0;
void* m_pVTable1;
};
Code base refactor + major performance and readability improvement. Read description for details. * Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable. * Document most functions with valve style 'Purpose' blocks. * Rename variables to match the rest of the codebase and Valve's naming convention. * Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK. * Obtain globals or pointers directly instead of waiting for runtime initialized data. * Dynamically search for all functions and globals (this doesn't count for dedicated yet!). * Initialize most in-SDK variables. * Move certain prints and other utilities under ConVars to reduce verbosity and increase performance. * Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future. * Type global var pointers appropriately if class or type is known and implemented. * Forward declare 'CClient' class to avoid having 2 'g_pClient' copies. * Add IDA's pseudo definitions for easier prototyping with decompiled assembly code. * RPAK decompress Command callback implementation. * Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\'). * VPK decompress Command callback implementation. * Move CRC32 ands Adler32 to implementation files. * Server will print out more details about the connecting client. * Upgrade ImGui lib to v1.86. * Don't compile id3dx.h for dedicated. * Don't compile id3dx.cpp for dedicated * Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console * Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors. * Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up. * Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00
//-----------------------------------------------------------------------------
// Purpose: calculates the view frustum culling data per static prop
//-----------------------------------------------------------------------------
__int64 __fastcall BuildPropStaticFrustumCullMap(__int64 a1, __int64 a2, unsigned int a3, unsigned int a4, __int64 a5, __int64 a6, __int64 a7)
Code base refactor + major performance and readability improvement. Read description for details. * Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable. * Document most functions with valve style 'Purpose' blocks. * Rename variables to match the rest of the codebase and Valve's naming convention. * Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK. * Obtain globals or pointers directly instead of waiting for runtime initialized data. * Dynamically search for all functions and globals (this doesn't count for dedicated yet!). * Initialize most in-SDK variables. * Move certain prints and other utilities under ConVars to reduce verbosity and increase performance. * Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future. * Type global var pointers appropriately if class or type is known and implemented. * Forward declare 'CClient' class to avoid having 2 'g_pClient' copies. * Add IDA's pseudo definitions for easier prototyping with decompiled assembly code. * RPAK decompress Command callback implementation. * Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\'). * VPK decompress Command callback implementation. * Move CRC32 ands Adler32 to implementation files. * Server will print out more details about the connecting client. * Upgrade ImGui lib to v1.86. * Don't compile id3dx.h for dedicated. * Don't compile id3dx.cpp for dedicated * Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console * Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors. * Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up. * Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00
{
if (staticProp_defaultBuildFrustum->GetBool())
return v_BuildPropStaticFrustumCullMap(a1, a2, a3, a4, a5, a6, a7);
float v9; // xmm6_4
char v10; // r13
double v11; // xmm7_8
__int64 v12; // rsi
__int64 v13; // rdx
__int64 v14; // rbx
unsigned __int8 v15; // r8
const char* v16; // rax
int v17; // eax
char v18; // dl
bool v19; // cc
char v20; // al
__int16 v21; // ax
__int64 v22; // rax
__m128 v23; // xmm9
__m128 v24; // xmm10
__m128 v25; // xmm11
unsigned __int64 v26; // rbx
__m128 v27; // xmm8
__int64 v28; // rax
__int64 v29; // rcx
__int64 v30; // xmm1_8
int v31; // er8
__m128i v32; // xmm0
__int64 v33; // rcx
unsigned __int64 v34; // rdx
__int64 v35; // rax
__int64 v36; // rax
unsigned __int64 v37; // rcx
__int64 v38; // rax
unsigned __int64 v39; // rcx
__int64 v40; // rax
float v41; // xmm2_4
__int64 v42; // rbx
float v43; // xmm2_4
float v44; // xmm4_4
__m128i v45; // xmm1
__m128i v46; // xmm2
__m128i v47; // xmm3
unsigned int v48; // eax
float v49; // xmm0_4
float v50; // xmm2_4
float v51; // xmm1_4
float v52; // xmm2_4
unsigned __int8 v53; // si
__int64 v54; // rax
__int64 v55; // rcx
int v56; // eax
__int64 v57; // rcx
int v58; // edx
__int64 v59; // rax
__int64 v60; // r13
int v61; // eax
unsigned __int64 v62; // r13
__int64 v63; // rdx
int v64; // er14
unsigned __int64 v65; // rdi
__int64 v66; // r13
__int64 v67; // r15
void* v68; // rbx
__int64 v69; // rcx
__int64 result; // rax
__m128i v71; // [rsp+38h] [rbp-D0h] BYREF
__int64 v72; // [rsp+48h] [rbp-C0h]
__int64 v73; // [rsp+50h] [rbp-B8h]
__m128 v74; // [rsp+58h] [rbp-B0h] BYREF
__int64 v75; // [rsp+68h] [rbp-A0h]
__int64 v76; // [rsp+78h] [rbp-90h]
__m128 v77[3]; // [rsp+88h] [rbp-80h] BYREF
char Destination[376]; // [rsp+B8h] [rbp-50h] BYREF
__int64 v79; // [rsp+278h] [rbp+170h]
int v82; // [rsp+288h] [rbp+180h]
int v83; // [rsp+290h] [rbp+188h]
__int64 v84; // [rsp+298h] [rbp+190h]
__int64 v85; // [rsp+2A8h] [rbp+1A0h]
Code base refactor + major performance and readability improvement. Read description for details. * Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable. * Document most functions with valve style 'Purpose' blocks. * Rename variables to match the rest of the codebase and Valve's naming convention. * Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK. * Obtain globals or pointers directly instead of waiting for runtime initialized data. * Dynamically search for all functions and globals (this doesn't count for dedicated yet!). * Initialize most in-SDK variables. * Move certain prints and other utilities under ConVars to reduce verbosity and increase performance. * Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future. * Type global var pointers appropriately if class or type is known and implemented. * Forward declare 'CClient' class to avoid having 2 'g_pClient' copies. * Add IDA's pseudo definitions for easier prototyping with decompiled assembly code. * RPAK decompress Command callback implementation. * Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\'). * VPK decompress Command callback implementation. * Move CRC32 ands Adler32 to implementation files. * Server will print out more details about the connecting client. * Upgrade ImGui lib to v1.86. * Don't compile id3dx.h for dedicated. * Don't compile id3dx.cpp for dedicated * Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console * Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors. * Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up. * Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00
v9 = 1.0;
v10 = a4;
*(_QWORD*)(a1 + 20) = *(_QWORD*)a5;
*(_DWORD*)(a1 + 28) = *(_DWORD*)(a5 + 8);
*(_DWORD*)(a1 + 8) = a4;
*(_QWORD*)&v11 = *(unsigned int*)(a5 + 24);
v12 = a4 >> 1;
*(float*)(a1 + 12) = 1.0 / (float)(*(float*)&v11 * *(float*)&v11);
v13 = *(unsigned __int16*)(a7 + 320);
*(_WORD*)a1 = v13;
v14 = (__int64)CMDLCache::FindMDL(g_MDLCache, v13, 0i64);
v84 = v14;
if ((*(_BYTE*)(v14 + 156) & 0x10) == 0 && (*dword_1696A9D20) < 100)
++(*dword_1696A9D20);
v15 = *(_BYTE*)(a5 + 30);
if (v15 > 2u && (unsigned __int8)(v15 - 6) > 2u)
{
v16 = (const char*)(*((__int64(__fastcall**)(CModelLoader**, __int64))g_pModelLoader + 4))(&g_pModelLoader, a7);
strncpy(Destination, v16, 0x104ui64);
v15 = 0;
}
v17 = *(unsigned __int8*)(a5 + 32);
*(_BYTE*)(a1 + 4) = v17;
v18 = v17;
v19 = v17 < *(_DWORD*)(v14 + 228);
*(_BYTE*)(a1 + 5) = v15;
if (!v19)
v18 = 0;
*(_BYTE*)(a1 + 4) = v18;
v20 = *(_BYTE*)(a5 + 31);
if ((v20 & 4) != 0)
{
v15 |= 0x40u;
*(_BYTE*)(a1 + 5) = v15;
v20 = *(_BYTE*)(a5 + 31);
}
if ((v20 & 8) != 0)
{
v15 |= 0x20u;
*(_BYTE*)(a1 + 5) = v15;
v20 = *(_BYTE*)(a5 + 31);
}
if ((v20 & 0x30) != 16)
*(_BYTE*)(a1 + 5) = v15 | 0x10;
v21 = 0;
if (*(_WORD*)(a5 + 34) != 0xFFFF)
v21 = *(_WORD*)(a5 + 34);
*(_WORD*)(a1 + 2) = v21;
sub_1404365A0(v77, (const __m128i*)a5, (unsigned int*)(a5 + 12), v11);
v22 = *qword_141744EA8;
v23 = v77[0];
v24 = v77[1];
v25 = v77[2];
v26 = (unsigned __int64)(unsigned int)v12 << 6;
*(__m128*)(v26 + (*qword_141744EA8)) = v77[0];
*(__m128*)(v26 + v22 + 16) = v24;
*(__m128*)(v26 + v22 + 32) = v25;
auto m1 = _mm_set_ps(0.003922, 0.003922, 0.003922, 0.003922);
__m128i m2 = { 0 };
__m128i m3 = { 0 };
v74 = _mm_mul_ps(_mm_cvtepi32_ps(_mm_unpacklo_epi16(_mm_unpacklo_epi8(_mm_cvtsi32_si128(*(_DWORD*)(a5 + 52)), m2), m3)), m1);
v27 = sub_140270130(&v74);
*(__m128*)(v26 + (*qword_141744EA8) + 48) = v27;
sub_140257F20(&*(void**)off_141731448, a7, &v71, &v71.m128i_i8[12]);
sub_14028F170((__int64)&v74, (__int64)&v74.m128_i64[1] + 4, v77, &v71, (const __m128i*) & v71.m128i_i8[12]);
v72 = v71.m128i_i8[12]; // may be wrong
v28 = *qword_141744EA0;
v29 = 3 * v12;
v75 = (__int64)&v74.m128_i64[1] + 4; // may be wrong.
v30 = v75;
*(__m128*)((*qword_141744EA0) + 8 * v29) = v74;
*(_QWORD*)(v28 + 8 * v29 + 16) = v30;
if ((v10 & 1) != 0)
{
v31 = *dword_141744EBC;
v32 = v71;
*(_DWORD*)a2 = *(_DWORD*)(a6 + 48);
*(_DWORD*)(a2 + 4) = *(_DWORD*)(a6 + 52);
*(_QWORD*)(a2 + 8) = 0i64;
v33 = 3i64 * (unsigned int)(v31 + v12);
v34 = (unsigned __int64)(unsigned int)(v31 + v12) << 6;
v35 = *qword_141744EA0;
*(__m128i*)((*qword_141744EA0) + 8 * v33) = v32;
*(_QWORD*)(v35 + 8 * v33 + 16) = v72;
v36 = (*qword_141744EA8);
v37 = (unsigned __int64)(unsigned int)(v12 + 2 * v31) << 6;
*(__m128*)(v34 + (*qword_141744EA8)) = v23;
*(__m128*)(v34 + v36 + 16) = v24;
*(__m128*)(v34 + v36 + 32) = v25;
*(__m128*)(v34 + (*qword_141744EA8) + 48) = v27;
v38 = *qword_141744EA8;
*(__m128*)(v37 + (*qword_141744EA8)) = v23;
*(__m128*)(v37 + v38 + 16) = v24;
*(__m128*)(v37 + v38 + 32) = v25;
*(__m128*)(v37 + (*qword_141744EA8) + 48) = v27;
v39 = (unsigned __int64)(unsigned int)(v31 + v12 + 2 * v31) << 6;
*(__m128*)(v39 + (*qword_141744EA8) + 48) = v27;
v40 = *qword_141744EA8;
*(__m128*)(v39 + (*qword_141744EA8)) = *(__m128*)a6; //*(_OWORD*)(v39 + qword_141744EA8) = *(_OWORD*)a6;
*(__m128*)(v39 + v40 + 16) = *(__m128*)(a6 + 16); //*(_OWORD*)(v39 + v40 + 16) = *(_OWORD*)(a6 + 16);
*(__m128*)(v39 + v40 + 32) = *(__m128*)(a6 + 32); //*(__m128*)(v40 + v41 + 32) = *(__m128*)(a6 + 32);
}
v41 = *(float*)(a5 + 36);
v42 = v84;
if (v41 <= 0.0)
{
if ((*(_DWORD*)(v84 + 156) & 0x800) != 0)
{
v41 = 227023.36;
}
else
{
v43 = *(float*)(v84 + 364);
if (v43 <= 0.0)
v41 = fmaxf(
(float)((float)(sqrt(
(float)((float)((float)(*(float*)v71.m128i_i32 - *(float*)&v71.m128i_i32[3]) * (float)(*(float*)v71.m128i_i32 - *(float*)&v71.m128i_i32[3]))
+ (float)((float)(*(float*)&v71.m128i_i32[1] - *(float*)&v72) * (float)(*(float*)&v71.m128i_i32[1] - *(float*)&v72)))
+ (float)((float)(*(float*)&v71.m128i_i32[2] - *((float*)&v72 + 1)) * (float)(*(float*)&v71.m128i_i32[2] - *((float*)&v72 + 1))))
* 0.5)
* *(float*)&v11)
* model_defaultFadeDistScale->GetFloat(),
model_defaultFadeDistMin->GetFloat());
else
v41 = v43 * *(float*)&v11;
}
}
v44 = fmaxf(v41, 100.0);
*(float*)(a1 + 16) = v44 * v44;
v45 = _mm_loadu_si32((unsigned int*)(v84 + 368)); //v45 = (__m128i)*(unsigned int*)(v84 + 368);
if (*(float*)v45.m128i_i32 <= 0.0)
{
LOWORD(v48) = 0;
}
else
{
*(float*)v45.m128i_i32 = *(float*)v45.m128i_i32 * *(float*)v45.m128i_i32;
v46 = v45;
*(float*)v46.m128i_i32 = fmaxf(*(float*)v45.m128i_i32, 1.0004883);
v47 = v46;
*(float*)v47.m128i_i32 = fminf(*(float*)v46.m128i_i32, 4293918700.0);
v48 = (unsigned int)(_mm_cvtsi128_si32(v47) - 1065351168) >> 12;
}
*(_WORD*)(a1 + 6) = v48;
v49 = *(float*)((*qword_141744EA0) + 24 * ((unsigned __int64)*(unsigned int*)(a1 + 8) >> 1) + 8) - *(float*)((*qword_141744EA0) + 24 * ((unsigned __int64)*(unsigned int*)(a1 + 8) >> 1) + 20);
v50 = *(float*)((*qword_141744EA0) + 24 * ((unsigned __int64)*(unsigned int*)(a1 + 8) >> 1) + 4) - *(float*)((*qword_141744EA0) + 24 * ((unsigned __int64)*(unsigned int*)(a1 + 8) >> 1) + 16);
v51 = *(float*)((*qword_141744EA0) + 24 * ((unsigned __int64)*(unsigned int*)(a1 + 8) >> 1)) - *(float*)((*qword_141744EA0) + 24 * ((unsigned __int64)*(unsigned int*)(a1 + 8) >> 1) + 12);
v52 = (float)((float)(v50 * v50) + (float)(v51 * v51)) + (float)(v49 * v49);
if (v44 >= 227023.363449684)
v9 = staticProp_no_fade_scalar->GetFloat();
v53 = 0;
*(float*)((*qword_141744E88) + 8i64 * a3) = v9 * (float)(1.0 / (float)(v52 * staticProp_gather_size_weight->GetFloat()));
*(_BYTE*)((*qword_141744E88) + 8i64 * a3 + 4) &= 0xFEu;
*(_BYTE*)((*qword_141744E88) + 8i64 * a3 + 4) |= v44 >= 227023.363449684;
v55 = (__int64)CMDLCache::GetStudioMaterialGlue(g_MDLCache, *(unsigned __int16*)(a7 + 320)); // Gets some object containing pointer to 2 CMaterialGlue vtables.
v56 = *(unsigned __int16*)(a5 + 0x20);
v76 = *(__int64*)v55;
v57 = v84 + *(int*)(v84 + 232) + 2i64 * v56 * *(_DWORD*)(v84 + 224);
v58 = 0;
v85 = v57;
v83 = 0;
if (*(int*)(v84 + 236) <= 0)
return 0i64;
v59 = 0i64;
v73 = 0i64;
do
{
v60 = v59 + *(int*)(v42 + 240);
v61 = 0;
v62 = v42 + v60;
v82 = 0;
v74.m128_u64[0] = v62;
if (*(int*)(v62 + 4) > 0)
{
v63 = 0i64;
v79 = 0i64;
do
{
v64 = 0;
v65 = v62 + v63 + *(int*)(v62 + 12);
if (*(int*)(v65 + 76) > 0)
{
v66 = v76;
v67 = 0i64;
do
{
v68 = *(void**)(v66 + 8i64 * *(__int16*)(v57 + 2i64 * *(int*)(v67 + *(int*)(v65 + 80) + v65)));
//if (v68 > (void*)0x10000 && v68 < (void*)0xFFFFFFFFF) // ??? HACK ??? CHANGE ASAP ???
{
if (!(*(unsigned __int8(__fastcall**)(void*))(*(_QWORD*)v68 + 688i64))(v68))
{
if (!(*(unsigned __int8(__fastcall**)(void*))(*(_QWORD*)v68 + 256i64))(v68) && (*(unsigned __int8(__fastcall**)(void*))(*(_QWORD*)v68 + 248i64))(v68))
{
v69 = 0i64;
if (*dword_141744EE8)
{
// Compares equality of pointers to the CMaterial object
// between the current offset [v69] in the CStaticPropMgr buffer
// and that of v68 (obtained via operation in parent loop).
while (*(&*(void**)off_141744E70 + v69 + 16) != v68)
{
v69++;// = (unsigned int)(v69 + 1);
if (static_cast<int32_t>(v69) >= *dword_141744EE8)
goto LABEL_42;
}
}
else
{
LABEL_42:
*(&*(void**)off_141744E70 + (*dword_141744EE8)++ + 16) = v68;
}
}
if ((*(unsigned __int8(__fastcall**)(void*))(*(_QWORD*)v68 + 168i64))(v68) && (*(unsigned int(__fastcall**)(void*, __int64))(*(_QWORD*)v68 + 144i64))(v68, 1i64))
*(_BYTE*)(a1 + 5) |= 0x80u;
if (!(*(unsigned __int8(__fastcall**)(void*))(*(_QWORD*)v68 + 384i64))(v68) && (*(unsigned int(__fastcall**)(void*, __int64))(*(_QWORD*)v68 + 144i64))(v68, 21844i64))
v53 |= 2u;
v53 |= (*(unsigned __int8(__fastcall**)(void*))(*(_QWORD*)v68 + 384i64))(v68) != 0;
}
}
v57 = v85;
++v64;
v67 += 92i64;
} while (v64 < *(_DWORD*)(v65 + 76));
v62 = v74.m128_u64[0];
v61 = v82;
v63 = v79;
}
++v61;
v63 += 136i64;
v82 = v61;
v79 = v63;
} while (v61 < *(_DWORD*)(v62 + 4));
v42 = v84;
v58 = v83;
}
++v58;
v59 = v73 + 16;
v83 = v58;
v73 += 16i64;
} while (v58 < *(_DWORD*)(v42 + 236));
result = v53;
if (v53)
*(_BYTE*)(a1 + 5) &= 0x7Fu;
return result;
Code base refactor + major performance and readability improvement. Read description for details. * Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable. * Document most functions with valve style 'Purpose' blocks. * Rename variables to match the rest of the codebase and Valve's naming convention. * Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK. * Obtain globals or pointers directly instead of waiting for runtime initialized data. * Dynamically search for all functions and globals (this doesn't count for dedicated yet!). * Initialize most in-SDK variables. * Move certain prints and other utilities under ConVars to reduce verbosity and increase performance. * Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future. * Type global var pointers appropriately if class or type is known and implemented. * Forward declare 'CClient' class to avoid having 2 'g_pClient' copies. * Add IDA's pseudo definitions for easier prototyping with decompiled assembly code. * RPAK decompress Command callback implementation. * Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\'). * VPK decompress Command callback implementation. * Move CRC32 ands Adler32 to implementation files. * Server will print out more details about the connecting client. * Upgrade ImGui lib to v1.86. * Don't compile id3dx.h for dedicated. * Don't compile id3dx.cpp for dedicated * Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console * Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors. * Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up. * Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00
}
void BspLib_Attach()
{
DetourAttach((LPVOID*)&v_BuildPropStaticFrustumCullMap, &BuildPropStaticFrustumCullMap);
Code base refactor + major performance and readability improvement. Read description for details. * Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable. * Document most functions with valve style 'Purpose' blocks. * Rename variables to match the rest of the codebase and Valve's naming convention. * Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK. * Obtain globals or pointers directly instead of waiting for runtime initialized data. * Dynamically search for all functions and globals (this doesn't count for dedicated yet!). * Initialize most in-SDK variables. * Move certain prints and other utilities under ConVars to reduce verbosity and increase performance. * Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future. * Type global var pointers appropriately if class or type is known and implemented. * Forward declare 'CClient' class to avoid having 2 'g_pClient' copies. * Add IDA's pseudo definitions for easier prototyping with decompiled assembly code. * RPAK decompress Command callback implementation. * Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\'). * VPK decompress Command callback implementation. * Move CRC32 ands Adler32 to implementation files. * Server will print out more details about the connecting client. * Upgrade ImGui lib to v1.86. * Don't compile id3dx.h for dedicated. * Don't compile id3dx.cpp for dedicated * Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console * Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors. * Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up. * Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00
}
void BspLib_Detach()
{
DetourDetach((LPVOID*)&v_BuildPropStaticFrustumCullMap, &BuildPropStaticFrustumCullMap);
Code base refactor + major performance and readability improvement. Read description for details. * Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable. * Document most functions with valve style 'Purpose' blocks. * Rename variables to match the rest of the codebase and Valve's naming convention. * Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK. * Obtain globals or pointers directly instead of waiting for runtime initialized data. * Dynamically search for all functions and globals (this doesn't count for dedicated yet!). * Initialize most in-SDK variables. * Move certain prints and other utilities under ConVars to reduce verbosity and increase performance. * Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future. * Type global var pointers appropriately if class or type is known and implemented. * Forward declare 'CClient' class to avoid having 2 'g_pClient' copies. * Add IDA's pseudo definitions for easier prototyping with decompiled assembly code. * RPAK decompress Command callback implementation. * Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\'). * VPK decompress Command callback implementation. * Move CRC32 ands Adler32 to implementation files. * Server will print out more details about the connecting client. * Upgrade ImGui lib to v1.86. * Don't compile id3dx.h for dedicated. * Don't compile id3dx.cpp for dedicated * Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console * Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors. * Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up. * Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00
}