QModelIndex model::DbContainerModel::AddElement(dbc::ElementType type, const QString& name, const QModelIndex& parent) { assert(!name.isEmpty() && type != dbc::ElementTypeUnknown && parent.isValid()); if (name.isEmpty() || type == dbc::ElementTypeUnknown || !parent.isValid()) { return QModelIndex(); } TreeNode* parentNode = Index2Node(parent); dbc::Folder* folder = parentNode->GetElement()->AsFolder(); assert(folder != nullptr); if (folder == nullptr) { return QModelIndex(); } LoadChildren(parent); dbc::ElementGuard element = folder->CreateChild(utils::QString2StdString(name), type); DBC_MODEL_TRY(tr("Element adding")); int insertedRow = parentNode->GetChildrenCount(); beginInsertRows(parent, insertedRow, insertedRow); TreeNode* insertedNode = parentNode->AddChild(element); assert(insertedRow + 1 == parentNode->GetChildrenCount()); endInsertRows(); return createIndex(insertedRow, 0, insertedNode); DBC_MODEL_CATCH; element->Remove(); return QModelIndex(); }
void Decal::OnSerializeTo (TreeNode& root) const { if (mShader != 0) root.AddChild("Shader", mShader->GetName()); root.AddChild("Color", mColor); if (mTextures.IsValid()) { TreeNode& node = root.AddChild("Textures"); Array<String>& list = node.mValue.ToStringArray(); for (uint i = 0; i < mTextures.GetSize(); ++i) { const ITexture* tex = mTextures[i]; if (tex != 0) list.Expand() = tex->GetName(); } } }
void RamAi::GameMonteCarloTree::PerformExpansion(TreeNode &nodeToBeExpanded) { std::vector<ButtonSet> allInputCombinations = std::move(ConsoleSettings::GetSpecs().GetAllInputCombinations()); //Select and add one child at random. while (allInputCombinations.size() > 0) { const size_t chosenIndex = rand() % allInputCombinations.size(); //Add the action to the tree if it is unique. if (!nodeToBeExpanded.ContainsAction(allInputCombinations[chosenIndex])) { nodeToBeExpanded.AddChild(allInputCombinations[chosenIndex]); break; } //Otherwise, discard it. else { allInputCombinations.erase(allInputCombinations.begin() + chosenIndex); } } }
void model::DbContainerModel::LoadChildren(const QModelIndex& parent) { TreeNode* node = Index2Node(parent); assert(node != nullptr); dbc::ElementGuard element = node->GetElement(); if (!node->wasLoaded && element->Type() == dbc::ElementTypeFolder) { dbc::Folder* folder = element->AsFolder(); assert(folder != nullptr); dbc::DbcElementsIterator iterator = folder->EnumFsEntries(); if (iterator->HasNext()) { beginInsertRows(parent, 0, iterator->Count() - 1); int row = 0; for (; iterator->HasNext(); ++row) { node->AddChild(iterator->Next()); } endInsertRows(); } } node->wasLoaded = true; emit dataChanged(parent, parent); }
void OSAttachToBone::OnSerializeTo (TreeNode& node) const { node.AddChild("Bone", mName); }
void OSRotate::OnSerializeTo (TreeNode& node) const { node.AddChild("Axis", mAxis); node.AddChild("Rate", mRate); }