vrecko
virtual reality framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RotationFrameGenAdapter.h
Go to the documentation of this file.
1 #pragma once
2 #include <osg\Referenced>
3 #include "Utils.h"
4 #include "RMFrame.h"
5 #include "HandFrame.h"
6 #include "AxisRotationFrame.h"
7 #include "types.h"
8 
9 namespace APDYNAMICART
10 {
11 
14 class RotationFrameAdapter : public PoAAdapter<RotationFrameGenerator>
15 {
16 public:
18 
19 protected:
20 
21 
22 };
23 
26 {
27 public:
28  RMFrameAdapter() : _rotationFrameGen(new RMFrame) {}
29 
30  META_DAObject(RMFrameAdapter, "Automatic")
31 
32  virtual void createMenu(MenuPtr menu);
33  virtual int load( XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* ParametersNode );
34  virtual void save(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* Document, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* poaNode);
35 
36  virtual RotationFrameGeneratorPtr getObject() { return _rotationFrameGen; }
37 
38 
39 protected:
40  osg::ref_ptr<RMFrame> _rotationFrameGen;
41 };
42 
45 {
46 public:
47  AxisFrameAdapter() : _rotationFrameGen(new AxisRotationFrame) {}
48 
49  META_DAObject(AxisFrameAdapter, "Tangent aligned")
50 
51  virtual void createMenu(MenuPtr menu);
52  virtual int load( XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* ParametersNode );
53  virtual void save(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* Document, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* poaNode);
54 
55  virtual RotationFrameGeneratorPtr getObject() { return _rotationFrameGen; }
56 
57 
58 protected:
59  osg::ref_ptr<AxisRotationFrame> _rotationFrameGen;
60 };
61 
62 
65 {
66 public:
67  HandFrameAdapter() : _rotationFrameGen(new HandFrame) {}
68 
70 
71  virtual void createMenu(MenuPtr menu);
72  virtual int load( XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* ParametersNode );
73  virtual void save(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* Document, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* poaNode);
74 
75  virtual RotationFrameGeneratorPtr getObject() { return _rotationFrameGen; }
76 
77 
78 protected:
79  osg::ref_ptr<HandFrame> _rotationFrameGen;
80 };
81 
82 
83 class RotationFrameFactory : public AdapterFactory<RotationFrameAdapter>
84 {
85 public:
87  {
88  _adapters.push_back(new RMFrameAdapter);
89  _adapters.push_back(new AxisFrameAdapter());
90  _adapters.push_back(new HandFrameAdapter());
91 
92  }
93 
95  {
96 
97  std::vector<osg::ref_ptr<RotationFrameAdapter>> origAdapters = orig.getSupportedAdapters();
98 
99  _adapters.push_back(new RMFrameAdapter());
100  _adapters.push_back(new AxisFrameAdapter());
101  _adapters.push_back(new HandFrameAdapter());
102 
103  }
104 };
105 
106 }