コード例 #1
0
ファイル: ccamera.cpp プロジェクト: asutp/kicad-source-mirror
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();
}
コード例 #2
0
ファイル: ccamera.cpp プロジェクト: asutp/kicad-source-mirror
void CCAMERA::SetProjection( PROJECTION_TYPE aProjectionType )
{
    if( m_projectionType != aProjectionType )
    {
        m_projectionType = aProjectionType;
        rebuildProjection();
    }
}
コード例 #3
0
ファイル: ccamera.cpp プロジェクト: asutp/kicad-source-mirror
void CCAMERA::ZoomReset()
{
    m_zoom = 1.0f;

    m_camera_pos.z = m_camera_pos_init.z;

    updateViewMatrix();
    rebuildProjection();
}
コード例 #4
0
ファイル: ccamera.cpp プロジェクト: asutp/kicad-source-mirror
void CCAMERA::ToggleProjection()
{
    if( m_projectionType == PROJECTION_ORTHO )
        m_projectionType = PROJECTION_PERSPECTIVE;
    else
        m_projectionType = PROJECTION_ORTHO;

    rebuildProjection();
}
コード例 #5
0
ファイル: glwidget.cpp プロジェクト: JulioC/Scene-Renderer
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();
}
コード例 #6
0
ファイル: ccamera.cpp プロジェクト: asutp/kicad-source-mirror
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;
}
コード例 #7
0
ファイル: ccamera.cpp プロジェクト: asutp/kicad-source-mirror
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();
}
コード例 #8
0
ファイル: glwidget.cpp プロジェクト: JulioC/Scene-Renderer
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();
  }
}
コード例 #9
0
ファイル: ccamera.cpp プロジェクト: asutp/kicad-source-mirror
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;
}
コード例 #10
0
ファイル: glwidget.cpp プロジェクト: JulioC/Scene-Renderer
void GLWidget::resizeGL(int width, int height) {
  glViewport(0, 0, width, height);
  rebuildProjection();
}