// ---------------------- // Constructor // --------------------- public QRPromtEffectEditor() { effect = new QRPromptEffect(); UpdateQRIds(); qrIdReorderableList = new ReorderableList(effect.ValidIds, typeof(string)); qrIdReorderableList.drawElementCallback = (rect, index, isActive, isFocused) => { // TODO optimize this var elemList = qrIds.Except(effect.ValidIds).ToList(); elemList.Add(effect.ValidIds[index]); elemList.Sort(); EditorGUI.BeginChangeCheck(); var selected = elemList.BinarySearch(effect.ValidIds[index]); var newSelected = EditorGUI.Popup(rect, selected, elemList.ToArray()); if (EditorGUI.EndChangeCheck()) { effect.ValidIds.Remove(elemList[selected]); effect.ValidIds.Add(elemList[newSelected]); } }; qrIdReorderableList.displayAdd = qrIds.Count > effect.ValidIds.Count; qrIdReorderableList.onAddCallback = (r) => { effect.ValidIds.Add(qrIds.Except(effect.ValidIds).ElementAt(0)); qrIdReorderableList.displayAdd = qrIds.Count > effect.ValidIds.Count; }; }
public object DOMParse(XmlElement element, params object[] parameters) { var qrPrompt = new QRPromptEffect(); qrPrompt.SelectionType = element.Attributes["selection-type"].Value.ToEnum <QRPromptEffect.ListType>(); qrPrompt.PromptMessage = element.SelectSingleNode("message").InnerText; foreach (var listElem in element.SelectNodes("qr-id")) { qrPrompt.ValidIds.Add((listElem as XmlElement).InnerText); } return(qrPrompt); }