vrecko
virtual reality framework
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Pattern.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "types.h"
4
#include "
Utils.h
"
5
6
namespace
APDYNAMICART
7
{
8
10
class
Pattern
:
public
osg::Referenced
11
{
12
public
:
13
virtual
Vec3ArrayPtr
generate
(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right) = 0;
14
virtual
std::string
getName
() = 0;
15
};
16
18
class
PatternBase
:
public
Pattern
19
{
20
public
:
21
PatternBase
() :
_array
(NULL) {};
22
23
virtual
Vec3ArrayPtr
generate
(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right)
24
{
25
if
(!
_array
.valid())
_array
=
new
osg::Vec3Array;
26
27
if
(left->size() != right->size()) {
28
err
(
"Different size left/right array. Aborting generation"
);
return
_array
;
29
}
30
31
return
compute
(left, right);
32
}
33
34
virtual
std::string
getName
() = 0;
35
37
Vec3ArrayPtr
getVertexArray
()
const
{
return
_array
; }
38
void
setVertexArray
(
Vec3ArrayPtr
val) {
_array
= val; }
39
40
protected
:
41
Vec3ArrayPtr
_array
;
42
virtual
~PatternBase
() {};
43
virtual
Vec3ArrayPtr
compute
(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right ) = 0;
44
};
45
47
typedef
osg::ref_ptr<PatternBase>
PatternPtr
;
48
typedef
std::vector<PatternPtr>
Patterns
;
49
51
class
PatternFactory
52
{
53
public
:
54
static
std::vector<std::string>
getAvaiablePatterns
();
55
static
PatternPtr
getPattern
(
const
std::string& name);
56
};
57
59
class
NullPattern
:
public
PatternBase
60
{
61
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right)
62
{
63
dbg
(
"PatternBase::generate() called on null object."
);
64
return
new
osg::Vec3Array;
65
}
66
67
virtual
std::string getName() {
68
return
"NullPattern"
;
69
}
70
};
71
72
class
AcrossPattern
:
public
PatternBase
73
{
74
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
75
virtual
std::string getName() {
76
return
"Across"
;
77
}
78
};
79
80
class
CrissCrossPattern
:
public
PatternBase
81
{
82
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
83
virtual
std::string getName() {
84
return
"Criss-cross"
;
85
}
86
};
87
88
class
DoublePattern
:
public
PatternBase
89
{
90
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
91
virtual
std::string getName() {
92
return
"Double"
;
93
}
94
};
95
96
class
HyperbolicPattern
:
public
PatternBase
97
{
98
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
99
virtual
std::string getName() {
100
return
"Hyperbolic"
;
101
}
102
};
103
104
class
TopPattern
:
public
PatternBase
105
{
106
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
107
virtual
std::string getName() {
108
return
"Top"
;
109
}
110
};
111
112
class
TopReversePattern
:
public
PatternBase
113
{
114
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
115
virtual
std::string getName() {
116
return
"Top-Reverse"
;
117
}
118
};
119
120
class
StandardPattern
:
public
PatternBase
121
{
122
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
123
virtual
std::string getName() {
124
return
"Standard"
;
125
}
126
};
127
128
class
SplitPattern
:
public
PatternBase
129
{
130
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
131
virtual
std::string getName() {
132
return
"Split"
;
133
}
134
};
135
136
class
SplitReversePattern
:
public
PatternBase
137
{
138
virtual
Vec3ArrayPtr
compute(
Vec3ArrayPtr
left,
Vec3ArrayPtr
right);
139
virtual
std::string getName() {
140
return
"Split-Reverse"
;
141
}
142
};
143
144
}
include
vreckoAP
DynamicArt
Pattern.h
Generated on Tue Feb 19 2013 10:23:43 for vrecko by
1.8.3.1