本文整理汇总了C++中ParticleEmitter::setParameter方法的典型用法代码示例。如果您正苦于以下问题:C++ ParticleEmitter::setParameter方法的具体用法?C++ ParticleEmitter::setParameter怎么用?C++ ParticleEmitter::setParameter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParticleEmitter
的用法示例。
在下文中一共展示了ParticleEmitter::setParameter方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: compileEmitter
void ParticleScriptCompiler::compileEmitter(const ScriptNodePtr &node)
{
if(node->children.empty() || node->children.front()->type != SNT_WORD)
return;
// Create the emitter based on the first child
ParticleEmitter *emitter = 0;
String type = node->children.front()->token;
try{
emitter = mSystem->addEmitter(type);
}catch(...){
addError(CE_OBJECTALLOCATIONERROR, node->children.front()->file,
node->children.front()->line, node->children.front()->column);
return;
}
// Jump ahead now to the '{' as the emitter does not support other parameters in the header
ScriptNodeList::iterator i = findNode(node->children.begin(), node->children.end(), SNT_LBRACE);
if(i == node->children.end())
return;
ScriptNodeList::iterator j = (*i)->children.begin();
while(j != (*i)->children.end())
{
if(!processNode(j, (*i)->children.end()))
{
String name = (*j)->token,
value = getParameterValue((*j)->children.begin(), (*j)->children.end());
if(!emitter->setParameter(name, value))
addError(CE_INVALIDPROPERTY, (*j)->file, (*j)->line, (*j)->column);
++j;
}
}
}
示例2:
//------------------------------------------------------------------------------
void
ParticleEmitterTranslator::translate(Ogre::ScriptCompiler *compiler, const Ogre::AbstractNodePtr &node)
{
Ogre::ObjectAbstractNode *obj = reinterpret_cast<Ogre::ObjectAbstractNode*>(node.get());
// name can't be empty because we get renderer type from it
if(obj->name.empty())
{
compiler->addError(Ogre::ScriptCompiler::CE_OBJECTNAMEEXPECTED, obj->file, obj->line);
return;
}
ParticleTechnique* tech = Ogre::any_cast<ParticleTechnique*>(obj->parent->context);
ParticleEmitter* emitter = tech->CreateEmitter(obj->name);
if (emitter == NULL)
{
compiler->addError(Ogre::ScriptCompiler::CE_OBJECTALLOCATIONERROR, obj->file, obj->line);
return;
}
Ogre::LogManager::getSingletonPtr()->logMessage("ParticleEmitterTranslator: create emitter.");
for (Ogre::AbstractNodeList::iterator i = obj->children.begin(); i != obj->children.end(); ++i)
{
if ((*i)->type == Ogre::ANT_PROPERTY)
{
Ogre::PropertyAbstractNode *prop = reinterpret_cast<Ogre::PropertyAbstractNode*>((*i).get());
Ogre::String value = prop->getValue();
/*
// Glob the values together
for (Ogre::AbstractNodeList::iterator i = prop->values.begin(); i != prop->values.end(); ++i)
{
if((*i)->type == Ogre::ANT_ATOM)
{
if (value.empty())
{
value = ((Ogre::AtomAbstractNode*)(*i).get())->value;
}
else
{
value = value + " " + ((Ogre::AtomAbstractNode*)(*i).get())->value;
}
}
else
{
compiler->addError(Ogre::ScriptCompiler::CE_INVALIDPARAMETERS, prop->file, prop->line);
break;
}
}
*/
Ogre::LogManager::getSingletonPtr()->logMessage("ParticleEmitterTranslator: Set param '" + prop->name + "' to '" + value + "'.");
if (!emitter->setParameter(prop->name, value))
{
compiler->addError(Ogre::ScriptCompiler::CE_INVALIDPARAMETERS, prop->file, prop->line);
}
}
}
}