void CCCameraBase::update() { #if defined PROFILEON CCProfiler profile( "CCCameraBase::update()" ); #endif if( updatedPosition ) { updatedPosition = false; } if( updateFOV ) { updateFOV = false; scanFOVBounds(); } CCMatrixLoadIdentity( modelViewMatrix ); if( frameBufferID == -1 ) { CCMatrixRotate( modelViewMatrix, CCAppManager::GetOrientation().current, 0.0f, 0.0f, 1.0f ); } GluLookAt( modelViewMatrix, rotatedPosition.x, rotatedPosition.y, rotatedPosition.z, // Position lookAt.x, lookAt.y, lookAt.z, // Looking At 0.0f, 1.0f, 0.0f ); // Up GLSetPushMatrix( modelViewMatrix ); ExtractFrustum(); updateVisibleObjects(); }
void CCCameraBase::update() { #if defined PROFILEON CCProfiler profile( "CCCameraBase::update()" ); #endif if( updatedPosition ) { updatedPosition = false; } if( updateFOV ) { updateFOV = false; scanFOVBounds(); } CCMatrixLoadIdentity( modelViewMatrix ); CCMatrixRotate( modelViewMatrix, gEngine->renderer->orientation.current, 0.0f, 0.0f, 1.0f ); GluLookAt( modelViewMatrix, rotatedPosition.x, rotatedPosition.y, rotatedPosition.z, // Position lookAt.x, lookAt.y, lookAt.z, // Looking At 0.0f, 1.0f, 0.0f ); // Up GLSetPushMatrix( modelViewMatrix ); ExtractFrustum(); updateVisibleObjects(); }
void CCCameraBase::scanFOVBounds() { for( uint i=0; i<max_fov_scans; ++i ) { if( i == scan_flat ) { CCMatrixLoadIdentity( modelViewMatrix ); CCMatrixRotate( modelViewMatrix, CCAppManager::GetOrientation().current, 0.0f, 0.0f, 1.0f ); GluLookAt( modelViewMatrix, position.x, position.y, position.z, // Position lookAt.x, lookAt.y, lookAt.z, // Looking At 0.0f, 1.0f, 0.0f ); // Up } static CCVector3 minPlane, maxPlane; project3DZ( &minPlane, 0.0f, 1.0f ); project3DZ( &maxPlane, 1.0f, 0.0f ); FOVBounds &bounds = fovBounds[i]; bounds.size.x = fabsf( maxPlane.x - minPlane.x ); bounds.size.y = fabsf( maxPlane.y - minPlane.y ); bounds.min.x = minPlane.x; bounds.min.y = minPlane.y; bounds.max.x = maxPlane.x; bounds.max.y = maxPlane.y; } }
void CCCameraBase::scanFOVBounds() { for( uint i=0; i<max_fov_scans; ++i ) { if( i == scan_flat ) { CCMatrixLoadIdentity( modelViewMatrix ); CCMatrixRotate( modelViewMatrix, gEngine->renderer->orientation.current, 0.0f, 0.0f, 1.0f ); GluLookAt( modelViewMatrix, position.x, position.y, position.z, // Position lookAt.x, lookAt.y, lookAt.z, // Looking At 0.0f, 1.0f, 0.0f ); // Up } static CCVector3 minPlane, maxPlane; project3DZ( &minPlane, 0.0f, 1.0f ); project3DZ( &maxPlane, 1.0f, 0.0f ); FOVScan &fovScan = fovScans[i]; fovScan.size.x = fabsf( maxPlane.x - minPlane.x ); fovScan.size.y = fabsf( maxPlane.y - minPlane.y ); fovScan.min.x = minPlane.x; fovScan.min.y = minPlane.y; fovScan.max.x = maxPlane.x; fovScan.max.y = maxPlane.y; } }