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(); }
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); } }