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

Last change on this file was 361, checked in by Sanahuja Guillaume, 18 months ago

add ball for Julio

File size: 2.5 KB
Line 
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>
28namespace irr {
29class SEvent;
30namespace scene {
31class ISceneManager;
32class ISceneNode;
33class ITriangleSelector;
34}
35}
36#endif
37
38namespace flair {
39namespace gui {
40class TabWidget;
41}
42namespace sensor {
43class SensorGL;
44}
45}
46
47class Gui_impl;
48class Simulator_impl;
49class Model_impl;
50
51namespace flair {
52namespace simulator {
53class FollowMeCamera;
54
55class 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
65public:
66  Model(std::string name,uint32_t modelId);
67  virtual ~Model();
68
69  typedef struct simu_state {
70    core::Quaternion Quat;
71    core::Vector3Df W;
72    core::Vector3D<double> Pos;
73    core::Vector3D<double> Vel;
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
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  int GetId(void) const;
95
96protected:
97  DiscreteTimeVariable<simu_state_t, 3> state;
98  double dT(void) const;
99  virtual void CalcModel(void) = 0;
100  core::Vector3Df InitialPosition(void);
101#ifdef GL
102  FollowMeCamera *getFollowMeCamera(void) const;
103  virtual void AnimateModel(void) = 0;
104  // void setPosition(core::Vector3D pos);
105  void setScale(float value);
106  void setTriangleSelector(irr::scene::ITriangleSelector *selector);
107#endif
108
109private:
110  void UpdateFrom(const core::io_data *data){};
111  class Model_impl *pimpl_;
112};
113} // end namespace simulator
114} // end namespace flair
115#endif // MODEL_H
Note: See TracBrowser for help on using the repository browser.