diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-10-06 11:50:27 +0000 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-10-06 16:49:51 +0200 |
commit | eee97c048f9cdc1cc05d6a516a3da56a13accd64 (patch) | |
tree | 019e374beaed56be3cbeaff3cf202d41ee427d96 /1.4.0/dom/src/1.5/dom/domJoint.cpp |
Initial import
Diffstat (limited to '1.4.0/dom/src/1.5/dom/domJoint.cpp')
-rw-r--r-- | 1.4.0/dom/src/1.5/dom/domJoint.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/1.4.0/dom/src/1.5/dom/domJoint.cpp b/1.4.0/dom/src/1.5/dom/domJoint.cpp new file mode 100644 index 0000000..8793380 --- /dev/null +++ b/1.4.0/dom/src/1.5/dom/domJoint.cpp @@ -0,0 +1,106 @@ +#include <dae.h> +#include <dae/daeDom.h> +#include <1.5/dom/domJoint.h> +#include <dae/daeMetaCMPolicy.h> +#include <dae/daeMetaSequence.h> +#include <dae/daeMetaChoice.h> +#include <dae/daeMetaGroup.h> +#include <dae/daeMetaAny.h> +#include <dae/daeMetaElementAttribute.h> + + +namespace ColladaDOM150 { +daeElementRef +domJoint::create(DAE& dae) +{ + domJointRef ref = new domJoint(dae); + return ref; +} + + +daeMetaElement * +domJoint::registerElement(DAE& dae) +{ + daeMetaElement* meta = dae.getMeta(ID()); + if ( meta != NULL ) return meta; + + meta = new daeMetaElement(dae); + dae.setMeta(ID(), *meta); + meta->setName( "joint" ); + meta->registerClass(domJoint::create); + + daeMetaCMPolicy *cm = NULL; + daeMetaElementAttribute *mea = NULL; + cm = new daeMetaSequence( meta, cm, 0, 1, 1 ); + + cm = new daeMetaChoice( meta, cm, 0, 0, 1, -1 ); + + mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); + mea->setName( "prismatic" ); + mea->setOffset( daeOffsetOf(domJoint,elemPrismatic_array) ); + mea->setElementType( domAxis_constraint::registerElement(dae) ); + cm->appendChild( mea ); + + mea = new daeMetaElementArrayAttribute( meta, cm, 0, 1, 1 ); + mea->setName( "revolute" ); + mea->setOffset( daeOffsetOf(domJoint,elemRevolute_array) ); + mea->setElementType( domAxis_constraint::registerElement(dae) ); + cm->appendChild( mea ); + + cm->setMaxOrdinal( 0 ); + cm->getParent()->appendChild( cm ); + cm = cm->getParent(); + + mea = new daeMetaElementArrayAttribute( meta, cm, 3001, 0, -1 ); + mea->setName( "extra" ); + mea->setOffset( daeOffsetOf(domJoint,elemExtra_array) ); + mea->setElementType( domExtra::registerElement(dae) ); + cm->appendChild( mea ); + + cm->setMaxOrdinal( 3001 ); + meta->setCMRoot( cm ); + // Ordered list of sub-elements + meta->addContents(daeOffsetOf(domJoint,_contents)); + meta->addContentsOrder(daeOffsetOf(domJoint,_contentsOrder)); + + meta->addCMDataArray(daeOffsetOf(domJoint,_CMData), 1); + // Add attribute: id + { + daeMetaAttribute *ma = new daeMetaAttribute; + ma->setName( "id" ); + ma->setType( dae.getAtomicTypes().get("xsID")); + ma->setOffset( daeOffsetOf( domJoint , attrId )); + ma->setContainer( meta ); + + meta->appendAttribute(ma); + } + + // Add attribute: name + { + daeMetaAttribute *ma = new daeMetaAttribute; + ma->setName( "name" ); + ma->setType( dae.getAtomicTypes().get("xsToken")); + ma->setOffset( daeOffsetOf( domJoint , attrName )); + ma->setContainer( meta ); + + meta->appendAttribute(ma); + } + + // Add attribute: sid + { + daeMetaAttribute *ma = new daeMetaAttribute; + ma->setName( "sid" ); + ma->setType( dae.getAtomicTypes().get("Sid")); + ma->setOffset( daeOffsetOf( domJoint , attrSid )); + ma->setContainer( meta ); + + meta->appendAttribute(ma); + } + + meta->setElementSize(sizeof(domJoint)); + meta->validate(); + + return meta; +} + +} // ColladaDOM150 |