• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/domAnimation.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 domAnimation::create(DAE& dae)
21 {
22 	domAnimationRef ref = new domAnimation(dae);
23 	return ref;
24 }
25 
26 
27 daeMetaElement *
registerElement(DAE & dae)28 domAnimation::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( "animation" );
36 	meta->registerClass(domAnimation::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(domAnimation,elemAsset) );
45 	mea->setElementType( domAsset::registerElement(dae) );
46 	cm->appendChild( mea );
47 
48 	cm = new daeMetaChoice( meta, cm, 0, 1, 1, 1 );
49 
50 	cm = new daeMetaSequence( meta, cm, 0, 1, 1 );
51 
52 	mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, -1 );
53 	mea->setName( "source" );
54 	mea->setOffset( daeOffsetOf(domAnimation,elemSource_array) );
55 	mea->setElementType( domSource::registerElement(dae) );
56 	cm->appendChild( mea );
57 
58 	cm = new daeMetaChoice( meta, cm, 1, 1, 1, 1 );
59 
60 	cm = new daeMetaSequence( meta, cm, 0, 1, 1 );
61 
62 	mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, -1 );
63 	mea->setName( "sampler" );
64 	mea->setOffset( daeOffsetOf(domAnimation,elemSampler_array) );
65 	mea->setElementType( domSampler::registerElement(dae) );
66 	cm->appendChild( mea );
67 
68 	mea = new daeMetaElementArrayAttribute( meta, cm, 1, 1, -1 );
69 	mea->setName( "channel" );
70 	mea->setOffset( daeOffsetOf(domAnimation,elemChannel_array) );
71 	mea->setElementType( domChannel::registerElement(dae) );
72 	cm->appendChild( mea );
73 
74 	mea = new daeMetaElementArrayAttribute( meta, cm, 2, 0, -1 );
75 	mea->setName( "animation" );
76 	mea->setOffset( daeOffsetOf(domAnimation,elemAnimation_array) );
77 	mea->setElementType( domAnimation::registerElement(dae) );
78 	cm->appendChild( mea );
79 
80 	cm->setMaxOrdinal( 2 );
81 	cm->getParent()->appendChild( cm );
82 	cm = cm->getParent();
83 
84 	mea = new daeMetaElementArrayAttribute( meta, cm, 3, 1, -1 );
85 	mea->setName( "animation" );
86 	mea->setOffset( daeOffsetOf(domAnimation,elemAnimation_array) );
87 	mea->setElementType( domAnimation::registerElement(dae) );
88 	cm->appendChild( mea );
89 
90 	cm->setMaxOrdinal( 2 );
91 	cm->getParent()->appendChild( cm );
92 	cm = cm->getParent();
93 
94 	cm->setMaxOrdinal( 1 );
95 	cm->getParent()->appendChild( cm );
96 	cm = cm->getParent();
97 
98 	cm = new daeMetaSequence( meta, cm, 2, 1, 1 );
99 
100 	mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, -1 );
101 	mea->setName( "sampler" );
102 	mea->setOffset( daeOffsetOf(domAnimation,elemSampler_array) );
103 	mea->setElementType( domSampler::registerElement(dae) );
104 	cm->appendChild( mea );
105 
106 	mea = new daeMetaElementArrayAttribute( meta, cm, 1, 1, -1 );
107 	mea->setName( "channel" );
108 	mea->setOffset( daeOffsetOf(domAnimation,elemChannel_array) );
109 	mea->setElementType( domChannel::registerElement(dae) );
110 	cm->appendChild( mea );
111 
112 	mea = new daeMetaElementArrayAttribute( meta, cm, 2, 0, -1 );
113 	mea->setName( "animation" );
114 	mea->setOffset( daeOffsetOf(domAnimation,elemAnimation_array) );
115 	mea->setElementType( domAnimation::registerElement(dae) );
116 	cm->appendChild( mea );
117 
118 	cm->setMaxOrdinal( 2 );
119 	cm->getParent()->appendChild( cm );
120 	cm = cm->getParent();
121 
122 	mea = new daeMetaElementArrayAttribute( meta, cm, 5, 1, -1 );
123 	mea->setName( "animation" );
124 	mea->setOffset( daeOffsetOf(domAnimation,elemAnimation_array) );
125 	mea->setElementType( domAnimation::registerElement(dae) );
126 	cm->appendChild( mea );
127 
128 	cm->setMaxOrdinal( 4 );
129 	cm->getParent()->appendChild( cm );
130 	cm = cm->getParent();
131 
132 	mea = new daeMetaElementArrayAttribute( meta, cm, 2, 0, -1 );
133 	mea->setName( "extra" );
134 	mea->setOffset( daeOffsetOf(domAnimation,elemExtra_array) );
135 	mea->setElementType( domExtra::registerElement(dae) );
136 	cm->appendChild( mea );
137 
138 	cm->setMaxOrdinal( 2 );
139 	meta->setCMRoot( cm );
140 	// Ordered list of sub-elements
141 	meta->addContents(daeOffsetOf(domAnimation,_contents));
142 	meta->addContentsOrder(daeOffsetOf(domAnimation,_contentsOrder));
143 
144 	meta->addCMDataArray(daeOffsetOf(domAnimation,_CMData), 2);
145 	//	Add attribute: id
146 	{
147 		daeMetaAttribute *ma = new daeMetaAttribute;
148 		ma->setName( "id" );
149 		ma->setType( dae.getAtomicTypes().get("xsID"));
150 		ma->setOffset( daeOffsetOf( domAnimation , attrId ));
151 		ma->setContainer( meta );
152 
153 		meta->appendAttribute(ma);
154 	}
155 
156 	//	Add attribute: name
157 	{
158 		daeMetaAttribute *ma = new daeMetaAttribute;
159 		ma->setName( "name" );
160 		ma->setType( dae.getAtomicTypes().get("xsNCName"));
161 		ma->setOffset( daeOffsetOf( domAnimation , attrName ));
162 		ma->setContainer( meta );
163 
164 		meta->appendAttribute(ma);
165 	}
166 
167 	meta->setElementSize(sizeof(domAnimation));
168 	meta->validate();
169 
170 	return meta;
171 }
172 
173