protected void MakeTransform( Vector3 position, Vector3 scale, Quaternion orientation, ref Matrix4 destMatrix )
{
// Ordering:
// 1. Scale
// 2. Rotate
// 3. Translate
// Parent scaling is already applied to derived position
// Own scale is applied before rotation
Matrix3 rot3x3;
Matrix3 scale3x3;
rot3x3 = orientation.ToRotationMatrix();
scale3x3 = Matrix3.Zero;
scale3x3.m00 = scale.x;
scale3x3.m11 = scale.y;
scale3x3.m22 = scale.z;
destMatrix = rot3x3 * scale3x3;
destMatrix.Translation = position;
}