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


C++ TaskPtr::isDone方法代码示例

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


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

示例1: process

 bool TaskQueue::process(float dt, TaskPtr task)
 {
     if(task->isDone())
         return true;
     
     if(task->getType() == Task::BATCH)
     {
         TaskBatchPtr t = boost::static_pointer_cast<TaskBatch>(task);
         for(std::list<TaskPtr>::iterator i=t->list.begin(); i != t->list.end();)
         {
             if(process(dt, *i))
                 i = t->list.erase(i);
             else
                 i++;
         }
         
         return t->isDone();
     }
     else if(task->getType() == Task::SEQUENCE)
     {
         TaskSequencePtr t = boost::static_pointer_cast<TaskSequence>(task);
         for(int j=0; j< MAX_CURRENT_JOBS && !t->isDone(); j++)
         {
             TaskPtr head = t->list.front();
             if(process(dt, head))
             {
                 if(t->list.size())
                     t->list.pop_front();
             }
             else
                 break;
         }
         
         return t->isDone();
     }
     else if(task->getType() == Task::ANIM)
     {
         TaskAnimPtr anim = boost::static_pointer_cast<TaskAnim>(task);
         
         if(!anim->node->isRunning())
             return true;
         
         if(!anim->hasStarted())
         {
             anim->launch();
         }
         else if(anim->wait)
         {
             // insidious hack
             int ref = (int)anim->node->getUserData();
             if(ref != anim->runningCount)
             {
                 LOGD("overwriting previous anmation %d %d\n", ref, anim->runningCount);
                 return true;
             }
         }
         
         return anim->isDone();
     }
     else if(task->getType() == Task::SOUND)
     {
         TaskSoundPtr sound = boost::static_pointer_cast<TaskSound>(task);
         
         if(!sound->isDone())
             sound->launch();
         return true;
     }
     else if(task->getType() == Task::LAMBDA)
     {
         TaskLambdaPtr t = boost::static_pointer_cast<TaskLambda>(task);
         t->func();
         
         return true;
     }
     else if(task->getType() == Task::EMPTY || task->getType() == Task::IGNORE)
     {
         return true;
     }
     
     LOGD("unknown task %s\n", task->getTag().c_str());
     phassert(false && "Unknown task occured");
     
     return true;
 }
开发者ID:13609594236,项目名称:ph-open,代码行数:84,代码来源:Task.cpp


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