source: flair-src/trunk/lib/FlairSimulator/src/Model.h@ 8

Last change on this file since 8 was 8, checked in by Sanahuja Guillaume, 8 years ago

simulator

File size: 2.7 KB
Line 
1// created: 2013/03/25
2// filename: Model.h
3//
4// author: Guillaume Sanahuja
5// Copyright Heudiasyc UMR UTC/CNRS 7253
6//
7// version: $Id: $
8//
9// purpose: classe definissant un modele a simuler
10//
11/*********************************************************************/
12
13#ifndef MODEL_H
14#define MODEL_H
15
16#include <IODevice.h>
17#include <Quaternion.h>
18#include <Vector3D.h>
19#include <DiscreteTimeVariable.h>
20
21#ifdef GL
22#include <aabbox3d.h>
23namespace irr
24{
25 class SEvent;
26 namespace scene
27 {
28 class ISceneManager;
29 class ISceneNode;
30 class ITriangleSelector;
31 }
32}
33#endif
34
35namespace flair
36{
37 namespace gui
38 {
39 class TabWidget;
40 }
41 namespace sensor
42 {
43 class SensorGL;
44 }
45}
46
47class Gui_impl;
48class Simulator_impl;
49class Model_impl;
50
51namespace flair
52{
53namespace simulator
54{
55 class Simulator;
56 class AnimPoursuite;
57
58 class Model : public core::IODevice
59 {
60 friend class ::Gui_impl;
61 friend class ::Simulator_impl;
62 friend class ::Model_impl;
63 friend class AnimPoursuite;
64 friend class sensor::SensorGL;
65
66 public:
67 Model(const Simulator* parent,std::string name);
68 virtual ~Model();
69
70
71 typedef struct simu_state {
72 core::Quaternion Quat;
73 core::Vector3D W;
74 core::Vector3D Pos;
75 core::Vector3D Vel;
76 } simu_state_t;
77
78 #ifdef GL
79 irr::scene::ISceneNode* getSceneNode() const;
80 irr::core::aabbox3d<irr::f32>* Box() const;
81
82 virtual size_t dbtSize(void) const =0;
83 virtual void Draw(void){};
84 virtual void ExtraDraw(void){};
85 virtual void WritedbtBuf(char* dbtbuf)=0;
86 virtual void ReaddbtBuf(char* dbtbuf)=0;
87 virtual bool OnEvent(const irr::SEvent& event)=0;
88
89 //! Sets the value of the camera's far clipping plane (default: 2000.0f)
90 /** \param zf: New z far value. */
91 void setCameraFarValue(float zf);
92 #endif
93 gui::TabWidget* GetTabWidget(void) const;
94
95 protected:
96 DiscreteTimeVariable<simu_state_t,3> state;
97 float dT(void) const;
98 virtual void CalcModel(void)=0;
99 #ifdef GL
100 AnimPoursuite* getCamera(void) const;
101 virtual void AnimateModel(void)=0;
102 //void setPosition(core::Vector3D pos);
103 void setScale(float value);
104 void setTriangleSelector(irr::scene::ITriangleSelector* selector);
105 #endif
106
107 private:
108 void UpdateFrom(const core::io_data *data){};
109 class Model_impl* pimpl_;
110 };
111} // end namespace simulator
112} // end namespace flair
113#endif // MODEL_H
Note: See TracBrowser for help on using the repository browser.