void openFileBrowser(IFileSelectable file)
 {
     targetFile  = file;
     fileBrowser = new FileBrowser(
         new Rect(0, 0, fileBrowserRect.width, fileBrowserRect.height),
         "ファイル選択",
         FileSelectedCallback
         );
     fileBrowser.SelectionPatterns = Params.Extensions[file.fileType];
 }
 void openFileBrowser(IFileSelectable file)
 {
     targetFile = file;
     fileBrowser = new FileBrowser(
         new Rect(0, 0, fileBrowserRect.width, fileBrowserRect.height),
         "ファイル選択",
         FileSelectedCallback
     );
     fileBrowser.SelectionPatterns = Params.Extensions[file.fileType];
 }
        string drawFileField(string value, string label, IFileSelectable file, int indent = 0)
        {
            GUILayout.BeginHorizontal();
            spacer(indent);
            GUILayout.Label(label, labelStyle, labelWidth);
            string val = GUILayout.TextField(value, textStyle, textHeight);

            if (GUILayout.Button("...", buttonStyle, GUILayout.Width(fontSize * 2)))
            {
                openFileBrowser(file);
            }
            if (GUILayout.Button("適用", buttonStyle, GUILayout.Width(fontSize * 4)))
            {
                file.LoadFile(file.FilenameWithExtension);
                Maid maid = GameMain.Instance.CharacterMgr.GetMaid(0);

                switch (file.fileType)
                {
                case Params.FileType.menu:
                    loadMenu();
                    Menu.ProcScript(maid, file.FilenameWithExtension);
                    maid.body0.FixMaskFlag();
                    maid.body0.FixVisibleFlag(false);
                    maid.AllProcPropSeqStart();
                    break;

                case Params.FileType.mate:
                    var mate = (MateFile)file;
                    foreach (var slot in Params.MPNtoSlotname[mate.category])
                    {
                        maid.body0.ChangeMaterial(slot, mate.matno, mate.FilenameWithExtension);
                    }
                    break;

                case Params.FileType.model:
                    var model = (ModelFile)file;
                    foreach (var slot in Params.MPNtoSlotname[model.category])
                    {
                        if (slot == "body")
                        {
                            maid.body0.LoadBody_R(model.FilenameWithExtension, maid);
                        }
                        else
                        {
                            maid.body0.AddItem(slot, model.FilenameWithExtension);
                        }
                    }
                    maid.body0.FixMaskFlag();
                    maid.body0.FixVisibleFlag(false);
                    maid.AllProcPropSeqStart();
                    break;

                case Params.FileType.tex:
                    break;

                case Params.FileType.image:
                    var tex = (TexParams)file;
                    if (tex.texFile != null)
                    {
                        if (tex.texFile.LoadFile(tex.FilenameWithExtension))
                        {
                            foreach (var slot in Params.MPNtoSlotname[tex.mateFile.category])
                            {
                                maid.body0.ChangeTex(slot, tex.mateFile.matno, tex.propertyName, tex.filename, null);
                            }
                        }
                    }
                    break;
                }
            }
            GUILayout.EndHorizontal();
            return(val);
        }
        string drawFileField(string value, string label, IFileSelectable file, int indent = 0)
        {
            GUILayout.BeginHorizontal();
            spacer(indent);
            GUILayout.Label(label, labelStyle, labelWidth);
            string val = GUILayout.TextField(value, textStyle, textHeight);
            if (GUILayout.Button("...", buttonStyle, GUILayout.Width(fontSize * 2)))
            {
                openFileBrowser(file);
            }
            if (GUILayout.Button("適用", buttonStyle, GUILayout.Width(fontSize * 4)))
            {
                file.LoadFile(file.FilenameWithExtension);
                Maid maid = GameMain.Instance.CharacterMgr.GetMaid(0);

                switch (file.fileType)
                {
                    case Params.FileType.menu:
                        loadMenu();
                        Menu.ProcScript(maid, file.FilenameWithExtension);
                        maid.body0.FixMaskFlag();
                        maid.body0.FixVisibleFlag(false);
                        maid.AllProcPropSeqStart();
                        break;
                    case Params.FileType.mate:
                        var mate = (MateFile)file;
                        foreach (var slot in Params.MPNtoSlotname[mate.category])
                        {
                            maid.body0.ChangeMaterial(slot, mate.matno, mate.FilenameWithExtension);
                        }
                        break;
                    case Params.FileType.model:
                        var model = (ModelFile)file;
                        foreach (var slot in Params.MPNtoSlotname[model.category])
                        {
                            if (slot == "body")
                            {
                                maid.body0.LoadBody_R(model.FilenameWithExtension, maid);
                            }
                            else
                            {
                                maid.body0.AddItem(slot, model.FilenameWithExtension);
                            }
                        }
                        maid.body0.FixMaskFlag();
                        maid.body0.FixVisibleFlag(false);
                        maid.AllProcPropSeqStart();
                        break;
                    case Params.FileType.tex:
                        break;
                    case Params.FileType.image:
                        var tex = (TexParams)file;
                        if (tex.texFile != null)
                        {
                            if (tex.texFile.LoadFile(tex.FilenameWithExtension))
                            {
                                foreach (var slot in Params.MPNtoSlotname[tex.mateFile.category])
                                {
                                    maid.body0.ChangeTex(slot, tex.mateFile.matno, tex.propertyName, tex.filename, null);
                                }
                            }
                        }
                        break;
                }
            }
            GUILayout.EndHorizontal();
            return val;
        }