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 FCDTexture.h
|
---|
14 | This file contains the FCDTexture class.
|
---|
15 | */
|
---|
16 |
|
---|
17 | #ifndef _FCD_TEXTURE_H_
|
---|
18 | #define _FCD_TEXTURE_H_
|
---|
19 |
|
---|
20 | #include "FCDocument/FCDEntity.h"
|
---|
21 | #include "FUtils/FUDaeEnum.h"
|
---|
22 |
|
---|
23 | class FCDocument;
|
---|
24 | class FCDEffectParameter;
|
---|
25 | class FCDEffectParameterInt;
|
---|
26 | class FCDEffectParameterList;
|
---|
27 | class FCDImage;
|
---|
28 |
|
---|
29 | /**
|
---|
30 | A COLLADA texture.
|
---|
31 |
|
---|
32 | Textures are used by the COMMON profile materials. For COLLADA 1.3 backward
|
---|
33 | compatibility, the textures may also be entities contained within
|
---|
34 | the material library. The ColladaFX profiles use the FCDEffectParameterSampler
|
---|
35 | and the FCDEffectParameterSurface classes, instead, to hold the texturing information.
|
---|
36 |
|
---|
37 | Textures hold the information necessary to place an image onto polygon sets.
|
---|
38 | This information includes: which texture coordinate set to use, which image
|
---|
39 | contains the texels, the blend mode, the components of the texture matrix, etc.
|
---|
40 |
|
---|
41 | Most of the texturing information does not belong to COLLADA and is specific to
|
---|
42 | either Maya or 3dsMax.
|
---|
43 |
|
---|
44 | @ingroup FCDEffect
|
---|
45 | */
|
---|
46 | class FCOLLADA_EXPORT FCDTexture : public FCDEntity
|
---|
47 | {
|
---|
48 | private:
|
---|
49 | DeclareObjectType;
|
---|
50 |
|
---|
51 | FUDaeTextureChannel::Channel textureChannel; // COLLADA 1.3 backward compatibility
|
---|
52 | FCDImage* image;
|
---|
53 | string subId;
|
---|
54 |
|
---|
55 | // Always preset, this parameter hold the map channel/uv set index
|
---|
56 | FCDEffectParameterInt* set;
|
---|
57 |
|
---|
58 | // Texture color multiplier
|
---|
59 | float multiplier; // Max-specific
|
---|
60 |
|
---|
61 | // Placement parameters. Yes, there's a ton of them [Maya-only]
|
---|
62 | bool hasProjection3D;
|
---|
63 | bool hasPlacement2D;
|
---|
64 | FUDaeBlendMode::Mode blendMode;
|
---|
65 |
|
---|
66 | // 2D placement [Maya-only]
|
---|
67 | float wrapU, wrapV, mirrorU, mirrorV, stagger, fast; // animated, but should really be booleans
|
---|
68 | float coverageU, coverageV, translateFrameU, translateFrameV, rotateFrame;
|
---|
69 | float repeatU, repeatV, offsetU, offsetV, rotateUV, noiseU, noiseV;
|
---|
70 |
|
---|
71 | // 3D projection [Maya-only]
|
---|
72 | FMMatrix44 projectionMatrix;
|
---|
73 | fstring projectionType;
|
---|
74 |
|
---|
75 | public:
|
---|
76 | /** Constructor: do not use directly.
|
---|
77 | Instead, use the FCDEffectStandard::AddTexture function.
|
---|
78 | @param document The COLLADA document that owns this texture. */
|
---|
79 | FCDTexture(FCDocument* document);
|
---|
80 |
|
---|
81 | /** Destructor: do not use directly.
|
---|
82 | Instead, use the FCDEffectStandard::ReleaseTexture function. */
|
---|
83 | virtual ~FCDTexture();
|
---|
84 |
|
---|
85 | /** Retrieves the type of the entity class.
|
---|
86 | This function is part of the FCDEntity interface and is used
|
---|
87 | for COLLADA 1.3 backward compatibility.
|
---|
88 | @return The entity class type: TEXTURE. */
|
---|
89 | virtual Type GetType() const { return TEXTURE; }
|
---|
90 |
|
---|
91 | /** Retrieves which texture channel to use for this texture.
|
---|
92 | As it is directly tied in with which buckets holds this texture, you
|
---|
93 | cannot modify this value. Instead, create a new texture in the correct
|
---|
94 | bucket of the FCDEffectStandard object.
|
---|
95 | @return The texture channel. */
|
---|
96 | FUDaeTextureChannel::Channel GetTextureChannel() const { return textureChannel; }
|
---|
97 |
|
---|
98 | /** Retrieves the image information for this texture.
|
---|
99 | @return The image. This pointer will be NULL if this texture is not yet
|
---|
100 | tied to a valid image. */
|
---|
101 | FCDImage* GetImage() { return image; }
|
---|
102 | const FCDImage* GetImage() const { return image; } /**< See above. */
|
---|
103 |
|
---|
104 | /** Sets the image to be used with this texture.
|
---|
105 | @param _image An image. */
|
---|
106 | void SetImage(FCDImage* _image) { image = _image; }
|
---|
107 |
|
---|
108 | /** Retrieves the texture coordinate set to use with this texture.
|
---|
109 | This information is duplicated from the material instance abstraction level.
|
---|
110 | @return The effect parameter containing the set. */
|
---|
111 | FCDEffectParameterInt* GetSet() { return set; }
|
---|
112 | const FCDEffectParameterInt* GetSet() const { return set; } /**< See above. */
|
---|
113 |
|
---|
114 | /** Retrieves the blend mode to use if this texture is not the first one
|
---|
115 | within its channel's bucket.
|
---|
116 | @return The blend mode. */
|
---|
117 | FUDaeBlendMode::Mode GetBlendMode() const { return blendMode; }
|
---|
118 |
|
---|
119 | /** Sets the blend mode to use if this texture is not the first one
|
---|
120 | within its channel's bucket.
|
---|
121 | @param mode The blend mode. */
|
---|
122 | void SetBlendMode(FUDaeBlendMode::Mode mode) { blendMode = mode; }
|
---|
123 |
|
---|
124 | /** @deprecated Retrieves the sub-id of the texture.
|
---|
125 | @return The sub-id. */
|
---|
126 | const string& GetSubId() const { return subId; }
|
---|
127 |
|
---|
128 | /** @deprecated Sets the sub-id of the texture.
|
---|
129 | @param _subId The sub-id. */
|
---|
130 | void SetSubId(const string& _subId) { subId = _subId; }
|
---|
131 |
|
---|
132 | /** Retrieves the generic multiplier to apply on the texture.
|
---|
133 | This parameter is specific to ColladaMax. The meaning of this parameter
|
---|
134 | depends on the channel that the texture belongs to.
|
---|
135 | This value is animatable.
|
---|
136 | @return The generic multiplier. */
|
---|
137 | float& GetMultiplier() { return multiplier; }
|
---|
138 | const float& GetMultiplier() const { return multiplier; } /**< See above. */
|
---|
139 |
|
---|
140 | /** Sets the generic multiplier.
|
---|
141 | This parameter is specific to ColladaMax. The meaning of this parameter
|
---|
142 | depends on the channel that the texture belongs to.
|
---|
143 | @param _multiplier The generic multiplier. */
|
---|
144 | void SetMultiplier(float _multiplier) { multiplier = _multiplier; }
|
---|
145 |
|
---|
146 | /** Retrieves whether the texturing information includes the
|
---|
147 | ColladaMaya-specific 2D placement parameters.
|
---|
148 | @return Whether the ColladaMaya-specific 2D placement parameters are valid. */
|
---|
149 | bool HasPlacement2D() const { return hasPlacement2D; }
|
---|
150 |
|
---|
151 | /** Removes the ColladaMaya-specific 2D placement parameters and resets them. */
|
---|
152 | void ClearPlacement2D();
|
---|
153 |
|
---|
154 | /** Retrieves whether to wrap the U texture coordinates.
|
---|
155 | This parameter is specific to ColladaMaya. This value is a float because
|
---|
156 | it is animatable: it should be interpreted as a boolean.
|
---|
157 | @return Whether to wrap the U texture coordinates. */
|
---|
158 | float& GetWrapU() { return wrapU; }
|
---|
159 | const float& GetWrapU() const { return wrapU; } /**< See above. */
|
---|
160 |
|
---|
161 | /** Sets whether to wrap the U texture coordinates.
|
---|
162 | This parameter is specific to ColladaMaya.
|
---|
163 | @param _wrapU Whether to wrap the U texture coordinate. */
|
---|
164 | void SetWrapU(bool _wrapU) { wrapU = _wrapU ? 1.0f : 0.0f; hasPlacement2D = true; }
|
---|
165 |
|
---|
166 | /** Retrieves whether to wrap the V texture coordinates.
|
---|
167 | This parameter is specific to ColladaMaya. This value is a float because
|
---|
168 | it is animatable: it should be interpreted as a boolean.
|
---|
169 | @return Whether to wrap the V texture coordinates. */
|
---|
170 | float& GetWrapV() { return wrapV; }
|
---|
171 | const float& GetWrapV() const { return wrapV; } /**< See above. */
|
---|
172 |
|
---|
173 | /** Sets whether to wrap the V texture coordinates.
|
---|
174 | This parameter is specific to ColladaMaya.
|
---|
175 | @param _wrapV Whether to wrap the V texture coordinate. */
|
---|
176 | void SetWrapV(bool _wrapV) { wrapV = _wrapV ? 1.0f : 0.0f; hasPlacement2D = true; }
|
---|
177 |
|
---|
178 | /** Retrieves whether to mirror the U texture coordinates.
|
---|
179 | This parameter is specific to ColladaMaya. This value is a float
|
---|
180 | because it is animatable: it should be interpreted as a boolean.
|
---|
181 | @return Whether to mirror the U texture coordinate. */
|
---|
182 | float& GetMirrorU() { return mirrorU; }
|
---|
183 | const float& GetMirrorU() const { return mirrorU; } /**< See above. */
|
---|
184 |
|
---|
185 | /** Sets whether to mirror the U texture coordinates.
|
---|
186 | This parameter is specific to ColladaMaya.
|
---|
187 | @param _mirrorU Whether to mirror the U texture coordinates. */
|
---|
188 | void SetMirrorU(bool _mirrorU) { mirrorU = _mirrorU ? 1.0f : 0.0f; hasPlacement2D = true; }
|
---|
189 |
|
---|
190 | /** Retrieves whether to mirror the V texture coordinates.
|
---|
191 | This parameter is specific to ColladaMaya. This value is a float
|
---|
192 | because it is animatable: it should be interpreted as a boolean.
|
---|
193 | @return Whether to mirror the V texture coordinate. */
|
---|
194 | float& GetMirrorV() { return mirrorV; }
|
---|
195 | const float& GetMirrorV() const { return mirrorV; } /**< See above. */
|
---|
196 |
|
---|
197 | /** Sets whether to mirror the V texture coordinates.
|
---|
198 | This parameter is specific to ColladaMaya.
|
---|
199 | @param _mirrorV Whether to mirror the V texture coordinates. */
|
---|
200 | void SetMirrorV(bool _mirrorV) { mirrorV = _mirrorV ? 1.0f : 0.0f; hasPlacement2D = true; }
|
---|
201 |
|
---|
202 | /** Retrieves whether to stagger the texture.
|
---|
203 | This parameter is specific to ColladaMaya. This value is a float
|
---|
204 | because it is animatable: it should be interpreted as a boolean.
|
---|
205 | @return Whether to stagger the texture. */
|
---|
206 | float& GetStagger() { return stagger; }
|
---|
207 | const float& GetStagger() const { return stagger; } /**< See above. */
|
---|
208 |
|
---|
209 | /** Sets whether to stagger the texture.
|
---|
210 | This parameter is specific to ColladaMaya.
|
---|
211 | @param _stagger Whether to stagger the texture. */
|
---|
212 | void SetStagger(bool _stagger) { stagger = _stagger ? 1.0f : 0.0f; hasPlacement2D = true; }
|
---|
213 |
|
---|
214 | /** Retrieves the 'fast' flag.
|
---|
215 | This parameter is specific to ColladaMaya. This value is a float
|
---|
216 | because it is animatable: it should be interpreted as a boolean.
|
---|
217 | This parameter has no meaning outside of Maya.
|
---|
218 | @return The 'fast' flag. */
|
---|
219 | float& GetFast() { return fast; }
|
---|
220 | const float& GetFast() const { return fast; } /**< See above. */
|
---|
221 |
|
---|
222 | /** Sets the 'fast' flag.
|
---|
223 | This parameter is specific to ColladaMaya and has no meaning
|
---|
224 | outside of Maya.
|
---|
225 | @param _fast The 'fast' flag. */
|
---|
226 | void SetFast(bool _fast) { fast = _fast ? 1.0f : 0.0f; hasPlacement2D = true; }
|
---|
227 |
|
---|
228 | /** Retrieves the scale factor of the texture frame, in the U coordinates.
|
---|
229 | This parameter is specific to ColladaMaya.
|
---|
230 | This value is animatable. For more information on this parameter,
|
---|
231 | check the Maya documentation.
|
---|
232 | @return The scale factor. */
|
---|
233 | float& GetCoverageU() { return coverageU; }
|
---|
234 | const float& GetCoverageU() const { return coverageU; } /**< See above. */
|
---|
235 |
|
---|
236 | /** Sets the scale factor of the texture frame, in the U coordinates.
|
---|
237 | This parameter is specific to ColladaMaya.
|
---|
238 | @param _coverageU The scale factor. */
|
---|
239 | void SetCoverageU(float _coverageU) { coverageU = _coverageU; hasPlacement2D = true; }
|
---|
240 |
|
---|
241 | /** Retrieves the scale factor of the texture frame, in the V coordinates.
|
---|
242 | This parameter is specific to ColladaMaya.
|
---|
243 | This value is animatable. For more information on this parameter,
|
---|
244 | check the Maya documentation.
|
---|
245 | @return The scale factor. */
|
---|
246 | float& GetCoverageV() { return coverageV; }
|
---|
247 | const float& GetCoverageV() const { return coverageV; } /**< See above. */
|
---|
248 |
|
---|
249 | /** Sets the scale factor of the texture frame, in the V coordinates.
|
---|
250 | This parameter is specific to ColladaMaya.
|
---|
251 | @param _coverageV The scale factor. */
|
---|
252 | void SetCoverageV(float _coverageV) { coverageV = _coverageV; hasPlacement2D = true; }
|
---|
253 |
|
---|
254 | /** Retrieves the translation of the texture frame, in the U coordinate.
|
---|
255 | This parameter is specific to ColladaMaya.
|
---|
256 | This value is animatable. For more information on this parameter,
|
---|
257 | check the Maya documentation.
|
---|
258 | @return The translation offset. */
|
---|
259 | float& GetTranslateFrameU() { return translateFrameU; }
|
---|
260 | const float& GetTranslateFrameU() const { return translateFrameU; } /**< See above. */
|
---|
261 |
|
---|
262 | /** Sets the translation of the texture frame, in the U coordinate.
|
---|
263 | This parameter is specific to ColladaMaya.
|
---|
264 | For more information on this parameter, check the Maya documentation.
|
---|
265 | @param _translateFrameU The translation offset. */
|
---|
266 | void SetTranslateFrameU(float _translateFrameU) { translateFrameU = _translateFrameU; hasPlacement2D = true; }
|
---|
267 |
|
---|
268 | /** Retrieves the translation of the texture frame, in the V coordinate.
|
---|
269 | This parameter is specific to ColladaMaya.
|
---|
270 | This value is animatable. For more information on this parameter,
|
---|
271 | check the Maya documentation.
|
---|
272 | @return The translation offset. */
|
---|
273 | float& GetTranslateFrameV() { return translateFrameV; }
|
---|
274 | const float& GetTranslateFrameV() const { return translateFrameV; } /**< See above. */
|
---|
275 |
|
---|
276 | /** Sets the translation of the texture frame, in the V coordinate.
|
---|
277 | This parameter is specific to ColladaMaya.
|
---|
278 | For more information on this parameter, check the Maya documentation.
|
---|
279 | @param _translateFrameV The translation offset. */
|
---|
280 | void SetTranslateFrameV(float _translateFrameV) { translateFrameV = _translateFrameV; hasPlacement2D = true; }
|
---|
281 |
|
---|
282 | /** Retrieves the angle of rotation of the texture frame.
|
---|
283 | This parameter is specific to ColladaMaya.
|
---|
284 | This value is animatable. For more information on this parameter,
|
---|
285 | check the Maya documentation.
|
---|
286 | @return The angle of rotation (in degrees). */
|
---|
287 | float& GetRotateFrame() { return rotateFrame; }
|
---|
288 | const float& GetRotateFrame() const { return rotateFrame; } /**< See above. */
|
---|
289 |
|
---|
290 | /** Sets the angle of rotation of the texture frame.
|
---|
291 | This parameter is specific to ColladaMaya.
|
---|
292 | For more information on this parameter, check the Maya documentation.
|
---|
293 | @param _rotateFrame The angle of rotation (in degrees). */
|
---|
294 | void SetRotateFrame(float _rotateFrame) { rotateFrame = _rotateFrame; hasPlacement2D = true; }
|
---|
295 |
|
---|
296 | /** Retrieves the scale factor applied on the U coordinates of the rendered polygons.
|
---|
297 | This parameter is specific to ColladaMaya. This value is animatable.
|
---|
298 | @return The scale factor. */
|
---|
299 | float& GetRepeatU() { return repeatU; }
|
---|
300 | const float& GetRepeatU() const { return repeatU; } /**< See above. */
|
---|
301 |
|
---|
302 | /** Sets the scale factor applied on the U coordinates of the rendered polygons.
|
---|
303 | This parameter is specific to ColladaMaya.
|
---|
304 | @param _repeatU The scale factor. */
|
---|
305 | void SetRepeatU(float _repeatU) { repeatU = _repeatU; hasPlacement2D = true; }
|
---|
306 |
|
---|
307 | /** Retrieves the scale factor applied on the V coordinates of the rendered polygons.
|
---|
308 | This parameter is specific to ColladaMaya. This value is animatable.
|
---|
309 | @return The scale factor. */
|
---|
310 | float& GetRepeatV() { return repeatV; }
|
---|
311 | const float& GetRepeatV() const { return repeatV; } /**< See above. */
|
---|
312 |
|
---|
313 | /** Sets the scale factor applied on the V coordinates of the rendered polygons.
|
---|
314 | This parameter is specific to ColladaMaya.
|
---|
315 | @param _repeatV The scale factor. */
|
---|
316 | void SetRepeatV(float _repeatV) { repeatV = _repeatV; hasPlacement2D = true; }
|
---|
317 |
|
---|
318 | /** Retrieves the translation offset applied on the U coordinates of the rendered polygons.
|
---|
319 | This parameter is specific to ColladaMaya. This value is animatable.
|
---|
320 | @return The translation offset. */
|
---|
321 | float& GetOffsetU() { return offsetU; }
|
---|
322 | const float& GetOffsetU() const { return offsetU; } /**< See above. */
|
---|
323 |
|
---|
324 | /** Sets the translation offset applied on the U coordinates of the rendered polygons.
|
---|
325 | This parameter is specific to ColladaMaya.
|
---|
326 | @param _offsetU The translation offset. */
|
---|
327 | void SetOffsetU(float _offsetU) { offsetU = _offsetU; hasPlacement2D = true; }
|
---|
328 |
|
---|
329 | /** Retrieves the translation offset applied on the V coordinates of the rendered polygons.
|
---|
330 | This parameter is specific to ColladaMaya. This value is animatable.
|
---|
331 | @return The translation offset. */
|
---|
332 | float& GetOffsetV() { return offsetV; }
|
---|
333 | const float& GetOffsetV() const { return offsetV; } /**< See above. */
|
---|
334 |
|
---|
335 | /** Sets the translation offset applied on the V coordinates of the rendered polygons.
|
---|
336 | This parameter is specific to ColladaMaya.
|
---|
337 | @param _offsetV The translation offset. */
|
---|
338 | void SetOffsetV(float _offsetV) { offsetV = _offsetV; hasPlacement2D = true; }
|
---|
339 |
|
---|
340 | /** Retrieves the rotation angle applied on the texture coordinates of the rendered polygons.
|
---|
341 | This parameter is specific to ColladaMaya. This value is animatable.
|
---|
342 | @return The rotation angle (in degrees). */
|
---|
343 | float& GetRotateUV() { return rotateUV; }
|
---|
344 | const float& GetRotateUV() const { return rotateUV; } /**< See above. */
|
---|
345 |
|
---|
346 | /** Sets the rotation angle applied on the texture coordinates of the rendered polygons.
|
---|
347 | This parameter is specific to ColladaMaya. This value is animatable.
|
---|
348 | @param _rotateUV The rotation angle (in degrees). */
|
---|
349 | void SetRotateUV(float _rotateUV) { rotateUV = _rotateUV; hasPlacement2D = true; }
|
---|
350 |
|
---|
351 | /** Retrieves the maxmimum amount of noise to add to each of the U coordinates of the rendered polygons.
|
---|
352 | This parameter is specific to ColladaMaya. This value is animatable.
|
---|
353 | @return The maxmimum amount of noise. */
|
---|
354 | float& GetNoiseU() { return noiseU; }
|
---|
355 | const float& GetNoiseU() const { return noiseU; } /**< See above. */
|
---|
356 |
|
---|
357 | /** Sets the maximum amount of noise to add to each of the U coordinates of the rendered polygons.
|
---|
358 | This parameter is specific to ColladaMaya.
|
---|
359 | @param _noiseU The maximum amount of noise. */
|
---|
360 | void SetNoiseU(float _noiseU) { noiseU = _noiseU; hasPlacement2D = true; }
|
---|
361 |
|
---|
362 | /** Retrieves the maxmimum amount of noise to add to each of the V coordinates of the rendered polygons.
|
---|
363 | This parameter is specific to ColladaMaya. This value is animatable.
|
---|
364 | @return The maxmimum amount of noise. */
|
---|
365 | float& GetNoiseV() { return noiseV; }
|
---|
366 | const float& GetNoiseV() const { return noiseV; } /**< See above. */
|
---|
367 |
|
---|
368 | /** Sets the maximum amount of noise to add to each of the V coordinates of the rendered polygons.
|
---|
369 | This parameter is specific to ColladaMaya.
|
---|
370 | @param _noiseV The maximum amount of noise. */
|
---|
371 | void SetNoiseV(float _noiseV) { noiseV = _noiseV; hasPlacement2D = true; }
|
---|
372 |
|
---|
373 | /** Retrieves whether the texturing information includes the
|
---|
374 | ColladaMaya-specific 3D projection parameters.
|
---|
375 | @return Whether the ColladaMaya-specific 3D projection parameters are valid. */
|
---|
376 | bool HasProjection3D() const { return hasProjection3D; }
|
---|
377 |
|
---|
378 | /** Removes the ColladaMaya-specific 3D projection parameters and resets them. */
|
---|
379 | void ClearProjection3D();
|
---|
380 |
|
---|
381 | /** Retrieves the texture projection matrix.
|
---|
382 | This matrix transforms the 3D texture coordinates into valid 2D texture coordinates.
|
---|
383 | This parameter is specific to ColladaMaya.
|
---|
384 | @return The texture projection matrix. */
|
---|
385 | FMMatrix44& GetProjectionMatrix() { return projectionMatrix; }
|
---|
386 | const FMMatrix44& GetProjectionMatrix() const { return projectionMatrix; } /**< See above. */
|
---|
387 |
|
---|
388 | /** Sets the texture projection matrix.
|
---|
389 | This matrix transforms the 3D texture coordinates into valid 2D texture coordinates.
|
---|
390 | This parameter is specific to ColladaMaya.
|
---|
391 | @param matrix The texture projection matrix. */
|
---|
392 | void SetProjectionMatrix(const FMMatrix44& matrix) { projectionMatrix = matrix; hasProjection3D = true; }
|
---|
393 |
|
---|
394 | /** Retrieves the type of projection to use on the 3D texture coordinates.
|
---|
395 | This parameter is specific to ColladaMaya.
|
---|
396 | @return The type string. */
|
---|
397 | const fstring& GetProjectionType() const { return projectionType; }
|
---|
398 |
|
---|
399 | /** Sets the type of projection to use on the 3D texture coordinates.
|
---|
400 | This paramter is specific to ColladaMaya.
|
---|
401 | @param type The type string. */
|
---|
402 | void SetProjectionType(const fstring& type) { projectionType = type; hasProjection3D = true; }
|
---|
403 |
|
---|
404 | /** Retrieves an effect parameter.
|
---|
405 | Looks for the effect parameter with the correct semantic, in order to bind or override its value.
|
---|
406 | This function compares the local effect parameters with the given semantic.
|
---|
407 | @param semantic The effect parameter semantic to match.
|
---|
408 | @return The effect parameter that matches the semantic. This pointer may be
|
---|
409 | NULL if no effect parameter matches the given semantic. */
|
---|
410 | FCDEffectParameter* FindParameterBySemantic(const string& semantic);
|
---|
411 |
|
---|
412 | /** Retrieves a subset of the local effect parameter list.
|
---|
413 | Look for local effect parameters with the correct semantic.
|
---|
414 | This function searches through the effect profile and the level of abstractions below.
|
---|
415 | @param semantic The effect parameter semantic to match.
|
---|
416 | @param parameters The list of parameters to fill in. This list is not cleared. */
|
---|
417 | void FindParametersBySemantic(const string& semantic, FCDEffectParameterList& parameters);
|
---|
418 |
|
---|
419 | /** Retrieves a subset of the local effect parameter list.
|
---|
420 | Look for the local effect parameter with the correct reference.
|
---|
421 | @param reference The effect parameter reference to match.
|
---|
422 | @param parameters The list of parameters to fill in. This list is not cleared. */
|
---|
423 | void FindParametersByReference(const string& reference, FCDEffectParameterList& parameters);
|
---|
424 |
|
---|
425 | /** [INTERNAL] Clones the texture.
|
---|
426 | Does not clone the image: both texture objects will point to the same image object.
|
---|
427 | @return The cloned texture. This pointer will never be NULL. */
|
---|
428 | FCDTexture* Clone();
|
---|
429 |
|
---|
430 | /** [INTERNAL] Reads in the texture from a given COLLADA XML tree node.
|
---|
431 | @param textureNode The COLLADA XML tree node.
|
---|
432 | @return The status of the import. If the status is not successful,
|
---|
433 | it may be dangerous to extract information from the texture.*/
|
---|
434 | FUStatus LoadFromTextureXML(xmlNode* textureNode);
|
---|
435 |
|
---|
436 | /** [INTERNAL] Reads in the texture from a given COLLADA XML tree node.
|
---|
437 | This function is useful only for COLLADA 1.3 backward compatibility.
|
---|
438 | @param textureNode The COLLADA XML tree node.
|
---|
439 | @return The status of the import. If the status is not successful,
|
---|
440 | it may be dangerous to extract information from the texture.*/
|
---|
441 | virtual FUStatus LoadFromXML(xmlNode* textureNode);
|
---|
442 |
|
---|
443 | /** [INTERNAL] Writes out the texture to the given COLLADA XML tree node.
|
---|
444 | @param parentNode The COLLADA XML parent node in which to insert the texture.
|
---|
445 | @return The created element XML tree node. */
|
---|
446 | virtual xmlNode* WriteToXML(xmlNode* parentNode);
|
---|
447 |
|
---|
448 | private:
|
---|
449 | // Read in the Maya-specific texture placement parameters and look for a texture projection program
|
---|
450 | FUStatus LoadPlacementXML(xmlNode* techniqueNode);
|
---|
451 | };
|
---|
452 |
|
---|
453 | #endif // _FCD_TEXTURE_H_
|
---|