source: flair-src/trunk/lib/FlairSimulator/src/unexported/Model_impl.h@ 218

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

reduce delay between server and client for simulated vrpn

File size: 2.8 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_impl.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_IMPL_H
18#define MODEL_IMPL_H
19
20#include <Thread.h>
21#include <vrpn_Tracker.h>
22#include "Model.h"
23#include "Quaternion.h"
24
25namespace flair {
26namespace core {
27class Matrix;
28class Mutex;
29class ConditionVariable;
30}
31namespace gui {
32class TabWidget;
33class CheckBox;
34class DoubleSpinBox;
35class SpinBox;
36class Vector3DSpinBox;
37}
38namespace simulator {
39class Simulator;
40class FollowMeCamera;
41}
42}
43
44#ifdef GL
45#include <Vector3D.h>
46#include <IMeshSceneNode.h>
47
48namespace irr {
49namespace scene {
50class ISceneManager;
51class ITriangleSelector;
52class IMetaTriangleSelector;
53class ISceneNodeAnimatorCollisionResponse;
54}
55}
56#endif
57
58#ifdef GL
59class Model_impl : public irr::scene::ISceneNode,
60 public flair::core::Thread,
61 private vrpn_Tracker
62#else
63class Model_impl : public flair::core::Thread,
64 private vrpn_Tracker
65#endif
66 {
67public:
68 Model_impl(flair::simulator::Model *self, std::string name,uint32_t modelId);
69 ~Model_impl();
70
71#ifdef GL
72 void OnRegisterSceneNode(void);
73 void render(void);
74 void Draw(void) {
75 printf("CA MARCHE PAS PUNAISE\r\n");
76 ExtraDraw();
77 };
78 void ExtraDraw(void) { printf("nope\r\n"); };
79
80 const irr::core::aabbox3d<irr::f32> &getBoundingBox(void) const {
81 return box;
82 }
83 void UpdatePos(void);
84 void CheckCollision(void);
85 irr::scene::ITriangleSelector *TriangleSelector(void);
86 irr::scene::IMetaTriangleSelector *MetaTriangleSelector(void);
87 irr::core::aabbox3d<irr::f32> box;
88 void SynchronizationPoint();
89 flair::simulator::FollowMeCamera *camera;
90 irr::scene::ITriangleSelector *selector;
91#endif
92 void mainloop(void);
93
94 flair::gui::TabWidget *tabwidget;
95 flair::gui::DoubleSpinBox *dT;
96 int modelId;
97
98private:
99 flair::gui::Vector3DSpinBox *pos_init;
100 flair::gui::SpinBox *yaw_init;
101 flair::gui::CheckBox *enable_opti;
102 flair::simulator::Model *self;
103 flair::core::Matrix *output;
104 flair::core::Mutex *states_mutex;
105
106 void Run(void);
107 flair::core::Quaternion ComputeInitRotation(flair::core::Quaternion quat_in);
108#ifdef GL
109 void CollisionHandler(void);
110
111 irr::scene::IMetaTriangleSelector *meta_selector;
112 irr::scene::ISceneNodeAnimatorCollisionResponse *anim;
113
114 bool position_init;
115
116 flair::core::ConditionVariable *cond;
117 int sync_count;
118
119 flair::core::Mutex *collision_mutex;
120 bool collision_occured;
121 flair::core::Vector3D<double> collision_point;
122#endif
123};
124
125#endif // MODEL_IMPL_H
Note: See TracBrowser for help on using the repository browser.