Merge hsTypes.h, hsUtils.h, and hsWindows.h into a single header to cut
down on confusion and to simplify doxygen graphs. hsRefCnt's
implementation details were moved into another file in preparation for
making HeadSpin.h a precompiled header.
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.