void WMOModelInstance::draw() { if (!model) return; glPushMatrix(); glTranslatef(pos.x, pos.y, pos.z); Vec3D vdir(-dir.z, dir.x, dir.y); glQuaternionRotate(vdir, w); glScalef(sc, -sc, -sc); model->draw(); glPopMatrix(); }
void ModelInstance::draw2(const Vec3D& ofs, const float rot) { Vec3D tpos(ofs + pos); rotate(ofs.x,ofs.z,&tpos.x,&tpos.z,rot*PI/180.0f); if ( (tpos - gWorld->camera).lengthSquared() > (gWorld->doodaddrawdistance2*model->rad*sc) ) return; if (!gWorld->frustum.intersectsSphere(tpos, model->rad*sc)) return; glPushMatrix(); glTranslatef(pos.x, pos.y, pos.z); Vec3D vdir(-dir.z,dir.x,dir.y); glQuaternionRotate(vdir,w); glScalef(sc,-sc,-sc); model->draw(); glPopMatrix(); }