This fixes a crash that occurs on systems with no Direct3D device
available. The device selector returns a NULL string, which is then
strstr'ed for some ancient nvidia card. For now, let's wrap that in a NULL
check. Eventually, when we scrub plClient.cpp and winmain.cpp, that hack
should just be dropped.
This also includes some header debloat and const/reference fixes
(particularly in pyMatrix44). This will result in the generation of
slightly more efficient code.
Also did some work on decreasing header bloat. No promises on a complete
job--this was just enough to allow PCH to actually help us out (and boy
does it!)
With an Intel Core 2 Duo (4GB DDR2 800)
With PCH: 50.51 seconds
Without: 4 minutes, 17.14 seconds
:D
The old solution may have worked at one point in time, but it was kind of
suspect in that it would (theoretically) hide the game window forever. The
new solution will only hide the game window while the message box is
alive. As a bonus, the part where we hide the full screen window now
works.
Changing the next behavior to running on every goal update causes the quabs
to skitter about one inch every five seconds. Obviously, we do not need to
start running if we are already running, so let's check that.
Manual state management in python was kind of fiddly, so let's track all
avatar clones in the NetApp and unload them as needed. This also seems to
fix a potential bug in plNPCSpawnMod (is that even used?).
Re-enables FPU/SSE3 code using the FunctionDispatcher and some quick
hacky macros to template out the two nearly-identical functions,
awaiting branan's deep-voodoo template-specialization functor-dispatcher
patch.
Based on Branan's code deliberated upon in IRC, this provides the ability
to detect CPU instruction sets and dispatch functions based on those
capabilities detected at runtime.
Win32 HACK: We wait on both the pfCrashCli handle and the crashed semaphore.
This way, we can proceed to exit pfCrashSrv when the client process exits
insanely.
pfGameScore will call you back on actions that require server ops. Also, we
ref count the score instead of using some weird hashtable manager class
because the server never actually tells us if someone else changes the
score.