示例#1
0
文件: main.cpp 项目: silnarm/PDJ
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;
}