compoundUpdateDataVisitor.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "compoundUpdateDataVisitor.h"
00019
00020 #include "compound.h"
00021
00022 #include <eq/client/client.h>
00023 #include <eq/client/log.h>
00024 #include <eq/client/server.h>
00025
00026 using namespace std;
00027 using namespace eq::base;
00028
00029 namespace eq
00030 {
00031 namespace server
00032 {
00033 CompoundUpdateDataVisitor::CompoundUpdateDataVisitor(
00034 const uint32_t frameNumber )
00035 : _frameNumber( frameNumber )
00036 , _taskID( 0 )
00037 {}
00038
00039 VisitorResult CompoundUpdateDataVisitor::visit(
00040 Compound* compound )
00041 {
00042 compound->setTaskID( ++_taskID );
00043 compound->fireUpdatePre( _frameNumber );
00044 compound->updateInheritData( _frameNumber );
00045
00046 _updateDrawFinish( compound );
00047 return TRAVERSE_CONTINUE;
00048 }
00049
00050
00051 void CompoundUpdateDataVisitor::_updateDrawFinish( Compound* compound )
00052 {
00053 if( !compound->testInheritTask( eq::TASK_DRAW ) ||
00054 !compound->isActive( ))
00055 return;
00056
00057 Channel* channel = compound->getChannel();
00058 channel->setLastDrawCompound( compound );
00059 }
00060
00061 }
00062 }