camera_base.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #include "camera_base.h"
31 
32 #include <OgreCamera.h>
33 #include <OgreSceneManager.h>
34 #include <OgreSceneNode.h>
35 #include <OgreVector3.h>
36 #include <OgreQuaternion.h>
37 
38 #include <stdint.h>
39 #include <sstream>
40 
41 namespace rviz
42 {
43 
44 CameraBase::CameraBase( Ogre::SceneManager* scene_manager )
45 : scene_manager_( scene_manager )
46 , relative_node_( NULL )
47 {
48  std::stringstream ss;
49  static uint32_t count = 0;
50  ss << "CameraBase" << count++;
51  camera_ = scene_manager_->createCamera( ss.str() );
52 }
53 
55 {
56  scene_manager_->destroyCamera( camera_ );
57 }
58 
59 void CameraBase::setRelativeNode( Ogre::SceneNode* node )
60 {
61  relative_node_ = node;
62 
64 
65  update();
66 }
67 
68 void CameraBase::setPosition( const Ogre::Vector3& position )
69 {
70  setPosition( position.x, position.y, position.z );
71 }
72 
73 void CameraBase::setOrientation( const Ogre::Quaternion& orientation )
74 {
75  setOrientation( orientation.x, orientation.y, orientation.z, orientation.w );
76 }
77 
78 } // namespace rviz
#define NULL
Definition: global.h:37
void setRelativeNode(Ogre::SceneNode *node)
Set a scene node that all camera transformations should be relative to.
Definition: camera_base.cpp:59
CameraBase(Ogre::SceneManager *scene_manager)
Constructor.
Definition: camera_base.cpp:44
virtual void update()=0
Ogre::Camera * camera_
Ogre camera associated with this camera object.
Definition: camera_base.h:219
Ogre::SceneNode * relative_node_
Definition: camera_base.h:222
virtual ~CameraBase()
Definition: camera_base.cpp:54
virtual void setOrientation(const Ogre::Quaternion &orientation)
Set the orientation of the camera.
Definition: camera_base.cpp:73
virtual void relativeNodeChanged()
Called when the relative node changes.
Definition: camera_base.h:77
Ogre::SceneManager * scene_manager_
Scene manager this camera is part of.
Definition: camera_base.h:220
virtual void setPosition(const Ogre::Vector3 &position)
Set the position of the camera.
Definition: camera_base.cpp:68


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust
autogenerated on Wed Aug 28 2019 04:01:50