本文整理汇总了C++中XMLHelper::Load方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLHelper::Load方法的具体用法?C++ XMLHelper::Load怎么用?C++ XMLHelper::Load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLHelper
的用法示例。
在下文中一共展示了XMLHelper::Load方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseScript
void XMLSoundDefParser::parseScript(Ogre::DataStreamPtr stream)
{
TiXmlDocument xmlDoc;
XMLHelper xmlHelper;
if (!xmlHelper.Load(xmlDoc, stream))
{
return;
}
TiXmlElement* rootElem = xmlDoc.RootElement();
if (rootElem) {
for (TiXmlElement* smElem = rootElem->FirstChildElement();
smElem != 0; smElem = smElem->NextSiblingElement())
{
const char* tmp = smElem->Attribute("name");
if (!tmp)
{
continue;
}
std::string finalName(tmp);
SoundGroupDefinition* newModel = mManager.createSoundGroupDefinition(finalName);
if (newModel)
{
S_LOG_INFO("Sound Model " << finalName << " created.");
readBuffers(newModel, smElem);
}
}
}
}
示例2: importLodDefinition
void XMLLodDefinitionSerializer::importLodDefinition(const Ogre::DataStreamPtr& stream, LodDefinition& lodDef) const
{
TiXmlDocument xmlDoc;
XMLHelper xmlHelper;
if (!xmlHelper.Load(xmlDoc, stream)) {
return;
}
// <lod>...</lod>
TiXmlElement* rootElem = xmlDoc.RootElement();
if (rootElem) {
// <automatic enabled="true|false" />
TiXmlElement* autElem = rootElem->FirstChildElement("automatic");
if (autElem) {
const char* tmp = autElem->Attribute("enabled");
if (tmp) {
lodDef.setUseAutomaticLod(Ogre::StringConverter::parseBool(tmp, true));
}
}
// <manual>...</manual>
TiXmlElement* manElem = rootElem->FirstChildElement("manual");
if (manElem) {
// <type>user|automatic</type>
TiXmlElement* elem = manElem->FirstChildElement("type");
if (elem) {
const char* tmp = elem->GetText();
if (tmp && strcmp(tmp, "automatic") == 0) {
lodDef.setType(LodDefinition::LT_AUTOMATIC_VERTEX_REDUCTION);
} else {
lodDef.setType(LodDefinition::LT_USER_CREATED_MESH);
}
}
// <strategy>distance|pixelcount</strategy>
elem = manElem->FirstChildElement("strategy");
if (elem) {
const char* tmp = elem->GetText();
if (tmp && strcmp(tmp, "distance") == 0) {
lodDef.setStrategy(LodDefinition::LS_DISTANCE);
} else {
lodDef.setStrategy(LodDefinition::LS_PIXEL_COUNT);
}
}
// <level>...</level> <level>...</level> <level>...</level>
for (TiXmlElement* distElem = manElem->FirstChildElement("level");
distElem != 0;
distElem = distElem->NextSiblingElement("level")) {
LodDistance dist;
if (lodDef.getType() == LodDefinition::LT_USER_CREATED_MESH) {
// <meshName>.../test.mesh</meshName>
elem = distElem->FirstChildElement("meshName");
if (elem) {
const char* tmp = elem->GetText();
bool isValidMeshName = Ogre::ResourceGroupManager::getSingleton().resourceExistsInAnyGroup(tmp);
if (tmp && isValidMeshName) {
dist.setMeshName(tmp);
} else {
S_LOG_FAILURE(
lodDef.getName() <<
" contains invalid mesh name for user created lod level. Skipping lod level for distance "
<< distElem->Attribute("distance"));
continue;
}
}
} else {
// <method>constant|proportional</method>
elem = distElem->FirstChildElement("method");
if (elem) {
const char* tmp = elem->GetText();
if (tmp) {
if (strcmp(tmp, "constant") == 0) {
dist.setReductionMethod(Ogre::LodLevel::VRM_CONSTANT);
} else if (strcmp(tmp, "proportional") == 0) {
dist.setReductionMethod(Ogre::LodLevel::VRM_PROPORTIONAL);
} else {
dist.setReductionMethod(Ogre::LodLevel::VRM_COLLAPSE_COST);
}
} else {
dist.setReductionMethod(Ogre::LodLevel::VRM_PROPORTIONAL);
}
}
// <value>0.5</value>
elem = distElem->FirstChildElement("value");
if (elem) {
const char* tmp = elem->GetText();
if (tmp) {
dist.setReductionValue(Ogre::StringConverter::parseReal(tmp));
}
}
}
// <level distance="10">...</level>
const char* distVal = distElem->Attribute("distance");
if (distVal) {
//.........这里部分代码省略.........