Changeset 23 for nrEngine/src/Clock.cpp


Ignore:
Timestamp:
01/21/2007 11:02:48 AM (13 years ago)
Author:
art
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • nrEngine/src/Clock.cpp

    r22 r23  
    2525namespace nrEngine{ 
    2626         
     27        //---------------------------------------------------------------------------------- 
     28        ScriptFunctionDec(scriptResetClock, Clock) 
     29        { 
     30                // check parameter count 
     31                if (args.size() < 1) 
     32                { 
     33                        return ScriptResult(std::string("resetClock([timeToReset = 0, [reset_all_timers = 0]]) - Not valid parameter count!")); 
     34                } 
     35 
     36                if (param.size() == 0) 
     37                { 
     38                        return ScriptResult(std::string("resetClock() was not properly registered before. Clock was not passed!")); 
     39                } 
     40                 
     41                // get clock  
     42                Clock* clock = nrEngine::ScriptEngine::parameter_cast<Clock* >(param[0]); 
     43                if (clock == NULL) 
     44                { 
     45                        return ScriptResult(std::string("resetClock() was not properly registered before. Clock was not passed!"));              
     46                } 
     47                 
     48                // get parameters 
     49                bool shouldResetTimers = false; 
     50                float64 timeToReset = 0; 
     51                if (args.size() > 1) timeToReset = boost::lexical_cast<float64>(args[1]); 
     52                if (args.size() > 2) shouldResetTimers = boost::lexical_cast<bool>(args[2]); 
     53                 
     54                // reset the clock  
     55                clock->reset(timeToReset, shouldResetTimers); 
     56 
     57                return ScriptResult(); 
     58        } 
     59 
    2760        //------------------------------------------------------------------------ 
    2861        Clock::Clock() : ITask(){ 
     
    6093         
    6194        //------------------------------------------------------------------------       
     95        void Clock::reset(float64 resetToTime, bool resetAllObservers) 
     96        { 
     97                // check if we have to reset observers 
     98                if (resetAllObservers) 
     99                { 
     100                        ObserverList::iterator it = observers.begin(); 
     101                        for (; it != observers.end(); it++) 
     102                                (*it)->resetObserver(resetToTime); 
     103                } 
     104                 
     105                // reset the clock  
     106                lastCurrentTime = resetToTime; 
     107                currentTime = resetToTime; 
     108                frameTime = frameDefaultTime; 
     109                frameNumber = 0; 
     110                realFrameTime = frameDefaultTime; 
     111                nextSyncTime = 0; 
     112                 
     113                // reset time source 
     114                setTimeSource(timeSource); 
     115                 
     116                // reset the frame history 
     117                setFrameWindow(frameFilteringWindow, frameDefaultTime); 
     118                 
     119                NR_Log(Log::LOG_ENGINE, "Clock: Reset clock to %f", resetToTime);                
     120        } 
     121 
     122        //------------------------------------------------------------------------       
    62123        void Clock::setTimeSource(SharedPtr<TimeSource> timeSource) 
    63124        {                
     
    86147         
    87148                // create timer as observer 
    88                 SharedPtr<ITimeObserver> timer( 
    89                                         new Timer(*this)); 
     149                SharedPtr<ITimeObserver> timer(new Timer(*this)); 
    90150                 
    91151                // add him to the list 
     
    105165         
    106166        //------------------------------------------------------------------------ 
    107         Result Clock::stopTask(){ 
     167        Result Clock::onStartTask() 
     168        { 
     169                // register function by the manager 
     170                std::vector<nrEngine::ScriptParam> param; 
     171                param.push_back(this); 
     172                Engine::sScriptEngine()->add("resetClock", scriptResetClock, param); 
     173                 
     174                return OK; 
     175        } 
     176 
     177        //------------------------------------------------------------------------ 
     178        Result Clock::stopTask() 
     179        { 
     180         
    108181                timeSource.reset(); 
    109182                 
     
    112185                } 
    113186                observers.clear(); 
     187                 
     188                Engine::sScriptEngine()->del("resetClock"); 
    114189                 
    115190                return OK; 
     
    153228                // set the last current time we used to the current time 
    154229                lastCurrentTime = currentTime; 
    155  
     230                 
    156231                // OK 
    157232                return OK; 
     
    198273                        observers.push_back (timeObserver); 
    199274                        id = observers.size(); 
    200                         observerIDList[::std::string(DEFAULT_OBSERVER_NAME)  
    201                                                                                 + ::boost::lexical_cast< ::std::string >(id)] = id; 
     275                        observerIDList[::std::string(DEFAULT_OBSERVER_NAME) + ::boost::lexical_cast< ::std::string >(id)] = id; 
    202276                        observers[observers.size()-1]->_observerID = id; 
    203277                } 
     
    212286                if (id <= 0 || id+1 >= static_cast<int32>(observers.size()) 
    213287                                || observerIDList.find(::std::string(DEFAULT_OBSERVER_NAME) +  
    214                                                         ::boost::lexical_cast< ::std::string >(observerID)) == observerIDList.end()){ 
     288                                ::boost::lexical_cast< ::std::string >(observerID)) == observerIDList.end()){ 
    215289                        return CLOCK_OBSERVER_NOT_FOUND; 
    216290                } 
     
    228302                 
    229303        //------------------------------------------------------------------------ 
    230         Result Clock::addObserver(const ::std::string& obsName, 
    231                                                                                                 SharedPtr<ITimeObserver> timeObserver){ 
    232                                                                  
     304        Result Clock::addObserver(const ::std::string& obsName,SharedPtr<ITimeObserver> timeObserver) 
     305        { 
    233306         
    234307                // check whenever such an observer already exists 
Note: See TracChangeset for help on using the changeset viewer.