I started by creating an identity matrix, then creating a rotation matrix, multiplying those, then creating a translation matrix, and getting the resulting matrix.
The rotation matrix is where I get confused and where the problem is. The way it's setup now is that the heading is a vector from the actor's position that represents it's x-axis in local space, and the side vector represents it's y-axis in local space. I then took the x and y components of these vectors to create the rotation matrix like this:
{ heading.x, heading.y, 0,
side.x, side.y, 0,
0, 0, 1 }
I'm sure this is entirely wrong, and I would appreciate any help anyone could give me to clear this up.