figured out proper matrix multiplication order in model heirarchy, now this works: car wheel rotation:
for (int i = 0; i < entity->model->meshes.count; i++) { render_mesh(&entity->model->meshes[i], m_Translate(entity->pos) * m_Rotate_RH(m_AngleDeg(entity->rot.x), m_V3(1, 0, 0)) * m_Rotate_RH(m_AngleDeg(entity->rot.y), m_V3(0, 1, 0)) * m_Rotate_RH(m_AngleDeg(entity->rot.z), m_V3(0, 0, 1)) * entity->model->meshes[i].parent_transform.transform * entity->model->meshes[i].local_transform.translation // * m_Rotate_RH(m_AngleDeg(rot.z), m_V3(0, 0, 1)) // optional case for local rotation of the wheel * entity->model->meshes[i].local_transform.rotation * entity->model->meshes[i].local_transform.scale ); }