vrecko
virtual reality framework
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
vrecko
Vrecko - the Virtual Reality Engine
Dynamic Art module
L-system plant modeler - module for Vrecko
Head Up Display module
Space Partitioning - module for Vrecko
Todo List
Deprecated List
Namespaces
Classes
Files
File List
include
base
helpers
vrecko
vreckoAP
ArtificialWorld
behindO
Boids
CableEditor
CameraMovement
CameraPath
CarSim
AP_CarSim.h
AP_Filter.h
CarControlUnit.h
CarEnvirons.h
CarExecutionUnit.h
CarPartsNodeCache.h
CarState.h
CCUStructs.h
Edge.h
Junction.h
PolygonPoint.h
Remover.h
RoadsEdges.h
RoadsState.h
TLsOnJuncManager.h
ConnectEditor
ConstrainedMovement
DynamicArt
EditorController
EditorQAbilities
FFDEditor
Filter
games
Garden
GUI
HeadTracking
HelloWorld
HUD
InputConnector
LightsEditor
Menu
Nature
navigation
ObjectUtils
ODE
RoomEdit
ShootingSimulation
SpacePartitioning
TextOutput
vreckoDP
vreckoUtils
src
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
CarControlUnit.h
Go to the documentation of this file.
1
#ifndef CAR_CONTROL_UNIT
2
#define CAR_CONTROL_UNIT
3
4
#include <
vrecko/Ability.h
>
5
#include <osg/Matrix>
6
#include "
CCUStructs.h
"
7
#include "
CarState.h
"
8
#include "
CarEnvirons.h
"
9
10
namespace
CarSim {
11
class
CarControlUnit
:
public
vrecko::Ability
{
12
public
:
13
CarControlUnit
();
14
// tento konstruktor bude slouzit k nastaveni generovanych aut
15
CarControlUnit
(
const
unsigned
int
startRoad
,
const
unsigned
int
stopRoad
,
16
const
bool
startDirection
,
const
bool
stopDirection
,
17
const
float
startEdge,
const
float
stopEdge,
18
const
float
startOffset,
const
float
stopOffset,
19
const
float
recVelOnFstJunc,
const
unsigned
int
fstJuncTurn,
20
Ability
*
const
pRoadsState
,
Ability
*
const
pCEU,
const
std::vector<unsigned int> *
const
pPath);
21
~CarControlUnit
();
22
23
void
preInitialize
(
void
);
24
void
update
(
void
);
25
26
bool
loadXMLParameters
(XERCES_CPP_NAMESPACE_QUALIFIER
DOMNode
*pParametersNode);
27
protected
:
28
Parameters
params
;
29
// I. jestlize neni auto odsunuto (pozna se to z params.carNextJuncRel), bude zde
30
// cas, po ktery auto stoji pred (tesne) bodem stopBeforeJunc a ceka az
31
// dostane povoleni jet krizovatkou; jestlize se ten cas nepocita, bude obsahovat -1.0,
32
// jinak hodnotu >=0.0;
33
// II. jestlize auto bylo na hrane odsunuto a
34
// a) bylo odsunuto nejdriv (1. ze vsech aut, ktere jsou nyni
35
// odsunuty na hrane), bude zde cas, ktery uplynul od posledniho pokusu dostat
36
// se z kraje vozovky zpatky do ni nebo od doby, kdy se auto stalo prvnim (nejdrive)
37
// odsunutym autem na hrane
38
// b) nebylo odsunuto nejdriv, bude obsahovat hodnotu -1.0
39
// III. ve zbylych pripadech -1.0
40
float
timeWaiting
;
41
42
// rika, zda bylo auto nastaveno rucne (false) nebo vygenerovano (true)
43
const
bool
gen
;
44
45
// jestlize je true, nastala chyba v inicializaci, takze se odregistruje
46
// aktualizovani CCU
47
bool
errorOccuredInInit
;
48
// rika, zda byla provedena inicializace v metode update()
49
bool
initBool
;
50
51
// z XML souboru se vyextrahuje silnice (id pro Road - ulozi se
52
// v promenne startRoad) pres uzel StartRoad a jeji smer (true - "forward"
53
// nebo false - "backward" - ulozi se v promenne startDirection) pres uzel startDirection,
54
// ktere uruji hranu, na ktere auto zacina;
55
unsigned
int
startRoad
;
56
bool
startDirection
;
57
// obdobne je tomu s stopRoad a stopDirection, ktere urcuji,
58
// na ktere hrane auto zastavuje
59
unsigned
int
stopRoad
;
60
bool
stopDirection
;
61
62
// doporucena rychlost na pristi krizovatce od RoadsState (ulozi se zde,
63
// aby se v kazdem snimku nemusela pocitat znovu v RoadsState);
64
// jestlize je < 0, neobsahuje aktualni data
65
float
recVelocityOnJunc
;
66
67
// ukazatel na abilitu RoadsState
68
Ability
*
pRoadsState
;
69
70
// cas zjisteny v minulem snimku
71
osg::Timer_t
lastTick
;
72
73
/*// slouzi ke zjisteni prumerneho poctu aktualizaci jednotky
74
// CCU 1. generovaneho auta za sekundu v 1. minute
75
bool isFPSmeasured;
76
float totalTime;
77
unsigned int count;*/
78
79
// rika, zda auto bude na pristi krizovatce zatacet doleva nebo doprava
80
unsigned
int
nextJuncTurn
;
81
82
// metody, ktere provedou inicializaci v ramci metody update()
83
// (slouzi jen pro negenerovana auta)
84
void
init
();
85
void
initPositionAndDirection
();
86
// metoda, ktera zkontroluje vstupni XML parametry
87
void
checkInputXMLParameters
();
88
// metoda, ktera urci pres RoadsState nejkratsi cestu pro auto
89
void
computeShortestPath
();
90
// metoda, ktera vypocita optimalni rychlost prujezdu 1. kriz. v ceste
91
void
computeRecVelOnFstJunc
();
92
// metoda urci, jakym smerem (viz nextJuncTurn) se auto vyda na prvni
93
// krizovatce
94
void
figureOutFirstJuncTurn
();
95
96
// metoda, ktera ukonci aktualizovani auta, u Removera prihlasi toto auto
97
void
quitAfterError
();
98
99
// vrati pocet sekund, ktere ubehly od posledniho updatu
100
float
getTimeFromLastUpdate
();
101
102
// metoda nastavi blinkry pres jednotku CEU podle nextJuncTurn,
103
// pokud jeste nejsou ve spravnem stavu
104
// (jestlize auto zataci doleva, zapne se levy blinkr, pokud jeste neni zapnuty;
105
// jestlize doprava, tak pravy blinkr (pokud neni zapnuty) a jestlize auto jede rovne,
106
// vypnou se blikry (pokud jeste nejsou vypnute));
107
// aktualni stav blinkru urcuje druhy parametr blinkLightState;
108
// jestlize je parametr isEmergency true, nenastavuji se blinkry podle
109
// nextJuncTurn, ale jestli jeste vsechny neblikaji, tak zacnou;
110
void
setBlinkers
(
Ability
*
const
pCEU,
const
unsigned
int
blinkLightState,
111
const
bool
isEmergency);
112
113
};
114
115
// tato metoda vypocita vzdalenost, po kterou musi auto brzdit, aby
116
// se jeho aktualni rychlost snizila na pozadovanou rychlost
117
// (jestlize je pozadovana rychlost vetsi nez aktualni, vrati se 0.0);
118
// parametry:
119
// carVel - aktualni rychlost auta
120
// desiredVel - pozadovana rychlost
121
// carDecel - zpomaleni, kterym bude auto brzdit
122
// hillAcc - prirustek zrychleni diky naklonu vozovky
123
// (pred krizovatkou budou zatim vsechna auta brzdit se zpomalenim AVERAGE_CAR_DEC;
124
// maximalni zpomaleni bude vyuzito v budoucnu pri krizovych situacich)
125
float
getBrakeDist
(
const
float
carVel,
const
float
desiredVel,
126
const
float
carDecel,
const
float
hillAcc);
127
}
128
129
#endif
130
131
132
include
vreckoAP
CarSim
CarControlUnit.h
Generated on Tue Feb 19 2013 10:23:42 for vrecko by
1.8.3.1