Changeset 25 for nrEngine/src/Script.cpp


Ignore:
Timestamp:
03/22/2007 06:15:54 PM (13 years ago)
Author:
art
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • nrEngine/src/Script.cpp

    r24 r25  
    3030                mTime = 0; 
    3131                bRunStepwise = true; 
    32                 mResetTime = 0; 
     32                mStopTime = 0; 
     33                mRunningTimeLength = 0; 
    3334        } 
    3435 
     
    117118                                        if (cmd.args.size() > 0 && cmd.args[0].length() > 0) 
    118119                                        { 
    119                                                 mTimedCommand.push_back(cmd); 
     120                                                if (cmd.cmd == std::string("_stop_")) 
     121                                                { 
     122                                                        mRunningTimeLength = cmd.timestamp; 
     123                                                }else 
     124                                                        mTimedCommand.push_back(cmd); 
    120125                                        } 
    121126                                }catch(...){ 
     
    211216                // the estimated end time is also computed 
    212217                mTimedCommandFifo.clear(); 
    213                 for (uint32 i=0; i < mTimedCommand.size(); i++){ 
     218                for (uint32 i=0; i < mTimedCommand.size(); i++) 
     219                { 
    214220                        mTimedCommandFifo.push_front(i); 
    215221                        mTimedCommand[i].estimatedStart = Engine::sClock()->getTime() + mTimedCommand[i].timestamp; 
     
    222228                // update time 
    223229                mTime = Engine::sClock()->getTime(); 
    224  
     230                if (mStopTime == 0 && mRunningTimeLength > 0) 
     231                        mStopTime = mTime + mRunningTimeLength; 
     232                         
    225233                // ----- timed commands (quasi parallel execution) ----- 
    226234                // scan through the command fifo 
     
    239247                                it = mTimedCommandFifo.erase(it); 
    240248 
    241                                 // check if we have a stop commando 
    242                                 if (mTimedCommand[id].cmd != std::string("_stop_")) 
    243                                 { 
    244                                         Engine::sScriptEngine()->call(mTimedCommand[id].cmd, mTimedCommand[id].args); 
    245                                 }else{ 
    246                                         Engine::sKernel()->RemoveTask(this->getTaskID()); 
    247                                 } 
    248  
     249                                // call the commando 
     250                                Engine::sScriptEngine()->call(mTimedCommand[id].cmd, mTimedCommand[id].args); 
    249251                        }else 
    250252                                it ++; 
    251  
    252253                } 
    253254                 
     
    275276                // reset the command list 
    276277                reset(); 
     278 
     279                // check whenever execution time of the script exceeds 
     280                if (mTime > mStopTime && mStopTime > 0) 
     281                { 
     282                                Engine::sKernel()->RemoveTask(this->getTaskID()); 
     283                } 
    277284 
    278285                return OK; 
Note: See TracChangeset for help on using the changeset viewer.