[964] | 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 |
|
---|