Home | History | Annotate | Download | only in dom
      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:
     32 	virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::PROFILE_COMMON; }
     33 	static daeInt ID() { return 740; }
     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:
     48 		virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::TECHNIQUE; }
     49 		static daeInt ID() { return 741; }
     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:
     60 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::CONSTANT; }
     61 			static daeInt ID() { return 742; }
     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 			 */
     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 			 */
     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 			 */
     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 			 */
     92 			const domCommon_transparent_typeRef getTransparent() const { return elemTransparent; }
     93 			/**
     94 			 * Gets the transparency element.
     95 			 * @return a daeSmartRef to the transparency element.
     96 			 */
     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 			 */
    102 			const domCommon_float_or_param_typeRef getIndex_of_refraction() const { return elemIndex_of_refraction; }
    103 		protected:
    104 			/**
    105 			 * Constructor
    106 			 */
    107 			domConstant(DAE& dae) : daeElement(dae), elemEmission(), elemReflective(), elemReflectivity(), elemTransparent(), elemTransparency(), elemIndex_of_refraction() {}
    108 			/**
    109 			 * Destructor
    110 			 */
    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:
    139 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::LAMBERT; }
    140 			static daeInt ID() { return 743; }
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    183 			const domCommon_transparent_typeRef getTransparent() const { return elemTransparent; }
    184 			/**
    185 			 * Gets the transparency element.
    186 			 * @return a daeSmartRef to the transparency element.
    187 			 */
    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 			 */
    193 			const domCommon_float_or_param_typeRef getIndex_of_refraction() const { return elemIndex_of_refraction; }
    194 		protected:
    195 			/**
    196 			 * Constructor
    197 			 */
    198 			domLambert(DAE& dae) : daeElement(dae), elemEmission(), elemAmbient(), elemDiffuse(), elemReflective(), elemReflectivity(), elemTransparent(), elemTransparency(), elemIndex_of_refraction() {}
    199 			/**
    200 			 * Destructor
    201 			 */
    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:
    230 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::PHONG; }
    231 			static daeInt ID() { return 744; }
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    286 			const domCommon_transparent_typeRef getTransparent() const { return elemTransparent; }
    287 			/**
    288 			 * Gets the transparency element.
    289 			 * @return a daeSmartRef to the transparency element.
    290 			 */
    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 			 */
    296 			const domCommon_float_or_param_typeRef getIndex_of_refraction() const { return elemIndex_of_refraction; }
    297 		protected:
    298 			/**
    299 			 * Constructor
    300 			 */
    301 			domPhong(DAE& dae) : daeElement(dae), elemEmission(), elemAmbient(), elemDiffuse(), elemSpecular(), elemShininess(), elemReflective(), elemReflectivity(), elemTransparent(), elemTransparency(), elemIndex_of_refraction() {}
    302 			/**
    303 			 * Destructor
    304 			 */
    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:
    333 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::BLINN; }
    334 			static daeInt ID() { return 745; }
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    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 			 */
    389 			const domCommon_transparent_typeRef getTransparent() const { return elemTransparent; }
    390 			/**
    391 			 * Gets the transparency element.
    392 			 * @return a daeSmartRef to the transparency element.
    393 			 */
    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 			 */
    399 			const domCommon_float_or_param_typeRef getIndex_of_refraction() const { return elemIndex_of_refraction; }
    400 		protected:
    401 			/**
    402 			 * Constructor
    403 			 */
    404 			domBlinn(DAE& dae) : daeElement(dae), elemEmission(), elemAmbient(), elemDiffuse(), elemSpecular(), elemShininess(), elemReflective(), elemReflectivity(), elemTransparent(), elemTransparency(), elemIndex_of_refraction() {}
    405 			/**
    406 			 * Destructor
    407 			 */
    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 		 */
    478 		xsID getId() const { return attrId; }
    479 		/**
    480 		 * Sets the id attribute.
    481 		 * @param atId The new value for the id attribute.
    482 		 */
    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 		 */
    491 		xsNCName getSid() const { return attrSid; }
    492 		/**
    493 		 * Sets the sid attribute.
    494 		 * @param atSid The new value for the sid attribute.
    495 		 */
    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 		 */
    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 		 */
    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 		 */
    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 		 */
    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 		 */
    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 		 */
    527 		const domConstantRef getConstant() const { return elemConstant; }
    528 		/**
    529 		 * Gets the lambert element.
    530 		 * @return a daeSmartRef to the lambert element.
    531 		 */
    532 		const domLambertRef getLambert() const { return elemLambert; }
    533 		/**
    534 		 * Gets the phong element.
    535 		 * @return a daeSmartRef to the phong element.
    536 		 */
    537 		const domPhongRef getPhong() const { return elemPhong; }
    538 		/**
    539 		 * Gets the blinn element.
    540 		 * @return a daeSmartRef to the blinn element.
    541 		 */
    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 		 */
    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 		 */
    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 		 */
    557 		daeElementRefArray &getContents() { return _contents; }
    558 		/**
    559 		 * Gets the _contents array.
    560 		 * @return Returns a constant reference to the _contents element array.
    561 		 */
    562 		const daeElementRefArray &getContents() const { return _contents; }
    563 
    564 	protected:
    565 		/**
    566 		 * Constructor
    567 		 */
    568 		domTechnique(DAE& dae) : daeElement(dae), attrId(), attrSid(), elemAsset(), elemImage_array(), elemNewparam_array(), elemConstant(), elemLambert(), elemPhong(), elemBlinn(), elemExtra_array() {}
    569 		/**
    570 		 * Destructor
    571 		 */
    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 	 */
    634 	xsID getId() const { return attrId; }
    635 	/**
    636 	 * Sets the id attribute.
    637 	 * @param atId The new value for the id attribute.
    638 	 */
    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 	 */
    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 	 */
    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 	 */
    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 	 */
    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 	 */
    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 	 */
    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 	 */
    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 	 */
    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 	 */
    687 	daeElementRefArray &getContents() { return _contents; }
    688 	/**
    689 	 * Gets the _contents array.
    690 	 * @return Returns a constant reference to the _contents element array.
    691 	 */
    692 	const daeElementRefArray &getContents() const { return _contents; }
    693 
    694 protected:
    695 	/**
    696 	 * Constructor
    697 	 */
    698 	domProfile_COMMON(DAE& dae) : domFx_profile_abstract(dae), attrId(), elemAsset(), elemImage_array(), elemNewparam_array(), elemTechnique(), elemExtra_array() {}
    699 	/**
    700 	 * Destructor
    701 	 */
    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