コード例 #1
0
        public static void RemoveChainWords(ICollection <string> words, object[] objects)
        {
            if (objects == null)
            {
                return;
            }

            var chains = new List <IProcessChain>();

            foreach (var obj in objects)
            {
                var chain = TemplateUtility.ConvertProcessChianInstanceFromObject(obj);
                if (chain != null)
                {
                    chains.Add(chain);
                }
            }

            foreach (var chain in chains)
            {
                foreach (var word in chain.GetReplaceWords())
                {
                    words.Remove(word);

                    // ToArray = 遅延実行だとエラーになるため
                    var regex = new Regex(string.Format(ProcessDictionary.ConvertWordPattern, word, @"\d+"), RegexOptions.IgnoreCase);
                    foreach (var matchWord in words.Where(w => regex.IsMatch(w)).ToArray())
                    {
                        words.Remove(matchWord);
                    }
                }
            }
        }
コード例 #2
0
        public static void DrawChain(TemplateSettingStatus status)
        {
            EditorGUILayout.BeginVertical(EditorGUIHelper.GetScopeStyle());
            {
                status.ChainReorderableList.DoLayoutList();

                var selectIndex = status.ChainReorderableList.index;
                if (selectIndex >= 0)
                {
                    var select = status.ChainReorderableList.serializedProperty.GetArrayElementAtIndex(selectIndex);
                    var chain  = TemplateUtility.ConvertProcessChianInstanceFromObject(select.objectReferenceValue);
                    if (chain != null)
                    {
                        var builder = new StringBuilder();
                        builder.AppendLine("[Used Variables]");
                        foreach (var word in chain.GetReplaceWords())
                        {
                            builder.AppendLine(ReplaceProcessor.GetReplaceText(word));
                        }

                        // TODO : Cache
                        var style = new GUIStyle(GUI.skin.label)
                        {
                            wordWrap = true,
                        };
                        var label   = builder.ToString();
                        var content = new GUIContent(label);
                        var rect    = GUILayoutUtility.GetRect(content, style);
                        EditorGUI.SelectableLabel(rect, label, style);
                        EditorGUILayout.LabelField("[Description]\n" + chain.GetDescription(), style);
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox("When you select item, description will be displayed", MessageType.Info, true);
                }
            }
            EditorGUILayout.EndVertical();
        }