//--------------------------------------------------------------------- void SkeletonSerializer::writeSkeleton(const Skeleton* pSkel, SkeletonVersion ver) { // Write blend mode if ((int)ver > (int)SKELETON_VERSION_1_0) { writeChunkHeader(SKELETON_BLENDMODE, SSTREAM_OVERHEAD_SIZE + sizeof(unsigned short)); uint16 blendMode = static_cast<uint16>(pSkel->getBlendMode()); writeShorts(&blendMode, 1); } // Write each bone unsigned short numBones = pSkel->getNumBones(); unsigned short i; for (i = 0; i < numBones; ++i) { Bone* pBone = pSkel->getBone(i); writeBone(pSkel, pBone); } // Write parents for (i = 0; i < numBones; ++i) { Bone* pBone = pSkel->getBone(i); unsigned short handle = pBone->getHandle(); Bone* pParent = (Bone*)pBone->getParent(); if (pParent != NULL) { writeBoneParent(pSkel, handle, pParent->getHandle()); } } }
//--------------------------------------------------------------------- void XMLSkeletonSerializer::writeSkeleton(const Skeleton* pSkel) { TiXmlElement* rootNode = mXMLDoc->RootElement(); TiXmlElement* bonesElem = rootNode->InsertEndChild(TiXmlElement("bones"))->ToElement(); unsigned short numBones = pSkel->getNumBones(); LogManager::getSingleton().logMessage("There are " + StringConverter::toString(numBones) + " bones."); unsigned short i; for (i = 0; i < numBones; ++i) { LogManager::getSingleton().logMessage(" Exporting Bone number " + StringConverter::toString(i)); Bone* pBone = pSkel->getBone(i); writeBone(bonesElem, pBone); } // Write parents TiXmlElement* hierElem = rootNode->InsertEndChild(TiXmlElement("bonehierarchy"))->ToElement(); for (i = 0; i < numBones; ++i) { Bone* pBone = pSkel->getBone(i); String name = pBone->getName() ; if ((pBone->getParent())!=NULL) // root bone { Bone* pParent = (Bone*)pBone->getParent(); writeBoneParent(hierElem, name, pParent->getName()); } } }
//--------------------------------------------------------------------- void SkeletonSerializer::writeSkeleton(const Skeleton* pSkel) { // Write each bone unsigned short numBones = pSkel->getNumBones(); unsigned short i; for (i = 0; i < numBones; ++i) { Bone* pBone = pSkel->getBone(i); writeBone(pSkel, pBone); } // Write parents for (i = 0; i < numBones; ++i) { Bone* pBone = pSkel->getBone(i); unsigned short handle = pBone->getHandle(); Bone* pParent = (Bone*)pBone->getParent(); if (pParent != NULL) { writeBoneParent(pSkel, handle, pParent->getHandle()); } } }