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
create(DAE & dae)20 domCamera::create(DAE& dae)
21 {
22 domCameraRef ref = new domCamera(dae);
23 return ref;
24 }
25
26
27 daeMetaElement *
registerElement(DAE & dae)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
create(DAE & dae)98 domCamera::domOptics::create(DAE& dae)
99 {
100 domCamera::domOpticsRef ref = new domCamera::domOptics(dae);
101 return ref;
102 }
103
104
105 daeMetaElement *
registerElement(DAE & dae)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
create(DAE & dae)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 *
registerElement(DAE & dae)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
create(DAE & dae)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 *
registerElement(DAE & dae)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
create(DAE & dae)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 *
registerElement(DAE & dae)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
create(DAE & dae)404 domCamera::domImager::create(DAE& dae)
405 {
406 domCamera::domImagerRef ref = new domCamera::domImager(dae);
407 return ref;
408 }
409
410
411 daeMetaElement *
registerElement(DAE & dae)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