当前位置: 首页>>代码示例>>C++>>正文


C++ DynamicStat::setModified方法代码示例

本文整理汇总了C++中mwmechanics::DynamicStat::setModified方法的典型用法代码示例。如果您正苦于以下问题:C++ DynamicStat::setModified方法的具体用法?C++ DynamicStat::setModified怎么用?C++ DynamicStat::setModified使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在mwmechanics::DynamicStat的用法示例。


在下文中一共展示了DynamicStat::setModified方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: update

    void Actors::update (std::vector<std::pair<std::string, Ogre::Vector3> >& movement, float duration,
        bool paused)
    {
        mDuration += duration;

        if (mDuration>=0.25)
        {
            float totalDuration = mDuration;
            mDuration = 0;
            
            std::set<MWWorld::Ptr>::iterator iter (mActors.begin());

            while (iter!=mActors.end())
            {
                if (!MWWorld::Class::get (*iter).getCreatureStats (*iter).isDead())
                {
                    updateActor (*iter, totalDuration);

                    if (iter->getTypeName()==typeid (ESM::NPC).name())
                        updateNpc (*iter, totalDuration, paused);
                }

                if (MWWorld::Class::get (*iter).getCreatureStats (*iter).isDead())
                {
                    // workaround: always keep player alive for now
                    // \todo remove workaround, once player death can be handled
                    if (iter->getRefData().getHandle()=="player")
                    {
                        MWMechanics::DynamicStat<float> stat (
                            MWWorld::Class::get (*iter).getCreatureStats (*iter).getHealth());
                            
                        if (stat.getModified()<1)
                        {
                            stat.setModified (1, 0);
                            MWWorld::Class::get (*iter).getCreatureStats (*iter).setHealth (stat);
                        }

                        MWWorld::Class::get (*iter).getCreatureStats (*iter).resurrect();
                        ++iter;
                        continue;
                    }

                    ++mDeathCount[MWWorld::Class::get (*iter).getId (*iter)];

                    MWBase::Environment::get().getWorld()->playAnimationGroup (*iter, "death1", 0);

                    if (MWWorld::Class::get (*iter).isEssential (*iter))
                        MWBase::Environment::get().getWindowManager()->messageBox (
                            "#{sKilledEssential}", std::vector<std::string>());

                    mActors.erase (iter++);
                }
                else
                    ++iter;
            }
        }

        for (std::set<MWWorld::Ptr>::iterator iter (mActors.begin()); iter!=mActors.end();
            ++iter)
        {
            Ogre::Vector3 vector = MWWorld::Class::get (*iter).getMovementVector (*iter);

            if (vector!=Ogre::Vector3::ZERO)
                movement.push_back (std::make_pair (iter->getRefData().getHandle(), vector));
        }
    }
开发者ID:emoose,项目名称:openmw,代码行数:66,代码来源:actors.cpp


注:本文中的mwmechanics::DynamicStat::setModified方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。