public void ProcParam(Maid master, Maid slave, Maid maid0, XtMasterSlave.MsLinkConfig p_mscfg)
        {
            //v0025 masterの不在を許可 if (!master && !master.body0 && !slave && !slave.body0)
            if (!slave && !slave.body0)
            {
                return;
            }

            //サイズ変更
            if (master && master.body0)
            {
                master.gameObject.transform.localScale = new Vector3(Scale_Master, Scale_Master, Scale_Master);
                if (!master.boMAN)
                {
                    XtMasterSlave.UpdateHitScale(master, Scale_Master, p_mscfg);
                }
                //  XtMasterSlave.UpdateHitScale(master, Scale_Master * p_mscfg.Scale_HitCheckEffect);
            }
            slave.gameObject.transform.localScale = new Vector3(Scale_Slave, Scale_Slave, Scale_Slave);
            if (!slave.boMAN)
            {
                XtMasterSlave.UpdateHitScale(slave, Scale_Slave, p_mscfg);
            }
            //  XtMasterSlave.UpdateHitScale(slave, Scale_Slave * p_mscfg.Scale_HitCheckEffect);

            if (master && master.body0)
            {
                // 男設定 chinkoサイズ・位置など
                if (master.boMAN)
                {
                    XtMasterSlave.SetManVisible(master, !Master_Hide);

                    //master.body0.SetChinkoVisible(Cnk_Visible);
                    XtMasterSlave.SetChinkoVisible(master.body0, Cnk_Visible); //v0030 fix
                    if (Cnk_Visible)
                    {
                        XtMasterSlave.SetChinkoScale(master.body0, Cnk_Scale);
                        XtMasterSlave.SetChinkoPos(master.body0, XtMasterSlave.faTov3(Cnk_OffsetPos));
                    }
                    XtMasterSlave.SetManAlpha(master, manAlpha);
                }
                else
                {
                    XtMasterSlave.SetStateMaskItemsAll(master, Master_Hide);

                    if (slave.boMAN)
                    {
                        //slave.body0.SetChinkoVisible(Cnk_Visible);
                        XtMasterSlave.SetChinkoVisible(master.body0, Cnk_Visible); //v0030 fix
                        if (Cnk_Visible)
                        {
                            XtMasterSlave.SetChinkoScale(slave.body0, Cnk_Scale);
                            XtMasterSlave.SetChinkoPos(slave.body0, XtMasterSlave.faTov3(Cnk_OffsetPos));
                        }
                        XtMasterSlave.SetManAlpha(slave, manAlpha);
                    }
                }
            }
#if DEBUG
            Console.WriteLine(string.Format("+Stgt_boHeadToCam={0} Stgt_boEyeToCam={1}", Stgt_boHeadToCam, Stgt_boEyeToCam));
#endif

            if (!slave.boMAN)
            {
#if DEBUG
                Console.WriteLine(string.Format("-Stgt_boHeadToCam={0} Stgt_boEyeToCam={1}", Stgt_boHeadToCam, Stgt_boEyeToCam));
#endif
                slave.body0.boHeadToCam = Stgt_boHeadToCam;
                slave.body0.boEyeToCam  = Stgt_boEyeToCam;
                Maid tgt = null;
                switch (Stgt_sBoneName)
                {
                case "Bip01 Head":
                    if (maid0 && maid0.body0 && slave != maid0)
                    {
                        tgt = maid0;
                    }
                    break;

                case "_IK_vagina":
                    if (maid0 && maid0.body0 && slave != maid0)
                    {
                        tgt = maid0;
                    }
                    break;

                case "ManBip Head":
                    if (master && master.body0)
                    {
                        tgt = master;
                    }
                    break;

                case "chinko2":
                    if (master && master.body0)
                    {
                        tgt = master;
                    }
                    break;

                default:
                    Stgt_sBoneName = string.Empty;
                    break;
                }

                if (tgt)
                {
                    Transform tgt_tr = BoneLink.BoneLink.SearchObjName(tgt.body0.m_Bones.transform, Stgt_sBoneName, true);
                    slave.EyeToTarget(tgt, GameUty.MillisecondToSecond(0), Stgt_sBoneName);
                }
                else
                {
                    slave.EyeToReset(GameUty.MillisecondToSecond(0));
                }
                slave.body0.boHeadToCam = Stgt_boHeadToCam;
                slave.body0.boEyeToCam  = Stgt_boEyeToCam;
            }
        }
        static void procUserCfg(XtMasterSlave.MsLinks[] p_MSlinks, XtMasterSlave.MsLinkConfig[] cfgs, XtMasterSlave.v3Offsets[] v3ofs)
        {
            for (int i = 0; i < XtMasterSlave.MAX_PAGENUM; i++)
            {
                var ms = p_MSlinks[i];

                //v0031 fix
                ms.mdMaster_No = -1;
                ms.FixMaster();
                ms.mdSlave_No = -1;
                ms.FixSlave();

                cfgs[i] = _UserCfg.cfgs_ms[i];

                UserConfigPage cfgp = _UserCfg.cfgs_p[i];
                ms.Scc1_MasterMaid = cfgp.isMasterMaid;
                ms.mdMaster_No     = cfgp.Master_ID;
                ms.mdSlave_No      = cfgp.Slave_ID;

                if (!ms.Scc1_MasterMaid)
                {
                    ms.mdMasters = XtMasterSlave._MensList;
                    ms.mdSlaves  = XtMasterSlave._MaidList;
                }
                else
                {
                    ms.mdSlaves  = XtMasterSlave._MensList;
                    ms.mdMasters = XtMasterSlave._MaidList;
                }

                //名前指定&呼び出し
                if (XtMasterSlave.cfg.boNameSelectAndLoad)
                {
                    //master
                    int num = -1;
                    if (!string.IsNullOrEmpty(cfgp.Master_Name))
                    {
                        if (!ms.Scc1_MasterMaid)
                        {
                            num = XtMasterSlave.SelectOrLoadMan(cfgp.Master_Name);
                            if (num >= 0)
                            {
                                ms.mdMasters = XtMasterSlave._MensList; //リストが更新された可能性ある
                            }
                        }
                        else
                        {
                            num = XtMasterSlave.SelectOrLoadMaid(cfgp.Master_Name);
                            if (num >= 0)
                            {
                                ms.mdMasters = XtMasterSlave._MaidList;
                            }
                        }

                        if (num >= 0)
                        {
                            ms.mdMaster_No = num;

                            //公式撮影の非表示解除
                            if (ms.mdMasters[ms.mdMaster_No].mem.gameObject.transform.GetChild(0).localScale == Vector3.zero)
                            {
                                ms.mdMasters[ms.mdMaster_No].mem.gameObject.transform.GetChild(0).localScale = Vector3.one;
                            }
                        }
                        else
                        {
                            Console.WriteLine("指定キャラクターが見つかりません。" + (cfgp.doMasterSlave ? "リンク中止:" : ":") + cfgp.Master_Name);
                            cfgp.doMasterSlave = false;
                        }
                    }

                    //slave
                    num = -1;
                    if (!string.IsNullOrEmpty(cfgp.Slave_Name))
                    {
                        if (!ms.Scc1_MasterMaid)
                        {
                            num = XtMasterSlave.SelectOrLoadMaid(cfgp.Slave_Name);
                            if (num >= 0)
                            {
                                ms.mdSlaves = XtMasterSlave._MaidList; //リストが更新された可能性ある
                            }
                        }
                        else
                        {
                            num = XtMasterSlave.SelectOrLoadMan(cfgp.Slave_Name);
                            if (num >= 0)
                            {
                                ms.mdSlaves = XtMasterSlave._MensList;
                            }
                        }

                        if (num >= 0)
                        {
                            ms.mdSlave_No = num;

                            //公式撮影の非表示解除
                            if (ms.mdSlaves[ms.mdSlave_No].mem.gameObject.transform.GetChild(0).localScale == Vector3.zero)
                            {
                                ms.mdSlaves[ms.mdSlave_No].mem.gameObject.transform.GetChild(0).localScale = Vector3.one;
                            }
                        }
                        else
                        {
                            Console.WriteLine("指定キャラクターが見つかりません。" + (cfgp.doMasterSlave ? "リンク中止:" : ":") + cfgp.Slave_Name);
                            cfgp.doMasterSlave = false;
                        }
                    }
                }

                ms.doMasterSlave       = false;
                ms.maidKeepSlaveYotogi = null;

                if (ms.mdMasters.Count > ms.mdMaster_No && ms.mdMaster_No >= 0)
                {
                    Maid master = ms.mdMasters[ms.mdMaster_No].mem;

                    if (ms.mdSlaves.Count > ms.mdSlave_No && ms.mdSlave_No >= 0)
                    {
                        Maid slave = ms.mdSlaves[ms.mdSlave_No].mem;
                        Maid maid0 = null;
                        if (!slave.boMAN && ms.mdSlave_No > 0 && ms.mdSlaves[0].mem)
                        {
                            maid0 = ms.mdSlaves[0].mem;
                        }

                        //設定の反映
                        debugPrintConsole(i + ":設定の反映");
                        cfgp.ProcParam(master, slave, maid0, cfgs[i]);

                        //リンク開始
                        if (master && slave && master.body0 && slave.body0)
                        {
                            ms.doMasterSlave = cfgp.doMasterSlave;

                            //キープスレイブ反映
                            if (cfgs[i].doKeepSlaveYotogi && !slave.boMAN && XtMasterSlave.IsKeepScene())
                            {
                                ms.maidKeepSlaveYotogi = slave;
                            }

                            //v0031 fix
                            ms.FixMaster();
                            ms.FixSlave();
                        }
                    }
                }
                else
                {
                    if (ms.mdSlaves.Count > ms.mdSlave_No && ms.mdSlave_No >= 0)
                    {
                        // メイドのみでも設定反映 v0025
                        Maid slave = ms.mdSlaves[ms.mdSlave_No].mem;
                        Maid maid0 = null;
                        if (!slave.boMAN && ms.mdSlave_No > 0 && ms.mdSlaves[0].mem)
                        {
                            maid0 = ms.mdSlaves[0].mem;
                        }

                        //設定の反映
                        debugPrintConsole(i + ":設定の反映m/o");
                        cfgp.ProcParam(null, slave, maid0, cfgs[i]);

                        //v0031 fix
                        ms.mdMaster_No = -1;
                        ms.FixMaster();
                        ms.FixSlave();
                    }
                }

                if (ms.mdSlaves.Count > ms.mdSlave_No && ms.mdSlave_No >= 0)
                {
                    Maid slave = ms.mdSlaves[ms.mdSlave_No].mem;
                    cfgp.ProcParam2(slave, ms);
                }
            }

            //オフセットテーブルの更新
            for (int i = 0; i < cfgs.Length; i++)
            {
                v3ofs[i].v3StackOffset    = XtMasterSlave.faTov3(cfgs[i].v3StackOffsetFA);
                v3ofs[i].v3StackOffsetRot = XtMasterSlave.faTov3(cfgs[i].v3StackOffsetRotFA);
                v3ofs[i].v3HandLOffset    = XtMasterSlave.faTov3(cfgs[i].v3HandLOffsetFA);
                v3ofs[i].v3HandROffset    = XtMasterSlave.faTov3(cfgs[i].v3HandROffsetFA);
                v3ofs[i].v3HandLOffsetRot = XtMasterSlave.faTov3(cfgs[i].v3HandLOffsetRotFA);
                v3ofs[i].v3HandROffsetRot = XtMasterSlave.faTov3(cfgs[i].v3HandROffsetRotFA);
            }
        }