Esempio n. 1
0
void SceneNode::RemoveAllChildren()
{
	for (std::vector<SceneNode*>::iterator t = childs.begin(); t != childs.end(); ++t)
	{
        SceneNode *node = *t;
        node->SetParent(0);
        node->Release();
	}
	childs.clear();
}
Esempio n. 2
0
	void Model::LoadSkeleton(std::fstream& fileStream, SceneNode* parentNode)
	{
		bool isSceneNode;
		ModelDeSerializer::ReadAsBytes(fileStream, isSceneNode);

		SceneNode* node;

		if (isSceneNode)
		{
			node = new SceneNode(*this, fileStream);
		}
		else
		{
			std::string name;
			ModelDeSerializer::ReadAsBytes(fileStream, name);

			//find bone and do fixup
			UINT boneIndex = mBoneIndexMapping[name];
			node = mBones[boneIndex];
		}

		node->SetParent(parentNode);

		if (parentNode != nullptr)
		{
			parentNode->Children().push_back(node);
		}
		else
		{
			mRootNode = node;
		}

		uint_t childCount;
		ModelDeSerializer::ReadAsBytes(fileStream, childCount);
		node->Children().reserve(childCount);

		for (int i = 0; i < childCount; i++)
		{
			LoadSkeleton(fileStream, node);
		}
	}