void SequenceElements::RenameTimingTrack(std::string oldname, std::string newname) { // actual timing track name already updated ... we just need to update any effects that care about the timing track name // faces, state, piano, vumeter std::vector<RenderableEffect*> effects(GetEffectManager().size()); int count = 0; for (int x = 0; x < GetEffectManager().size(); x++) { RenderableEffect *eff = GetEffectManager()[x]; effects[x] = eff; } for (size_t i = 0; i < GetElementCount(); i++) { Element* elem = GetElement(i); if (elem->GetType() == "model") { for (int j = 0; j < elem->GetEffectLayerCount(); j++) { EffectLayer* layer = elem->GetEffectLayer(j); for (int k = 0; k < layer->GetEffectCount(); k++) { Effect* eff = layer->GetEffect(k); if (effects[eff->GetEffectIndex()] != nullptr) { effects[eff->GetEffectIndex()]->RenameTimingTrack(oldname, newname, eff); } } } for (int j = 0; j < elem->getStrandLayerCount(); j++) { StrandLayer* layer = elem->GetStrandLayer(j); for (int k = 0; k < layer->GetEffectCount(); k++) { Effect* eff = layer->GetEffect(k); if (effects[eff->GetEffectIndex()] != nullptr) { effects[eff->GetEffectIndex()]->RenameTimingTrack(oldname, newname, eff); } } for (int k = 0; k < layer->GetNodeLayerCount(); k++) { NodeLayer* nlayer = layer->GetNodeLayer(k); for (int l = 0; l < nlayer->GetEffectCount(); l++) { Effect* eff = nlayer->GetEffect(l); if (effects[eff->GetEffectIndex()] != nullptr) { effects[eff->GetEffectIndex()]->RenameTimingTrack(oldname, newname, eff); } } } } } } }
void addModelElement(Element *elem, std::vector<Row_Information_Struct> &mRowInformation, int &rowIndex, xLightsFrame *xframe, std::vector <Element*> &elements, bool submodel) { if(!elem->GetCollapsed()) { for(int j =0; j<elem->GetEffectLayerCount();j++) { Row_Information_Struct ri; ri.element = elem; ri.displayName = elem->GetName(); ri.Collapsed = elem->GetCollapsed(); ri.Active = elem->GetActive(); ri.colorIndex = 0; ri.layerIndex = j; ri.Index = rowIndex++; ri.submodel = submodel; mRowInformation.push_back(ri); } } else { Row_Information_Struct ri; ri.element = elem; ri.Collapsed = elem->GetCollapsed(); ri.displayName = elem->GetName(); ri.Active = elem->GetActive(); ri.colorIndex = 0; ri.layerIndex = 0; ri.Index = rowIndex++; ri.submodel = submodel; mRowInformation.push_back(ri); } Model *cls = xframe->GetModel(elem->GetName()); if (cls == nullptr) { return; } elem->InitStrands(*cls); if (cls->GetDisplayAs() == "WholeHouse" && elem->ShowStrands()) { wxString models = cls->GetModelXml()->GetAttribute("models"); wxArrayString model=wxSplit(models,','); for(int m=0;m<model.size();m++) { for (int x = 0; x < elements.size(); x++) { if (elements[x]->GetName() == model[m]) { addModelElement(elements[x], mRowInformation, rowIndex, xframe, elements, true); } } } } else if (elem->ShowStrands()) { for (int s = 0; s < elem->getStrandLayerCount(); s++) { StrandLayer * sl = elem->GetStrandLayer(s); if (elem->getStrandLayerCount() > 1) { Row_Information_Struct ri; ri.element = elem; ri.Collapsed = !elem->ShowStrands(); ri.Active = elem->GetActive(); ri.displayName = sl->GetName(); ri.colorIndex = 0; ri.layerIndex = 0; ri.Index = rowIndex++; ri.strandIndex = s; ri.submodel = submodel; mRowInformation.push_back(ri); } if (sl->ShowNodes()) { for (int n = 0; n < sl->GetNodeLayerCount(); n++) { Row_Information_Struct ri; ri.element = elem; ri.Collapsed = sl->ShowNodes(); ri.Active = !elem->GetActive(); ri.displayName = sl->GetNodeLayer(n)->GetName(); ri.colorIndex = 0; ri.layerIndex = 0; ri.Index = rowIndex++; ri.strandIndex = s; ri.nodeIndex = n; ri.submodel = submodel; mRowInformation.push_back(ri); } } } } }