Пример #1
0
void EffectManager::update(float dt, Ogre::Camera* camera)
{
    for (std::vector<std::pair<Ogre::SceneNode*, NifOgre::ObjectScenePtr> >::iterator it = mEffects.begin(); it != mEffects.end(); )
    {
        NifOgre::ObjectScenePtr objects = it->second;
        for(size_t i = 0; i < objects->mControllers.size() ;i++)
        {
            EffectAnimationTime* value = dynamic_cast<EffectAnimationTime*>(objects->mControllers[i].getSource().get());
            if (value)
                value->addTime(dt);

            objects->mControllers[i].update();
        }
        objects->rotateBillboardNodes(camera);

        // Finished playing?
        if (objects->mControllers[0].getSource()->getValue() >= objects->mMaxControllerLength)
        {
            Ogre::SceneNode* node = it->first;
            it = mEffects.erase(it);
            mSceneMgr->destroySceneNode(node);
            continue;
        }
        ++it;
    }
}
Пример #2
0
void Animation::preRender(Ogre::Camera *camera)
{
    for (std::vector<EffectParams>::iterator it = mEffects.begin(); it != mEffects.end(); ++it)
    {
        NifOgre::ObjectScenePtr objects = it->mObjects;
        objects->rotateBillboardNodes(camera);
    }
    mObjectRoot->rotateBillboardNodes(camera);
}