Changeset 1026
- Timestamp:
- 11/28/07 21:13:07 (1 year ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Source/System/Window/Utilities/OSGSimpleSceneManager.cpp
r997 r1026 60 60 #include <OSGDirectionalLight.h> 61 61 #include <OSGTextureObjChunk.h> 62 #include <OSGPerspectiveCamera.h> 63 #include <OSGOrthographicCamera.h> 62 64 63 65 #include "OSGSimpleSceneManager.h" … … 285 287 /*! get the camera 286 288 */ 287 PerspectiveCameraPtr SimpleSceneManager::getCamera(void)289 CameraPtr SimpleSceneManager::getCamera(void) 288 290 { 289 291 return _camera; … … 428 430 } 429 431 430 void SimpleSceneManager::setCamera( PerspectiveCameraPtr camera)432 void SimpleSceneManager::setCamera(CameraPtr camera) 431 433 { 432 434 if(camera == NullFC) … … 434 436 435 437 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 439 461 440 462 for(UInt32 i=0;i<_win->getPort().size();++i) … … 551 573 552 574 _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); 556 578 557 579 // need a viewport? … … 702 724 } 703 725 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 } 705 740 706 741 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); 708 743 Pnt3f from=at; 709 744 from[2]+=(dist+fabs(max[2]-min[2])*0.5f); trunk/Source/System/Window/Utilities/OSGSimpleSceneManager.h
r1004 r1026 57 57 #include "OSGGeometry.h" 58 58 #include "OSGSimpleMaterial.h" 59 #include "OSG PerspectiveCamera.h"59 #include "OSGCamera.h" 60 60 #include "OSGDirectionalLight.h" 61 61 #include "OSGNavigator.h" … … 119 119 virtual bool getHeadlightState ( void ); 120 120 virtual DirectionalLightPtr getHeadlight ( void ); 121 virtual PerspectiveCameraPtrgetCamera ( void );121 virtual CameraPtr getCamera ( void ); 122 122 123 123 /*! \} */ … … 138 138 virtual void turnHeadlightOn (void ); 139 139 virtual void turnHeadlightOff (void ); 140 virtual void setCamera ( PerspectiveCameraPtr camera);140 virtual void setCamera (CameraPtr camera ); 141 141 142 142 virtual void setUseTraversalAction(bool s ); … … 225 225 226 226 TransformPtr _cart; 227 PerspectiveCameraPtr_camera;227 CameraPtr _camera; 228 228 229 229 Navigator _navigator;
