private void LateUpdate()
        {
            if (danceMain == null)
            {
                return;
            }

            // カメラの表示を適当に広げる よくわからんので毎フレームやっとく
            GameMain.Instance.MainCamera.camera.farClipPlane = xmlManager.farClipPlane;

            if (maidSetting == false)
            {
                if (xmlManager.BackGroundPreset != null)
                {
                    String extent = Path.GetExtension(xmlManager.BackGroundPreset);
                    if (extent.Equals(".preset"))
                    {
                        maid = searchStockMaid("plugin", "backGround");
                        if (maid == null)
                        {
                            maid = GameMain.Instance.CharacterMgr.AddStockMaid();
                            MaidParam m_Param = (MaidParam)fieldMaid.GetValue(maid);
                            m_Param.SetName("plugin", "backGround");
                        }
                        SetPreset(maid, xmlManager.BackGroundPreset);
                    }
                    else
                    {
                        string[] nameList = xmlManager.BackGroundPreset.Split(' ');
                        if (nameList.Length != 2)
                        {
                            Debug.LogError("DanceBg.Plugin:[Maid name Invalid] " + nameList.Length + "#" + xmlManager.BackGroundPreset);
                            maidSetting = true;
                            return;
                        }
                        maid = searchStockMaid(nameList[0], nameList[1]);
                        if (maid == null)
                        {
                            Debug.LogError("DanceBg.Plugin:[Maid not found] #" + nameList[0] + "#" + nameList[1]);
                            maidSetting = true;
                            return;
                        }
                    }
                }
                if (maid != null)
                {
                    //表示済みのめいどさんの位置変更
                    int maidIndex;
//                    for(maidIndex = 1; maidIndex < GameMain.Instance.CharacterMgr.GetMaidCount(); maidIndex++){
                    for (maidIndex = 0; maidIndex < GameMain.Instance.CharacterMgr.GetMaidCount(); maidIndex++)
                    {
                        Maid maidx = GameMain.Instance.CharacterMgr.GetMaid(maidIndex);
                        if (maidx == null)
                        {
                            break;
                        }
//                         if(maidIndex == 0){
//                         maidx.SetRot(maid.GetRot() + new Vector3(0.0f,180.0f,0.0f));
//                         }
//                         else{
                        maidx.SetPos(maidx.gameObject.transform.localPosition + xmlManager.BackGroundPos);
//                         maidx.gameObject.transform.localScale = localscale;
//                         }
                    }
                    // 照明移動は時々?動く ここで初期位置設定
                    // ダンスによってはMainLight以外にもLightがあるのでLightを移動
                    lightList       = (Light[])FindObjectsOfType(typeof(Light));
                    lightVectorList = new Vector3[lightList.Length];
                    for (int i = 0; i < lightList.Length; i++)
                    {
                        lightList[i].gameObject.transform.position =
                            new Vector3(lightList[i].gameObject.transform.position.x,
                                        lightList[i].gameObject.transform.position.y,
                                        lightList[i].gameObject.transform.position.z) + xmlManager.BackGroundPos;
                        lightVectorList[i] = new Vector3(lightList[i].gameObject.transform.position.x,
                                                         lightList[i].gameObject.transform.position.y,
                                                         lightList[i].gameObject.transform.position.z);
                        //  Debug.LogError("Dance_khg.Plugin:light.transform.position" + lightList[i].gameObject.transform.position.ToString());
                        //  Debug.LogError("Dance_khg.Plugin:light.transform.eulerAngles" + lightList[i].gameObject.transform.eulerAngles.ToString());
                        //  Debug.LogError("Dance_khg.Plugin:light.range" + lightList[i].type + " " + lightList[i].range);
                        //  if(lightList[i].type == LightType.Point) lightList[i].range += 30.0f;
                        //  lightList[i].range = lightList[i].range * 2.0f;
                    }
                    // カメラはほぼ毎フレーム移動 トランスフォームの取得しておく
                    cameraTransform = GameMain.Instance.MainCamera.transform;
                    // 背景用メイド設定
                    GameMain.Instance.CharacterMgr.SetActiveMaid(maid, maidIndex);
                    maid.SetPos(xmlManager.BackGroundPos + xmlManager.BackGroundPos2);
                    maid.SetRot(xmlManager.BackGroundrotate);
//                    maid.gameObject.transform.localScale = localscale;
                    maid.Visible = true;

                    // 固定ライト追加
//                    GameObject goSubLight;
//                    goSubLight = new GameObject("sub light");
//                    goSubLight.AddComponent<Light>();
//                    goSubLight.transform.SetParent(goSubCam.transform);
//                    goSubLight.transform.position =
//                                            new Vector3(0.0f,
//                                                        1.0f,
//                                                        0.0f) + xmlManager.BackGroundPos;
//                    goSubLight.transform.eulerAngles =
//                                            new Vector3(90.0f,  全然わからん
//                                                        0.0f,
//                                                        0.0f);

//                    goSubLight.GetComponent<Light>().type = LightType.Spot;
//                    goSubLight.GetComponent<Light>().type = LightType.Directional;
//                    goSubLight.GetComponent<Light>().range = 10;
//                    goSubLight.GetComponent<Light>().enabled = true;
//                    goSubLight.GetComponent<Light>().intensity = 1.2f;
//                  goSubLight.GetComponent<Light>().spotAngle = ssParam.fValue[PKeySubLight][PPropSubLightRange];
                }

//                GameObject[] gObjList = (GameObject[])FindObjectsOfType(typeof(GameObject));
//                foreach (GameObject gObj in gObjList){
//                    Debug.LogError("DanceBg.Plugin:" + gObj.tag);
//                }

                maidSetting = true;
            }
            if (cameraTransform != null)
            {
                cameraTransform.position = new Vector3(cameraTransform.position.x,
                                                       cameraTransform.position.y,
                                                       cameraTransform.position.z) + xmlManager.BackGroundPos;
//                cameraTransform.position = new Vector3(cameraTransform.position.x * localscale.x,
//                                                       cameraTransform.position.y * localscale.y,
//                                                       cameraTransform.position.z * localscale.z) + xmlManager.BackGroundPos;
            }
            if (lightList != null)
            {
                for (int i = 0; i < lightList.Length; i++)
                {
                    if (lightList[i].gameObject.transform.position != lightVectorList[i])
                    {
                        lightList[i].gameObject.transform.position =
                            new Vector3(lightList[i].gameObject.transform.position.x,
                                        lightList[i].gameObject.transform.position.y,
                                        lightList[i].gameObject.transform.position.z) + xmlManager.BackGroundPos;
                        lightVectorList[i] = new Vector3(lightList[i].gameObject.transform.position.x,
                                                         lightList[i].gameObject.transform.position.y,
                                                         lightList[i].gameObject.transform.position.z);
                        //    Debug.LogError("Dance_khg.Plugin:light.transform.position" + lightList[i].gameObject.transform.position.ToString());
                        //  Debug.LogError("Dance_khg.Plugin:light.range" + lightList[i].type + " " + lightList[i].range);
                        //  Debug.LogError("Dance_khg.Plugin:light.transform.eulerAngles" + lightList[i].gameObject.transform.eulerAngles.ToString());
                    }
                }
            }

//            if(Input.GetKeyDown(KeyCode.Space)){
//                xmlManager = new XmlManager();
//                Maid maidx = GameMain.Instance.CharacterMgr.GetMaid(0);
//                maidx.SetPos(maidx.gameObject.transform.localPosition + xmlManager.BackGroundPos);
//            }
        }
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                xmlManager = new XmlManager();
            }
            if (!Enum.IsDefined(typeof(TargetLevel), level))
            {
                return;
            }

            if (maidSetting == true)
            {
                maid0 = GameMain.Instance.CharacterMgr.GetMaid(0);
                // 着替えたりしてずれたら再同期 誰かひとりでもbusyになるとみんなずれるっぽいのでひとりでもbusyになったら再同期
                if (maid0.IsBusy)
                {
                    rSync = true;
                }
                else
                {
                    rSync = false;
                }
                nowBlend = maid0.ActiveFace;
                for (int i = 0; i < MAX_LISTED_MAID; i++)
                {
                    if (xmlManager.listPreset[i] != null && motionSetting[i] == true)
                    {
                        maid = GameMain.Instance.CharacterMgr.GetMaid(i + 1);
                        maid.FoceKuchipakuUpdate(maid.body0.m_Bones.GetComponent <Animation>()[(string)anmHash[level]].time);
                        if (nowBlend != lastBlend)
                        {
                            maid.FaceBlend(maid.ActiveFace = nowBlend);
                        }

                        if (maidSync[i] == false)
                        {
                            field = (typeof(DanceMain)).GetField("m_eMode", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
                            int m_eMode = (int)field.GetValue(danceMain);
                            if (m_eMode == 3)
                            {
                                maid.body0.m_Bones.GetComponent <Animation>()[(string)anmHash[level]].time = NTime.time;
                                if (maidPaku[i] == false)
                                {
                                    maid.StartKuchipakuPattern(NTime.time, kuchipaku, true);
                                    maidPaku[i] = true;
                                }
                                maidSync[i] = true;
                            }
                        }
                        // 着替えたりしてずれたら再同期 誰かひとりでもbusyになるとみんなずれるっぽいのでひとりでもbusyになったら再同期
                        if (maidSync[i] == true && maid.IsBusy == true)
                        {
                            rSync = true;
                        }
                    }
                }
                if (rSync == true)
                {
                    for (int i = 0; i < MAX_LISTED_MAID; i++)
                    {
                        maidSync[i] = false;
                    }
                }
                lastBlend = nowBlend;
                return;
            }
            for (int i = 0; i < MAX_LISTED_MAID; i++)
            {
                if (xmlManager.listPreset[i] != null)
                {
                    maid = GameMain.Instance.CharacterMgr.GetMaid(i + 1);
                    if (maid == null)
                    {
                        String extent = Path.GetExtension(xmlManager.listPreset[i]);
                        if (extent.Equals(".preset"))
                        {
                            // ここダンスをするたびにmaidさん増えちゃう 適当な名前つけて
                            // 2回目以降は名前で検索したほうがよさげ
                            maid = searchStockMaid("plugin", (i + 1).ToString());
                            if (maid == null)
                            {
                                maid = GameMain.Instance.CharacterMgr.AddStockMaid();
                                MaidParam m_Param = (MaidParam)fieldMaid.GetValue(maid);
                                m_Param.SetName("plugin", (i + 1).ToString());
                            }
                            SetPreset(maid, xmlManager.listPreset[i]);
                        }
                        else
                        {
                            string[] nameList = xmlManager.listPreset[i].Split(' ');
                            maid = searchStockMaid(nameList[0], nameList[1]);
                            if (maid == null)
                            {
                                continue;
                            }
                        }
                        GameMain.Instance.CharacterMgr.SetActiveMaid(maid, i + 1);
                    }
                    maid.SetPos(xmlManager.listPos[i]);
                    maid.body0.VertexMorph_FromProcItem("munel", 1.0f);
                    maid.Visible = true;
                }
            }
            maidSetting = true;
        }