[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 | /**
|
---|
| 13 | @file FCDEffectStandard.h
|
---|
| 14 | This file contains the FCDEffectStandard class.
|
---|
| 15 | */
|
---|
| 16 |
|
---|
| 17 | #ifndef _FCD_MATERIAL_STANDARD_H_
|
---|
| 18 | #define _FCD_MATERIAL_STANDARD_H_
|
---|
| 19 |
|
---|
| 20 | #include "FUtils/FUDaeEnum.h"
|
---|
| 21 | #include "FCDocument/FCDEffectProfile.h"
|
---|
| 22 |
|
---|
| 23 | class FCDocument;
|
---|
| 24 | class FCDEffect;
|
---|
| 25 | class FCDEffectParameter;
|
---|
| 26 | class FCDTexture;
|
---|
| 27 | class FCDEffectParameterList;
|
---|
| 28 |
|
---|
| 29 | /** A dynamically-sized array of texture objects. */
|
---|
| 30 | typedef vector<FCDTexture*> FCDTextureList;
|
---|
| 31 |
|
---|
| 32 | /**
|
---|
| 33 | A COMMON profile effect description.
|
---|
| 34 |
|
---|
| 35 | The COMMON effect profile holds the information necessary
|
---|
| 36 | to render your polygon sets using the well-defined lighting models.
|
---|
| 37 |
|
---|
| 38 | COLLADA supports four lighting models: constant, Lambert, Phong and Blinn.
|
---|
| 39 |
|
---|
| 40 | @ingroup FCDEffect
|
---|
| 41 | */
|
---|
| 42 | class FCOLLADA_EXPORT FCDEffectStandard : public FCDEffectProfile
|
---|
| 43 | {
|
---|
| 44 | public:
|
---|
| 45 | /** The list of the lighting models supported by the COMMON profile of COLLADA. */
|
---|
| 46 | enum LightingType
|
---|
| 47 | {
|
---|
| 48 | /** The constant lighting model.
|
---|
| 49 | This lighting model uses the emissive color everywhere, without
|
---|
| 50 | any complex lighting calculations. It also uses the translucency
|
---|
| 51 | factor and the translucency color, by multiplying them together
|
---|
| 52 | and applying them to your standard alpha channel according to the
|
---|
| 53 | final lighting color.*/
|
---|
| 54 | CONSTANT,
|
---|
| 55 |
|
---|
| 56 | /** The Lambert lighting model.
|
---|
| 57 | This lighting model improves on the constant lighting model by
|
---|
| 58 | using the dot-product between the normalized light vectors and the
|
---|
| 59 | polygon normals to determine how much light should affect each polygon.
|
---|
| 60 | This value is multiplied to the diffuse color and (1 + the ambient color). */
|
---|
| 61 | LAMBERT,
|
---|
| 62 |
|
---|
| 63 | /** The Phong lighting model.
|
---|
| 64 | This lighting model improves on the Lambert lighting model by
|
---|
| 65 | calculating how much light is reflected by the polygons into the viewer's eye.
|
---|
| 66 | For this calculation, the shininess, the specular color and the reflectivity is used. */
|
---|
| 67 | PHONG,
|
---|
| 68 |
|
---|
| 69 | /** The Blinn lighting model.
|
---|
| 70 | This lighting model improves on the Lambert lighting model by
|
---|
| 71 | calculating how much light is reflected by the polygons into the viewer's eye.
|
---|
| 72 | For this calculation, the shininess, the specular color and the reflectivity is used. */
|
---|
| 73 | BLINN,
|
---|
| 74 |
|
---|
| 75 | /** Not a valid lighting model. */
|
---|
| 76 | UNKNOWN
|
---|
| 77 | };
|
---|
| 78 |
|
---|
| 79 | private:
|
---|
| 80 | DeclareObjectType;
|
---|
| 81 | LightingType type;
|
---|
| 82 | FCDTextureList* textureBuckets;
|
---|
| 83 |
|
---|
| 84 | // Common material parameter: Emission
|
---|
| 85 | FMVector3 emissionColor;
|
---|
| 86 | float emissionFactor; // Max-specific
|
---|
| 87 |
|
---|
| 88 | // Common material parameter: Translucency
|
---|
| 89 | FMVector3 translucencyColor;
|
---|
| 90 | float translucencyFactor;
|
---|
| 91 |
|
---|
| 92 | // Lambert material parameters
|
---|
| 93 | FMVector3 diffuseColor;
|
---|
| 94 | FMVector3 ambientColor;
|
---|
| 95 |
|
---|
| 96 | // Phong material parameters: Specular
|
---|
| 97 | FMVector3 specularColor;
|
---|
| 98 | float specularFactor; // Max-specific
|
---|
| 99 | float shininess;
|
---|
| 100 |
|
---|
| 101 | // Phong material parameter: Reflectivity
|
---|
| 102 | FMVector3 reflectivityColor; // Maya-specific
|
---|
| 103 | float reflectivityFactor; // Maya-specific
|
---|
| 104 |
|
---|
| 105 | // Geometry modifier
|
---|
| 106 | bool isFaceted; // Max-specific
|
---|
| 107 | bool isDoubleSided; // Max-specific for now
|
---|
| 108 | bool isWireframe; // Max-specific
|
---|
| 109 | bool isFaceMap; // Max-specific
|
---|
| 110 | bool isEmissionFactor; // Max-specific
|
---|
| 111 |
|
---|
| 112 | public:
|
---|
| 113 | /** Constructor: do not use directly. Instead, use the FCDEffect::AddProfile function
|
---|
| 114 | with the FUDaeProfileType::COMMON parameter.
|
---|
| 115 | @param document The COLLADA document that owns this effect profile.
|
---|
| 116 | @param parent The effect that contains this profile. */
|
---|
| 117 | FCDEffectStandard(FCDocument* document, FCDEffect* parent);
|
---|
| 118 |
|
---|
| 119 | /** Destructor: do not use directly.
|
---|
| 120 | Instead, use the FCDEffect::ReleaseProfile function. */
|
---|
| 121 | virtual ~FCDEffectStandard();
|
---|
| 122 |
|
---|
| 123 | /** Retrieves the lighting model to be used for this profile.
|
---|
| 124 | @return The lighting model. */
|
---|
| 125 | inline LightingType GetLightingType() const { return type; }
|
---|
| 126 |
|
---|
| 127 | /** Sets the lighting model to be used for this profile.
|
---|
| 128 | Note that which parameters are exported depends on the lighting model.
|
---|
| 129 | @param _type The lighting model. */
|
---|
| 130 | inline void SetLightingType(LightingType _type) { type = _type; }
|
---|
| 131 |
|
---|
| 132 | /** Retrieves the profile type for this effect.
|
---|
| 133 | This function is a part of the FCDEffectProfile interface and allows you
|
---|
| 134 | to up-cast an effect profile pointer safely to this class.
|
---|
| 135 | @return The profile type: COMMON. */
|
---|
| 136 | virtual FUDaeProfileType::Type GetType() const { return FUDaeProfileType::COMMON; }
|
---|
| 137 |
|
---|
| 138 | /** Retrieves the list of textures belonging to a specific channel.
|
---|
| 139 | @param bucket A texture channel index. This index should match one
|
---|
| 140 | of the values in the FUDaeTextureChannel enum.
|
---|
| 141 | @return The list of textures for this channel. */
|
---|
| 142 | const FCDTextureList& GetTextureBucket(uint32 bucket) const;
|
---|
| 143 |
|
---|
| 144 | /** Retrieves the number of textures belonging to a specific channel.
|
---|
| 145 | @param bucket A texture channel index. This index should match one
|
---|
| 146 | of the values in the FUDaeTextureChannel enum.
|
---|
| 147 | @return The number of textures in that channel. */
|
---|
| 148 | size_t GetTextureCount(uint32 bucket) const { FUAssert(bucket < FUDaeTextureChannel::COUNT, return 0); return textureBuckets[bucket].size(); }
|
---|
| 149 |
|
---|
| 150 | /** Retrieves a texture
|
---|
| 151 | @param bucket A texture channel index. This index should match one
|
---|
| 152 | of the values in the FUDaeTextureChannel enum.
|
---|
| 153 | @param index The index of a texture within this channel.
|
---|
| 154 | @return The texture. This pointer will be NULL if either the bucket or the index is out-of-bounds. */
|
---|
| 155 | inline FCDTexture* GetTexture(uint32 bucket, size_t index) { FUAssert(index < GetTextureCount(bucket), return NULL); return textureBuckets[bucket].at(index); }
|
---|
| 156 | inline const FCDTexture* GetTexture(uint32 bucket, size_t index) const { FUAssert(index < GetTextureCount(bucket), return NULL); return textureBuckets[bucket].at(index); } /**< See above. */
|
---|
| 157 |
|
---|
| 158 | /** Adds a texture to a specific channel.
|
---|
| 159 | @param bucket A texture channel index. This index should match one
|
---|
| 160 | of the values in the FUDaeTextureChannel enum.
|
---|
| 161 | @return The new texture. This pointer will be NULL if the bucket is out-of-bounds. */
|
---|
| 162 | FCDTexture* AddTexture(uint32 bucket);
|
---|
| 163 |
|
---|
| 164 | /** Releases a texture contained within this effect profile.
|
---|
| 165 | @param texture The texture to release. */
|
---|
| 166 | void ReleaseTexture(FCDTexture* texture);
|
---|
| 167 |
|
---|
| 168 | /** Retrieves the base translucency color.
|
---|
| 169 | This value must be multiplied with the translucency factor
|
---|
| 170 | to get the real translucency color.
|
---|
| 171 | This value is used in all lighting models.
|
---|
| 172 | @return The base translucency color. */
|
---|
| 173 | inline const FMVector3& GetTranslucencyColor() const { return translucencyColor; }
|
---|
| 174 |
|
---|
| 175 | /** Sets the base translucency color.
|
---|
| 176 | @param color The base translucency color. */
|
---|
| 177 | inline void SetTranslucencyColor(const FMVector3& color) { translucencyColor = color; }
|
---|
| 178 |
|
---|
| 179 | /** Retrieves the translucency factor.
|
---|
| 180 | This value must be multiplied with the translucency color
|
---|
| 181 | to get the real translucency color.
|
---|
| 182 | This value is used in all lighting models.
|
---|
| 183 | @return The translucency factor. */
|
---|
| 184 | inline const float& GetTranslucencyFactor() const { return translucencyFactor; }
|
---|
| 185 |
|
---|
| 186 | /** Sets the translucency factor.
|
---|
| 187 | @param factor The translucency factor. */
|
---|
| 188 | inline void SetTranslucencyFactor(float factor) { translucencyFactor = factor; }
|
---|
| 189 |
|
---|
| 190 | /** Retrieves the flat opacity.
|
---|
| 191 | This is a calculated value and will not take into consideration any animations
|
---|
| 192 | that affect either the base translucency color or the translucency factor.
|
---|
| 193 | This value can be used in all lighting models.
|
---|
| 194 | @return The flat opacity. */
|
---|
| 195 | float GetOpacity() const;
|
---|
| 196 |
|
---|
| 197 | /** Retrieves the base emission/self-illumination color.
|
---|
| 198 | This value must be multiplied with the emission factor to get the real emission color.
|
---|
| 199 | This value is used in all lighting models.
|
---|
| 200 | @return The base emission color. */
|
---|
| 201 | inline const FMVector3& GetEmissionColor() const { return emissionColor; }
|
---|
| 202 |
|
---|
| 203 | /** Sets the base emission/self-illumination color.
|
---|
| 204 | @param color The base emission color. */
|
---|
| 205 | inline void SetEmissionColor(const FMVector3& color) { emissionColor = color; }
|
---|
| 206 |
|
---|
| 207 | /** Retrieves the emission/self-illumination factor.
|
---|
| 208 | This value must be multiplied with the base emission color to get the real emission color.
|
---|
| 209 | @return The emission factor. */
|
---|
| 210 | inline const float& GetEmissionFactor() const { return emissionFactor; }
|
---|
| 211 |
|
---|
| 212 | /** Sets the emission/self-illumination factor.
|
---|
| 213 | @param factor The emission factor. */
|
---|
| 214 | inline void SetEmissionFactor(float factor) { emissionFactor = factor; }
|
---|
| 215 |
|
---|
| 216 | /** Retrieves whether the emission factor was used, rather than the emission color.
|
---|
| 217 | This value is used in conjunction with 3dsMax, in which the self-illumination color
|
---|
| 218 | and the self-illumination factor are mutually exclusive.
|
---|
| 219 | @return Whether the emission factor is to be used. */
|
---|
| 220 | inline bool IsEmissionFactor() const { return isEmissionFactor; }
|
---|
| 221 |
|
---|
| 222 | /** Sets whether the emission factor is to be used, rather than the emission color.
|
---|
| 223 | This value is used in conjunction with 3dsMax, in which the self-illumination color
|
---|
| 224 | and the self-illumination factor are mutually exclusive.
|
---|
| 225 | @param useFactor Whether the emission factor should be used. */
|
---|
| 226 | inline void SetIsEmissionFactor(bool useFactor) { isEmissionFactor = useFactor; }
|
---|
| 227 |
|
---|
| 228 | /** Retrieves the diffuse color.
|
---|
| 229 | This value is used in the Lambert lighting model.
|
---|
| 230 | @return The diffuse color. */
|
---|
| 231 | inline const FMVector3& GetDiffuseColor() const { return diffuseColor; }
|
---|
| 232 |
|
---|
| 233 | /** Sets the diffuse color.
|
---|
| 234 | @param color The diffuse color. */
|
---|
| 235 | inline void SetDiffuseColor(const FMVector3& color) { diffuseColor = color; }
|
---|
| 236 |
|
---|
| 237 | /** Retrieves the ambient color.
|
---|
| 238 | This value is used in the Lambert lighting model.
|
---|
| 239 | @return The ambient color. */
|
---|
| 240 | inline const FMVector3& GetAmbientColor() const { return ambientColor; }
|
---|
| 241 |
|
---|
| 242 | /** Sets the ambient color.
|
---|
| 243 | @param color The ambient color. */
|
---|
| 244 | inline void SetAmbientColor(const FMVector3& color) { ambientColor = color; }
|
---|
| 245 |
|
---|
| 246 | /** Retrieves the base specular color.
|
---|
| 247 | This value must be multiplied with the specular factor
|
---|
| 248 | to get the real specular color.
|
---|
| 249 | This value is used in the Phong and Blinn lighting models.
|
---|
| 250 | @return The specular color. */
|
---|
| 251 | inline const FMVector3& GetSpecularColor() const { return specularColor; }
|
---|
| 252 |
|
---|
| 253 | /** Sets the specular color.
|
---|
| 254 | @param color The specular color. */
|
---|
| 255 | inline void SetSpecularColor(const FMVector3& color) { specularColor = color; }
|
---|
| 256 |
|
---|
| 257 | /** Retrieves the specular factor.
|
---|
| 258 | This value must be multiplied with the base specular color
|
---|
| 259 | to get the real specular color.
|
---|
| 260 | This value is used in the Phong and Blinn lighting models.
|
---|
| 261 | @return The specular factor. */
|
---|
| 262 | inline const float& GetSpecularFactor() const { return specularFactor; }
|
---|
| 263 |
|
---|
| 264 | /** Sets the specular factor.
|
---|
| 265 | @param factor The specular factor. */
|
---|
| 266 | inline void SetSpecularFactor(float factor) { specularFactor = factor; }
|
---|
| 267 |
|
---|
| 268 | /** Retrieves the specular shininess.
|
---|
| 269 | This value represents the exponent to which you must raise
|
---|
| 270 | the dot-product between the view vector and reflected light vectors:
|
---|
| 271 | as such, it is usually a number greater than 1.
|
---|
| 272 | This value is used in the Phong and Blinn lighting models.
|
---|
| 273 | @return The specular shininess. */
|
---|
| 274 | inline const float& GetShininess() const { return shininess; }
|
---|
| 275 |
|
---|
| 276 | /** Sets the specular shininess.
|
---|
| 277 | This value represents the exponent to which you must raise
|
---|
| 278 | the dot-product between the view vector and reflected light vectors:
|
---|
| 279 | as such, it is usually a number greater than 1.
|
---|
| 280 | @param _shininess The specular shininess. */
|
---|
| 281 | inline void SetShininess(float _shininess) { shininess = _shininess; }
|
---|
| 282 |
|
---|
| 283 | /** Retrieves the base reflectivity color.
|
---|
| 284 | This value must be multiplied to the reflectivity factor to
|
---|
| 285 | get the real reflectivity color.
|
---|
| 286 | This value is used in the Phong and Blinn lighting models.
|
---|
| 287 | @return The base reflectivity color. */
|
---|
| 288 | inline const FMVector3& GetReflectivityColor() const { return reflectivityColor; }
|
---|
| 289 |
|
---|
| 290 | /** Sets the base reflectivity color.
|
---|
| 291 | @param color The base reflectivity color. */
|
---|
| 292 | inline void SetReflectivityColor(const FMVector3& color) { reflectivityColor = color; }
|
---|
| 293 |
|
---|
| 294 | /** Retrieves the reflectivity factor.
|
---|
| 295 | This value must be multiplied to the base reflectivity color
|
---|
| 296 | to get the real reflectivity color.
|
---|
| 297 | This value is used in the Phong and Blinn lighting models.
|
---|
| 298 | @return The reflectivity factor. */
|
---|
| 299 | inline const float& GetReflectivityFactor() const { return reflectivityFactor; }
|
---|
| 300 |
|
---|
| 301 | /** Sets the reflectivity factor.
|
---|
| 302 | @param factor The reflectivity factor. */
|
---|
| 303 | inline void SetReflectivityFactor(float factor) { reflectivityFactor = factor; }
|
---|
| 304 |
|
---|
| 305 | /** Retrieves the flat reflectivity.
|
---|
| 306 | This is a calculated value and will not take into consideration any animations
|
---|
| 307 | that affect either the base reflectivity color or the reflectivity factor.
|
---|
| 308 | This value can be used in the Phong and Blinn lighting models.
|
---|
| 309 | @return The flat reflectivity. */
|
---|
| 310 | float GetReflectivity() const;
|
---|
| 311 |
|
---|
| 312 | /** Retrieves the 'faceted' flag.
|
---|
| 313 | This flag is used in conjunction with 3dsMax. It represents whether all the edges
|
---|
| 314 | of the polygon sets using this effect profile should be hard. The final result
|
---|
| 315 | of using this flag is a mesh where all the faces stand out.
|
---|
| 316 | @return The status of the 'faceted' flag. */
|
---|
| 317 | inline bool GetFacetedFlag() const { return isFaceted; }
|
---|
| 318 |
|
---|
| 319 | /** Sets the 'faceted' flag.
|
---|
| 320 | This flag is used in conjunction with 3dsMax. It represents whether all the edges
|
---|
| 321 | of the polygon sets using this effect profile should be hard. The final result
|
---|
| 322 | of using this flag is a mesh where all the faces stand out.
|
---|
| 323 | @param flag The status of the 'faceted' flag. */
|
---|
| 324 | inline void SetFacetedFlag(bool flag) { isFaceted = flag; }
|
---|
| 325 |
|
---|
| 326 | /** Retrieves the 'double-sided' flag.
|
---|
| 327 | This flag is used in conjunction with 3dsMax. It represents whether all the faces
|
---|
| 328 | of the polygon sets should be treated as two-sided and have normals in both directions.
|
---|
| 329 | @return The status of the 'double-sided' flag. */
|
---|
| 330 | inline bool GetDoubleSidedFlag() const { return isDoubleSided; }
|
---|
| 331 |
|
---|
| 332 | /** Sets the 'double-sided' flag.
|
---|
| 333 | This flag is used in conjunction with 3dsMax. It represents whether all the faces
|
---|
| 334 | of the polygon sets should be treated as two-sided and have normals in both directions.
|
---|
| 335 | @param flag The status of the 'double-sided' flag. */
|
---|
| 336 | inline bool SetDoubleSidedFlag(bool flag) { isDoubleSided = flag; }
|
---|
| 337 |
|
---|
| 338 | /** Retrieves the 'wireframe' flag.
|
---|
| 339 | This flag is used in conjunction with 3dsMax. It represents whether all the edges
|
---|
| 340 | of the polygon sets should be rendered, rather than the faces.
|
---|
| 341 | @return The status of the 'wireframe' flag. */
|
---|
| 342 | inline bool GetWireframeFlag() const { return isWireframe; }
|
---|
| 343 |
|
---|
| 344 | /** Sets the 'wireframe' flag.
|
---|
| 345 | This flag is used in conjunction with 3dsMax. It represents whether all the edges
|
---|
| 346 | of the polygon sets should be rendered, rather than the faces.
|
---|
| 347 | @param flag The status of the 'wireframe' flag. */
|
---|
| 348 | inline bool SetWireframeFlag(bool flag) { isWireframe = flag; }
|
---|
| 349 |
|
---|
| 350 | /** Retrieves the 'face-map' flag.
|
---|
| 351 | This is a pure 3dsMax flag and I have no idea what it does.
|
---|
| 352 | @return The status of the 'face-map' flag. */
|
---|
| 353 | inline bool GetFaceMapFlag() const { return isFaceMap; }
|
---|
| 354 |
|
---|
| 355 | /** Sets the 'face-map' flag.
|
---|
| 356 | This is a pure 3dsMax flag and I have no idea what it does.
|
---|
| 357 | @param flag The status of the 'face-map' flag. */
|
---|
| 358 | inline void SetFaceMapFlag(bool flag) { isFaceMap = flag; }
|
---|
| 359 |
|
---|
| 360 | /** Retrieves an effect parameter.
|
---|
| 361 | Looks for the effect parameter with the correct semantic, in order to bind or override its value.
|
---|
| 362 | This function searches through the effect profile and the level of abstractions below.
|
---|
| 363 | @param semantic The effect parameter semantic to match.
|
---|
| 364 | @return The effect parameter that matches the semantic. This pointer may be
|
---|
| 365 | NULL if no effect parameter matches the given semantic. */
|
---|
| 366 | virtual FCDEffectParameter* FindParameterBySemantic(const string& semantic);
|
---|
| 367 |
|
---|
| 368 | /** Retrieves a subset of the effect parameter list.
|
---|
| 369 | Look for effect parameters with the correct semantic.
|
---|
| 370 | This function searches through the effect profile and the level of abstractions below.
|
---|
| 371 | @param semantic The effect parameter semantic to match.
|
---|
| 372 | @param parameters The list of parameters to fill in. This list is not cleared. */
|
---|
| 373 | virtual void FindParametersBySemantic(const string& semantic, FCDEffectParameterList& parameters);
|
---|
| 374 |
|
---|
| 375 | /** Retrieves a subset of the effect parameter list.
|
---|
| 376 | Look for effect parameters with the correct reference.
|
---|
| 377 | This function searches through the effect profile and the level of abstractions below.
|
---|
| 378 | @param reference The effect parameter reference to match. In the case of effect
|
---|
| 379 | parameter, the reference is replaced by the sub-id.
|
---|
| 380 | @param parameters The list of parameters to fill in. This list is not cleared. */
|
---|
| 381 | virtual void FindParametersByReference(const string& reference, FCDEffectParameterList& parameters);
|
---|
| 382 |
|
---|
| 383 | /** [INTERNAL] Clones the COMMON profile effect.
|
---|
| 384 | You will need release the cloned effect directly, by deleting the pointer.
|
---|
| 385 | @param newParent The effect that contains the cloned effect profile.
|
---|
| 386 | @return The cloned effect profile. You will must delete this pointer. */
|
---|
| 387 | virtual FCDEffectProfile* Clone(FCDEffect* newParent);
|
---|
| 388 |
|
---|
| 389 | /** [INTERNAL] Flattens the profile.
|
---|
| 390 | Does nothing on the common profile. */
|
---|
| 391 | virtual void Flatten() {}
|
---|
| 392 |
|
---|
| 393 | /** [INTERNAL] Reads in the \<profile_COMMON\> element from a given COLLADA XML tree node.
|
---|
| 394 | For COLLADA 1.3 backward-compatibility, this function can also read in \<material\> elements.
|
---|
| 395 | @param baseNode The COLLADA XML tree node.
|
---|
| 396 | @return The status of the import. If the status is not successful,
|
---|
| 397 | it may be dangerous to extract information from the effect profile.*/
|
---|
| 398 | virtual FUStatus LoadFromXML(xmlNode* baseNode);
|
---|
| 399 |
|
---|
| 400 | /** [INTERNAL] Writes out the \<profile_COMMON\> element to the given COLLADA XML tree node.
|
---|
| 401 | @param parentNode The COLLADA XML parent node in which to insert the effect profile.
|
---|
| 402 | @return The created element XML tree node. */
|
---|
| 403 | virtual xmlNode* WriteToXML(xmlNode* parentNode) const;
|
---|
| 404 |
|
---|
| 405 | private:
|
---|
| 406 | xmlNode* WriteColorTextureParameterToXML(xmlNode* parentNode, const char* parameterNodeName, const FMVector3& value, const FCDTextureList& textureBucket) const;
|
---|
| 407 | xmlNode* WriteFloatTextureParameterToXML(xmlNode* parentNode, const char* parameterNodeName, const float& value, const FCDTextureList& textureBucket) const;
|
---|
| 408 | xmlNode* WriteTextureParameterToXML(xmlNode* parentNode, const FCDTextureList& textureBucket) const;
|
---|
| 409 |
|
---|
| 410 | FUStatus ParseColorTextureParameter(xmlNode* parameterNode, FMVector3& value, FCDTextureList& textureBucket);
|
---|
| 411 | FUStatus ParseFloatTextureParameter(xmlNode* parameterNode, float& value, FCDTextureList& textureBucket);
|
---|
| 412 | FUStatus ParseSimpleTextureParameter(xmlNode* parameterNode, FCDTextureList& textureBucket);
|
---|
| 413 | };
|
---|
| 414 |
|
---|
| 415 | #endif //_FCD_MATERIAL_STANDARD_H_
|
---|
| 416 |
|
---|