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/domSkin.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 domSkin::create(DAE& dae)
21 {
22 domSkinRef ref = new domSkin(dae);
23 return ref;
24 }
25
26
27 daeMetaElement *
registerElement(DAE & dae)28 domSkin::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( "skin" );
36 meta->registerClass(domSkin::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( "bind_shape_matrix" );
44 mea->setOffset( daeOffsetOf(domSkin,elemBind_shape_matrix) );
45 mea->setElementType( domSkin::domBind_shape_matrix::registerElement(dae) );
46 cm->appendChild( mea );
47
48 mea = new daeMetaElementArrayAttribute( meta, cm, 1, 3, -1 );
49 mea->setName( "source" );
50 mea->setOffset( daeOffsetOf(domSkin,elemSource_array) );
51 mea->setElementType( domSource::registerElement(dae) );
52 cm->appendChild( mea );
53
54 mea = new daeMetaElementAttribute( meta, cm, 2, 1, 1 );
55 mea->setName( "joints" );
56 mea->setOffset( daeOffsetOf(domSkin,elemJoints) );
57 mea->setElementType( domSkin::domJoints::registerElement(dae) );
58 cm->appendChild( mea );
59
60 mea = new daeMetaElementAttribute( meta, cm, 3, 1, 1 );
61 mea->setName( "vertex_weights" );
62 mea->setOffset( daeOffsetOf(domSkin,elemVertex_weights) );
63 mea->setElementType( domSkin::domVertex_weights::registerElement(dae) );
64 cm->appendChild( mea );
65
66 mea = new daeMetaElementArrayAttribute( meta, cm, 4, 0, -1 );
67 mea->setName( "extra" );
68 mea->setOffset( daeOffsetOf(domSkin,elemExtra_array) );
69 mea->setElementType( domExtra::registerElement(dae) );
70 cm->appendChild( mea );
71
72 cm->setMaxOrdinal( 4 );
73 meta->setCMRoot( cm );
74
75 // Add attribute: source
76 {
77 daeMetaAttribute *ma = new daeMetaAttribute;
78 ma->setName( "source" );
79 ma->setType( dae.getAtomicTypes().get("xsAnyURI"));
80 ma->setOffset( daeOffsetOf( domSkin , attrSource ));
81 ma->setContainer( meta );
82 ma->setIsRequired( true );
83
84 meta->appendAttribute(ma);
85 }
86
87 meta->setElementSize(sizeof(domSkin));
88 meta->validate();
89
90 return meta;
91 }
92
93 daeElementRef
create(DAE & dae)94 domSkin::domBind_shape_matrix::create(DAE& dae)
95 {
96 domSkin::domBind_shape_matrixRef ref = new domSkin::domBind_shape_matrix(dae);
97 return ref;
98 }
99
100
101 daeMetaElement *
registerElement(DAE & dae)102 domSkin::domBind_shape_matrix::registerElement(DAE& dae)
103 {
104 daeMetaElement* meta = dae.getMeta(ID());
105 if ( meta != NULL ) return meta;
106
107 meta = new daeMetaElement(dae);
108 dae.setMeta(ID(), *meta);
109 meta->setName( "bind_shape_matrix" );
110 meta->registerClass(domSkin::domBind_shape_matrix::create);
111
112 meta->setIsInnerClass( true );
113 // Add attribute: _value
114 {
115 daeMetaAttribute *ma = new daeMetaArrayAttribute;
116 ma->setName( "_value" );
117 ma->setType( dae.getAtomicTypes().get("Float4x4"));
118 ma->setOffset( daeOffsetOf( domSkin::domBind_shape_matrix , _value ));
119 ma->setContainer( meta );
120 meta->appendAttribute(ma);
121 }
122
123 meta->setElementSize(sizeof(domSkin::domBind_shape_matrix));
124 meta->validate();
125
126 return meta;
127 }
128
129 daeElementRef
create(DAE & dae)130 domSkin::domJoints::create(DAE& dae)
131 {
132 domSkin::domJointsRef ref = new domSkin::domJoints(dae);
133 return ref;
134 }
135
136
137 daeMetaElement *
registerElement(DAE & dae)138 domSkin::domJoints::registerElement(DAE& dae)
139 {
140 daeMetaElement* meta = dae.getMeta(ID());
141 if ( meta != NULL ) return meta;
142
143 meta = new daeMetaElement(dae);
144 dae.setMeta(ID(), *meta);
145 meta->setName( "joints" );
146 meta->registerClass(domSkin::domJoints::create);
147
148 meta->setIsInnerClass( true );
149 daeMetaCMPolicy *cm = NULL;
150 daeMetaElementAttribute *mea = NULL;
151 cm = new daeMetaSequence( meta, cm, 0, 1, 1 );
152
153 mea = new daeMetaElementArrayAttribute( meta, cm, 0, 2, -1 );
154 mea->setName( "input" );
155 mea->setOffset( daeOffsetOf(domSkin::domJoints,elemInput_array) );
156 mea->setElementType( domInputLocal::registerElement(dae) );
157 cm->appendChild( mea );
158
159 mea = new daeMetaElementArrayAttribute( meta, cm, 1, 0, -1 );
160 mea->setName( "extra" );
161 mea->setOffset( daeOffsetOf(domSkin::domJoints,elemExtra_array) );
162 mea->setElementType( domExtra::registerElement(dae) );
163 cm->appendChild( mea );
164
165 cm->setMaxOrdinal( 1 );
166 meta->setCMRoot( cm );
167
168 meta->setElementSize(sizeof(domSkin::domJoints));
169 meta->validate();
170
171 return meta;
172 }
173
174 daeElementRef
create(DAE & dae)175 domSkin::domVertex_weights::create(DAE& dae)
176 {
177 domSkin::domVertex_weightsRef ref = new domSkin::domVertex_weights(dae);
178 return ref;
179 }
180
181
182 daeMetaElement *
registerElement(DAE & dae)183 domSkin::domVertex_weights::registerElement(DAE& dae)
184 {
185 daeMetaElement* meta = dae.getMeta(ID());
186 if ( meta != NULL ) return meta;
187
188 meta = new daeMetaElement(dae);
189 dae.setMeta(ID(), *meta);
190 meta->setName( "vertex_weights" );
191 meta->registerClass(domSkin::domVertex_weights::create);
192
193 meta->setIsInnerClass( true );
194 daeMetaCMPolicy *cm = NULL;
195 daeMetaElementAttribute *mea = NULL;
196 cm = new daeMetaSequence( meta, cm, 0, 1, 1 );
197
198 mea = new daeMetaElementArrayAttribute( meta, cm, 0, 2, -1 );
199 mea->setName( "input" );
200 mea->setOffset( daeOffsetOf(domSkin::domVertex_weights,elemInput_array) );
201 mea->setElementType( domInputLocalOffset::registerElement(dae) );
202 cm->appendChild( mea );
203
204 mea = new daeMetaElementAttribute( meta, cm, 1, 0, 1 );
205 mea->setName( "vcount" );
206 mea->setOffset( daeOffsetOf(domSkin::domVertex_weights,elemVcount) );
207 mea->setElementType( domSkin::domVertex_weights::domVcount::registerElement(dae) );
208 cm->appendChild( mea );
209
210 mea = new daeMetaElementAttribute( meta, cm, 2, 0, 1 );
211 mea->setName( "v" );
212 mea->setOffset( daeOffsetOf(domSkin::domVertex_weights,elemV) );
213 mea->setElementType( domSkin::domVertex_weights::domV::registerElement(dae) );
214 cm->appendChild( mea );
215
216 mea = new daeMetaElementArrayAttribute( meta, cm, 3, 0, -1 );
217 mea->setName( "extra" );
218 mea->setOffset( daeOffsetOf(domSkin::domVertex_weights,elemExtra_array) );
219 mea->setElementType( domExtra::registerElement(dae) );
220 cm->appendChild( mea );
221
222 cm->setMaxOrdinal( 3 );
223 meta->setCMRoot( cm );
224
225 // Add attribute: count
226 {
227 daeMetaAttribute *ma = new daeMetaAttribute;
228 ma->setName( "count" );
229 ma->setType( dae.getAtomicTypes().get("Uint"));
230 ma->setOffset( daeOffsetOf( domSkin::domVertex_weights , attrCount ));
231 ma->setContainer( meta );
232 ma->setIsRequired( true );
233
234 meta->appendAttribute(ma);
235 }
236
237 meta->setElementSize(sizeof(domSkin::domVertex_weights));
238 meta->validate();
239
240 return meta;
241 }
242
243 daeElementRef
create(DAE & dae)244 domSkin::domVertex_weights::domVcount::create(DAE& dae)
245 {
246 domSkin::domVertex_weights::domVcountRef ref = new domSkin::domVertex_weights::domVcount(dae);
247 return ref;
248 }
249
250
251 daeMetaElement *
registerElement(DAE & dae)252 domSkin::domVertex_weights::domVcount::registerElement(DAE& dae)
253 {
254 daeMetaElement* meta = dae.getMeta(ID());
255 if ( meta != NULL ) return meta;
256
257 meta = new daeMetaElement(dae);
258 dae.setMeta(ID(), *meta);
259 meta->setName( "vcount" );
260 meta->registerClass(domSkin::domVertex_weights::domVcount::create);
261
262 meta->setIsInnerClass( true );
263 // Add attribute: _value
264 {
265 daeMetaAttribute *ma = new daeMetaArrayAttribute;
266 ma->setName( "_value" );
267 ma->setType( dae.getAtomicTypes().get("ListOfUInts"));
268 ma->setOffset( daeOffsetOf( domSkin::domVertex_weights::domVcount , _value ));
269 ma->setContainer( meta );
270 meta->appendAttribute(ma);
271 }
272
273 meta->setElementSize(sizeof(domSkin::domVertex_weights::domVcount));
274 meta->validate();
275
276 return meta;
277 }
278
279 daeElementRef
create(DAE & dae)280 domSkin::domVertex_weights::domV::create(DAE& dae)
281 {
282 domSkin::domVertex_weights::domVRef ref = new domSkin::domVertex_weights::domV(dae);
283 return ref;
284 }
285
286
287 daeMetaElement *
registerElement(DAE & dae)288 domSkin::domVertex_weights::domV::registerElement(DAE& dae)
289 {
290 daeMetaElement* meta = dae.getMeta(ID());
291 if ( meta != NULL ) return meta;
292
293 meta = new daeMetaElement(dae);
294 dae.setMeta(ID(), *meta);
295 meta->setName( "v" );
296 meta->registerClass(domSkin::domVertex_weights::domV::create);
297
298 meta->setIsInnerClass( true );
299 // Add attribute: _value
300 {
301 daeMetaAttribute *ma = new daeMetaArrayAttribute;
302 ma->setName( "_value" );
303 ma->setType( dae.getAtomicTypes().get("ListOfInts"));
304 ma->setOffset( daeOffsetOf( domSkin::domVertex_weights::domV , _value ));
305 ma->setContainer( meta );
306 meta->appendAttribute(ma);
307 }
308
309 meta->setElementSize(sizeof(domSkin::domVertex_weights::domV));
310 meta->validate();
311
312 return meta;
313 }
314
315