Changeset 1026

Show
Ignore:
Timestamp:
11/28/07 21:13:07 (1 year ago)
Author:
vossg
Message:

fixed: use cameraptr internally

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Source/System/Window/Utilities/OSGSimpleSceneManager.cpp

    r997 r1026  
    6060#include <OSGDirectionalLight.h> 
    6161#include <OSGTextureObjChunk.h> 
     62#include <OSGPerspectiveCamera.h> 
     63#include <OSGOrthographicCamera.h> 
    6264 
    6365#include "OSGSimpleSceneManager.h" 
     
    285287/*! get the camera 
    286288 */ 
    287 PerspectiveCameraPtr SimpleSceneManager::getCamera(void) 
     289CameraPtr SimpleSceneManager::getCamera(void) 
    288290{ 
    289291    return _camera; 
     
    428430} 
    429431 
    430 void SimpleSceneManager::setCamera(PerspectiveCameraPtr camera) 
     432void SimpleSceneManager::setCamera(CameraPtr camera) 
    431433{ 
    432434    if(camera == NullFC) 
     
    434436 
    435437    camera->setBeacon(_camera->getBeacon()); 
    436     camera->setFov   (_camera->getFov()); 
    437     camera->setNear  (_camera->getNear()); 
    438     camera->setFar   (_camera->getFar()); 
     438 
     439    PerspectiveCameraPtr oldPer  = dynamic_cast<PerspectiveCameraPtr>(_camera); 
     440    PerspectiveCameraPtr newPer  = dynamic_cast<PerspectiveCameraPtr>(camera); 
     441 
     442    OrthographicCameraPtr oldOrt =dynamic_cast<OrthographicCameraPtr>(_camera); 
     443    OrthographicCameraPtr newOrt =dynamic_cast<OrthographicCameraPtr>(camera); 
     444 
     445 
     446    if (oldPer && newPer) { 
     447        newPer->setFov(oldPer->getFov()); 
     448    } 
     449    else if (oldOrt && newOrt) { 
     450        newOrt->setVerticalSize(oldOrt->getVerticalSize()); 
     451    } 
     452    else { 
     453        FWARNING(("SimpleSceneManager::setCamera: some of the old camera's " 
     454                  " params could not be copied to the new camera, because of " 
     455                  " different or unsupported camera types!\n")); 
     456    } 
     457 
     458    camera->setNear(_camera->getNear()); 
     459    camera->setFar (_camera->getFar()); 
     460 
    439461 
    440462    for(UInt32 i=0;i<_win->getPort().size();++i) 
     
    551573 
    552574    _camera->setBeacon(cartN); 
    553     _camera->setFov   (osgDegree2Rad(60.f)); 
    554     _camera->setNear (0.1f); 
    555     _camera->setFar  (10000.f); 
     575    static_cast<PerspectiveCameraPtr>(_camera)->setFov(osgDegree2Rad(60.f)); 
     576    _camera->setNear (0.1f); 
     577    _camera->setFar  (10000.f); 
    556578 
    557579    // need a viewport? 
     
    702724    } 
    703725 
    704     Real32 dist = osgMax(d[0],d[1]) / (2 * osgTan(_camera->getFov() / 2.f)); 
     726    PerspectiveCameraPtr  perCam = dynamic_cast<PerspectiveCameraPtr>(_camera); 
     727    OrthographicCameraPtr ortCam =dynamic_cast<OrthographicCameraPtr>(_camera); 
     728    Real32 dist = osgMax(d[0],d[1]); 
     729 
     730    if (perCam) { 
     731        dist /= (2 * osgTan(perCam->getFov()/2.f)); 
     732    } 
     733    else if (ortCam) { 
     734        ortCam->setVerticalSize(dist); 
     735    } 
     736    else { 
     737        FWARNING(("SimpleSceneManager::showAll: unsupported camera type, " 
     738                  "may not work properly!\n")); 
     739    } 
    705740 
    706741    Vec3f up(0,1,0); 
    707     Pnt3f at((min[0] + max[0]) * .5f,(min[1] + max[1]) * .5f,(min[2] + max[2]) * .5f); 
     742    Pnt3f at((min[0]+max[0])*.5f,(min[1]+max[1])*.5f,(min[2]+max[2])*.5f); 
    708743    Pnt3f from=at; 
    709744    from[2]+=(dist+fabs(max[2]-min[2])*0.5f); 
  • trunk/Source/System/Window/Utilities/OSGSimpleSceneManager.h

    r1004 r1026  
    5757#include "OSGGeometry.h" 
    5858#include "OSGSimpleMaterial.h" 
    59 #include "OSGPerspectiveCamera.h" 
     59#include "OSGCamera.h" 
    6060#include "OSGDirectionalLight.h" 
    6161#include "OSGNavigator.h" 
     
    119119    virtual bool                   getHeadlightState  ( void ); 
    120120    virtual DirectionalLightPtr    getHeadlight       ( void ); 
    121     virtual PerspectiveCameraPtr   getCamera          ( void ); 
     121    virtual CameraPtr              getCamera          ( void ); 
    122122 
    123123    /*! \}                                                                 */ 
     
    138138    virtual void  turnHeadlightOn  (void                    ); 
    139139    virtual void  turnHeadlightOff (void                    ); 
    140     virtual void  setCamera        (PerspectiveCameraPtr camera); 
     140    virtual void  setCamera        (CameraPtr     camera    ); 
    141141 
    142142    virtual void setUseTraversalAction(bool s               ); 
     
    225225 
    226226    TransformPtr                 _cart; 
    227     PerspectiveCameraPtr         _camera; 
     227    CameraPtr                    _camera; 
    228228 
    229229    Navigator                    _navigator;