Пример #1
0
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);
    }
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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;
}