void Md3Model::draw () const { Matrix4x4f m; // Draw the model renderFrameItpWithVertexArrays (_currFrame, _nextFrame, _interp); // Draw models linked to this one for (int i = 0; i < _header.num_tags; ++i) { if (!_links[i]) continue; const Quaternionf &qA = _qtags[_currFrame * _header.num_tags + i]->orient; const Quaternionf &qB = _qtags[_nextFrame * _header.num_tags + i]->orient; m.fromQuaternion (Slerp (qA, qB, _interp)); const Vector3f &currPos = _qtags[_currFrame * _header.num_tags + i]->origin; const Vector3f &nextPos = _qtags[_nextFrame * _header.num_tags + i]->origin; m.setTranslation ((currPos + _interp * (nextPos - currPos)) * _scale); glPushMatrix (); glMultMatrixf (m); _links[i]->draw (); glPopMatrix (); } }