Now that we've accomplished everything involved in getting a mod up and running with Basic Mod, let's do something
that produces more immediate feedback and actually changes the game behavior. We'll start out doing something very
simple, before we move onto something more advanced in the next example. Fire up the codebase again, and open up
game_player.cpp. Head to the function hhPlayer::GetViewPos, and you'll see a line that looks like this:
axis = TransformToPlayerSpace( (GetUntransformedViewAngles() + viewBobAngles + playerView.AngleOffset(kickSpring, kickDamping)).ToMat3() );
Let's replace it with this chunk of code:
//viewswagger begin
idAngles swaggerOffset;
const float swagger = 10.0f;
swaggerOffset.roll = 0.0f;
swaggerOffset.pitch = idMath::Sin(MS2SEC(gameLocal.time))*swagger;
swaggerOffset.yaw = idMath::Cos(MS2SEC(gameLocal.time))*swagger*0.5f;
axis = TransformToPlayerSpace( (swaggerOffset + GetUntransformedViewAngles() + viewBobAngles + playerView.AngleOffset(kickSpring, kickDamping)).ToMat3() );
//viewswagger end
Now compile and take the gamex86.dll, and do the same thing we did with it in the Basic Mod example (though you will
probably want to use something other than mymod, such as, say, viewswagger). When you load a map up, you will now
notice that Tommy has a little view swagger going on. This is accomplished by adding some simple wave-based angles to
the final view axis in the code above. Now that we have observed our first changes in game behavior, it's time to
move onto the next example, where we actually get to add our own new type of entity.
Rich Whitehouse
( http://www.telefragged.com/thefatal/ )