本文整理汇总了C++中PropertyBag::get_optional方法的典型用法代码示例。如果您正苦于以下问题:C++ PropertyBag::get_optional方法的具体用法?C++ PropertyBag::get_optional怎么用?C++ PropertyBag::get_optional使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PropertyBag
的用法示例。
在下文中一共展示了PropertyBag::get_optional方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: animationSequence
AnimationController* _3dsLoader::loadFromFile(const string &fileName) const
{
PropertyBag xml;
bool truespaceModel = false;
string skin;
TRACE(string("Loading 3DS model from \"") + fileName + string("\""));
xml.loadFromFile(fileName);
AnimationController* controller = new AnimationController();
xml.get_optional("Truespace", truespaceModel);
xml.get_optional("forceSkin", skin);
for(size_t i=0, numAnimations=xml.count("animation"); i<numAnimations; ++i)
{
PropertyBag animation;
string name;
float fps = 0.0;
bool looping = false;
float priority = 0.0f;
xml.get("animation", animation, i);
animation.get("name", name);
animation.get_optional("fps", fps);
animation.get_optional("looping", looping);
animation.get_optional("priority", priority);
// Load all the keyframes
vector<KeyFrame> keyFrames;
const size_t length=animation.count("keyframe");
for(size_t j=0; j<length; ++j)
{
string keyFrameFile;
animation.get("keyframe", keyFrameFile, j);
Model keyFrame = loadKeyFrame(keyFrameFile);
cullDegenerateMeshes(keyFrame);
if(!skin.empty()) forceSkin(keyFrame, skin);
if(truespaceModel) fixTrueSpaceVertices(keyFrame);
keyFrames.push_back(keyFrame);
}
TRACE(string("Adding 3DS animation \"") + name + string("\" from ") + fileName);
// Add it to the controller
AnimationSequence animationSequence(keyFrames, name, priority, looping, 0, length, fps);
controller->addAnimation(animationSequence);
}
return controller;
}
示例2: load
void Monster::load(const PropertyBag &xml)
{
Creature::load(xml);
if(xml.exists("preferredSpell")) {
xml.get_optional("preferredSpell", preferredSpell);
} else {
preferredSpell = 0;
}
switch(preferredSpell)
{
case 0: spell = new SpellFireBall (&getZone(), m_ID, "data/spells/fireball.xml"); break; // Fireball
case 1: spell = new SpellFireBall (&getZone(), m_ID, "data/spells/arctic-wind.xml"); break; // Arctic Wind
case 2: spell = new SpellIncinerate (&getZone(), m_ID, "data/spells/incinerate.xml"); break; // Incinerate
case 3: spell = new SpellFireBall (&getZone(), m_ID, "data/spells/chill.xml"); break; // Chill
case 4: spell = new SpellHeal (&getZone(), m_ID, "data/spells/heal.xml"); break; // Heal
case 5: spell = new SpellFireBall (&getZone(), m_ID, "data/spells/ice-blast.xml"); break; // Ice Blast
case 6: spell = 0; break; // Reserved for "Resurrect" Spell
default: spell = 0; break;
};
if(spell!=0)
{
spell->available = true;
}
}