The case transformation didn't work properly as the char value was not casted to an unsigned char, causing undefined behavior. Added new utility function 'IsEqualNoCase' which allows for comparing 2 strings case insensitively. Code has been tested with module strings containing irregular cases, and was still able to obtain the imported function address correctly.
* Fully commented 'UTF8Decode' to suppress warnings (currently unsupported).
* Cleaned up 'GetModuleInfo' and 'DbgPrint' to use the non-wide string versions instead.
* Added error handling in 'PrintLastError'.
Pruned many compiler warnings by removing the packing directive and alignment modifiers. Padding that was otherwise performed by the modifiers, have been added manually. This change did not affect code generation.
'DrawAllOverlays' gets called with a boolean parameter indicating whether or not the render frame should be ran. This is so the rest of the logic could run in order to decay overlays to avoid memory leak or unnecessary high CPU time in overlay timing code. Parameter name has been renamed from 'bDraw' to 'bRender', and the local variable 'bDraw' which caused the shadow warning, has been renamed to 'bShouldDraw'. The local variable 'bOverlayEnabled' now takes into account the 'bRender' parameter.
Reverted as the new implementation wouldn't work properly on clang-cl (crashed on several pak files), and only worked on msvc when suppressing compiler warnings. The original implementation (raw copy/paste assembly) works perfectly on both compiler with no warning suppressors.
Add global define for the clang compiler, and leave non-member 'fltx4' operator functions out when using clang to compile the SDK as these are causing errors. 'fltx4' is a typedef of __m128; not a user defined class, so these operators couldn't be added.
* Use mathlib SIMD wrappers instead, this is to maintain compatibility across different platforms/compilers.
* Moved camera distance logic to separate method.
* Moved 'm_pFileSystem' to 'CSourceAppSystemGroup' (actually belongs there, CAppSystemGroup has to be 0xA8 in size in order for 'm_bDedicated' to line up in 'CModAppSystemGroup').
* Prefixed all static functions with 'Static' to avoid name collisions.
'CSourceAppSystemGroup::PreInit' could be called multiple times. Added check for its actual stage before running any initialization code. This fixes the recursive init problem.
Recently, there has been a sudden influx of players playing with a name that isn't valid. Names such as " " or "@something $very !crazy". This patch fixes this problem by enforcing checks during connect by default.