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; }