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 __domInstance_rigid_body_h__
     10 #define __domInstance_rigid_body_h__
     11 
     12 #include <dae/daeDocument.h>
     13 #include <dom/domTypes.h>
     14 #include <dom/domElements.h>
     15 
     16 #include <dom/domTechnique.h>
     17 #include <dom/domExtra.h>
     18 #include <dom/domInstance_physics_material.h>
     19 #include <dom/domPhysics_material.h>
     20 #include <dom/domTargetableFloat.h>
     21 #include <dom/domTranslate.h>
     22 #include <dom/domRotate.h>
     23 #include <dom/domTargetableFloat3.h>
     24 #include <dom/domInstance_geometry.h>
     25 #include <dom/domPlane.h>
     26 #include <dom/domBox.h>
     27 #include <dom/domSphere.h>
     28 #include <dom/domCylinder.h>
     29 #include <dom/domTapered_cylinder.h>
     30 #include <dom/domCapsule.h>
     31 #include <dom/domTapered_capsule.h>
     32 class DAE;
     33 
     34 /**
     35  * This element allows instancing a rigid_body within an instance_physics_model.
     36  */
     37 class domInstance_rigid_body : public daeElement
     38 {
     39 public:
     40 	virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::INSTANCE_RIGID_BODY; }
     41 	static daeInt ID() { return 703; }
     42 	virtual daeInt typeID() const { return ID(); }
     43 public:
     44 	class domTechnique_common;
     45 
     46 	typedef daeSmartRef<domTechnique_common> domTechnique_commonRef;
     47 	typedef daeTArray<domTechnique_commonRef> domTechnique_common_Array;
     48 
     49 /**
     50  * The technique_common element specifies the instance_rigid_body information
     51  * for the common  profile which all COLLADA implementations need to support.
     52  */
     53 	class domTechnique_common : public daeElement
     54 	{
     55 	public:
     56 		virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::TECHNIQUE_COMMON; }
     57 		static daeInt ID() { return 704; }
     58 		virtual daeInt typeID() const { return ID(); }
     59 	public:
     60 		class domAngular_velocity;
     61 
     62 		typedef daeSmartRef<domAngular_velocity> domAngular_velocityRef;
     63 		typedef daeTArray<domAngular_velocityRef> domAngular_velocity_Array;
     64 
     65 /**
     66  * Specifies the initial angular velocity of the rigid_body instance in degrees
     67  * per second  around each axis, in the form of an X-Y-Z Euler rotation.
     68  */
     69 		class domAngular_velocity : public daeElement
     70 		{
     71 		public:
     72 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::ANGULAR_VELOCITY; }
     73 			static daeInt ID() { return 705; }
     74 			virtual daeInt typeID() const { return ID(); }
     75 
     76 		protected:  // Value
     77 			/**
     78 			 * The domFloat3 value of the text data of this element.
     79 			 */
     80 			domFloat3 _value;
     81 
     82 		public:	//Accessors and Mutators
     83 			/**
     84 			 * Gets the _value array.
     85 			 * @return Returns a domFloat3 reference of the _value array.
     86 			 */
     87 			domFloat3 &getValue() { return _value; }
     88 			/**
     89 			 * Gets the _value array.
     90 			 * @return Returns a constant domFloat3 reference of the _value array.
     91 			 */
     92 			const domFloat3 &getValue() const { return _value; }
     93 			/**
     94 			 * Sets the _value array.
     95 			 * @param val The new value for the _value array.
     96 			 */
     97 			void setValue( const domFloat3 &val ) { _value = val; }
     98 
     99 		protected:
    100 			/**
    101 			 * Constructor
    102 			 */
    103 			domAngular_velocity(DAE& dae) : daeElement(dae), _value() {}
    104 			/**
    105 			 * Destructor
    106 			 */
    107 			virtual ~domAngular_velocity() {}
    108 			/**
    109 			 * Overloaded assignment operator
    110 			 */
    111 			virtual domAngular_velocity &operator=( const domAngular_velocity &cpy ) { (void)cpy; return *this; }
    112 
    113 		public: // STATIC METHODS
    114 			/**
    115 			 * Creates an instance of this class and returns a daeElementRef referencing it.
    116 			 * @return a daeElementRef referencing an instance of this object.
    117 			 */
    118 			static DLLSPEC daeElementRef create(DAE& dae);
    119 			/**
    120 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    121 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
    122 			 * @return A daeMetaElement describing this COLLADA element.
    123 			 */
    124 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    125 		};
    126 
    127 		class domVelocity;
    128 
    129 		typedef daeSmartRef<domVelocity> domVelocityRef;
    130 		typedef daeTArray<domVelocityRef> domVelocity_Array;
    131 
    132 /**
    133  * Specifies the initial linear velocity of the rigid_body instance.
    134  */
    135 		class domVelocity : public daeElement
    136 		{
    137 		public:
    138 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::VELOCITY; }
    139 			static daeInt ID() { return 706; }
    140 			virtual daeInt typeID() const { return ID(); }
    141 
    142 		protected:  // Value
    143 			/**
    144 			 * The domFloat3 value of the text data of this element.
    145 			 */
    146 			domFloat3 _value;
    147 
    148 		public:	//Accessors and Mutators
    149 			/**
    150 			 * Gets the _value array.
    151 			 * @return Returns a domFloat3 reference of the _value array.
    152 			 */
    153 			domFloat3 &getValue() { return _value; }
    154 			/**
    155 			 * Gets the _value array.
    156 			 * @return Returns a constant domFloat3 reference of the _value array.
    157 			 */
    158 			const domFloat3 &getValue() const { return _value; }
    159 			/**
    160 			 * Sets the _value array.
    161 			 * @param val The new value for the _value array.
    162 			 */
    163 			void setValue( const domFloat3 &val ) { _value = val; }
    164 
    165 		protected:
    166 			/**
    167 			 * Constructor
    168 			 */
    169 			domVelocity(DAE& dae) : daeElement(dae), _value() {}
    170 			/**
    171 			 * Destructor
    172 			 */
    173 			virtual ~domVelocity() {}
    174 			/**
    175 			 * Overloaded assignment operator
    176 			 */
    177 			virtual domVelocity &operator=( const domVelocity &cpy ) { (void)cpy; return *this; }
    178 
    179 		public: // STATIC METHODS
    180 			/**
    181 			 * Creates an instance of this class and returns a daeElementRef referencing it.
    182 			 * @return a daeElementRef referencing an instance of this object.
    183 			 */
    184 			static DLLSPEC daeElementRef create(DAE& dae);
    185 			/**
    186 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    187 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
    188 			 * @return A daeMetaElement describing this COLLADA element.
    189 			 */
    190 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    191 		};
    192 
    193 		class domDynamic;
    194 
    195 		typedef daeSmartRef<domDynamic> domDynamicRef;
    196 		typedef daeTArray<domDynamicRef> domDynamic_Array;
    197 
    198 		class domDynamic : public daeElement
    199 		{
    200 		public:
    201 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::DYNAMIC; }
    202 			static daeInt ID() { return 707; }
    203 			virtual daeInt typeID() const { return ID(); }
    204 		protected:  // Attribute
    205 /**
    206  *  The sid attribute is a text string value containing the sub-identifier
    207  * of this element.  This value must be unique within the scope of the parent
    208  * element. Optional attribute.
    209  */
    210 			xsNCName attrSid;
    211 
    212 		protected:  // Value
    213 			/**
    214 			 * The domBool value of the text data of this element.
    215 			 */
    216 			domBool _value;
    217 
    218 		public:	//Accessors and Mutators
    219 			/**
    220 			 * Gets the sid attribute.
    221 			 * @return Returns a xsNCName of the sid attribute.
    222 			 */
    223 			xsNCName getSid() const { return attrSid; }
    224 			/**
    225 			 * Sets the sid attribute.
    226 			 * @param atSid The new value for the sid attribute.
    227 			 */
    228 			void setSid( xsNCName atSid ) { *(daeStringRef*)&attrSid = atSid; _validAttributeArray[0] = true; }
    229 
    230 			/**
    231 			 * Gets the value of this element.
    232 			 * @return a domBool of the value.
    233 			 */
    234 			domBool getValue() const { return _value; }
    235 			/**
    236 			 * Sets the _value of this element.
    237 			 * @param val The new value for this element.
    238 			 */
    239 			void setValue( domBool val ) { _value = val; }
    240 
    241 		protected:
    242 			/**
    243 			 * Constructor
    244 			 */
    245 			domDynamic(DAE& dae) : daeElement(dae), attrSid(), _value() {}
    246 			/**
    247 			 * Destructor
    248 			 */
    249 			virtual ~domDynamic() {}
    250 			/**
    251 			 * Overloaded assignment operator
    252 			 */
    253 			virtual domDynamic &operator=( const domDynamic &cpy ) { (void)cpy; return *this; }
    254 
    255 		public: // STATIC METHODS
    256 			/**
    257 			 * Creates an instance of this class and returns a daeElementRef referencing it.
    258 			 * @return a daeElementRef referencing an instance of this object.
    259 			 */
    260 			static DLLSPEC daeElementRef create(DAE& dae);
    261 			/**
    262 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    263 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
    264 			 * @return A daeMetaElement describing this COLLADA element.
    265 			 */
    266 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    267 		};
    268 
    269 		class domMass_frame;
    270 
    271 		typedef daeSmartRef<domMass_frame> domMass_frameRef;
    272 		typedef daeTArray<domMass_frameRef> domMass_frame_Array;
    273 
    274 		class domMass_frame : public daeElement
    275 		{
    276 		public:
    277 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::MASS_FRAME; }
    278 			static daeInt ID() { return 708; }
    279 			virtual daeInt typeID() const { return ID(); }
    280 
    281 		protected:  // Elements
    282 			domTranslate_Array elemTranslate_array;
    283 			domRotate_Array elemRotate_array;
    284 			/**
    285 			 * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
    286 			 */
    287 			daeElementRefArray _contents;
    288 			/**
    289 			 * Used to preserve order in elements that have a complex content model.
    290 			 */
    291 			daeUIntArray       _contentsOrder;
    292 
    293 			/**
    294 			 * Used to store information needed for some content model objects.
    295 			 */
    296 			daeTArray< daeCharArray * > _CMData;
    297 
    298 
    299 		public:	//Accessors and Mutators
    300 			/**
    301 			 * Gets the translate element array.
    302 			 * @return Returns a reference to the array of translate elements.
    303 			 */
    304 			domTranslate_Array &getTranslate_array() { return elemTranslate_array; }
    305 			/**
    306 			 * Gets the translate element array.
    307 			 * @return Returns a constant reference to the array of translate elements.
    308 			 */
    309 			const domTranslate_Array &getTranslate_array() const { return elemTranslate_array; }
    310 			/**
    311 			 * Gets the rotate element array.
    312 			 * @return Returns a reference to the array of rotate elements.
    313 			 */
    314 			domRotate_Array &getRotate_array() { return elemRotate_array; }
    315 			/**
    316 			 * Gets the rotate element array.
    317 			 * @return Returns a constant reference to the array of rotate elements.
    318 			 */
    319 			const domRotate_Array &getRotate_array() const { return elemRotate_array; }
    320 			/**
    321 			 * Gets the _contents array.
    322 			 * @return Returns a reference to the _contents element array.
    323 			 */
    324 			daeElementRefArray &getContents() { return _contents; }
    325 			/**
    326 			 * Gets the _contents array.
    327 			 * @return Returns a constant reference to the _contents element array.
    328 			 */
    329 			const daeElementRefArray &getContents() const { return _contents; }
    330 
    331 		protected:
    332 			/**
    333 			 * Constructor
    334 			 */
    335 			domMass_frame(DAE& dae) : daeElement(dae), elemTranslate_array(), elemRotate_array() {}
    336 			/**
    337 			 * Destructor
    338 			 */
    339 			virtual ~domMass_frame() { daeElement::deleteCMDataArray(_CMData); }
    340 			/**
    341 			 * Overloaded assignment operator
    342 			 */
    343 			virtual domMass_frame &operator=( const domMass_frame &cpy ) { (void)cpy; return *this; }
    344 
    345 		public: // STATIC METHODS
    346 			/**
    347 			 * Creates an instance of this class and returns a daeElementRef referencing it.
    348 			 * @return a daeElementRef referencing an instance of this object.
    349 			 */
    350 			static DLLSPEC daeElementRef create(DAE& dae);
    351 			/**
    352 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    353 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
    354 			 * @return A daeMetaElement describing this COLLADA element.
    355 			 */
    356 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    357 		};
    358 
    359 		class domShape;
    360 
    361 		typedef daeSmartRef<domShape> domShapeRef;
    362 		typedef daeTArray<domShapeRef> domShape_Array;
    363 
    364 		class domShape : public daeElement
    365 		{
    366 		public:
    367 			virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::SHAPE; }
    368 			static daeInt ID() { return 709; }
    369 			virtual daeInt typeID() const { return ID(); }
    370 		public:
    371 			class domHollow;
    372 
    373 			typedef daeSmartRef<domHollow> domHollowRef;
    374 			typedef daeTArray<domHollowRef> domHollow_Array;
    375 
    376 			class domHollow : public daeElement
    377 			{
    378 			public:
    379 				virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::HOLLOW; }
    380 				static daeInt ID() { return 710; }
    381 				virtual daeInt typeID() const { return ID(); }
    382 			protected:  // Attribute
    383 /**
    384  *  The sid attribute is a text string value containing the sub-identifier
    385  * of this element. This value must be unique within the scope of the parent
    386  * element. Optional attribute.
    387  */
    388 				xsNCName attrSid;
    389 
    390 			protected:  // Value
    391 				/**
    392 				 * The domBool value of the text data of this element.
    393 				 */
    394 				domBool _value;
    395 
    396 			public:	//Accessors and Mutators
    397 				/**
    398 				 * Gets the sid attribute.
    399 				 * @return Returns a xsNCName of the sid attribute.
    400 				 */
    401 				xsNCName getSid() const { return attrSid; }
    402 				/**
    403 				 * Sets the sid attribute.
    404 				 * @param atSid The new value for the sid attribute.
    405 				 */
    406 				void setSid( xsNCName atSid ) { *(daeStringRef*)&attrSid = atSid; _validAttributeArray[0] = true; }
    407 
    408 				/**
    409 				 * Gets the value of this element.
    410 				 * @return a domBool of the value.
    411 				 */
    412 				domBool getValue() const { return _value; }
    413 				/**
    414 				 * Sets the _value of this element.
    415 				 * @param val The new value for this element.
    416 				 */
    417 				void setValue( domBool val ) { _value = val; }
    418 
    419 			protected:
    420 				/**
    421 				 * Constructor
    422 				 */
    423 				domHollow(DAE& dae) : daeElement(dae), attrSid(), _value() {}
    424 				/**
    425 				 * Destructor
    426 				 */
    427 				virtual ~domHollow() {}
    428 				/**
    429 				 * Overloaded assignment operator
    430 				 */
    431 				virtual domHollow &operator=( const domHollow &cpy ) { (void)cpy; return *this; }
    432 
    433 			public: // STATIC METHODS
    434 				/**
    435 				 * Creates an instance of this class and returns a daeElementRef referencing it.
    436 				 * @return a daeElementRef referencing an instance of this object.
    437 				 */
    438 				static DLLSPEC daeElementRef create(DAE& dae);
    439 				/**
    440 				 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    441 				 * If a daeMetaElement already exists it will return that instead of creating a new one.
    442 				 * @return A daeMetaElement describing this COLLADA element.
    443 				 */
    444 				static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    445 			};
    446 
    447 
    448 
    449 		protected:  // Elements
    450 			domHollowRef elemHollow;
    451 			domTargetableFloatRef elemMass;
    452 			domTargetableFloatRef elemDensity;
    453 			domInstance_physics_materialRef elemInstance_physics_material;
    454 			domPhysics_materialRef elemPhysics_material;
    455 			domInstance_geometryRef elemInstance_geometry;
    456 			domPlaneRef elemPlane;
    457 			domBoxRef elemBox;
    458 			domSphereRef elemSphere;
    459 			domCylinderRef elemCylinder;
    460 			domTapered_cylinderRef elemTapered_cylinder;
    461 			domCapsuleRef elemCapsule;
    462 			domTapered_capsuleRef elemTapered_capsule;
    463 			domTranslate_Array elemTranslate_array;
    464 			domRotate_Array elemRotate_array;
    465 /**
    466  *  The extra element may appear any number of times.  @see domExtra
    467  */
    468 			domExtra_Array elemExtra_array;
    469 			/**
    470 			 * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
    471 			 */
    472 			daeElementRefArray _contents;
    473 			/**
    474 			 * Used to preserve order in elements that have a complex content model.
    475 			 */
    476 			daeUIntArray       _contentsOrder;
    477 
    478 			/**
    479 			 * Used to store information needed for some content model objects.
    480 			 */
    481 			daeTArray< daeCharArray * > _CMData;
    482 
    483 
    484 		public:	//Accessors and Mutators
    485 			/**
    486 			 * Gets the hollow element.
    487 			 * @return a daeSmartRef to the hollow element.
    488 			 */
    489 			const domHollowRef getHollow() const { return elemHollow; }
    490 			/**
    491 			 * Gets the mass element.
    492 			 * @return a daeSmartRef to the mass element.
    493 			 */
    494 			const domTargetableFloatRef getMass() const { return elemMass; }
    495 			/**
    496 			 * Gets the density element.
    497 			 * @return a daeSmartRef to the density element.
    498 			 */
    499 			const domTargetableFloatRef getDensity() const { return elemDensity; }
    500 			/**
    501 			 * Gets the instance_physics_material element.
    502 			 * @return a daeSmartRef to the instance_physics_material element.
    503 			 */
    504 			const domInstance_physics_materialRef getInstance_physics_material() const { return elemInstance_physics_material; }
    505 			/**
    506 			 * Gets the physics_material element.
    507 			 * @return a daeSmartRef to the physics_material element.
    508 			 */
    509 			const domPhysics_materialRef getPhysics_material() const { return elemPhysics_material; }
    510 			/**
    511 			 * Gets the instance_geometry element.
    512 			 * @return a daeSmartRef to the instance_geometry element.
    513 			 */
    514 			const domInstance_geometryRef getInstance_geometry() const { return elemInstance_geometry; }
    515 			/**
    516 			 * Gets the plane element.
    517 			 * @return a daeSmartRef to the plane element.
    518 			 */
    519 			const domPlaneRef getPlane() const { return elemPlane; }
    520 			/**
    521 			 * Gets the box element.
    522 			 * @return a daeSmartRef to the box element.
    523 			 */
    524 			const domBoxRef getBox() const { return elemBox; }
    525 			/**
    526 			 * Gets the sphere element.
    527 			 * @return a daeSmartRef to the sphere element.
    528 			 */
    529 			const domSphereRef getSphere() const { return elemSphere; }
    530 			/**
    531 			 * Gets the cylinder element.
    532 			 * @return a daeSmartRef to the cylinder element.
    533 			 */
    534 			const domCylinderRef getCylinder() const { return elemCylinder; }
    535 			/**
    536 			 * Gets the tapered_cylinder element.
    537 			 * @return a daeSmartRef to the tapered_cylinder element.
    538 			 */
    539 			const domTapered_cylinderRef getTapered_cylinder() const { return elemTapered_cylinder; }
    540 			/**
    541 			 * Gets the capsule element.
    542 			 * @return a daeSmartRef to the capsule element.
    543 			 */
    544 			const domCapsuleRef getCapsule() const { return elemCapsule; }
    545 			/**
    546 			 * Gets the tapered_capsule element.
    547 			 * @return a daeSmartRef to the tapered_capsule element.
    548 			 */
    549 			const domTapered_capsuleRef getTapered_capsule() const { return elemTapered_capsule; }
    550 			/**
    551 			 * Gets the translate element array.
    552 			 * @return Returns a reference to the array of translate elements.
    553 			 */
    554 			domTranslate_Array &getTranslate_array() { return elemTranslate_array; }
    555 			/**
    556 			 * Gets the translate element array.
    557 			 * @return Returns a constant reference to the array of translate elements.
    558 			 */
    559 			const domTranslate_Array &getTranslate_array() const { return elemTranslate_array; }
    560 			/**
    561 			 * Gets the rotate element array.
    562 			 * @return Returns a reference to the array of rotate elements.
    563 			 */
    564 			domRotate_Array &getRotate_array() { return elemRotate_array; }
    565 			/**
    566 			 * Gets the rotate element array.
    567 			 * @return Returns a constant reference to the array of rotate elements.
    568 			 */
    569 			const domRotate_Array &getRotate_array() const { return elemRotate_array; }
    570 			/**
    571 			 * Gets the extra element array.
    572 			 * @return Returns a reference to the array of extra elements.
    573 			 */
    574 			domExtra_Array &getExtra_array() { return elemExtra_array; }
    575 			/**
    576 			 * Gets the extra element array.
    577 			 * @return Returns a constant reference to the array of extra elements.
    578 			 */
    579 			const domExtra_Array &getExtra_array() const { return elemExtra_array; }
    580 			/**
    581 			 * Gets the _contents array.
    582 			 * @return Returns a reference to the _contents element array.
    583 			 */
    584 			daeElementRefArray &getContents() { return _contents; }
    585 			/**
    586 			 * Gets the _contents array.
    587 			 * @return Returns a constant reference to the _contents element array.
    588 			 */
    589 			const daeElementRefArray &getContents() const { return _contents; }
    590 
    591 		protected:
    592 			/**
    593 			 * Constructor
    594 			 */
    595 			domShape(DAE& dae) : daeElement(dae), elemHollow(), elemMass(), elemDensity(), elemInstance_physics_material(), elemPhysics_material(), elemInstance_geometry(), elemPlane(), elemBox(), elemSphere(), elemCylinder(), elemTapered_cylinder(), elemCapsule(), elemTapered_capsule(), elemTranslate_array(), elemRotate_array(), elemExtra_array() {}
    596 			/**
    597 			 * Destructor
    598 			 */
    599 			virtual ~domShape() { daeElement::deleteCMDataArray(_CMData); }
    600 			/**
    601 			 * Overloaded assignment operator
    602 			 */
    603 			virtual domShape &operator=( const domShape &cpy ) { (void)cpy; return *this; }
    604 
    605 		public: // STATIC METHODS
    606 			/**
    607 			 * Creates an instance of this class and returns a daeElementRef referencing it.
    608 			 * @return a daeElementRef referencing an instance of this object.
    609 			 */
    610 			static DLLSPEC daeElementRef create(DAE& dae);
    611 			/**
    612 			 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    613 			 * If a daeMetaElement already exists it will return that instead of creating a new one.
    614 			 * @return A daeMetaElement describing this COLLADA element.
    615 			 */
    616 			static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    617 		};
    618 
    619 
    620 
    621 	protected:  // Elements
    622 /**
    623  * Specifies the initial angular velocity of the rigid_body instance in degrees
    624  * per second  around each axis, in the form of an X-Y-Z Euler rotation. @see
    625  * domAngular_velocity
    626  */
    627 		domAngular_velocityRef elemAngular_velocity;
    628 /**
    629  * Specifies the initial linear velocity of the rigid_body instance. @see
    630  * domVelocity
    631  */
    632 		domVelocityRef elemVelocity;
    633 		domDynamicRef elemDynamic;
    634 		domTargetableFloatRef elemMass;
    635 		domMass_frameRef elemMass_frame;
    636 		domTargetableFloat3Ref elemInertia;
    637 		domInstance_physics_materialRef elemInstance_physics_material;
    638 		domPhysics_materialRef elemPhysics_material;
    639 		domShape_Array elemShape_array;
    640 		/**
    641 		 * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
    642 		 */
    643 		daeElementRefArray _contents;
    644 		/**
    645 		 * Used to preserve order in elements that have a complex content model.
    646 		 */
    647 		daeUIntArray       _contentsOrder;
    648 
    649 		/**
    650 		 * Used to store information needed for some content model objects.
    651 		 */
    652 		daeTArray< daeCharArray * > _CMData;
    653 
    654 
    655 	public:	//Accessors and Mutators
    656 		/**
    657 		 * Gets the angular_velocity element.
    658 		 * @return a daeSmartRef to the angular_velocity element.
    659 		 */
    660 		const domAngular_velocityRef getAngular_velocity() const { return elemAngular_velocity; }
    661 		/**
    662 		 * Gets the velocity element.
    663 		 * @return a daeSmartRef to the velocity element.
    664 		 */
    665 		const domVelocityRef getVelocity() const { return elemVelocity; }
    666 		/**
    667 		 * Gets the dynamic element.
    668 		 * @return a daeSmartRef to the dynamic element.
    669 		 */
    670 		const domDynamicRef getDynamic() const { return elemDynamic; }
    671 		/**
    672 		 * Gets the mass element.
    673 		 * @return a daeSmartRef to the mass element.
    674 		 */
    675 		const domTargetableFloatRef getMass() const { return elemMass; }
    676 		/**
    677 		 * Gets the mass_frame element.
    678 		 * @return a daeSmartRef to the mass_frame element.
    679 		 */
    680 		const domMass_frameRef getMass_frame() const { return elemMass_frame; }
    681 		/**
    682 		 * Gets the inertia element.
    683 		 * @return a daeSmartRef to the inertia element.
    684 		 */
    685 		const domTargetableFloat3Ref getInertia() const { return elemInertia; }
    686 		/**
    687 		 * Gets the instance_physics_material element.
    688 		 * @return a daeSmartRef to the instance_physics_material element.
    689 		 */
    690 		const domInstance_physics_materialRef getInstance_physics_material() const { return elemInstance_physics_material; }
    691 		/**
    692 		 * Gets the physics_material element.
    693 		 * @return a daeSmartRef to the physics_material element.
    694 		 */
    695 		const domPhysics_materialRef getPhysics_material() const { return elemPhysics_material; }
    696 		/**
    697 		 * Gets the shape element array.
    698 		 * @return Returns a reference to the array of shape elements.
    699 		 */
    700 		domShape_Array &getShape_array() { return elemShape_array; }
    701 		/**
    702 		 * Gets the shape element array.
    703 		 * @return Returns a constant reference to the array of shape elements.
    704 		 */
    705 		const domShape_Array &getShape_array() const { return elemShape_array; }
    706 		/**
    707 		 * Gets the _contents array.
    708 		 * @return Returns a reference to the _contents element array.
    709 		 */
    710 		daeElementRefArray &getContents() { return _contents; }
    711 		/**
    712 		 * Gets the _contents array.
    713 		 * @return Returns a constant reference to the _contents element array.
    714 		 */
    715 		const daeElementRefArray &getContents() const { return _contents; }
    716 
    717 	protected:
    718 		/**
    719 		 * Constructor
    720 		 */
    721 		domTechnique_common(DAE& dae) : daeElement(dae), elemAngular_velocity(), elemVelocity(), elemDynamic(), elemMass(), elemMass_frame(), elemInertia(), elemInstance_physics_material(), elemPhysics_material(), elemShape_array() {}
    722 		/**
    723 		 * Destructor
    724 		 */
    725 		virtual ~domTechnique_common() { daeElement::deleteCMDataArray(_CMData); }
    726 		/**
    727 		 * Overloaded assignment operator
    728 		 */
    729 		virtual domTechnique_common &operator=( const domTechnique_common &cpy ) { (void)cpy; return *this; }
    730 
    731 	public: // STATIC METHODS
    732 		/**
    733 		 * Creates an instance of this class and returns a daeElementRef referencing it.
    734 		 * @return a daeElementRef referencing an instance of this object.
    735 		 */
    736 		static DLLSPEC daeElementRef create(DAE& dae);
    737 		/**
    738 		 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    739 		 * If a daeMetaElement already exists it will return that instead of creating a new one.
    740 		 * @return A daeMetaElement describing this COLLADA element.
    741 		 */
    742 		static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    743 	};
    744 
    745 
    746 protected:  // Attributes
    747 /**
    748  *  The body attribute indicates which rigid_body to instantiate. Required
    749  * attribute.
    750  */
    751 	xsNCName attrBody;
    752 /**
    753  *  The sid attribute is a text string value containing the sub-identifier
    754  * of this element. This  value must be unique within the scope of the parent
    755  * element. Optional attribute.
    756  */
    757 	xsNCName attrSid;
    758 /**
    759  *  The name attribute is the text string name of this element. Optional attribute.
    760  */
    761 	xsNCName attrName;
    762 /**
    763  *  The target attribute indicates which node is influenced by this rigid_body
    764  * instance.  Required attribute
    765  */
    766 	xsAnyURI attrTarget;
    767 
    768 protected:  // Elements
    769 /**
    770  * The technique_common element specifies the instance_rigid_body information
    771  * for the common  profile which all COLLADA implementations need to support.
    772  * @see domTechnique_common
    773  */
    774 	domTechnique_commonRef elemTechnique_common;
    775 /**
    776  *  This element may contain any number of non-common profile techniques.
    777  * @see domTechnique
    778  */
    779 	domTechnique_Array elemTechnique_array;
    780 /**
    781  *  The extra element may appear any number of times.  @see domExtra
    782  */
    783 	domExtra_Array elemExtra_array;
    784 
    785 public:	//Accessors and Mutators
    786 	/**
    787 	 * Gets the body attribute.
    788 	 * @return Returns a xsNCName of the body attribute.
    789 	 */
    790 	xsNCName getBody() const { return attrBody; }
    791 	/**
    792 	 * Sets the body attribute.
    793 	 * @param atBody The new value for the body attribute.
    794 	 */
    795 	void setBody( xsNCName atBody ) { *(daeStringRef*)&attrBody = atBody; _validAttributeArray[0] = true; }
    796 
    797 	/**
    798 	 * Gets the sid attribute.
    799 	 * @return Returns a xsNCName of the sid attribute.
    800 	 */
    801 	xsNCName getSid() const { return attrSid; }
    802 	/**
    803 	 * Sets the sid attribute.
    804 	 * @param atSid The new value for the sid attribute.
    805 	 */
    806 	void setSid( xsNCName atSid ) { *(daeStringRef*)&attrSid = atSid; _validAttributeArray[1] = true; }
    807 
    808 	/**
    809 	 * Gets the name attribute.
    810 	 * @return Returns a xsNCName of the name attribute.
    811 	 */
    812 	xsNCName getName() const { return attrName; }
    813 	/**
    814 	 * Sets the name attribute.
    815 	 * @param atName The new value for the name attribute.
    816 	 */
    817 	void setName( xsNCName atName ) { *(daeStringRef*)&attrName = atName; _validAttributeArray[2] = true; }
    818 
    819 	/**
    820 	 * Gets the target attribute.
    821 	 * @return Returns a xsAnyURI reference of the target attribute.
    822 	 */
    823 	xsAnyURI &getTarget() { return attrTarget; }
    824 	/**
    825 	 * Gets the target attribute.
    826 	 * @return Returns a constant xsAnyURI reference of the target attribute.
    827 	 */
    828 	const xsAnyURI &getTarget() const { return attrTarget; }
    829 	/**
    830 	 * Sets the target attribute.
    831 	 * @param atTarget The new value for the target attribute.
    832 	 */
    833 	void setTarget( const xsAnyURI &atTarget ) { attrTarget = atTarget; _validAttributeArray[3] = true; }
    834 	/**
    835 	 * Sets the target attribute.
    836 	 * @param atTarget The new value for the target attribute.
    837 	 */
    838 	void setTarget( xsString atTarget ) { attrTarget = atTarget; _validAttributeArray[3] = true; }
    839 
    840 	/**
    841 	 * Gets the technique_common element.
    842 	 * @return a daeSmartRef to the technique_common element.
    843 	 */
    844 	const domTechnique_commonRef getTechnique_common() const { return elemTechnique_common; }
    845 	/**
    846 	 * Gets the technique element array.
    847 	 * @return Returns a reference to the array of technique elements.
    848 	 */
    849 	domTechnique_Array &getTechnique_array() { return elemTechnique_array; }
    850 	/**
    851 	 * Gets the technique element array.
    852 	 * @return Returns a constant reference to the array of technique elements.
    853 	 */
    854 	const domTechnique_Array &getTechnique_array() const { return elemTechnique_array; }
    855 	/**
    856 	 * Gets the extra element array.
    857 	 * @return Returns a reference to the array of extra elements.
    858 	 */
    859 	domExtra_Array &getExtra_array() { return elemExtra_array; }
    860 	/**
    861 	 * Gets the extra element array.
    862 	 * @return Returns a constant reference to the array of extra elements.
    863 	 */
    864 	const domExtra_Array &getExtra_array() const { return elemExtra_array; }
    865 protected:
    866 	/**
    867 	 * Constructor
    868 	 */
    869 	domInstance_rigid_body(DAE& dae) : daeElement(dae), attrBody(), attrSid(), attrName(), attrTarget(dae, *this), elemTechnique_common(), elemTechnique_array(), elemExtra_array() {}
    870 	/**
    871 	 * Destructor
    872 	 */
    873 	virtual ~domInstance_rigid_body() {}
    874 	/**
    875 	 * Overloaded assignment operator
    876 	 */
    877 	virtual domInstance_rigid_body &operator=( const domInstance_rigid_body &cpy ) { (void)cpy; return *this; }
    878 
    879 public: // STATIC METHODS
    880 	/**
    881 	 * Creates an instance of this class and returns a daeElementRef referencing it.
    882 	 * @return a daeElementRef referencing an instance of this object.
    883 	 */
    884 	static DLLSPEC daeElementRef create(DAE& dae);
    885 	/**
    886 	 * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
    887 	 * If a daeMetaElement already exists it will return that instead of creating a new one.
    888 	 * @return A daeMetaElement describing this COLLADA element.
    889 	 */
    890 	static DLLSPEC daeMetaElement* registerElement(DAE& dae);
    891 };
    892 
    893 
    894 #endif
    895