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();
}
示例#2
0
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();
}