Example #1
0
        // ----------------------
        // 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);
        }