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 #include <dae.h> 10 #include <dae/daeDom.h> 11 #include <dom/domCamera.h> 12 #include <dae/daeMetaCMPolicy.h> 13 #include <dae/daeMetaSequence.h> 14 #include <dae/daeMetaChoice.h> 15 #include <dae/daeMetaGroup.h> 16 #include <dae/daeMetaAny.h> 17 #include <dae/daeMetaElementAttribute.h> 18 19 daeElementRef 20 domCamera::create(DAE& dae) 21 { 22 domCameraRef ref = new domCamera(dae); 23 return ref; 24 } 25 26 27 daeMetaElement * 28 domCamera::registerElement(DAE& dae) 29 { 30 daeMetaElement* meta = dae.getMeta(ID()); 31 if ( meta != NULL ) return meta; 32 33 meta = new daeMetaElement(dae); 34 dae.setMeta(ID(), *meta); 35 meta->setName( "camera" ); 36 meta->registerClass(domCamera::create); 37 38 daeMetaCMPolicy *cm = NULL; 39 daeMetaElementAttribute *mea = NULL; 40 cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); 41 42 mea = new daeMetaElementAttribute( meta, cm, 0, 0, 1 ); 43 mea->setName( "asset" ); 44 mea->setOffset( daeOffsetOf(domCamera,elemAsset) ); 45 mea->setElementType( domAsset::registerElement(dae) ); 46 cm->appendChild( mea ); 47 48 mea = new daeMetaElementAttribute( meta, cm, 1, 1, 1 ); 49 mea->setName( "optics" ); 50 mea->setOffset( daeOffsetOf(domCamera,elemOptics) ); 51 mea->setElementType( domCamera::domOptics::registerElement(dae) ); 52 cm->appendChild( mea ); 53 54 mea = new daeMetaElementAttribute( meta, cm, 2, 0, 1 ); 55 mea->setName( "imager" ); 56 mea->setOffset( daeOffsetOf(domCamera,elemImager) ); 57 mea->setElementType( domCamera::domImager::registerElement(dae) ); 58 cm->appendChild( mea ); 59 60 mea = new daeMetaElementArrayAttribute( meta, cm, 3, 0, -1 ); 61 mea->setName( "extra" ); 62 mea->setOffset( daeOffsetOf(domCamera,elemExtra_array) ); 63 mea->setElementType( domExtra::registerElement(dae) ); 64 cm->appendChild( mea ); 65 66 cm->setMaxOrdinal( 3 ); 67 meta->setCMRoot( cm ); 68 69 // Add attribute: id 70 { 71 daeMetaAttribute *ma = new daeMetaAttribute; 72 ma->setName( "id" ); 73 ma->setType( dae.getAtomicTypes().get("xsID")); 74 ma->setOffset( daeOffsetOf( domCamera , attrId )); 75 ma->setContainer( meta ); 76 77 meta->appendAttribute(ma); 78 } 79 80 // Add attribute: name 81 { 82 daeMetaAttribute *ma = new daeMetaAttribute; 83 ma->setName( "name" ); 84 ma->setType( dae.getAtomicTypes().get("xsNCName")); 85 ma->setOffset( daeOffsetOf( domCamera , attrName )); 86 ma->setContainer( meta ); 87 88 meta->appendAttribute(ma); 89 } 90 91 meta->setElementSize(sizeof(domCamera)); 92 meta->validate(); 93 94 return meta; 95 } 96 97 daeElementRef 98 domCamera::domOptics::create(DAE& dae) 99 { 100 domCamera::domOpticsRef ref = new domCamera::domOptics(dae); 101 return ref; 102 } 103 104 105 daeMetaElement * 106 domCamera::domOptics::registerElement(DAE& dae) 107 { 108 daeMetaElement* meta = dae.getMeta(ID()); 109 if ( meta != NULL ) return meta; 110 111 meta = new daeMetaElement(dae); 112 dae.setMeta(ID(), *meta); 113 meta->setName( "optics" ); 114 meta->registerClass(domCamera::domOptics::create); 115 116 meta->setIsInnerClass( true ); 117 daeMetaCMPolicy *cm = NULL; 118 daeMetaElementAttribute *mea = NULL; 119 cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); 120 121 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 122 mea->setName( "technique_common" ); 123 mea->setOffset( daeOffsetOf(domCamera::domOptics,elemTechnique_common) ); 124 mea->setElementType( domCamera::domOptics::domTechnique_common::registerElement(dae) ); 125 cm->appendChild( mea ); 126 127 mea = new daeMetaElementArrayAttribute( meta, cm, 1, 0, -1 ); 128 mea->setName( "technique" ); 129 mea->setOffset( daeOffsetOf(domCamera::domOptics,elemTechnique_array) ); 130 mea->setElementType( domTechnique::registerElement(dae) ); 131 cm->appendChild( mea ); 132 133 mea = new daeMetaElementArrayAttribute( meta, cm, 2, 0, -1 ); 134 mea->setName( "extra" ); 135 mea->setOffset( daeOffsetOf(domCamera::domOptics,elemExtra_array) ); 136 mea->setElementType( domExtra::registerElement(dae) ); 137 cm->appendChild( mea ); 138 139 cm->setMaxOrdinal( 2 ); 140 meta->setCMRoot( cm ); 141 142 meta->setElementSize(sizeof(domCamera::domOptics)); 143 meta->validate(); 144 145 return meta; 146 } 147 148 daeElementRef 149 domCamera::domOptics::domTechnique_common::create(DAE& dae) 150 { 151 domCamera::domOptics::domTechnique_commonRef ref = new domCamera::domOptics::domTechnique_common(dae); 152 return ref; 153 } 154 155 156 daeMetaElement * 157 domCamera::domOptics::domTechnique_common::registerElement(DAE& dae) 158 { 159 daeMetaElement* meta = dae.getMeta(ID()); 160 if ( meta != NULL ) return meta; 161 162 meta = new daeMetaElement(dae); 163 dae.setMeta(ID(), *meta); 164 meta->setName( "technique_common" ); 165 meta->registerClass(domCamera::domOptics::domTechnique_common::create); 166 167 meta->setIsInnerClass( true ); 168 daeMetaCMPolicy *cm = NULL; 169 daeMetaElementAttribute *mea = NULL; 170 cm = new daeMetaChoice( meta, cm, 0, 0, 1, 1 ); 171 172 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 173 mea->setName( "orthographic" ); 174 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common,elemOrthographic) ); 175 mea->setElementType( domCamera::domOptics::domTechnique_common::domOrthographic::registerElement(dae) ); 176 cm->appendChild( mea ); 177 178 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 179 mea->setName( "perspective" ); 180 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common,elemPerspective) ); 181 mea->setElementType( domCamera::domOptics::domTechnique_common::domPerspective::registerElement(dae) ); 182 cm->appendChild( mea ); 183 184 cm->setMaxOrdinal( 0 ); 185 meta->setCMRoot( cm ); 186 // Ordered list of sub-elements 187 meta->addContents(daeOffsetOf(domCamera::domOptics::domTechnique_common,_contents)); 188 meta->addContentsOrder(daeOffsetOf(domCamera::domOptics::domTechnique_common,_contentsOrder)); 189 190 meta->addCMDataArray(daeOffsetOf(domCamera::domOptics::domTechnique_common,_CMData), 1); 191 meta->setElementSize(sizeof(domCamera::domOptics::domTechnique_common)); 192 meta->validate(); 193 194 return meta; 195 } 196 197 daeElementRef 198 domCamera::domOptics::domTechnique_common::domOrthographic::create(DAE& dae) 199 { 200 domCamera::domOptics::domTechnique_common::domOrthographicRef ref = new domCamera::domOptics::domTechnique_common::domOrthographic(dae); 201 return ref; 202 } 203 204 205 daeMetaElement * 206 domCamera::domOptics::domTechnique_common::domOrthographic::registerElement(DAE& dae) 207 { 208 daeMetaElement* meta = dae.getMeta(ID()); 209 if ( meta != NULL ) return meta; 210 211 meta = new daeMetaElement(dae); 212 dae.setMeta(ID(), *meta); 213 meta->setName( "orthographic" ); 214 meta->registerClass(domCamera::domOptics::domTechnique_common::domOrthographic::create); 215 216 meta->setIsInnerClass( true ); 217 daeMetaCMPolicy *cm = NULL; 218 daeMetaElementAttribute *mea = NULL; 219 cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); 220 221 cm = new daeMetaChoice( meta, cm, 0, 0, 1, 1 ); 222 223 cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); 224 225 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 226 mea->setName( "xmag" ); 227 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,elemXmag) ); 228 mea->setElementType( domTargetableFloat::registerElement(dae) ); 229 cm->appendChild( mea ); 230 231 cm = new daeMetaChoice( meta, cm, 1, 1, 0, 1 ); 232 233 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 234 mea->setName( "ymag" ); 235 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,elemYmag) ); 236 mea->setElementType( domTargetableFloat::registerElement(dae) ); 237 cm->appendChild( mea ); 238 239 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 240 mea->setName( "aspect_ratio" ); 241 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,elemAspect_ratio) ); 242 mea->setElementType( domTargetableFloat::registerElement(dae) ); 243 cm->appendChild( mea ); 244 245 cm->setMaxOrdinal( 0 ); 246 cm->getParent()->appendChild( cm ); 247 cm = cm->getParent(); 248 249 cm->setMaxOrdinal( 1 ); 250 cm->getParent()->appendChild( cm ); 251 cm = cm->getParent(); 252 253 cm = new daeMetaSequence( meta, cm, 2, 1, 1 ); 254 255 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 256 mea->setName( "ymag" ); 257 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,elemYmag) ); 258 mea->setElementType( domTargetableFloat::registerElement(dae) ); 259 cm->appendChild( mea ); 260 261 mea = new daeMetaElementAttribute( meta, cm, 1, 0, 1 ); 262 mea->setName( "aspect_ratio" ); 263 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,elemAspect_ratio) ); 264 mea->setElementType( domTargetableFloat::registerElement(dae) ); 265 cm->appendChild( mea ); 266 267 cm->setMaxOrdinal( 1 ); 268 cm->getParent()->appendChild( cm ); 269 cm = cm->getParent(); 270 271 cm->setMaxOrdinal( 3 ); 272 cm->getParent()->appendChild( cm ); 273 cm = cm->getParent(); 274 275 mea = new daeMetaElementAttribute( meta, cm, 1, 1, 1 ); 276 mea->setName( "znear" ); 277 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,elemZnear) ); 278 mea->setElementType( domTargetableFloat::registerElement(dae) ); 279 cm->appendChild( mea ); 280 281 mea = new daeMetaElementAttribute( meta, cm, 2, 1, 1 ); 282 mea->setName( "zfar" ); 283 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,elemZfar) ); 284 mea->setElementType( domTargetableFloat::registerElement(dae) ); 285 cm->appendChild( mea ); 286 287 cm->setMaxOrdinal( 2 ); 288 meta->setCMRoot( cm ); 289 // Ordered list of sub-elements 290 meta->addContents(daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,_contents)); 291 meta->addContentsOrder(daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,_contentsOrder)); 292 293 meta->addCMDataArray(daeOffsetOf(domCamera::domOptics::domTechnique_common::domOrthographic,_CMData), 2); 294 meta->setElementSize(sizeof(domCamera::domOptics::domTechnique_common::domOrthographic)); 295 meta->validate(); 296 297 return meta; 298 } 299 300 daeElementRef 301 domCamera::domOptics::domTechnique_common::domPerspective::create(DAE& dae) 302 { 303 domCamera::domOptics::domTechnique_common::domPerspectiveRef ref = new domCamera::domOptics::domTechnique_common::domPerspective(dae); 304 return ref; 305 } 306 307 308 daeMetaElement * 309 domCamera::domOptics::domTechnique_common::domPerspective::registerElement(DAE& dae) 310 { 311 daeMetaElement* meta = dae.getMeta(ID()); 312 if ( meta != NULL ) return meta; 313 314 meta = new daeMetaElement(dae); 315 dae.setMeta(ID(), *meta); 316 meta->setName( "perspective" ); 317 meta->registerClass(domCamera::domOptics::domTechnique_common::domPerspective::create); 318 319 meta->setIsInnerClass( true ); 320 daeMetaCMPolicy *cm = NULL; 321 daeMetaElementAttribute *mea = NULL; 322 cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); 323 324 cm = new daeMetaChoice( meta, cm, 0, 0, 1, 1 ); 325 326 cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); 327 328 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 329 mea->setName( "xfov" ); 330 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,elemXfov) ); 331 mea->setElementType( domTargetableFloat::registerElement(dae) ); 332 cm->appendChild( mea ); 333 334 cm = new daeMetaChoice( meta, cm, 1, 1, 0, 1 ); 335 336 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 337 mea->setName( "yfov" ); 338 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,elemYfov) ); 339 mea->setElementType( domTargetableFloat::registerElement(dae) ); 340 cm->appendChild( mea ); 341 342 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 343 mea->setName( "aspect_ratio" ); 344 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,elemAspect_ratio) ); 345 mea->setElementType( domTargetableFloat::registerElement(dae) ); 346 cm->appendChild( mea ); 347 348 cm->setMaxOrdinal( 0 ); 349 cm->getParent()->appendChild( cm ); 350 cm = cm->getParent(); 351 352 cm->setMaxOrdinal( 1 ); 353 cm->getParent()->appendChild( cm ); 354 cm = cm->getParent(); 355 356 cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); 357 358 mea = new daeMetaElementAttribute( meta, cm, 0, 1, 1 ); 359 mea->setName( "yfov" ); 360 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,elemYfov) ); 361 mea->setElementType( domTargetableFloat::registerElement(dae) ); 362 cm->appendChild( mea ); 363 364 mea = new daeMetaElementAttribute( meta, cm, 1, 0, 1 ); 365 mea->setName( "aspect_ratio" ); 366 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,elemAspect_ratio) ); 367 mea->setElementType( domTargetableFloat::registerElement(dae) ); 368 cm->appendChild( mea ); 369 370 cm->setMaxOrdinal( 1 ); 371 cm->getParent()->appendChild( cm ); 372 cm = cm->getParent(); 373 374 cm->setMaxOrdinal( 3 ); 375 cm->getParent()->appendChild( cm ); 376 cm = cm->getParent(); 377 378 mea = new daeMetaElementAttribute( meta, cm, 1, 1, 1 ); 379 mea->setName( "znear" ); 380 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,elemZnear) ); 381 mea->setElementType( domTargetableFloat::registerElement(dae) ); 382 cm->appendChild( mea ); 383 384 mea = new daeMetaElementAttribute( meta, cm, 2, 1, 1 ); 385 mea->setName( "zfar" ); 386 mea->setOffset( daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,elemZfar) ); 387 mea->setElementType( domTargetableFloat::registerElement(dae) ); 388 cm->appendChild( mea ); 389 390 cm->setMaxOrdinal( 2 ); 391 meta->setCMRoot( cm ); 392 // Ordered list of sub-elements 393 meta->addContents(daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,_contents)); 394 meta->addContentsOrder(daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,_contentsOrder)); 395 396 meta->addCMDataArray(daeOffsetOf(domCamera::domOptics::domTechnique_common::domPerspective,_CMData), 2); 397 meta->setElementSize(sizeof(domCamera::domOptics::domTechnique_common::domPerspective)); 398 meta->validate(); 399 400 return meta; 401 } 402 403 daeElementRef 404 domCamera::domImager::create(DAE& dae) 405 { 406 domCamera::domImagerRef ref = new domCamera::domImager(dae); 407 return ref; 408 } 409 410 411 daeMetaElement * 412 domCamera::domImager::registerElement(DAE& dae) 413 { 414 daeMetaElement* meta = dae.getMeta(ID()); 415 if ( meta != NULL ) return meta; 416 417 meta = new daeMetaElement(dae); 418 dae.setMeta(ID(), *meta); 419 meta->setName( "imager" ); 420 meta->registerClass(domCamera::domImager::create); 421 422 meta->setIsInnerClass( true ); 423 daeMetaCMPolicy *cm = NULL; 424 daeMetaElementAttribute *mea = NULL; 425 cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); 426 427 mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, -1 ); 428 mea->setName( "technique" ); 429 mea->setOffset( daeOffsetOf(domCamera::domImager,elemTechnique_array) ); 430 mea->setElementType( domTechnique::registerElement(dae) ); 431 cm->appendChild( mea ); 432 433 mea = new daeMetaElementArrayAttribute( meta, cm, 1, 0, -1 ); 434 mea->setName( "extra" ); 435 mea->setOffset( daeOffsetOf(domCamera::domImager,elemExtra_array) ); 436 mea->setElementType( domExtra::registerElement(dae) ); 437 cm->appendChild( mea ); 438 439 cm->setMaxOrdinal( 1 ); 440 meta->setCMRoot( cm ); 441 442 meta->setElementSize(sizeof(domCamera::domImager)); 443 meta->validate(); 444 445 return meta; 446 } 447 448