void EditPatchMod::RemoveSubSelSet(TSTR &setName) { MaybeFixupNamedSels(); ModContextList mcList; INodeTab nodes; if (!ip) return; ip->GetModContexts(mcList, nodes); for (int i = 0; i < mcList.Count(); i++) { EditPatchData *patchData =(EditPatchData*)mcList[i]->localData; if (!patchData) continue; patchData->BeginEdit(ip->GetTime()); GenericNamedSelSetList &sel = patchData->GetSelSet(this); sel.RemoveSet(setName); } // Remove the modifier's entry RemoveSet(setName, selLevel); ip->ClearCurNamedSelSet(); SetupNamedSelDropDown(); nodes.DisposeTemporary(); }
void EditPatchMod::ActivateSubSelSet(TSTR &setName) { MaybeFixupNamedSels(); ModContextList mcList; INodeTab nodes; int index = FindSet(setName, selLevel); if (index < 0 || !ip) return; ip->GetModContexts(mcList, nodes); theHold.Begin(); for (int i = 0; i < mcList.Count(); i++) { EditPatchData *patchData =(EditPatchData*)mcList[i]->localData; if (!patchData) continue; RPatchMesh *rpatch; PatchMesh *patch = patchData->TempData(this)->GetPatch(ip->GetTime(), rpatch); if (!patch) continue; patchData->BeginEdit(ip->GetTime()); // If that set exists in this context, deal with it GenericNamedSelSetList &sel = patchData->GetSelSet(this); BitArray *set = sel.GetSet(setName); if (set) { if (theHold.Holding()) theHold.Put(new PatchSelRestore(patchData, this, patch)); BitArray *psel = GetLevelSelectionSet(patch, rpatch); // Get the appropriate selection set AssignSetMatchSize(*psel, *set); PatchSelChanged(); } patchData->UpdateChanges(patch, rpatch, FALSE); if (patchData->tempData) patchData->TempData(this)->Invalidate(PART_SELECT); } theHold.Accept(GetString(IDS_DS_SELECT)); nodes.DisposeTemporary(); NotifyDependents(FOREVER, PART_SELECT, REFMSG_CHANGE); ip->RedrawViews(ip->GetTime()); }
void EditPatchMod::NewSetFromCurSel(TSTR &setName) { MaybeFixupNamedSels(); ModContextList mcList; INodeTab nodes; if (!ip) return; ip->GetModContexts(mcList, nodes); for (int i = 0; i < mcList.Count(); i++) { EditPatchData *patchData =(EditPatchData*)mcList[i]->localData; if (!patchData) continue; RPatchMesh *rpatch; PatchMesh *patch = patchData->TempData(this)->GetPatch(ip->GetTime(), rpatch); if (!patch) continue; GenericNamedSelSetList &sel = patchData->GetSelSet(this); BitArray *exist = sel.GetSet(setName); switch (selLevel) { case EP_VERTEX: if (exist) { *exist = patch->vertSel; } else { patchData->vselSet.AppendSet(patch->vertSel, 0, setName); } break; case EP_PATCH: if (exist) { *exist = patch->patchSel; } else { patchData->pselSet.AppendSet(patch->patchSel, 0, setName); } break; case EP_EDGE: if (exist) { *exist = patch->edgeSel; } else { patchData->eselSet.AppendSet(patch->edgeSel, 0, setName); } break; } } int index = FindSet(setName, selLevel); if (index < 0) AddSet(setName, selLevel); nodes.DisposeTemporary(); }