本文整理汇总了C++中ogre::FileInfoListPtr::front方法的典型用法代码示例。如果您正苦于以下问题:C++ FileInfoListPtr::front方法的具体用法?C++ FileInfoListPtr::front怎么用?C++ FileInfoListPtr::front使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ogre::FileInfoListPtr
的用法示例。
在下文中一共展示了FileInfoListPtr::front方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: init
void CMapPack::init() {
if (m_bInitialised) {return;}
Ogre::LogManager::getSingleton().logMessage("Creating map pack for " + m_sMapName);
Ogre::ResourceGroupManager::getSingleton().createResourceGroup(m_sMapName);
Ogre::FileInfoListPtr files = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo("level_user", m_sMapName + ".zip");
if (files->size() == 0) {
throw Ogre::Exception(0, "Map zip file not found", __FILE__);
}
Ogre::String sZipFile = files->front().archive->getName() + "/" + files->front().filename;
Ogre::LogManager::getSingleton().logMessage(" adding zip from " + sZipFile);
#if OGRE_PLATFORM == OGRE_PLATFORM_ANDROID
Ogre::ResourceGroupManager::getSingleton().addResourceLocation(sZipFile, "APKZip", m_sMapName, true);
#else
Ogre::ResourceGroupManager::getSingleton().addResourceLocation(sZipFile, "Zip", m_sMapName, true);
#endif
Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup(m_sMapName);
m_bInitialised = true;
try {
loadLanguage();
}
catch (const Ogre::Exception& e) {
Ogre::LogManager::getSingleton().logMessage(Ogre::LML_CRITICAL, e.getFullDescription());
}
if (!m_pMapInfo) {
m_pMapInfo = shared_ptr<CMapInfo>(new CMapInfo(m_sMapName, m_sMapName));
}
}
示例2: load
//-------------------------------------------------------------------------------------
void SceneLoader::load(std::string filename, Scene* scene)
{
try
{
Ogre::FileInfoListPtr files = Ogre::ResourceGroupManager::getSingletonPtr()->findResourceFileInfo("Essential", filename);
if(files->size() < 1) throw NHException("could not find the path to the specified scene");
std::string filePath = files->front().archive->getName() + "/" + files->front().filename;
std::ifstream streamfile(filePath);
rapidxml::xml_document<> doc;
std::vector<char> buffer((std::istreambuf_iterator<char>(streamfile)), std::istreambuf_iterator<char>());//streamfile)), std::istreambuf_iterator<char>());
buffer.push_back('\0');//null terminating the buffer
//std::cout << &buffer[0] << std::endl; //test the buffer
doc.parse<0>(&buffer[0]);
rapidxml::xml_node<>* root = doc.first_node(SCENE_STRING);//"scene");
scene->getSceneGraphicsManager()->setAmbientLight(getXMLColour(root, AMBIENT_RED_STRING, AMBIENT_GREEN_STRING, AMBIENT_BLUE_STRING));
//description attributes
//north = boost::lexical_cast<float>(root->first_attribute(NORTH_STRING)->value());
//Architecture
rapidxml::xml_node<>* architectureNode = root->first_node(ARCHITECTURE_STRING);//"architecture");
while(architectureNode != NULL)
{
int id = boost::lexical_cast<int>(architectureNode->first_attribute(ID_STRING)->value());
try
{
scene->addArchitecture(id, getXMLPosition(architectureNode), getXMLRotation(architectureNode), getXMLScale(architectureNode));
}
catch(NHException e)
{
#ifdef _DEBUG
std::cout << e.what() << std::endl;
#endif
}
architectureNode = architectureNode->next_sibling(ARCHITECTURE_STRING);
}
scene->build();//building static geometry - must do here else we can't use the navigation mesh for creature placement
//Lights
rapidxml::xml_node<>* lightNode = root->first_node(LIGHT_STRING);//"light");
while(lightNode != NULL)
{
bool cast_shadows = boost::lexical_cast<bool>(lightNode->first_attribute(CAST_SHADOWS_STRING)->value());
float range = boost::lexical_cast<float>(lightNode->first_attribute(RANGE_STRING)->value());
Ogre::ColourValue colour = getXMLColour(lightNode);
scene->addLight(-1, getXMLPosition(lightNode),cast_shadows,range);//TODO: use actual id rather than -1
lightNode = lightNode->next_sibling(LIGHT_STRING);
}
//Items
rapidxml::xml_node<>* itemNode = root->first_node(ITEM_STRING);
while(itemNode != NULL)
{
int id = boost::lexical_cast<int>(itemNode->first_attribute(ID_STRING)->value());
scene->addItem(id, getXMLPosition(itemNode), getXMLRotation(itemNode));
itemNode = itemNode->next_sibling(ITEM_STRING);
}
//Creatures
rapidxml::xml_node<>* creatureNode = root->first_node(CREATURE_STRING);
while(creatureNode != NULL)
{
int id = boost::lexical_cast<int>(creatureNode->first_attribute(ID_STRING)->value());
scene->addCreature(id, getXMLPosition(creatureNode));
creatureNode = creatureNode->next_sibling(CREATURE_STRING);
}
//Portals
rapidxml::xml_node<>* portalNode = root->first_node(PORTAL_STRING);
while(portalNode != NULL)
{
int id = boost::lexical_cast<int>(portalNode->first_attribute(ID_STRING)->value());
int targetSceneID = boost::lexical_cast<int>(portalNode->first_attribute(TARGET_SCENE_ID_STRING)->value());
int targetPortalID = boost::lexical_cast<int>(portalNode->first_attribute(TARGET_PORTAL_ID_STRING)->value());
scene->addPortal(id, getXMLPosition(portalNode), getXMLVector(portalNode, LOOK_AT_X_STRING, LOOK_AT_Y_STRING, LOOK_AT_Z_STRING), Id<Scene>(targetSceneID), Id<Portal>(targetPortalID), Id<Portal>(id));
portalNode = portalNode->next_sibling(PORTAL_STRING);//"portal");
}
//Particles //TODO: change to emitter
/*
rapidxml::xml_node<>* particleNode = root->first_node(PARTICLE_STRING);//"particle");
while(particleNode != NULL)
{
scene->addParticles(particleNode->first_attribute(NAME_STRING)->value(), particleNode->first_attribute(TEMPLATE_NAME_STRING)->value(),getXMLPosition(particleNode));
particleNode = particleNode->next_sibling(PARTICLE_STRING);
}
*/
}
catch (rapidxml::parse_error e)
{
//.........这里部分代码省略.........