Flair
Framework Libre Air
Model.h
1 // %flair:license{
2 // This file is part of the Flair framework distributed under the
3 // CECILL-C License, Version 1.0.
4 // %flair:license}
5 // created: 2013/03/25
6 // filename: Model.h
7 //
8 // author: Guillaume Sanahuja
9 // Copyright Heudiasyc UMR UTC/CNRS 7253
10 //
11 // version: $Id: $
12 //
13 // purpose: classe definissant un modele a simuler
14 //
15 /*********************************************************************/
16 
17 #ifndef MODEL_H
18 #define MODEL_H
19 
20 #include <IODevice.h>
21 #include <Quaternion.h>
22 #include <Vector3D.h>
23 #include <DiscreteTimeVariable.h>
24 
25 #ifdef GL
26 #include <aabbox3d.h>
27 #include <IEventReceiver.h>
28 namespace irr {
29 class SEvent;
30 namespace scene {
31 class ISceneManager;
32 class ISceneNode;
33 class ITriangleSelector;
34 }
35 }
36 #endif
37 
38 namespace flair {
39 namespace gui {
40 class TabWidget;
41 }
42 namespace sensor {
43 class SensorGL;
44 }
45 }
46 
47 class Gui_impl;
48 class Simulator_impl;
49 class Model_impl;
50 
51 namespace flair {
52 namespace simulator {
53 class FollowMeCamera;
54 
55 class Model : public core::IODevice
56 #ifdef GL
57 , public irr::IEventReceiver
58 #endif
59  {
60  friend class ::Gui_impl;
61  friend class ::Simulator_impl;
62  friend class ::Model_impl;
63  friend class sensor::SensorGL;
64 
65 public:
66  Model(std::string name,uint32_t modelId);
67  virtual ~Model();
68 
69  typedef struct simu_state {
70  core::Quaternion Quat;
74  } simu_state_t;
75 
76 #ifdef GL
77  irr::scene::ISceneNode *getSceneNode() const;
78  irr::core::aabbox3d<irr::f32> *Box() const;
79 
80  virtual size_t dbtSize(void) const = 0;
81  virtual void Draw(void){};
82  virtual void ExtraDraw(void){};
83  virtual void WritedbtBuf(char *dbtbuf) = 0;
84  virtual void ReaddbtBuf(char *dbtbuf) = 0;
85 
86  //default event handling
87  bool OnEvent(const irr::SEvent &event) { return false;};
88 
90 
91  void setCameraFarValue(float zf);
92 #endif
93  gui::TabWidget *GetTabWidget(void) const;
94  int GetId(void) const;
95 
96 protected:
97  DiscreteTimeVariable<simu_state_t, 3> state;
98  double dT(void) const;
99  virtual void CalcModel(void) = 0;
100 #ifdef GL
101  FollowMeCamera *getFollowMeCamera(void) const;
102  virtual void AnimateModel(void) = 0;
103  // void setPosition(core::Vector3D pos);
104  void setScale(float value);
105  void setTriangleSelector(irr::scene::ITriangleSelector *selector);
106 #endif
107 
108 private:
109  void UpdateFrom(const core::io_data *data){};
110  class Model_impl *pimpl_;
111 };
112 } // end namespace simulator
113 } // end namespace flair
114 #endif // MODEL_H
Abstract class for input/ouput system.
Definition: IODevice.h:45
namespace of the flair Framework
Definition: Ahrs.h:19
Class defining a 3D vector.
Definition: Blade.h:22
Abstract class for input/ouput system.
Definition: Model.h:55
Class defining a quaternion.
Definition: SensorGL.h:35
Class defining a quaternion.
Definition: Quaternion.h:26