ISceneNode* spawnVehicle( const pdp::VehicleDesign *design, const vector3df &pos ) { ISceneManager* smgr = irrlicht->getSceneManager(); ISceneNode *container_node = smgr->addSceneNode( "empty" ); std::list<IAnimatedMesh*>::const_iterator it = design->chassis()->meshes().begin(); std::list<IAnimatedMesh*>::const_iterator itEnd = design->chassis()->meshes().end(); for ( ; it != itEnd; ++it) { IAnimatedMesh* mesh = *it; IAnimatedMeshSceneNode* mesh_node = smgr->addAnimatedMeshSceneNode( mesh, container_node ); if (mesh_node) { mesh_node->setMaterialFlag( EMF_LIGHTING, false ); mesh_node->setAnimationSpeed( 20.0f ); mesh_node->setMaterialTexture( 0, design->chassis()->texture() ); playerChassis = mesh_node; } } std::list<pdp::Component*>::const_iterator tit = design->components().begin(); for (int i=0; i < design->chassis()->attachments().size(); ++i) { pdp::Attachment a = design->chassis()->attachments()[i]; it = (*tit)->meshes().begin(); itEnd = (*tit)->meshes().end(); for (; it != itEnd; ++it) { IAnimatedMesh *mesh = *it; IMeshSceneNode *turr_node = smgr->addMeshSceneNode( mesh, container_node ); if (turr_node) { turr_node->setMaterialFlag( EMF_LIGHTING, false ); turr_node->setMaterialTexture( 0, (*tit)->texture() ); turr_node->setPosition(a.offset()); if (a.type() == "Turret") { playerTurret = turr_node; } } } ++tit; } return container_node; }