• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Copyright 2006 Sony Computer Entertainment Inc.
3 *
4 * Licensed under the MIT Open Source License, for details please see license.txt or the website
5 * http://www.opensource.org/licenses/mit-license.php
6 *
7 */
8 
9 #ifndef __domProfile_COMMON_h__
10 #define __domProfile_COMMON_h__
11 
12 #include <dae/daeDocument.h>
13 #include <dom/domTypes.h>
14 #include <dom/domElements.h>
15 
16 #include <dom/domFx_profile_abstract.h>
17 #include <dom/domAsset.h>
18 #include <dom/domImage.h>
19 #include <dom/domExtra.h>
20 #include <dom/domCommon_newparam_type.h>
21 #include <dom/domCommon_color_or_texture_type.h>
22 #include <dom/domCommon_float_or_param_type.h>
23 #include <dom/domCommon_transparent_type.h>
24 class DAE;
25 
26 /**
27  * Opens a block of COMMON platform-specific data types and technique declarations.
28  */
29 class domProfile_COMMON : public domFx_profile_abstract
30 {
31 public:
getElementType()32 	virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::PROFILE_COMMON; }
ID()33 	static daeInt ID() { return 740; }
typeID()34 	virtual daeInt typeID() const { return ID(); }
35 public:
36 	class domTechnique;
37 
38 	typedef daeSmartRef<domTechnique> domTechniqueRef;
39 	typedef daeTArray<domTechniqueRef> domTechnique_Array;
40 
41 /**
42  * Holds a description of the textures, samplers, shaders, parameters, and
43  * passes necessary for rendering this effect using one method.
44  */
45 	class domTechnique : public daeElement
46 	{
47 	public:
getElementType()48 		virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::TECHNIQUE; }
ID()49 		static daeInt ID() { return 741; }
typeID()50 		virtual daeInt typeID() const { return ID(); }
51 	public:
52 		class domConstant;
53 
54 		typedef daeSmartRef<domConstant> domConstantRef;
55 		typedef daeTArray<domConstantRef> domConstant_Array;
56 
57 		class domConstant : public daeElement
58 		{
59 		public:
getElementType()60 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::CONSTANT; }
ID()61 			static daeInt ID() { return 742; }
typeID()62 			virtual daeInt typeID() const { return ID(); }
63 
64 		protected:  // Elements
65 			domCommon_color_or_texture_typeRef elemEmission;
66 			domCommon_color_or_texture_typeRef elemReflective;
67 			domCommon_float_or_param_typeRef elemReflectivity;
68 			domCommon_transparent_typeRef elemTransparent;
69 			domCommon_float_or_param_typeRef elemTransparency;
70 			domCommon_float_or_param_typeRef elemIndex_of_refraction;
71 
72 		public:	//Accessors and Mutators
73 			/**
74 			 * Gets the emission element.
75 			 * @return a daeSmartRef to the emission element.
76 			 */
getEmission()77 			const domCommon_color_or_texture_typeRef getEmission() const { return elemEmission; }
78 			/**
79 			 * Gets the reflective element.
80 			 * @return a daeSmartRef to the reflective element.
81 			 */
getReflective()82 			const domCommon_color_or_texture_typeRef getReflective() const { return elemReflective; }
83 			/**
84 			 * Gets the reflectivity element.
85 			 * @return a daeSmartRef to the reflectivity element.
86 			 */
getReflectivity()87 			const domCommon_float_or_param_typeRef getReflectivity() const { return elemReflectivity; }
88 			/**
89 			 * Gets the transparent element.
90 			 * @return a daeSmartRef to the transparent element.
91 			 */
getTransparent()92 			const domCommon_transparent_typeRef getTransparent() const { return elemTransparent; }
93 			/**
94 			 * Gets the transparency element.
95 			 * @return a daeSmartRef to the transparency element.
96 			 */
getTransparency()97 			const domCommon_float_or_param_typeRef getTransparency() const { return elemTransparency; }
98 			/**
99 			 * Gets the index_of_refraction element.
100 			 * @return a daeSmartRef to the index_of_refraction element.
101 			 */
getIndex_of_refraction()102 			const domCommon_float_or_param_typeRef getIndex_of_refraction() const { return elemIndex_of_refraction; }
103 		protected:
104 			/**
105 			 * Constructor
106 			 */
domConstant(DAE & dae)107 			domConstant(DAE& dae) : daeElement(dae), elemEmission(), elemReflective(), elemReflectivity(), elemTransparent(), elemTransparency(), elemIndex_of_refraction() {}
108 			/**
109 			 * Destructor
110 			 */
~domConstant()111 			virtual ~domConstant() {}
112 			/**
113 			 * Overloaded assignment operator
114 			 */
115 			virtual domConstant &operator=( const domConstant &cpy ) { (void)cpy; return *this; }
116 
117 		public: // STATIC METHODS
118 			/**
119 			 * Creates an instance of this class and returns a daeElementRef referencing it.
120 			 * @return a daeElementRef referencing an instance of this object.
121 			 */
122 			static DLLSPEC daeElementRef create(DAE& dae);
123 			/**
124 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
125 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
126 			 * @return A daeMetaElement describing this COLLADA element.
127 			 */
128 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
129 		};
130 
131 		class domLambert;
132 
133 		typedef daeSmartRef<domLambert> domLambertRef;
134 		typedef daeTArray<domLambertRef> domLambert_Array;
135 
136 		class domLambert : public daeElement
137 		{
138 		public:
getElementType()139 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::LAMBERT; }
ID()140 			static daeInt ID() { return 743; }
typeID()141 			virtual daeInt typeID() const { return ID(); }
142 
143 		protected:  // Elements
144 			domCommon_color_or_texture_typeRef elemEmission;
145 			domCommon_color_or_texture_typeRef elemAmbient;
146 			domCommon_color_or_texture_typeRef elemDiffuse;
147 			domCommon_color_or_texture_typeRef elemReflective;
148 			domCommon_float_or_param_typeRef elemReflectivity;
149 			domCommon_transparent_typeRef elemTransparent;
150 			domCommon_float_or_param_typeRef elemTransparency;
151 			domCommon_float_or_param_typeRef elemIndex_of_refraction;
152 
153 		public:	//Accessors and Mutators
154 			/**
155 			 * Gets the emission element.
156 			 * @return a daeSmartRef to the emission element.
157 			 */
getEmission()158 			const domCommon_color_or_texture_typeRef getEmission() const { return elemEmission; }
159 			/**
160 			 * Gets the ambient element.
161 			 * @return a daeSmartRef to the ambient element.
162 			 */
getAmbient()163 			const domCommon_color_or_texture_typeRef getAmbient() const { return elemAmbient; }
164 			/**
165 			 * Gets the diffuse element.
166 			 * @return a daeSmartRef to the diffuse element.
167 			 */
getDiffuse()168 			const domCommon_color_or_texture_typeRef getDiffuse() const { return elemDiffuse; }
169 			/**
170 			 * Gets the reflective element.
171 			 * @return a daeSmartRef to the reflective element.
172 			 */
getReflective()173 			const domCommon_color_or_texture_typeRef getReflective() const { return elemReflective; }
174 			/**
175 			 * Gets the reflectivity element.
176 			 * @return a daeSmartRef to the reflectivity element.
177 			 */
getReflectivity()178 			const domCommon_float_or_param_typeRef getReflectivity() const { return elemReflectivity; }
179 			/**
180 			 * Gets the transparent element.
181 			 * @return a daeSmartRef to the transparent element.
182 			 */
getTransparent()183 			const domCommon_transparent_typeRef getTransparent() const { return elemTransparent; }
184 			/**
185 			 * Gets the transparency element.
186 			 * @return a daeSmartRef to the transparency element.
187 			 */
getTransparency()188 			const domCommon_float_or_param_typeRef getTransparency() const { return elemTransparency; }
189 			/**
190 			 * Gets the index_of_refraction element.
191 			 * @return a daeSmartRef to the index_of_refraction element.
192 			 */
getIndex_of_refraction()193 			const domCommon_float_or_param_typeRef getIndex_of_refraction() const { return elemIndex_of_refraction; }
194 		protected:
195 			/**
196 			 * Constructor
197 			 */
domLambert(DAE & dae)198 			domLambert(DAE& dae) : daeElement(dae), elemEmission(), elemAmbient(), elemDiffuse(), elemReflective(), elemReflectivity(), elemTransparent(), elemTransparency(), elemIndex_of_refraction() {}
199 			/**
200 			 * Destructor
201 			 */
~domLambert()202 			virtual ~domLambert() {}
203 			/**
204 			 * Overloaded assignment operator
205 			 */
206 			virtual domLambert &operator=( const domLambert &cpy ) { (void)cpy; return *this; }
207 
208 		public: // STATIC METHODS
209 			/**
210 			 * Creates an instance of this class and returns a daeElementRef referencing it.
211 			 * @return a daeElementRef referencing an instance of this object.
212 			 */
213 			static DLLSPEC daeElementRef create(DAE& dae);
214 			/**
215 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
216 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
217 			 * @return A daeMetaElement describing this COLLADA element.
218 			 */
219 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
220 		};
221 
222 		class domPhong;
223 
224 		typedef daeSmartRef<domPhong> domPhongRef;
225 		typedef daeTArray<domPhongRef> domPhong_Array;
226 
227 		class domPhong : public daeElement
228 		{
229 		public:
getElementType()230 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::PHONG; }
ID()231 			static daeInt ID() { return 744; }
typeID()232 			virtual daeInt typeID() const { return ID(); }
233 
234 		protected:  // Elements
235 			domCommon_color_or_texture_typeRef elemEmission;
236 			domCommon_color_or_texture_typeRef elemAmbient;
237 			domCommon_color_or_texture_typeRef elemDiffuse;
238 			domCommon_color_or_texture_typeRef elemSpecular;
239 			domCommon_float_or_param_typeRef elemShininess;
240 			domCommon_color_or_texture_typeRef elemReflective;
241 			domCommon_float_or_param_typeRef elemReflectivity;
242 			domCommon_transparent_typeRef elemTransparent;
243 			domCommon_float_or_param_typeRef elemTransparency;
244 			domCommon_float_or_param_typeRef elemIndex_of_refraction;
245 
246 		public:	//Accessors and Mutators
247 			/**
248 			 * Gets the emission element.
249 			 * @return a daeSmartRef to the emission element.
250 			 */
getEmission()251 			const domCommon_color_or_texture_typeRef getEmission() const { return elemEmission; }
252 			/**
253 			 * Gets the ambient element.
254 			 * @return a daeSmartRef to the ambient element.
255 			 */
getAmbient()256 			const domCommon_color_or_texture_typeRef getAmbient() const { return elemAmbient; }
257 			/**
258 			 * Gets the diffuse element.
259 			 * @return a daeSmartRef to the diffuse element.
260 			 */
getDiffuse()261 			const domCommon_color_or_texture_typeRef getDiffuse() const { return elemDiffuse; }
262 			/**
263 			 * Gets the specular element.
264 			 * @return a daeSmartRef to the specular element.
265 			 */
getSpecular()266 			const domCommon_color_or_texture_typeRef getSpecular() const { return elemSpecular; }
267 			/**
268 			 * Gets the shininess element.
269 			 * @return a daeSmartRef to the shininess element.
270 			 */
getShininess()271 			const domCommon_float_or_param_typeRef getShininess() const { return elemShininess; }
272 			/**
273 			 * Gets the reflective element.
274 			 * @return a daeSmartRef to the reflective element.
275 			 */
getReflective()276 			const domCommon_color_or_texture_typeRef getReflective() const { return elemReflective; }
277 			/**
278 			 * Gets the reflectivity element.
279 			 * @return a daeSmartRef to the reflectivity element.
280 			 */
getReflectivity()281 			const domCommon_float_or_param_typeRef getReflectivity() const { return elemReflectivity; }
282 			/**
283 			 * Gets the transparent element.
284 			 * @return a daeSmartRef to the transparent element.
285 			 */
getTransparent()286 			const domCommon_transparent_typeRef getTransparent() const { return elemTransparent; }
287 			/**
288 			 * Gets the transparency element.
289 			 * @return a daeSmartRef to the transparency element.
290 			 */
getTransparency()291 			const domCommon_float_or_param_typeRef getTransparency() const { return elemTransparency; }
292 			/**
293 			 * Gets the index_of_refraction element.
294 			 * @return a daeSmartRef to the index_of_refraction element.
295 			 */
getIndex_of_refraction()296 			const domCommon_float_or_param_typeRef getIndex_of_refraction() const { return elemIndex_of_refraction; }
297 		protected:
298 			/**
299 			 * Constructor
300 			 */
domPhong(DAE & dae)301 			domPhong(DAE& dae) : daeElement(dae), elemEmission(), elemAmbient(), elemDiffuse(), elemSpecular(), elemShininess(), elemReflective(), elemReflectivity(), elemTransparent(), elemTransparency(), elemIndex_of_refraction() {}
302 			/**
303 			 * Destructor
304 			 */
~domPhong()305 			virtual ~domPhong() {}
306 			/**
307 			 * Overloaded assignment operator
308 			 */
309 			virtual domPhong &operator=( const domPhong &cpy ) { (void)cpy; return *this; }
310 
311 		public: // STATIC METHODS
312 			/**
313 			 * Creates an instance of this class and returns a daeElementRef referencing it.
314 			 * @return a daeElementRef referencing an instance of this object.
315 			 */
316 			static DLLSPEC daeElementRef create(DAE& dae);
317 			/**
318 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
319 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
320 			 * @return A daeMetaElement describing this COLLADA element.
321 			 */
322 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
323 		};
324 
325 		class domBlinn;
326 
327 		typedef daeSmartRef<domBlinn> domBlinnRef;
328 		typedef daeTArray<domBlinnRef> domBlinn_Array;
329 
330 		class domBlinn : public daeElement
331 		{
332 		public:
getElementType()333 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::BLINN; }
ID()334 			static daeInt ID() { return 745; }
typeID()335 			virtual daeInt typeID() const { return ID(); }
336 
337 		protected:  // Elements
338 			domCommon_color_or_texture_typeRef elemEmission;
339 			domCommon_color_or_texture_typeRef elemAmbient;
340 			domCommon_color_or_texture_typeRef elemDiffuse;
341 			domCommon_color_or_texture_typeRef elemSpecular;
342 			domCommon_float_or_param_typeRef elemShininess;
343 			domCommon_color_or_texture_typeRef elemReflective;
344 			domCommon_float_or_param_typeRef elemReflectivity;
345 			domCommon_transparent_typeRef elemTransparent;
346 			domCommon_float_or_param_typeRef elemTransparency;
347 			domCommon_float_or_param_typeRef elemIndex_of_refraction;
348 
349 		public:	//Accessors and Mutators
350 			/**
351 			 * Gets the emission element.
352 			 * @return a daeSmartRef to the emission element.
353 			 */
getEmission()354 			const domCommon_color_or_texture_typeRef getEmission() const { return elemEmission; }
355 			/**
356 			 * Gets the ambient element.
357 			 * @return a daeSmartRef to the ambient element.
358 			 */
getAmbient()359 			const domCommon_color_or_texture_typeRef getAmbient() const { return elemAmbient; }
360 			/**
361 			 * Gets the diffuse element.
362 			 * @return a daeSmartRef to the diffuse element.
363 			 */
getDiffuse()364 			const domCommon_color_or_texture_typeRef getDiffuse() const { return elemDiffuse; }
365 			/**
366 			 * Gets the specular element.
367 			 * @return a daeSmartRef to the specular element.
368 			 */
getSpecular()369 			const domCommon_color_or_texture_typeRef getSpecular() const { return elemSpecular; }
370 			/**
371 			 * Gets the shininess element.
372 			 * @return a daeSmartRef to the shininess element.
373 			 */
getShininess()374 			const domCommon_float_or_param_typeRef getShininess() const { return elemShininess; }
375 			/**
376 			 * Gets the reflective element.
377 			 * @return a daeSmartRef to the reflective element.
378 			 */
getReflective()379 			const domCommon_color_or_texture_typeRef getReflective() const { return elemReflective; }
380 			/**
381 			 * Gets the reflectivity element.
382 			 * @return a daeSmartRef to the reflectivity element.
383 			 */
getReflectivity()384 			const domCommon_float_or_param_typeRef getReflectivity() const { return elemReflectivity; }
385 			/**
386 			 * Gets the transparent element.
387 			 * @return a daeSmartRef to the transparent element.
388 			 */
getTransparent()389 			const domCommon_transparent_typeRef getTransparent() const { return elemTransparent; }
390 			/**
391 			 * Gets the transparency element.
392 			 * @return a daeSmartRef to the transparency element.
393 			 */
getTransparency()394 			const domCommon_float_or_param_typeRef getTransparency() const { return elemTransparency; }
395 			/**
396 			 * Gets the index_of_refraction element.
397 			 * @return a daeSmartRef to the index_of_refraction element.
398 			 */
getIndex_of_refraction()399 			const domCommon_float_or_param_typeRef getIndex_of_refraction() const { return elemIndex_of_refraction; }
400 		protected:
401 			/**
402 			 * Constructor
403 			 */
domBlinn(DAE & dae)404 			domBlinn(DAE& dae) : daeElement(dae), elemEmission(), elemAmbient(), elemDiffuse(), elemSpecular(), elemShininess(), elemReflective(), elemReflectivity(), elemTransparent(), elemTransparency(), elemIndex_of_refraction() {}
405 			/**
406 			 * Destructor
407 			 */
~domBlinn()408 			virtual ~domBlinn() {}
409 			/**
410 			 * Overloaded assignment operator
411 			 */
412 			virtual domBlinn &operator=( const domBlinn &cpy ) { (void)cpy; return *this; }
413 
414 		public: // STATIC METHODS
415 			/**
416 			 * Creates an instance of this class and returns a daeElementRef referencing it.
417 			 * @return a daeElementRef referencing an instance of this object.
418 			 */
419 			static DLLSPEC daeElementRef create(DAE& dae);
420 			/**
421 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
422 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
423 			 * @return A daeMetaElement describing this COLLADA element.
424 			 */
425 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
426 		};
427 
428 
429 	protected:  // Attributes
430 /**
431  *  The id attribute is a text string containing the unique identifier of
432  * this element.  This value must be unique within the instance document.
433  * Optional attribute.
434  */
435 		xsID attrId;
436 /**
437  *  The sid attribute is a text string value containing the sub-identifier
438  * of this element.  This value must be unique within the scope of the parent
439  * element. Optional attribute.
440  */
441 		xsNCName attrSid;
442 
443 	protected:  // Elements
444 /**
445  *  The technique element may contain an asset element.  @see domAsset
446  */
447 		domAssetRef elemAsset;
448 		domImage_Array elemImage_array;
449 		domCommon_newparam_type_Array elemNewparam_array;
450 		domConstantRef elemConstant;
451 		domLambertRef elemLambert;
452 		domPhongRef elemPhong;
453 		domBlinnRef elemBlinn;
454 /**
455  *  The extra element may appear any number of times.  @see domExtra
456  */
457 		domExtra_Array elemExtra_array;
458 		/**
459 		 * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
460 		 */
461 		daeElementRefArray _contents;
462 		/**
463 		 * Used to preserve order in elements that have a complex content model.
464 		 */
465 		daeUIntArray       _contentsOrder;
466 
467 		/**
468 		 * Used to store information needed for some content model objects.
469 		 */
470 		daeTArray< daeCharArray * > _CMData;
471 
472 
473 	public:	//Accessors and Mutators
474 		/**
475 		 * Gets the id attribute.
476 		 * @return Returns a xsID of the id attribute.
477 		 */
getId()478 		xsID getId() const { return attrId; }
479 		/**
480 		 * Sets the id attribute.
481 		 * @param atId The new value for the id attribute.
482 		 */
setId(xsID atId)483 		void setId( xsID atId ) { *(daeStringRef*)&attrId = atId; _validAttributeArray[0] = true;
484 			if( _document != NULL ) _document->changeElementID( this, attrId );
485 		}
486 
487 		/**
488 		 * Gets the sid attribute.
489 		 * @return Returns a xsNCName of the sid attribute.
490 		 */
getSid()491 		xsNCName getSid() const { return attrSid; }
492 		/**
493 		 * Sets the sid attribute.
494 		 * @param atSid The new value for the sid attribute.
495 		 */
setSid(xsNCName atSid)496 		void setSid( xsNCName atSid ) { *(daeStringRef*)&attrSid = atSid; _validAttributeArray[1] = true; }
497 
498 		/**
499 		 * Gets the asset element.
500 		 * @return a daeSmartRef to the asset element.
501 		 */
getAsset()502 		const domAssetRef getAsset() const { return elemAsset; }
503 		/**
504 		 * Gets the image element array.
505 		 * @return Returns a reference to the array of image elements.
506 		 */
getImage_array()507 		domImage_Array &getImage_array() { return elemImage_array; }
508 		/**
509 		 * Gets the image element array.
510 		 * @return Returns a constant reference to the array of image elements.
511 		 */
getImage_array()512 		const domImage_Array &getImage_array() const { return elemImage_array; }
513 		/**
514 		 * Gets the newparam element array.
515 		 * @return Returns a reference to the array of newparam elements.
516 		 */
getNewparam_array()517 		domCommon_newparam_type_Array &getNewparam_array() { return elemNewparam_array; }
518 		/**
519 		 * Gets the newparam element array.
520 		 * @return Returns a constant reference to the array of newparam elements.
521 		 */
getNewparam_array()522 		const domCommon_newparam_type_Array &getNewparam_array() const { return elemNewparam_array; }
523 		/**
524 		 * Gets the constant element.
525 		 * @return a daeSmartRef to the constant element.
526 		 */
getConstant()527 		const domConstantRef getConstant() const { return elemConstant; }
528 		/**
529 		 * Gets the lambert element.
530 		 * @return a daeSmartRef to the lambert element.
531 		 */
getLambert()532 		const domLambertRef getLambert() const { return elemLambert; }
533 		/**
534 		 * Gets the phong element.
535 		 * @return a daeSmartRef to the phong element.
536 		 */
getPhong()537 		const domPhongRef getPhong() const { return elemPhong; }
538 		/**
539 		 * Gets the blinn element.
540 		 * @return a daeSmartRef to the blinn element.
541 		 */
getBlinn()542 		const domBlinnRef getBlinn() const { return elemBlinn; }
543 		/**
544 		 * Gets the extra element array.
545 		 * @return Returns a reference to the array of extra elements.
546 		 */
getExtra_array()547 		domExtra_Array &getExtra_array() { return elemExtra_array; }
548 		/**
549 		 * Gets the extra element array.
550 		 * @return Returns a constant reference to the array of extra elements.
551 		 */
getExtra_array()552 		const domExtra_Array &getExtra_array() const { return elemExtra_array; }
553 		/**
554 		 * Gets the _contents array.
555 		 * @return Returns a reference to the _contents element array.
556 		 */
getContents()557 		daeElementRefArray &getContents() { return _contents; }
558 		/**
559 		 * Gets the _contents array.
560 		 * @return Returns a constant reference to the _contents element array.
561 		 */
getContents()562 		const daeElementRefArray &getContents() const { return _contents; }
563 
564 	protected:
565 		/**
566 		 * Constructor
567 		 */
domTechnique(DAE & dae)568 		domTechnique(DAE& dae) : daeElement(dae), attrId(), attrSid(), elemAsset(), elemImage_array(), elemNewparam_array(), elemConstant(), elemLambert(), elemPhong(), elemBlinn(), elemExtra_array() {}
569 		/**
570 		 * Destructor
571 		 */
~domTechnique()572 		virtual ~domTechnique() { daeElement::deleteCMDataArray(_CMData); }
573 		/**
574 		 * Overloaded assignment operator
575 		 */
576 		virtual domTechnique &operator=( const domTechnique &cpy ) { (void)cpy; return *this; }
577 
578 	public: // STATIC METHODS
579 		/**
580 		 * Creates an instance of this class and returns a daeElementRef referencing it.
581 		 * @return a daeElementRef referencing an instance of this object.
582 		 */
583 		static DLLSPEC daeElementRef create(DAE& dae);
584 		/**
585 		 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
586 		 * If a daeMetaElement already exists it will return that instead of creating a new one.
587 		 * @return A daeMetaElement describing this COLLADA element.
588 		 */
589 		static DLLSPEC daeMetaElement* registerElement(DAE& dae);
590 	};
591 
592 
593 protected:  // Attribute
594 /**
595  *  The id attribute is a text string containing the unique identifier of
596  * this element.  This value must be unique within the instance document.
597  * Optional attribute.
598  */
599 	xsID attrId;
600 
601 protected:  // Elements
602 	domAssetRef elemAsset;
603 	domImage_Array elemImage_array;
604 	domCommon_newparam_type_Array elemNewparam_array;
605 /**
606  * Holds a description of the textures, samplers, shaders, parameters, and
607  * passes necessary for rendering this effect using one method. @see domTechnique
608  */
609 	domTechniqueRef elemTechnique;
610 /**
611  *  The extra element may appear any number of times.  @see domExtra
612  */
613 	domExtra_Array elemExtra_array;
614 	/**
615 	 * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
616 	 */
617 	daeElementRefArray _contents;
618 	/**
619 	 * Used to preserve order in elements that have a complex content model.
620 	 */
621 	daeUIntArray       _contentsOrder;
622 
623 	/**
624 	 * Used to store information needed for some content model objects.
625 	 */
626 	daeTArray< daeCharArray * > _CMData;
627 
628 
629 public:	//Accessors and Mutators
630 	/**
631 	 * Gets the id attribute.
632 	 * @return Returns a xsID of the id attribute.
633 	 */
getId()634 	xsID getId() const { return attrId; }
635 	/**
636 	 * Sets the id attribute.
637 	 * @param atId The new value for the id attribute.
638 	 */
setId(xsID atId)639 	void setId( xsID atId ) { *(daeStringRef*)&attrId = atId; _validAttributeArray[0] = true;
640 		if( _document != NULL ) _document->changeElementID( this, attrId );
641 	}
642 
643 	/**
644 	 * Gets the asset element.
645 	 * @return a daeSmartRef to the asset element.
646 	 */
getAsset()647 	const domAssetRef getAsset() const { return elemAsset; }
648 	/**
649 	 * Gets the image element array.
650 	 * @return Returns a reference to the array of image elements.
651 	 */
getImage_array()652 	domImage_Array &getImage_array() { return elemImage_array; }
653 	/**
654 	 * Gets the image element array.
655 	 * @return Returns a constant reference to the array of image elements.
656 	 */
getImage_array()657 	const domImage_Array &getImage_array() const { return elemImage_array; }
658 	/**
659 	 * Gets the newparam element array.
660 	 * @return Returns a reference to the array of newparam elements.
661 	 */
getNewparam_array()662 	domCommon_newparam_type_Array &getNewparam_array() { return elemNewparam_array; }
663 	/**
664 	 * Gets the newparam element array.
665 	 * @return Returns a constant reference to the array of newparam elements.
666 	 */
getNewparam_array()667 	const domCommon_newparam_type_Array &getNewparam_array() const { return elemNewparam_array; }
668 	/**
669 	 * Gets the technique element.
670 	 * @return a daeSmartRef to the technique element.
671 	 */
getTechnique()672 	const domTechniqueRef getTechnique() const { return elemTechnique; }
673 	/**
674 	 * Gets the extra element array.
675 	 * @return Returns a reference to the array of extra elements.
676 	 */
getExtra_array()677 	domExtra_Array &getExtra_array() { return elemExtra_array; }
678 	/**
679 	 * Gets the extra element array.
680 	 * @return Returns a constant reference to the array of extra elements.
681 	 */
getExtra_array()682 	const domExtra_Array &getExtra_array() const { return elemExtra_array; }
683 	/**
684 	 * Gets the _contents array.
685 	 * @return Returns a reference to the _contents element array.
686 	 */
getContents()687 	daeElementRefArray &getContents() { return _contents; }
688 	/**
689 	 * Gets the _contents array.
690 	 * @return Returns a constant reference to the _contents element array.
691 	 */
getContents()692 	const daeElementRefArray &getContents() const { return _contents; }
693 
694 protected:
695 	/**
696 	 * Constructor
697 	 */
domProfile_COMMON(DAE & dae)698 	domProfile_COMMON(DAE& dae) : domFx_profile_abstract(dae), attrId(), elemAsset(), elemImage_array(), elemNewparam_array(), elemTechnique(), elemExtra_array() {}
699 	/**
700 	 * Destructor
701 	 */
~domProfile_COMMON()702 	virtual ~domProfile_COMMON() { daeElement::deleteCMDataArray(_CMData); }
703 	/**
704 	 * Overloaded assignment operator
705 	 */
706 	virtual domProfile_COMMON &operator=( const domProfile_COMMON &cpy ) { (void)cpy; return *this; }
707 
708 public: // STATIC METHODS
709 	/**
710 	 * Creates an instance of this class and returns a daeElementRef referencing it.
711 	 * @return a daeElementRef referencing an instance of this object.
712 	 */
713 	static DLLSPEC daeElementRef create(DAE& dae);
714 	/**
715 	 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
716 	 * If a daeMetaElement already exists it will return that instead of creating a new one.
717 	 * @return A daeMetaElement describing this COLLADA element.
718 	 */
719 	static DLLSPEC daeMetaElement* registerElement(DAE& dae);
720 };
721 
722 
723 #endif
724