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
TLsOnJuncManager.h
Go to the documentation of this file.
1
#ifndef TLS_ON_JUNC_MANAGER
2
#define TLS_ON_JUNC_MANAGER
3
4
#include <
vrecko/Ability.h
>
5
6
#include <vector>
7
8
#include <osg/MatrixTransform>
9
10
// TL znamena traffic lights ve smyslu jeden semafor
11
// TLs znamena traffic lights ve smyslu vice semaforu
12
13
// nasledujici makra slouzi pro popis (vyjadreni) barev, ktere sviti na jednom semaforu:
14
#define TL_RED_ORANGE 1
15
#define TL_GREEN 2
16
#define TL_ORANGE 3
17
#define TL_RED 4
18
19
namespace
CarSim {
20
// zde budou ulozeny ukazatele na transformace barevnych svetel na jednom semaforu
21
struct
TLcolorsMT
{
22
// ref_ptr pouzivam misto ukazatele proto, aby se pri aktualizaci teto ability nekdy
23
// (na konci simulace) nestalo, ze by ukazatel na MT ukazoval do pameti, kde by ten MT
24
// byl jiz odstranen (nesjpis by to fungovalo i s normalnimi ukazateli, jelikoz na konci
25
// simulace jsou nejdrive zastaveny vsechny aktualizace u Scheduleru a az
26
// potom jsou mazany ability a EnvironmentObjecty; ovsem pro jistotu radeji pouzivam ref_ptr)
27
osg::ref_ptr<osg::MatrixTransform>
pRedMT
;
28
osg::ref_ptr<osg::MatrixTransform>
pOrangeMT
;
29
osg::ref_ptr<osg::MatrixTransform>
pGreenMT
;
30
};
31
32
// abilita, ktera na male krizovatce meni svetla na semaforech (pro jednoduchost se mala
33
// krizovatka, ktera je rizena semafory, vyskytuje ve velke krizovatce vzdy
34
// sama a propojuje 3-4 silnice, v nichz jsou alespon 2 normalni hrany, ktere
35
// smeruji do krizovatky)
36
class
TLsOnJuncManager
:
public
vrecko::Ability
{
37
public
:
38
TLsOnJuncManager
();
39
TLsOnJuncManager
(std::vector<TLcolorsMT> *
const
pTLcolorsMTvec
,
40
const
std::vector<unsigned int*const> *
const
pTLcolorsVec
,
41
const
std::vector<unsigned int> *
const
pTLgreenIntervVec
);
42
~TLsOnJuncManager
();
43
44
void
preInitialize
(
void
);
45
46
void
update
(
void
);
47
//void *processRequest(const std::string &input_name, void *value);
48
protected
:
49
// vektor, ve kterem budou pro obsluhu semaforu u krizovatky ulozeny ukazatele na
50
// transformace jednotlivych barev (zelena, oranzova, cervena) pro kazdy semafor
51
// na konci kazde vstupni normalni hrany krizovatky (semafory budou usporadany
52
// proti smeru hodinovych rucicek kolem krizovatky);
53
// pozn.: spravne by asi mela byt kazda transformace zapouzdrena ve svem
54
// EnvironmentObjectu, takze by se k ni nemelo dat pristupovat primo; pro zvyseni
55
// rychlosti ovsem porusuji toto zapouzdreni;
56
std::vector<TLcolorsMT> *
const
pTLcolorsMTvec
;
57
58
// vektor, ve kterem budou pro obsluhu semaforu u krizovatky ulozeny ukazatele na
59
// barvy (ciselne vyjadrene), ktere budou svitit na semaforech
60
// na koncich vstupnich normalnich hran (barvy budou usporadany proti smeru hodinovych
61
// rucicek kolem krizovatky podle semaforu, na kterych se budou vyskytovat);
62
// pozn.: opet spravne by asi mela byt barva semaforu vzdy zapouzdrena u hrany krizovatky
63
// (JuncsEdge) v RoadsState; pro zvyseni rychlosti ovsem porusuji toto zapouzdreni;
64
// pozn.: zrejme se nemuze stat, ze by pri aktualizaci teto ability nekdy (na konci simulace)
65
// ukazatel na barvu ukazoval do pameti, kde by ta barva byla jiz odstranena
66
// (protoze jsou na konci simulace nejdrive zastaveny vsechny aktualizace u Scheduleru a az
67
// potom jsou mazany ability a EnvironmentObjecty)
68
const
std::vector<unsigned int*const> *
const
pTLcolorsVec
;
69
70
// vektor s casovymi intervaly, po ktere bude na semaforech kolem krizovatky svitit
71
// zelena (opet budou usporadany proti smeru hodinovych
72
// rucicek kolem krizovatky podle semaforu)
73
const
std::vector<unsigned int> *
const
pTLgreenIntervVec
;
74
75
// index do vyse uvedenych vektoru, bude oznacovat semafor, ktery nasleduje
76
// za semaforem, na kterem naposledy zhasnula oranzova a rozsvitila se cervena
77
// (pokud zadny takovy semafor jeste nebyl, bude obsahovat 0 - tedy oznacovat
78
// (ukazovat na) 1. semafor v tech vektorech)
79
unsigned
int
tlIndex
;
80
81
// casove rozvrzeni sviceni barev na semaforech u krizovatky (osa x je casova osa):
82
// 1. semafor |u|ggggggggggggg|o|rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr|
83
// 2. semafor |rrrrrrrrrrrrrrrrrrr|u|gggggggggggggg|o|rrrrrrrrrrrrrrrrrr|
84
// 3. semafor |rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr|u|gggggggggggggg|
85
// ...
86
// | tlIndex == 0 | tlIndex == 1 | tlIndex == 2 |
87
88
// popis zkratek:
89
// u - na semaforu sviti cervena a oranzova soucasne
90
// g - na semaforu sviti zelena
91
// o - na semaforu sviti oranzova
92
// r - na semaforu sviti cervena
93
94
// doba, po kterou bude na semaforu svitit oranzova nebo oranzova a cervena soucasne
95
// nebo na vsech semaforech cervena, bude vzdy stejna - dejme tomu 2 s
96
97
// pocet sekund, ktery ubehl od posledni zmeny tlIndexu
98
unsigned
int
secCount
;
99
100
// metoda, ktera na zacatku simulace na vsech semaforech rozsviti cervenou
101
void
initColorsOnTLs
(
void
);
102
103
// tato metoda prepne barvy, ktere sviti na semaforu, na ktery ukazuje tlIndex
104
// (nejprve z r na u, pak z u na g, pak z g na o a nakonec z o na r
105
void
switchColorsOnTL
(
void
);
106
107
};
108
109
}
110
111
#endif
112
include
vreckoAP
CarSim
TLsOnJuncManager.h
Generated on Tue Feb 19 2013 10:23:42 for vrecko by
1.8.3.1