/// <summary> /// デバイスを開く. /// </summary> private void OpenVorzeDevices() { // システム登録済のデバイス一覧を取得. var deviceList = VorzeUSBSearcher.GetVorzeUSBDeviceList(); // デバイス一覧が空でなければ、デバイスを開く if (deviceList != null) { foreach (var keyValue in deviceList) { var device = new A10PistonClass(); // デバイスのオープンに成功したら、リスト登録 if (device.OpenDevice(keyValue.Key)) { devices.Add(device); } } } }
private IEnumerator PistonCoroutine(int iLastExcite, A10PistonConfig.YotogiItem YotogiItem, Dictionary <string, A10PistonConfig.LevelItem> A10PistonPattanDict, bool InsertFlg, string Personal, A10PistonClass a10Piston) { // 興奮状態のステータス yExciteStatus = YotogiPlay.GetExcitementStatus(iLastExcite); int iExciteStatus = (int)yExciteStatus; // 指定コマンドの制御状態をループする. while (true) { foreach (A10PistonConfig.Control Item in YotogiItem.ControlData) { // 性格を指定しているが不一致の場合は無視 if (Item.Personal != "" && Item.Personal != Personal) { continue; } // 挿入時指定をしているが挿入フラグがない場合は無視 if (Item.Insert && !InsertFlg) { continue; } // 接続機器を指定しているが不一致の場合は無視 if (Item.Device != "" && Item.Device != a10Piston.ConnectedModel.ToString()) { continue; } // 興奮状態を指定しているが不一致の場合は無視 if (0 <= Item.Excite && Item.Excite != iExciteStatus) { continue; } //現在のPatternとLevel A10PistonClass.Pattern SetPattan = a10Piston.pattern; int SetLevel = a10Piston.level; int SetPosition = a10Piston.position; //Patternの定義があれば更新 if (0 == Item.Pattern) { SetPattan = A10PistonClass.Pattern.ClockWise; } else if (1 == Item.Pattern) { SetPattan = A10PistonClass.Pattern.CounterClockWise; } //Positionの定義があれば更新 if (-1 < Item.Position) { SetPosition = Clamp(Item.Position, A10PistonClass.Position_Min, A10PistonClass.Position_Max); } //Levelの定義があれば更新 if (-1 < Item.Level) { SetLevel = Clamp(Item.Level, A10PistonClass.Level_Min, A10PistonClass.Level_Max); } //LevelNameの定義がある場合 if (Item.LvName != "") { if (A10PistonPattanDict.ContainsKey(Item.LvName)) { //興奮値を元にLevelを更新 SetLevel = Clamp(GetLevel(yExciteStatus, A10PistonPattanDict[Item.LvName]), A10PistonClass.Level_Min, A10PistonClass.Level_Max); } else { DebugManager.Log("LevelNameの定義が見つかりません"); } } //ディレイ if (0.0f < Item.Delay) { yield return(new WaitForSeconds(Item.Delay)); } //振動を開始する if (SetLevel != a10Piston.level || SetPattan != a10Piston.pattern || SetPosition != a10Piston.position) { //Pistonの振動処理 //a10Piston.SetPatternAndLevel(SetPattan, SetLevel); a10Piston.SetPositionAndLevel(SetPosition, SetLevel); //GUI用に更新をする。 NowPattern = (Int32)a10Piston.pattern; NowLevel = a10Piston.level; } //ログを追加 DebugManager.Log(a10Piston.ConnectedModel.ToString() + ": [Pattern:" + a10Piston.pattern + "][Level:" + a10Piston.level + "][Delay:" + Item.Delay + "][Time:" + Item.Time + "]"); //継続タイム if (0.0f < Item.Time) { yield return(new WaitForSeconds(Item.Time)); } else { // 継続時間の指定が無い場合、0.1秒毎に次の処理へ移行する yield return(new WaitForSeconds(0.1f)); } /* * //性格の指定があるかどうか(未指定の場合はそのまま実行) * if (Item.Personal == "" || Item.Personal == Personal) * { * //挿入時に挿入フラグがあった場合もしくはそれ以外 * if ((Item.Insert && InsertFlg) || Item.Insert == false) * { * // 接続機器の指定があるかどうか(未指定の場合はそのまま実行) * if ((Item.Device == "" || Item.Device == a10Piston.ConnectedModel.ToString())) * { * // 興奮状態が指定と異なる場合は実行しない(未指定の場合はそのまま実行) * if (0 <= Item.Excite && Item.Excite != iExciteStatus) * { * continue; * } * } * } * } */ } // 2ループ目以降の挿入フラグはオフにする InsertFlg = false; } }