本文整理汇总了C++中XMLElement::GetVariantValue方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLElement::GetVariantValue方法的具体用法?C++ XMLElement::GetVariantValue怎么用?C++ XMLElement::GetVariantValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLElement
的用法示例。
在下文中一共展示了XMLElement::GetVariantValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PreloadResourcesXML
void Scene::PreloadResourcesXML(const XMLElement& element)
{
ResourceCache* cache = GetSubsystem<ResourceCache>();
// Node or Scene attributes do not include any resources; therefore skip to the components
XMLElement compElem = element.GetChild("component");
while (compElem)
{
String typeName = compElem.GetAttribute("type");
const Vector<AttributeInfo>* attributes = context_->GetAttributes(StringHash(typeName));
if (attributes)
{
XMLElement attrElem = compElem.GetChild("attribute");
unsigned startIndex = 0;
while (attrElem)
{
String name = attrElem.GetAttribute("name");
unsigned i = startIndex;
unsigned attempts = attributes->Size();
while (attempts)
{
const AttributeInfo& attr = attributes->At(i);
if ((attr.mode_ & AM_FILE) && !attr.name_.Compare(name, true))
{
if (attr.type_ == VAR_RESOURCEREF)
{
ResourceRef ref = attrElem.GetVariantValue(attr.type_).GetResourceRef();
String name = cache->SanitateResourceName(ref.name_);
bool success = cache->BackgroundLoadResource(ref.type_, name);
if (success)
{
++asyncProgress_.totalResources_;
asyncProgress_.resources_.Insert(StringHash(name));
}
}
else if (attr.type_ == VAR_RESOURCEREFLIST)
{
ResourceRefList refList = attrElem.GetVariantValue(attr.type_).GetResourceRefList();
for (unsigned k = 0; k < refList.names_.Size(); ++k)
{
String name = cache->SanitateResourceName(refList.names_[k]);
bool success = cache->BackgroundLoadResource(refList.type_, name);
if (success)
{
++asyncProgress_.totalResources_;
asyncProgress_.resources_.Insert(StringHash(name));
}
}
}
startIndex = (i + 1) % attributes->Size();
break;
}
else
{
i = (i + 1) % attributes->Size();
--attempts;
}
}
attrElem = attrElem.GetNext("attribute");
}
}
compElem = compElem.GetNext("component");
}
XMLElement childElem = element.GetChild("node");
while (childElem)
{
PreloadResourcesXML(childElem);
childElem = childElem.GetNext("node");
}
}