1 | /*
|
---|
2 | Copyright (C) 2005-2006 Feeling Software Inc.
|
---|
3 | MIT License: http://www.opensource.org/licenses/mit-license.php
|
---|
4 | */
|
---|
5 | /*
|
---|
6 | Based on the FS Import classes:
|
---|
7 | Copyright (C) 2005-2006 Feeling Software Inc
|
---|
8 | Copyright (C) 2005-2006 Autodesk Media Entertainment
|
---|
9 | MIT License: http://www.opensource.org/licenses/mit-license.php
|
---|
10 | */
|
---|
11 |
|
---|
12 | #ifndef _FU_DAE_ENUM_H_
|
---|
13 | #define _FU_DAE_ENUM_H_
|
---|
14 |
|
---|
15 | // Animation curve interpolation function
|
---|
16 | // Defaults to the STEP interpolation by definition in COLLADA.
|
---|
17 | // BEZIER is the more common interpolation type
|
---|
18 | namespace FUDaeInterpolation
|
---|
19 | {
|
---|
20 | enum Interpolation
|
---|
21 | {
|
---|
22 | STEP = 0, //equivalent to no interpolation
|
---|
23 | LINEAR,
|
---|
24 | BEZIER,
|
---|
25 |
|
---|
26 | UNKNOWN,
|
---|
27 | DEFAULT = STEP,
|
---|
28 | };
|
---|
29 |
|
---|
30 | FCOLLADA_EXPORT Interpolation FromString(const string& value);
|
---|
31 | const char* ToString(const Interpolation& value);
|
---|
32 | };
|
---|
33 |
|
---|
34 | typedef vector<FUDaeInterpolation::Interpolation> FUDaeInterpolationList;
|
---|
35 |
|
---|
36 | // COLLADA generic degree function. Used by lights and the profile_COMMON materials.
|
---|
37 | namespace FUDaeFunction
|
---|
38 | {
|
---|
39 | enum Function
|
---|
40 | {
|
---|
41 | CONSTANT = 0,
|
---|
42 | LINEAR,
|
---|
43 | QUADRATIC,
|
---|
44 |
|
---|
45 | UNKNOWN,
|
---|
46 | DEFAULT = CONSTANT,
|
---|
47 | };
|
---|
48 |
|
---|
49 | FCOLLADA_EXPORT Function FromString(const char* value);
|
---|
50 | inline Function FromString(const string& value) { return FromString(value.c_str()); }
|
---|
51 | };
|
---|
52 |
|
---|
53 |
|
---|
54 | // Material texture channels. Used by profile_common materials to assign textures to channels/slots
|
---|
55 | // Multi-texturing is done by assigning more than one texture per slot.
|
---|
56 | // Defaults to diffuse texture slot
|
---|
57 | #undef TRANSPARENT // Win32: GDI stupidely defines this in the global namespace
|
---|
58 | namespace FUDaeTextureChannel
|
---|
59 | {
|
---|
60 | enum Channel
|
---|
61 | {
|
---|
62 | AMBIENT = 0,
|
---|
63 | BUMP,
|
---|
64 | DIFFUSE,
|
---|
65 | DISPLACEMENT,
|
---|
66 | EMISSION,
|
---|
67 | FILTER,
|
---|
68 | OPACITY,
|
---|
69 | REFLECTION,
|
---|
70 | REFRACTION,
|
---|
71 | SHININESS,
|
---|
72 | SPECULAR,
|
---|
73 | SPECULAR_LEVEL,
|
---|
74 | TRANSPARENT,
|
---|
75 |
|
---|
76 | COUNT,
|
---|
77 | UNKNOWN,
|
---|
78 | DEFAULT = DIFFUSE,
|
---|
79 | };
|
---|
80 |
|
---|
81 | FCOLLADA_EXPORT Channel FromString(const string& value);
|
---|
82 | };
|
---|
83 |
|
---|
84 | // Morph controller method
|
---|
85 | // NORMALIZED implies that the morph targets all have absolute vertex positions
|
---|
86 | // RELATIVE implies that the morph targets have relative vertex positions
|
---|
87 | //
|
---|
88 | // Whether the vertex position is relative or absolute is irrelevant,
|
---|
89 | // as long as you use the correct weight generation function:
|
---|
90 | // NORMALIZED: base_weight = 1.0f - SUM(weight[t])
|
---|
91 | // RELATIVE: base_weight = 1.0f
|
---|
92 | // and position[k] = SUM(weight[t][k] * position[t][k])
|
---|
93 | #undef RELATIVE // Win32: GDI stupidely defines this in the global namespace
|
---|
94 | namespace FUDaeMorphMethod
|
---|
95 | {
|
---|
96 | enum Method
|
---|
97 | {
|
---|
98 | NORMALIZED = 0,
|
---|
99 | RELATIVE,
|
---|
100 |
|
---|
101 | UNKNOWN,
|
---|
102 | DEFAULT = NORMALIZED,
|
---|
103 | };
|
---|
104 |
|
---|
105 | FCOLLADA_EXPORT Method FromString(const char* value);
|
---|
106 | FCOLLADA_EXPORT const char* ToString(Method method);
|
---|
107 | inline Method FromString(const string& value) { return FromString(value.c_str()); }
|
---|
108 | };
|
---|
109 |
|
---|
110 | // Maya uses the infinity to determine what happens outside an animation curve
|
---|
111 | // Intentionally matches the MFnAnimCurve::InfinityType enum
|
---|
112 | namespace FUDaeInfinity
|
---|
113 | {
|
---|
114 | enum Infinity
|
---|
115 | {
|
---|
116 | CONSTANT = 0,
|
---|
117 | LINEAR,
|
---|
118 | CYCLE,
|
---|
119 | CYCLE_RELATIVE,
|
---|
120 | OSCILLATE,
|
---|
121 |
|
---|
122 | UNKNOWN,
|
---|
123 | DEFAULT = CONSTANT
|
---|
124 | };
|
---|
125 |
|
---|
126 | FCOLLADA_EXPORT Infinity FromString(const char* value);
|
---|
127 | FCOLLADA_EXPORT const char* ToString(Infinity infinity);
|
---|
128 | inline Infinity FromString(const string& value) { return FromString(value.c_str()); }
|
---|
129 | };
|
---|
130 |
|
---|
131 | // Maya uses the blend mode for texturing purposes
|
---|
132 | // Intentionally matches the equivalent Maya enum
|
---|
133 | #undef IN
|
---|
134 | #undef OUT
|
---|
135 | #undef DIFFERENCE
|
---|
136 | namespace FUDaeBlendMode
|
---|
137 | {
|
---|
138 | enum Mode
|
---|
139 | {
|
---|
140 | NONE,
|
---|
141 | OVER,
|
---|
142 | IN,
|
---|
143 | OUT,
|
---|
144 | ADD,
|
---|
145 | SUBSTRACT,
|
---|
146 | MULTIPLY,
|
---|
147 | DIFFERENCE,
|
---|
148 | LIGHTEN,
|
---|
149 | DARKEN,
|
---|
150 | SATURATE,
|
---|
151 | DESATURATE,
|
---|
152 | ILLUMINATE,
|
---|
153 |
|
---|
154 | UNKNOWN,
|
---|
155 | DEFAULT = NONE,
|
---|
156 | };
|
---|
157 |
|
---|
158 | FCOLLADA_EXPORT Mode FromString(const char* value);
|
---|
159 | FCOLLADA_EXPORT const char* ToString(Mode mode);
|
---|
160 | inline Mode FromString(const string& value) { return FromString(value.c_str()); }
|
---|
161 | }
|
---|
162 |
|
---|
163 | // Geometry Input Semantics
|
---|
164 | // Found in the <mesh><vertices>, <mesh><polygons>...
|
---|
165 | namespace FUDaeGeometryInput
|
---|
166 | {
|
---|
167 | enum Semantic
|
---|
168 | {
|
---|
169 | POSITION = 0,
|
---|
170 | VERTEX,
|
---|
171 | NORMAL,
|
---|
172 | GEOTANGENT,
|
---|
173 | GEOBINORMAL,
|
---|
174 | TEXCOORD,
|
---|
175 | TEXTANGENT,
|
---|
176 | TEXBINORMAL,
|
---|
177 | UV,
|
---|
178 | COLOR,
|
---|
179 | EXTRA, // Maya-specific, used for blind data
|
---|
180 |
|
---|
181 | UNKNOWN = -1,
|
---|
182 | };
|
---|
183 | typedef vector<Semantic> SemanticList;
|
---|
184 |
|
---|
185 | FCOLLADA_EXPORT Semantic FromString(const char* value);
|
---|
186 | FCOLLADA_EXPORT const char* ToString(Semantic semantic);
|
---|
187 | inline Semantic FromString(const string& value) { return FromString(value.c_str()); }
|
---|
188 | }
|
---|
189 |
|
---|
190 | /** The types of effect profiles. */
|
---|
191 | namespace FUDaeProfileType
|
---|
192 | {
|
---|
193 | /** Enumerates the types of effect profiles. */
|
---|
194 | enum Type
|
---|
195 | {
|
---|
196 | CG, /**< The CG profile. */
|
---|
197 | HLSL, /**< The HLSL profile for DirectX. */
|
---|
198 | GLSL, /**< The GLSL profile for OpenGL. */
|
---|
199 | GLES, /**< The GLES profile for OpenGL ES. */
|
---|
200 | COMMON, /**< The common profile which encapsulates the standard lighting equations: Lambert, Phong, Blinn. */
|
---|
201 |
|
---|
202 | UNKNOWN /**< Not a valid profile type. */
|
---|
203 | };
|
---|
204 |
|
---|
205 | /** Converts the COLLADA profile name string to a profile type.
|
---|
206 | Examples of COLLADA profile name strings are 'profile_CG' and 'profile_COMMON'.
|
---|
207 | @param value The profile name string.
|
---|
208 | @return The profile type. */
|
---|
209 | FCOLLADA_EXPORT Type FromString(const char* value);
|
---|
210 | inline Type FromString(const string& value) { return FromString(value.c_str()); } /**< See above. */
|
---|
211 |
|
---|
212 | /** Converts the profile type to its COLLADA profile name string.
|
---|
213 | Examples of COLLADA profile name strings are 'profile_CG' and 'profile_COMMON'.
|
---|
214 | @param type The profile type.
|
---|
215 | @return The name string for the profile type. */
|
---|
216 | FCOLLADA_EXPORT const char* ToString(Type type);
|
---|
217 | }
|
---|
218 |
|
---|
219 | #endif // _FU_DAE_ENUM_H_
|
---|
220 |
|
---|