コード例 #1
0
    /// <summary>
    /// アクティブの情報出力
    /// </summary>
    private void LipSyncExport()
    {
        string tmpPath    = Path.Combine(Application.dataPath, "ExpansionTools/LipSyncSelect/tmp/ClassTemplate.cs.template");
        string exportText = BearFileUtil.GetAllText(tmpPath);


        VRC_AvatarDescriptor avatarDescriptor = GetVRCAvatarDescriptor();

        if (avatarDescriptor.lipSync == VRC_AvatarDescriptor.LipSyncStyle.VisemeBlendShape)
        {
            var visemeBlendShapes = avatarDescriptor.VisemeBlendShapes;

            List <string> blendShapeNames = GetBlendShapeNames();
            for (int i = 0; i < visemeBlendShapes.Length; i++)
            {
                string[] matchNames = blendShapeNames.Where(t => t == visemeBlendShapes[i]).ToArray();
                if (0 < matchNames.Length)
                {
                    string replaceKey = "@" + ((VRC_AvatarDescriptor.Viseme)i).ToString() + "@";
                    exportText = exportText.Replace(replaceKey, matchNames[0]);
                }
            }
        }
        var exportWindow = EditorWindow.GetWindow <LipSyncExport>(true);

        exportWindow.exportText = exportText;
        exportWindow.position   = new Rect(200f, 200f, 300f, 100f);
    }
コード例 #2
0
    void OnGUI()
    {
        EditorGUILayout.BeginVertical();
        GUILayout.FlexibleSpace();
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            {
                GUILayout.Label("ファイル名を半角英数字で入力してください。");
            }
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndHorizontal();



            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            EditorGUILayout.BeginVertical();
            GUILayout.FlexibleSpace();
            {
                EditorGUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                EditorGUILayout.BeginVertical();
                GUILayout.FlexibleSpace();
                {
                    fileName = GUILayout.TextField(fileName, GUILayout.Width(150f));
                }
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndVertical();
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                EditorGUILayout.BeginVertical();
                GUILayout.FlexibleSpace();
                {
                    if (GUILayout.Button("OK", GUILayout.Height(25f), GUILayout.Width(40f)))
                    {
                        if (Regex.IsMatch(fileName, @"[^a-zA-Z0-9]"))
                        {
                            EditorUtility.DisplayDialog("エラー", "ファイル名は半角英数字で入力してください。", "OK");
                        }
                        else
                        {
                            string className = char.ToUpper(fileName[0]) + fileName.Substring(1);
                            exportText = exportText.Replace("@CLASS_NAME@", className);

                            string tmpPath = Path.Combine(Application.dataPath, "ExpansionTools/LipSyncSelect/tmp/" + className + "Tmp.cs");
                            if (!BearFileUtil.WriteText(exportText, tmpPath, Encoding.GetEncoding("UTF-8"), true))
                            {
                                EditorUtility.DisplayDialog("エラー", "ファイルの保存に失敗しました。\nもう一度やり直いて下さい。", "OK");
                            }
                            Close();
                            AssetDatabase.Refresh();
                        }
                    }
                }
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndVertical();
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();
            }
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndVertical();
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndHorizontal();
        }
        GUILayout.FlexibleSpace();
        EditorGUILayout.EndVertical();
    }