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 #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