本文整理汇总了C++中Locator::exists方法的典型用法代码示例。如果您正苦于以下问题:C++ Locator::exists方法的具体用法?C++ Locator::exists怎么用?C++ Locator::exists使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Locator
的用法示例。
在下文中一共展示了Locator::exists方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: findUnsolvedSceneItems
ResourceSolverPtr findUnsolvedSceneItems(SceneInfo* sceneInfo)
{
SceneSolver* solver = new SceneSolver;
ResourceSolverPtr holder(solver);
MeshLocator meshLocator(DEFAULT_RESOURCE_GROUP_NAME);
typedef std::map<String, Locator*> LocatorMap;
LocatorMap locators;
locators["MeshName"] = &meshLocator;
// TODO: other locators
typedef std::pair<String,Ogre::String> TypeValuePair;
typedef std::map<TypeValuePair, UnsolvedSceneItem*> UnsolvedMap;
UnsolvedMap unsolvedMap;
const Scene::Objects& objects = sceneInfo->getObjects();
for (Scene::Objects::const_iterator itObject = objects.begin(); itObject != objects.end(); ++itObject)
{
const ObjectPtr& object = *itObject;
const PropertyList& properties = object->getProperties();
for (PropertyList::const_iterator itProperty = properties.begin(); itProperty != properties.end(); ++itProperty)
{
const PropertyDef& propertyDef = *itProperty;
LocatorMap::const_iterator itLocator = locators.find(propertyDef.type);
if (itLocator == locators.end())
continue;
Locator* locator = itLocator->second;
assert(locator);
Ogre::String value = object->getPropertyAsString(propertyDef.name);
TypeValuePair key(propertyDef.type, value);
std::pair<UnsolvedMap::iterator, bool> inserted =
unsolvedMap.insert(UnsolvedMap::value_type(key, NULL));
if (!inserted.second)
{
// The item already checked
if (!inserted.first->second)
{
// The item exists
continue;
}
}
else
{
// First time to check the item
bool found = locator->exists(value);
if (found)
{
continue;
}
// Create new unsolved resource
UnsolvedSceneItem* item = new UnsolvedSceneItem(solver);
solver->unsolvedResources.push_back(UnsolvedResourcePtr(item));
// Setup origin name
item->origin = value;
// Setup description
item->description = locator->getDescription(value, object->getName(), propertyDef.name);
// Setup recommend values
item->recommends = locator->getRecommendValues(value);
// Setup possible values
item->possibles = locator->getPossibleValues(value);
inserted.first->second = item;
}
inserted.first->second->references.push_back(UnsolvedSceneItem::Reference(object, propertyDef.name));
}
}
return holder;
}