Following a suggestion from @branan, I've added a comment that points out
that the controller makes a different sized kinematic actor if the
armature is human (male or female)
As pointed out in #225, Pch.cpp looks suspiciously like a garbage file
when precompiled headers are disabled in cmake. To solve that, I have
changed the precompiled header function to add the Pch source files only
when pch is enabled. This should prevent future accidents.
This is the beginning of efforts to reduce the scope of Windows.h. I have
shuttled it into hsWindows.h (again) and fixed the compilation of the
major apps. There is still some scope work that needs to be done, and the
Max plugin has not yet been addressed.
To better handle erroneous trigger events under the new timing method, use the number of times the simulation has actually advanced instead of the number of evals received.
Cleaned up a bit.
While based heavily on the old implementation, this is essentially a rewrite.
Notable changes -
Controllers are now updated at the same fixed frequency as the simulation.
Resulting output is interpolated between steps to precisely match the frame delta.
Physics work is only done when enough time has passed to perform a step.
The kinematic actor that followed around the controller has been removed.
The underlying kinematic actor created by the NxController is now used for triggering.
A new sim group was added for a kinematically controlled avatar.
2 unused files removed -
plPXPhysicalController.h & plPXPhysicalController.cpp
plMovementStrategy classes have been reworked and completely replace all plAvatarControllers.
While based on the old implementation, plPhysicalControllerCore has essentially been rewritten.
Remnants of long gone physical "actions" have been removed.
4 files removed -
plAVCallbackAction.h & plAVCallbackAction.cpp
plAntiGravAction.h & plAntiGravAction.cpp
This revision will not compile, requires new plPXPhysicalControllerCore implementation.
Win32's GetCurrentTime and plUnifiedTime::GetCurrentTime collided. Rather
than hacking around the solution by undefining GetCurrentTime, we rename
plUnifiedTime::GetCurrentTime to plUnifiedTime::GetCurrent. This fix is
less fiddly than an undef hack.
In particular, the intro movie now exits immediately again rather than staying indefinitely.
The important difference is to send the completion callback in plBinkPlayer::NextFrame(), i.e. act as if we had reached the end of the movie.
Storing the filename is to keep plClient::IHandleMovieMsg() from deleting and recreating the plBinkPlayer on every message.
The changed return values are just to better match the previous behavior and probably don’t matter.
As it turns out, my old OnServerInitComplete fix didn't check to see if
the script had an OnServerInitComplete method. So, when we called that
method-of-doom from C++, we'd see a SystemError. Aside from removing an
error message, this probably has no effect.
Replace a weird error string stack with direct calls to the
LocalizationMgr log and its associated formatting helper. In cases where
indirection was needed, plString was introduced. This makes the code
cleaner and faster.