| 144 | } |
| 145 | |
| 146 | TriStepResult TriStepRemoteUpdate::Execute( Be::Time realTime, Be::Time simTime, Tr2RenderContext& renderContext ) |
| 147 | { |
| 148 | // Lock and read |
| 149 | if( m_sharedMemory != NULL ) |
| 150 | { |
| 151 | if( WaitForSingleObject( m_needsHndl, 0 ) == WAIT_OBJECT_0 ) |
| 152 | { |
| 153 | if( WaitForSingleObject( m_writingHndl, 0 ) == WAIT_OBJECT_0 ) |
| 154 | { |
| 155 | ResetEvent( m_readingHndl ); |
| 156 | |
| 157 | // Read data |
| 158 | Matrix projMat; |
| 159 | Matrix viewMat; |
| 160 | Dx9Viewport viewport; |
| 161 | int offset = 0; |
| 162 | |
| 163 | memcpy( (void*)&projMat, m_sharedMemory, 64 ); |
| 164 | offset += 64; |
| 165 | memcpy( (void*)&viewMat, m_sharedMemory + offset, 64 ); |
| 166 | offset += 64; |
| 167 | memcpy( (void*)&viewport, m_sharedMemory + offset, 24 ); |
| 168 | m_projection->CustomProjection( projMat ); |
| 169 | m_view->SetTransform( viewMat ); |
| 170 | m_viewport->width = viewport.Width; |
| 171 | m_viewport->height = viewport.Height; |
| 172 | |
| 173 | SetEvent( m_readingHndl ); |
| 174 | ResetEvent( m_needsHndl ); |
| 175 | } |
| 176 | } |
| 177 | } |
| 178 | else |
| 179 | { |
| 180 | if( !OpenSharedMemoryAndEvents() ) |
| 181 | { |
| 182 | CCP_LOGERR( "There is no shared memory to read from" ); |
| 183 | } |
| 184 | } |
| 185 | |
| 186 | return RS_OK; |
| 187 | } |
| 188 | |
| 189 | #endif |
nothing calls this directly
no test coverage detected