void CCAMERA::Reset() { m_parametersChanged = true; m_projectionMatrix = glm::mat4( 1.0f ); m_projectionMatrixInv = glm::mat4( 1.0f ); m_rotationMatrix = glm::mat4( 1.0f ); m_rotationMatrixAux = glm::mat4( 1.0f ); m_lastPosition = wxPoint( 0, 0 ); m_zoom = 1.0f; m_zoom_t0 = 1.0f; m_zoom_t1 = 1.0f; m_camera_pos = m_camera_pos_init; m_camera_pos_t0 = m_camera_pos_init; m_camera_pos_t1 = m_camera_pos_init; m_lookat_pos = m_board_lookat_pos_init; m_lookat_pos_t0 = m_board_lookat_pos_init; m_lookat_pos_t1 = m_board_lookat_pos_init; m_rotate_aux = SFVEC3F( 0.0f ); m_rotate_aux_t0 = SFVEC3F( 0.0f ); m_rotate_aux_t1 = SFVEC3F( 0.0f ); updateRotationMatrix(); updateViewMatrix(); m_viewMatrixInverse = glm::inverse( m_viewMatrix ); m_scr_nX.clear(); m_scr_nY.clear(); rebuildProjection(); }
void CCAMERA::SetProjection( PROJECTION_TYPE aProjectionType ) { if( m_projectionType != aProjectionType ) { m_projectionType = aProjectionType; rebuildProjection(); } }
void CCAMERA::ZoomReset() { m_zoom = 1.0f; m_camera_pos.z = m_camera_pos_init.z; updateViewMatrix(); rebuildProjection(); }
void CCAMERA::ToggleProjection() { if( m_projectionType == PROJECTION_ORTHO ) m_projectionType = PROJECTION_PERSPECTIVE; else m_projectionType = PROJECTION_ORTHO; rebuildProjection(); }
void GLWidget::loadScene(const char *filename) { // TODO: figure out how to safely free current scene // We are leaking the entire scene here //if(_scene) { // delete _scene; //} _scene = SceneParser::load(filename); rebuildProjection(); }
bool CCAMERA::SetCurWindowSize( const wxSize &aSize ) { const SFVEC2I newSize = SFVEC2I( aSize.x, aSize.y ); if( m_windowSize != newSize ) { m_windowSize = newSize; rebuildProjection(); return true; } return false; }
void CCAMERA::Interpolate( float t ) { wxASSERT( t >= 0.0f ); const float t0 = 1.0f - t; m_camera_pos = m_camera_pos_t0 * t0 + m_camera_pos_t1 * t; m_lookat_pos = m_lookat_pos_t0 * t0 + m_lookat_pos_t1 * t; m_rotate_aux = m_rotate_aux_t0 * t0 + m_rotate_aux_t1 * t; m_zoom = m_zoom_t0 * t0 + m_zoom_t1 * t; m_parametersChanged = true; updateRotationMatrix(); rebuildProjection(); }
void GLWidget::paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if(_scene) { _scene->draw(); } if(_nextScene) { if(_scene) { delete _scene; } _scene = _nextScene; _nextScene = NULL; rebuildProjection(); } }
bool CCAMERA::ZoomOut( float aFactor ) { if( m_zoom < MAX_ZOOM ) { const float old_zoom = m_zoom; m_zoom *= aFactor; if( m_zoom >= MAX_ZOOM ) m_zoom = MAX_ZOOM; m_camera_pos.z = m_zoom * m_camera_pos_init.z; if( old_zoom != m_zoom ) { updateViewMatrix(); rebuildProjection(); return true; } } return false; }
void GLWidget::resizeGL(int width, int height) { glViewport(0, 0, width, height); rebuildProjection(); }