domCamera.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. /*
  2. * Copyright 2006 Sony Computer Entertainment Inc.
  3. *
  4. * Licensed under the SCEA Shared Source License, Version 1.0 (the "License"); you may not use this
  5. * file except in compliance with the License. You may obtain a copy of the License at:
  6. * http://research.scea.com/scea_shared_source_license.html
  7. *
  8. * Unless required by applicable law or agreed to in writing, software distributed under the License
  9. * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
  10. * implied. See the License for the specific language governing permissions and limitations under the
  11. * License.
  12. */
  13. #ifndef __domCamera_h__
  14. #define __domCamera_h__
  15. #include <dae/daeDocument.h>
  16. #include <dom/domTypes.h>
  17. #include <dom/domElements.h>
  18. #include <dom/domAsset.h>
  19. #include <dom/domExtra.h>
  20. #include <dom/domTechnique.h>
  21. #include <dom/domTargetableFloat.h>
  22. class DAE;
  23. /**
  24. * The camera element declares a view into the scene hierarchy or scene graph.
  25. * The camera contains elements that describe the camera’s optics and imager.
  26. */
  27. class domCamera : public daeElement
  28. {
  29. public:
  30. virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::CAMERA; }
  31. static daeInt ID() { return 645; }
  32. virtual daeInt typeID() const { return ID(); }
  33. public:
  34. class domOptics;
  35. typedef daeSmartRef<domOptics> domOpticsRef;
  36. typedef daeTArray<domOpticsRef> domOptics_Array;
  37. /**
  38. * Optics represents the apparatus on a camera that projects the image onto
  39. * the image sensor.
  40. */
  41. class domOptics : public daeElement
  42. {
  43. public:
  44. virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::OPTICS; }
  45. static daeInt ID() { return 646; }
  46. virtual daeInt typeID() const { return ID(); }
  47. public:
  48. class domTechnique_common;
  49. typedef daeSmartRef<domTechnique_common> domTechnique_commonRef;
  50. typedef daeTArray<domTechnique_commonRef> domTechnique_common_Array;
  51. /**
  52. * The technique_common element specifies the optics information for the common
  53. * profile which all COLLADA implementations need to support.
  54. */
  55. class domTechnique_common : public daeElement
  56. {
  57. public:
  58. virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::TECHNIQUE_COMMON; }
  59. static daeInt ID() { return 647; }
  60. virtual daeInt typeID() const { return ID(); }
  61. public:
  62. class domOrthographic;
  63. typedef daeSmartRef<domOrthographic> domOrthographicRef;
  64. typedef daeTArray<domOrthographicRef> domOrthographic_Array;
  65. /**
  66. * The orthographic element describes the field of view of an orthographic
  67. * camera.
  68. */
  69. class domOrthographic : public daeElement
  70. {
  71. public:
  72. virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::ORTHOGRAPHIC; }
  73. static daeInt ID() { return 648; }
  74. virtual daeInt typeID() const { return ID(); }
  75. protected: // Elements
  76. /**
  77. * The xmag element contains a floating point number describing the horizontal
  78. * magnification of the view. @see domXmag
  79. */
  80. domTargetableFloatRef elemXmag;
  81. /**
  82. * The ymag element contains a floating point number describing the vertical
  83. * magnification of the view. It can also have a sid. @see domYmag
  84. */
  85. domTargetableFloatRef elemYmag;
  86. /**
  87. * The aspect_ratio element contains a floating point number describing the
  88. * aspect ratio of the field of view. If the aspect_ratio element is not
  89. * present the aspect ratio is to be calculated from the xmag or ymag elements
  90. * and the current viewport. @see domAspect_ratio
  91. */
  92. domTargetableFloatRef elemAspect_ratio;
  93. /**
  94. * The znear element contains a floating point number that describes the distance
  95. * to the near clipping plane. The znear element must occur exactly once.
  96. * @see domZnear
  97. */
  98. domTargetableFloatRef elemZnear;
  99. /**
  100. * The zfar element contains a floating point number that describes the distance
  101. * to the far clipping plane. The zfar element must occur exactly once. @see
  102. * domZfar
  103. */
  104. domTargetableFloatRef elemZfar;
  105. /**
  106. * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
  107. */
  108. daeElementRefArray _contents;
  109. /**
  110. * Used to preserve order in elements that have a complex content model.
  111. */
  112. daeUIntArray _contentsOrder;
  113. /**
  114. * Used to store information needed for some content model objects.
  115. */
  116. daeTArray< daeCharArray * > _CMData;
  117. public: //Accessors and Mutators
  118. /**
  119. * Gets the xmag element.
  120. * @return a daeSmartRef to the xmag element.
  121. */
  122. const domTargetableFloatRef getXmag() const { return elemXmag; }
  123. /**
  124. * Gets the ymag element.
  125. * @return a daeSmartRef to the ymag element.
  126. */
  127. const domTargetableFloatRef getYmag() const { return elemYmag; }
  128. /**
  129. * Gets the aspect_ratio element.
  130. * @return a daeSmartRef to the aspect_ratio element.
  131. */
  132. const domTargetableFloatRef getAspect_ratio() const { return elemAspect_ratio; }
  133. /**
  134. * Gets the znear element.
  135. * @return a daeSmartRef to the znear element.
  136. */
  137. const domTargetableFloatRef getZnear() const { return elemZnear; }
  138. /**
  139. * Gets the zfar element.
  140. * @return a daeSmartRef to the zfar element.
  141. */
  142. const domTargetableFloatRef getZfar() const { return elemZfar; }
  143. /**
  144. * Gets the _contents array.
  145. * @return Returns a reference to the _contents element array.
  146. */
  147. daeElementRefArray &getContents() { return _contents; }
  148. /**
  149. * Gets the _contents array.
  150. * @return Returns a constant reference to the _contents element array.
  151. */
  152. const daeElementRefArray &getContents() const { return _contents; }
  153. protected:
  154. /**
  155. * Constructor
  156. */
  157. domOrthographic(DAE& dae) : daeElement(dae), elemXmag(), elemYmag(), elemAspect_ratio(), elemZnear(), elemZfar() {}
  158. /**
  159. * Destructor
  160. */
  161. virtual ~domOrthographic() { daeElement::deleteCMDataArray(_CMData); }
  162. /**
  163. * Overloaded assignment operator
  164. */
  165. virtual domOrthographic &operator=( const domOrthographic &cpy ) { (void)cpy; return *this; }
  166. public: // STATIC METHODS
  167. /**
  168. * Creates an instance of this class and returns a daeElementRef referencing it.
  169. * @return a daeElementRef referencing an instance of this object.
  170. */
  171. static DLLSPEC daeElementRef create(DAE& dae);
  172. /**
  173. * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
  174. * If a daeMetaElement already exists it will return that instead of creating a new one.
  175. * @return A daeMetaElement describing this COLLADA element.
  176. */
  177. static DLLSPEC daeMetaElement* registerElement(DAE& dae);
  178. };
  179. class domPerspective;
  180. typedef daeSmartRef<domPerspective> domPerspectiveRef;
  181. typedef daeTArray<domPerspectiveRef> domPerspective_Array;
  182. /**
  183. * The perspective element describes the optics of a perspective camera.
  184. */
  185. class domPerspective : public daeElement
  186. {
  187. public:
  188. virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::PERSPECTIVE; }
  189. static daeInt ID() { return 649; }
  190. virtual daeInt typeID() const { return ID(); }
  191. protected: // Elements
  192. /**
  193. * The xfov element contains a floating point number describing the horizontal
  194. * field of view in degrees. @see domXfov
  195. */
  196. domTargetableFloatRef elemXfov;
  197. /**
  198. * The yfov element contains a floating point number describing the verticle
  199. * field of view in degrees. @see domYfov
  200. */
  201. domTargetableFloatRef elemYfov;
  202. /**
  203. * The aspect_ratio element contains a floating point number describing the
  204. * aspect ratio of the field of view. If the aspect_ratio element is not
  205. * present the aspect ratio is to be calculated from the xfov or yfov elements
  206. * and the current viewport. @see domAspect_ratio
  207. */
  208. domTargetableFloatRef elemAspect_ratio;
  209. /**
  210. * The znear element contains a floating point number that describes the distance
  211. * to the near clipping plane. The znear element must occur exactly once.
  212. * @see domZnear
  213. */
  214. domTargetableFloatRef elemZnear;
  215. /**
  216. * The zfar element contains a floating point number that describes the distance
  217. * to the far clipping plane. The zfar element must occur exactly once. @see
  218. * domZfar
  219. */
  220. domTargetableFloatRef elemZfar;
  221. /**
  222. * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
  223. */
  224. daeElementRefArray _contents;
  225. /**
  226. * Used to preserve order in elements that have a complex content model.
  227. */
  228. daeUIntArray _contentsOrder;
  229. /**
  230. * Used to store information needed for some content model objects.
  231. */
  232. daeTArray< daeCharArray * > _CMData;
  233. public: //Accessors and Mutators
  234. /**
  235. * Gets the xfov element.
  236. * @return a daeSmartRef to the xfov element.
  237. */
  238. const domTargetableFloatRef getXfov() const { return elemXfov; }
  239. /**
  240. * Gets the yfov element.
  241. * @return a daeSmartRef to the yfov element.
  242. */
  243. const domTargetableFloatRef getYfov() const { return elemYfov; }
  244. /**
  245. * Gets the aspect_ratio element.
  246. * @return a daeSmartRef to the aspect_ratio element.
  247. */
  248. const domTargetableFloatRef getAspect_ratio() const { return elemAspect_ratio; }
  249. /**
  250. * Gets the znear element.
  251. * @return a daeSmartRef to the znear element.
  252. */
  253. const domTargetableFloatRef getZnear() const { return elemZnear; }
  254. /**
  255. * Gets the zfar element.
  256. * @return a daeSmartRef to the zfar element.
  257. */
  258. const domTargetableFloatRef getZfar() const { return elemZfar; }
  259. /**
  260. * Gets the _contents array.
  261. * @return Returns a reference to the _contents element array.
  262. */
  263. daeElementRefArray &getContents() { return _contents; }
  264. /**
  265. * Gets the _contents array.
  266. * @return Returns a constant reference to the _contents element array.
  267. */
  268. const daeElementRefArray &getContents() const { return _contents; }
  269. protected:
  270. /**
  271. * Constructor
  272. */
  273. domPerspective(DAE& dae) : daeElement(dae), elemXfov(), elemYfov(), elemAspect_ratio(), elemZnear(), elemZfar() {}
  274. /**
  275. * Destructor
  276. */
  277. virtual ~domPerspective() { daeElement::deleteCMDataArray(_CMData); }
  278. /**
  279. * Overloaded assignment operator
  280. */
  281. virtual domPerspective &operator=( const domPerspective &cpy ) { (void)cpy; return *this; }
  282. public: // STATIC METHODS
  283. /**
  284. * Creates an instance of this class and returns a daeElementRef referencing it.
  285. * @return a daeElementRef referencing an instance of this object.
  286. */
  287. static DLLSPEC daeElementRef create(DAE& dae);
  288. /**
  289. * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
  290. * If a daeMetaElement already exists it will return that instead of creating a new one.
  291. * @return A daeMetaElement describing this COLLADA element.
  292. */
  293. static DLLSPEC daeMetaElement* registerElement(DAE& dae);
  294. };
  295. protected: // Elements
  296. /**
  297. * The orthographic element describes the field of view of an orthographic
  298. * camera. @see domOrthographic
  299. */
  300. domOrthographicRef elemOrthographic;
  301. /**
  302. * The perspective element describes the optics of a perspective camera. @see
  303. * domPerspective
  304. */
  305. domPerspectiveRef elemPerspective;
  306. /**
  307. * Used to preserve order in elements that do not specify strict sequencing of sub-elements.
  308. */
  309. daeElementRefArray _contents;
  310. /**
  311. * Used to preserve order in elements that have a complex content model.
  312. */
  313. daeUIntArray _contentsOrder;
  314. /**
  315. * Used to store information needed for some content model objects.
  316. */
  317. daeTArray< daeCharArray * > _CMData;
  318. public: //Accessors and Mutators
  319. /**
  320. * Gets the orthographic element.
  321. * @return a daeSmartRef to the orthographic element.
  322. */
  323. const domOrthographicRef getOrthographic() const { return elemOrthographic; }
  324. /**
  325. * Gets the perspective element.
  326. * @return a daeSmartRef to the perspective element.
  327. */
  328. const domPerspectiveRef getPerspective() const { return elemPerspective; }
  329. /**
  330. * Gets the _contents array.
  331. * @return Returns a reference to the _contents element array.
  332. */
  333. daeElementRefArray &getContents() { return _contents; }
  334. /**
  335. * Gets the _contents array.
  336. * @return Returns a constant reference to the _contents element array.
  337. */
  338. const daeElementRefArray &getContents() const { return _contents; }
  339. protected:
  340. /**
  341. * Constructor
  342. */
  343. domTechnique_common(DAE& dae) : daeElement(dae), elemOrthographic(), elemPerspective() {}
  344. /**
  345. * Destructor
  346. */
  347. virtual ~domTechnique_common() { daeElement::deleteCMDataArray(_CMData); }
  348. /**
  349. * Overloaded assignment operator
  350. */
  351. virtual domTechnique_common &operator=( const domTechnique_common &cpy ) { (void)cpy; return *this; }
  352. public: // STATIC METHODS
  353. /**
  354. * Creates an instance of this class and returns a daeElementRef referencing it.
  355. * @return a daeElementRef referencing an instance of this object.
  356. */
  357. static DLLSPEC daeElementRef create(DAE& dae);
  358. /**
  359. * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
  360. * If a daeMetaElement already exists it will return that instead of creating a new one.
  361. * @return A daeMetaElement describing this COLLADA element.
  362. */
  363. static DLLSPEC daeMetaElement* registerElement(DAE& dae);
  364. };
  365. protected: // Elements
  366. /**
  367. * The technique_common element specifies the optics information for the common
  368. * profile which all COLLADA implementations need to support. @see domTechnique_common
  369. */
  370. domTechnique_commonRef elemTechnique_common;
  371. /**
  372. * This element may contain any number of non-common profile techniques.
  373. * @see domTechnique
  374. */
  375. domTechnique_Array elemTechnique_array;
  376. /**
  377. * The extra element may appear any number of times. @see domExtra
  378. */
  379. domExtra_Array elemExtra_array;
  380. public: //Accessors and Mutators
  381. /**
  382. * Gets the technique_common element.
  383. * @return a daeSmartRef to the technique_common element.
  384. */
  385. const domTechnique_commonRef getTechnique_common() const { return elemTechnique_common; }
  386. /**
  387. * Gets the technique element array.
  388. * @return Returns a reference to the array of technique elements.
  389. */
  390. domTechnique_Array &getTechnique_array() { return elemTechnique_array; }
  391. /**
  392. * Gets the technique element array.
  393. * @return Returns a constant reference to the array of technique elements.
  394. */
  395. const domTechnique_Array &getTechnique_array() const { return elemTechnique_array; }
  396. /**
  397. * Gets the extra element array.
  398. * @return Returns a reference to the array of extra elements.
  399. */
  400. domExtra_Array &getExtra_array() { return elemExtra_array; }
  401. /**
  402. * Gets the extra element array.
  403. * @return Returns a constant reference to the array of extra elements.
  404. */
  405. const domExtra_Array &getExtra_array() const { return elemExtra_array; }
  406. protected:
  407. /**
  408. * Constructor
  409. */
  410. domOptics(DAE& dae) : daeElement(dae), elemTechnique_common(), elemTechnique_array(), elemExtra_array() {}
  411. /**
  412. * Destructor
  413. */
  414. virtual ~domOptics() {}
  415. /**
  416. * Overloaded assignment operator
  417. */
  418. virtual domOptics &operator=( const domOptics &cpy ) { (void)cpy; return *this; }
  419. public: // STATIC METHODS
  420. /**
  421. * Creates an instance of this class and returns a daeElementRef referencing it.
  422. * @return a daeElementRef referencing an instance of this object.
  423. */
  424. static DLLSPEC daeElementRef create(DAE& dae);
  425. /**
  426. * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
  427. * If a daeMetaElement already exists it will return that instead of creating a new one.
  428. * @return A daeMetaElement describing this COLLADA element.
  429. */
  430. static DLLSPEC daeMetaElement* registerElement(DAE& dae);
  431. };
  432. class domImager;
  433. typedef daeSmartRef<domImager> domImagerRef;
  434. typedef daeTArray<domImagerRef> domImager_Array;
  435. /**
  436. * Imagers represent the image sensor of a camera (for example film or CCD).
  437. */
  438. class domImager : public daeElement
  439. {
  440. public:
  441. virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::IMAGER; }
  442. static daeInt ID() { return 650; }
  443. virtual daeInt typeID() const { return ID(); }
  444. protected: // Elements
  445. /**
  446. * This element may contain any number of non-common profile techniques.
  447. * There is no common technique for imager. @see domTechnique
  448. */
  449. domTechnique_Array elemTechnique_array;
  450. /**
  451. * The extra element may appear any number of times. @see domExtra
  452. */
  453. domExtra_Array elemExtra_array;
  454. public: //Accessors and Mutators
  455. /**
  456. * Gets the technique element array.
  457. * @return Returns a reference to the array of technique elements.
  458. */
  459. domTechnique_Array &getTechnique_array() { return elemTechnique_array; }
  460. /**
  461. * Gets the technique element array.
  462. * @return Returns a constant reference to the array of technique elements.
  463. */
  464. const domTechnique_Array &getTechnique_array() const { return elemTechnique_array; }
  465. /**
  466. * Gets the extra element array.
  467. * @return Returns a reference to the array of extra elements.
  468. */
  469. domExtra_Array &getExtra_array() { return elemExtra_array; }
  470. /**
  471. * Gets the extra element array.
  472. * @return Returns a constant reference to the array of extra elements.
  473. */
  474. const domExtra_Array &getExtra_array() const { return elemExtra_array; }
  475. protected:
  476. /**
  477. * Constructor
  478. */
  479. domImager(DAE& dae) : daeElement(dae), elemTechnique_array(), elemExtra_array() {}
  480. /**
  481. * Destructor
  482. */
  483. virtual ~domImager() {}
  484. /**
  485. * Overloaded assignment operator
  486. */
  487. virtual domImager &operator=( const domImager &cpy ) { (void)cpy; return *this; }
  488. public: // STATIC METHODS
  489. /**
  490. * Creates an instance of this class and returns a daeElementRef referencing it.
  491. * @return a daeElementRef referencing an instance of this object.
  492. */
  493. static DLLSPEC daeElementRef create(DAE& dae);
  494. /**
  495. * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
  496. * If a daeMetaElement already exists it will return that instead of creating a new one.
  497. * @return A daeMetaElement describing this COLLADA element.
  498. */
  499. static DLLSPEC daeMetaElement* registerElement(DAE& dae);
  500. };
  501. protected: // Attributes
  502. /**
  503. * The id attribute is a text string containing the unique identifier of
  504. * this element. This value must be unique within the instance document.
  505. * Optional attribute.
  506. */
  507. xsID attrId;
  508. /**
  509. * The name attribute is the text string name of this element. Optional attribute.
  510. */
  511. xsNCName attrName;
  512. protected: // Elements
  513. /**
  514. * The camera element may contain an asset element. @see domAsset
  515. */
  516. domAssetRef elemAsset;
  517. /**
  518. * Optics represents the apparatus on a camera that projects the image onto
  519. * the image sensor. @see domOptics
  520. */
  521. domOpticsRef elemOptics;
  522. /**
  523. * Imagers represent the image sensor of a camera (for example film or CCD).
  524. * @see domImager
  525. */
  526. domImagerRef elemImager;
  527. /**
  528. * The extra element may appear any number of times. @see domExtra
  529. */
  530. domExtra_Array elemExtra_array;
  531. public: //Accessors and Mutators
  532. /**
  533. * Gets the id attribute.
  534. * @return Returns a xsID of the id attribute.
  535. */
  536. xsID getId() const { return attrId; }
  537. /**
  538. * Sets the id attribute.
  539. * @param atId The new value for the id attribute.
  540. */
  541. void setId( xsID atId ) { *(daeStringRef*)&attrId = atId; _validAttributeArray[0] = true;
  542. if( _document != NULL ) _document->changeElementID( this, attrId );
  543. }
  544. /**
  545. * Gets the name attribute.
  546. * @return Returns a xsNCName of the name attribute.
  547. */
  548. xsNCName getName() const { return attrName; }
  549. /**
  550. * Sets the name attribute.
  551. * @param atName The new value for the name attribute.
  552. */
  553. void setName( xsNCName atName ) { *(daeStringRef*)&attrName = atName; _validAttributeArray[1] = true; }
  554. /**
  555. * Gets the asset element.
  556. * @return a daeSmartRef to the asset element.
  557. */
  558. const domAssetRef getAsset() const { return elemAsset; }
  559. /**
  560. * Gets the optics element.
  561. * @return a daeSmartRef to the optics element.
  562. */
  563. const domOpticsRef getOptics() const { return elemOptics; }
  564. /**
  565. * Gets the imager element.
  566. * @return a daeSmartRef to the imager element.
  567. */
  568. const domImagerRef getImager() const { return elemImager; }
  569. /**
  570. * Gets the extra element array.
  571. * @return Returns a reference to the array of extra elements.
  572. */
  573. domExtra_Array &getExtra_array() { return elemExtra_array; }
  574. /**
  575. * Gets the extra element array.
  576. * @return Returns a constant reference to the array of extra elements.
  577. */
  578. const domExtra_Array &getExtra_array() const { return elemExtra_array; }
  579. protected:
  580. /**
  581. * Constructor
  582. */
  583. domCamera(DAE& dae) : daeElement(dae), attrId(), attrName(), elemAsset(), elemOptics(), elemImager(), elemExtra_array() {}
  584. /**
  585. * Destructor
  586. */
  587. virtual ~domCamera() {}
  588. /**
  589. * Overloaded assignment operator
  590. */
  591. virtual domCamera &operator=( const domCamera &cpy ) { (void)cpy; return *this; }
  592. public: // STATIC METHODS
  593. /**
  594. * Creates an instance of this class and returns a daeElementRef referencing it.
  595. * @return a daeElementRef referencing an instance of this object.
  596. */
  597. static DLLSPEC daeElementRef create(DAE& dae);
  598. /**
  599. * Creates a daeMetaElement object that describes this element in the meta object reflection framework.
  600. * If a daeMetaElement already exists it will return that instead of creating a new one.
  601. * @return A daeMetaElement describing this COLLADA element.
  602. */
  603. static DLLSPEC daeMetaElement* registerElement(DAE& dae);
  604. };
  605. #endif