187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk/* 287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* Copyright 2006 Sony Computer Entertainment Inc. 387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* 487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* Licensed under the MIT Open Source License, for details please see license.txt or the website 587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* http://www.opensource.org/licenses/mit-license.php 687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk* 787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk*/ 887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae.h> 1087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae/daeDom.h> 1187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dom/domConvex_mesh.h> 1287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae/daeMetaCMPolicy.h> 1387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae/daeMetaSequence.h> 1487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae/daeMetaChoice.h> 1587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae/daeMetaGroup.h> 1687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae/daeMetaAny.h> 1787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk#include <dae/daeMetaElementAttribute.h> 1887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 1987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex SakhartchoukdaeElementRef 2087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex SakhartchoukdomConvex_mesh::create(DAE& dae) 2187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk{ 2287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk domConvex_meshRef ref = new domConvex_mesh(dae); 2387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk return ref; 2487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk} 2587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 2687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 2787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex SakhartchoukdaeMetaElement * 2887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex SakhartchoukdomConvex_mesh::registerElement(DAE& dae) 2987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk{ 3087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk daeMetaElement* meta = dae.getMeta(ID()); 3187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk if ( meta != NULL ) return meta; 3287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 3387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta = new daeMetaElement(dae); 3487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk dae.setMeta(ID(), *meta); 3587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->setName( "convex_mesh" ); 3687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->registerClass(domConvex_mesh::create); 3787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 3887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk daeMetaCMPolicy *cm = NULL; 3987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk daeMetaElementAttribute *mea = NULL; 4087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm = new daeMetaSequence( meta, cm, 0, 0, 1 ); 4187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 4287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, -1 ); 4387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "source" ); 4487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemSource_array) ); 4587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domSource::registerElement(dae) ); 4687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 4787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 4887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementAttribute( meta, cm, 1, 1, 1 ); 4987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "vertices" ); 5087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemVertices) ); 5187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domVertices::registerElement(dae) ); 5287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 5387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 5487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm = new daeMetaChoice( meta, cm, 0, 2, 0, -1 ); 5587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 5687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); 5787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "lines" ); 5887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemLines_array) ); 5987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domLines::registerElement(dae) ); 6087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 6187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 6287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); 6387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "linestrips" ); 6487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemLinestrips_array) ); 6587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domLinestrips::registerElement(dae) ); 6687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 6787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 6887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); 6987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "polygons" ); 7087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemPolygons_array) ); 7187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domPolygons::registerElement(dae) ); 7287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 7387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 7487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); 7587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "polylist" ); 7687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemPolylist_array) ); 7787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domPolylist::registerElement(dae) ); 7887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 7987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 8087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); 8187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "triangles" ); 8287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemTriangles_array) ); 8387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domTriangles::registerElement(dae) ); 8487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 8587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 8687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); 8787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "trifans" ); 8887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemTrifans_array) ); 8987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domTrifans::registerElement(dae) ); 9087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 9187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 9287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); 9387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "tristrips" ); 9487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemTristrips_array) ); 9587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domTristrips::registerElement(dae) ); 9687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 9787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 9887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->setMaxOrdinal( 0 ); 9987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->getParent()->appendChild( cm ); 10087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm = cm->getParent(); 10187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 10287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea = new daeMetaElementArrayAttribute( meta, cm, 3003, 0, -1 ); 10387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setName( "extra" ); 10487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setOffset( daeOffsetOf(domConvex_mesh,elemExtra_array) ); 10587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk mea->setElementType( domExtra::registerElement(dae) ); 10687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->appendChild( mea ); 10787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 10887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk cm->setMaxOrdinal( 3003 ); 10987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->setCMRoot( cm ); 11087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk // Ordered list of sub-elements 11187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->addContents(daeOffsetOf(domConvex_mesh,_contents)); 11287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->addContentsOrder(daeOffsetOf(domConvex_mesh,_contentsOrder)); 11387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 11487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->addCMDataArray(daeOffsetOf(domConvex_mesh,_CMData), 1); 11587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk // Add attribute: convex_hull_of 11687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk { 11787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk daeMetaAttribute *ma = new daeMetaAttribute; 11887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk ma->setName( "convex_hull_of" ); 11987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk ma->setType( dae.getAtomicTypes().get("xsAnyURI")); 12087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk ma->setOffset( daeOffsetOf( domConvex_mesh , attrConvex_hull_of )); 12187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk ma->setContainer( meta ); 12287ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 12387ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->appendAttribute(ma); 12487ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk } 12587ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 12687ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->setElementSize(sizeof(domConvex_mesh)); 12787ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk meta->validate(); 12887ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 12987ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk return meta; 13087ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk} 13187ac3e2db6d5ae163131102c066e9d19bdfdc139Alex Sakhartchouk 132