void TimeWarpOutputManager::insertEvent(std::shared_ptr<Event> input_event, std::shared_ptr<Event> output_event, unsigned int local_lp_id) { output_queue_[local_lp_id].push_back(OutputEvent(input_event, output_event)); }
//================================================================ // Name: OutputEvents // Class: DocFileOutput // // Description: Loops through all the events and calls OutputEvent on each // (which will usually be a derived classes' version of it). // This function also filters out the events based on the typeFlag // // Parameters: ClassDef in_class -- The class whose events we will loop through // // Returns: None // //================================================================ void DocFileOutput::OutputEvents(ClassDef *in_class) { ResponseDef<Class> *r; int ev, i, num; Event **events; num = Event::NumEventCommands(); events = new Event *[num]; memset( events, 0, sizeof( Event * ) * num ); // gather event responses for this class r = in_class->responses; if ( r ) { for( i = 0; r[i].event != NULL; i++ ) { ev = ( int )*r[i].event; if ( r[i].response ) { events[ev] = r[i].event; } } } for( i = 1; i < num; i++ ) { int index; index = Event::MapSortedEventIndex( i ); if ( events[index] ) { // Filtering if ( events[index]->GetFlags() != 0 ) { // Event is not default if ( ( events[index]->GetFlags() & EV_TIKIONLY ) && typeFlag == EVENT_SCRIPT_ONLY && !( events[index]->GetFlags() & EV_SCRIPTONLY ) ) continue; if ( ( events[index]->GetFlags() & EV_SCRIPTONLY ) && typeFlag == EVENT_TIKI_ONLY && !( events[index]->GetFlags() & EV_TIKIONLY ) ) continue; if ( ( events[index]->GetFlags() & EV_CODEONLY ) && ( typeFlag == EVENT_TIKI_ONLY || typeFlag == EVENT_SCRIPT_ONLY ) ) continue; if ( ( events[index]->GetFlags() & EV_CHEAT ) && ( typeFlag == EVENT_TIKI_ONLY ) && !( events[index]->GetFlags() & EV_TIKIONLY ) ) continue; if ( ( events[index]->GetFlags() & EV_CHEAT ) && ( typeFlag == EVENT_SCRIPT_ONLY ) && !( events[index]->GetFlags() & EV_SCRIPTONLY ) ) continue; if ( ( events[index]->GetFlags() & EV_CONSOLE ) && ( typeFlag == EVENT_TIKI_ONLY || typeFlag == EVENT_SCRIPT_ONLY ) ) continue; } OutputEvent( events[index] ); } } delete[] events; }
OutputEvent Servo::peekNextEvent() const { bool nextState = !curState; EventClockT::time_point nextEventTime = lastEventTime + (curState ? highTime : (cycleLength-highTime)); return OutputEvent(nextEventTime, pin, nextState); }