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