Choreonoid  1.5
SceneDevice.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BODY_SCENE_DEVICE_H
6 #define CNOID_BODY_SCENE_DEVICE_H
7 
8 #include <cnoid/SceneGraph>
9 #include <boost/function.hpp>
10 #include "exportdecl.h"
11 
12 namespace cnoid {
13 
14 class Device;
15 class Camera;
16 class Light;
17 class PointLight;
18 class SpotLight;
19 
21 {
22 public:
24 
25  // for integrating new device types
26  typedef boost::function<SceneDevice*(Device* device)> SceneDeviceFactory;
27  template<class DeviceType>
28  static void registerSceneDeviceFactory(const SceneDeviceFactory& factory) {
29  registerSceneDeviceFactory_(&typeid(DeviceType), factory);
30  }
31 
32  static SceneDevice* create(Device* device);
33 
34  SceneDevice(Device* device);
35  SceneDevice(Device* device, SgNode* sceneNode, boost::function<void()> sceneUpdateFunction);
36 
37  template <class DeviceType> DeviceType* device() {
38  return static_cast<DeviceType*>(device_);
39  }
40  template <class DeviceType> const DeviceType* device() const {
41  return static_cast<DeviceType*>(device_);
42  }
43  Device* device() { return device_; }
44  const Device* device() const { return device_; }
45 
46  void setSceneUpdateFunction(boost::function<void()> function);
47  void updateScene() { if(sceneUpdateFunction) sceneUpdateFunction(); }
48  void setSceneUpdateConnection(bool on);
49 
50 protected:
51  ~SceneDevice();
52 
53 private:
54  SceneDevice(const SceneDevice& org);
55  Device* device_;
56  boost::function<void()> sceneUpdateFunction;
57  Connection connection;
58 
59  static void registerSceneDeviceFactory_(const std::type_info* pTypeInfo, const SceneDeviceFactory& factory);
60 };
61 
63 
64 }
65 
66 #endif
boost::function< SceneDevice *(Device *device)> SceneDeviceFactory
Definition: SceneDevice.h:26
Definition: SceneGraph.h:142
static void registerSceneDeviceFactory(const SceneDeviceFactory &factory)
Definition: SceneDevice.h:28
const DeviceType * device() const
Definition: SceneDevice.h:40
Definition: Referenced.h:128
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: SceneDevice.h:23
DeviceType * device()
Definition: SceneDevice.h:37
Definition: SceneGraph.h:279
ref_ptr< SceneDevice > SceneDevicePtr
Definition: SceneDevice.h:62
Definition: SceneDevice.h:20
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
void updateScene()
Definition: SceneDevice.h:47
Definition: Signal.h:107
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
Definition: Device.h:52
Device * device()
Definition: SceneDevice.h:43
const Device * device() const
Definition: SceneDevice.h:44