void DeleteOperation::initRec(const QString& dirPath) { QDir dir(dirPath); foreach (const QFileInfo& i, dir.entryInfoList(QDir::Files|QDir::Hidden|QDir::System)) addAction(new DeleteAction(i.fileName(), i.size()), 1); foreach (const QString& i, dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System)) { addAction(new ChDirAction(i)); initRec(dir.absoluteFilePath(i)); addAction(new ChDirAction("..")); addAction(new RmDirAction(i), 1); } }
void DeleteOperation::init() { if (actionList) return; actionList = new QLinkedList<Action*>; foreach (const QFileInfo& i, *initList) { addAction(new SetDestAction(i.absolutePath())); if (i.isDir()) { addAction(new ChDirAction(i.fileName())); initRec(i.absoluteFilePath()); addAction(new ChDirAction("..")); addAction(new RmDirAction(i.fileName()), 1); } else addAction(new DeleteAction(i.fileName(), i.size()), 1); } revokable = false; }
bool id::FBX::Model::initRec(FbxNode* node, int parentIndex) { FbxNodeAttribute* attrib; size_t numChild; int me = -1; if (node == nullptr) return true; attrib = node->GetNodeAttribute(); if (attrib != nullptr && attrib->GetAttributeType() == FbxNodeAttribute::eMesh) { try { _meshes.push_back(id::FBX::Mesh()); } catch (std::bad_alloc ba) { ba.what(); return false; } me = _meshes.size() - 1; if (_meshes[me].init(node->GetMesh()) == false) return false; if (_hasTexture) _hasTexture = _meshes[me].getHasUV(); } else if (attrib != nullptr && attrib->GetAttributeType() == FbxNodeAttribute::eSkeleton) { if (!initBone(node, parentIndex)) return false; me = _bones.size() - 1; } numChild = node->GetChildCount(); for (size_t i = 0 ; i < numChild ; ++i) if (!initRec(node->GetChild(i), me)) return false; return true; }
bool id::FBX::Model::init(FbxScene* scene) { FbxNode* rootNode = scene->GetRootNode(); size_t numChild, numMesh; _scene = scene; if (rootNode) { numChild = rootNode->GetChildCount(); for (size_t i = 0 ; i < numChild ; ++i) if (!initRec(rootNode->GetChild(i), -1)) return false; numMesh = _meshes.size(); for (size_t i = 0 ; i < numMesh ; ++i) if (_meshes[i].hasDeformation && !_meshes[i].deformation.Init(_meshes[i].node, _meshes[i].node->GetMesh())) return false; return allocBones(); } return false; }