Exemplo n.º 1
0
    //---------------------------------------------------------------------
    void XMLSkeletonSerializer::importSkeleton(const String& filename, Skeleton* pSkeleton)
    {	
		LogManager::getSingleton().logMessage("XMLSkeletonSerializer: reading XML data from " + filename + "...");

		mXMLDoc = new TiXmlDocument(filename.c_str());
        mXMLDoc->LoadFile();

		TiXmlElement* elem;

        TiXmlElement* rootElem = mXMLDoc->RootElement();
		
		// Optional blend mode
		const char* blendModeStr = rootElem->Attribute("blendmode");
		if (blendModeStr)
		{
			if (String(blendModeStr) == "cumulative")
				pSkeleton->setBlendMode(ANIMBLEND_CUMULATIVE);
			else 
				pSkeleton->setBlendMode(ANIMBLEND_AVERAGE);

		}
		

        // Bones
        elem = rootElem->FirstChildElement("bones");
        if (elem)
		{
            readBones(pSkeleton, elem);			
			elem = rootElem->FirstChildElement("bonehierarchy");

			if (elem)
			{
				createHierarchy(pSkeleton, elem) ;
				elem = rootElem->FirstChildElement("bones");
				if (elem)
				{
					readBones2(pSkeleton, elem);
					elem = rootElem->FirstChildElement("animations");
					if (elem)
					{
						readAnimations(pSkeleton, elem);
					}
					elem = rootElem->FirstChildElement("animationlinks");
					if (elem)
					{
						readSkeletonAnimationLinks(pSkeleton, elem);
					}
				}
			}
		}
		LogManager::getSingleton().logMessage("XMLSkeletonSerializer: Finished. Running SkeletonSerializer..." );
    }
Exemplo n.º 2
0
EdgeHierarchy::EdgeHierarchy(const vector<Edge>* edges, const QuadTree* quadTree) {
	//store them for a short time to save variables in the recursive calls
	if (!EDGE_HIERARCHY_FLAT) {
		_maxDepth = -1;
		_quadTree = quadTree;
		_edges = edges;
			createHierarchy();
		_edges = NULL;
		_quadTree = NULL;
	} else {
		_maxDepth = 0;
		_edgeVectors.push_back(new vector<Edge>);
		for (int i = 0; i < edges->size(); i++) {
			Edge e(edges->at(i));
			e.depth = 0;
			_edgeVectors[0]->push_back(e);
		}
		_leafNodes.push_back(edges->size());
	}
}
    //---------------------------------------------------------------------
    void XMLSkeletonSerializer::importSkeleton(const String& filename, Skeleton* pSkeleton)
    {	
		LogManager::getSingleton().logMessage("XMLSkeletonSerializer: reading XML data from " + filename + "...");

		mXMLDoc = new TiXmlDocument(filename);
        mXMLDoc->LoadFile();

		TiXmlElement* elem;

        TiXmlElement* rootElem = mXMLDoc->RootElement();

        // Bones
        elem = rootElem->FirstChildElement("bones");
        if (elem)
		{
            readBones(pSkeleton, elem);			
			elem = rootElem->FirstChildElement("bonehierarchy");

			if (elem)
			{
				createHierarchy(pSkeleton, elem) ;
				elem = rootElem->FirstChildElement("bones");
				if (elem)
				{
					readBones2(pSkeleton, elem);
					elem = rootElem->FirstChildElement("animations");
					if (elem)
					{
						readAnimations(pSkeleton, elem);
					}
					elem = rootElem->FirstChildElement("animationlinks");
					if (elem)
					{
						readSkeletonAnimationLinks(pSkeleton, elem);
					}
				}
			}
		}
		LogManager::getSingleton().logMessage("XMLSkeletonSerializer: Finished. Running SkeletonSerializer..." );
    }