SimulateMouseController.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.SceneManagement;
  5. /*
  6. 模拟鼠标控制器
  7. 主要负责自动开关模拟鼠标
  8. 在蓝牙正常连接状态下,非游戏界面自动开启模拟鼠标,游戏界面自动关闭模拟鼠标。
  9. */
  10. public class SimulateMouseController
  11. {
  12. public static SimulateMouseController ins;
  13. public static void Init() {
  14. ins = new SimulateMouseController();
  15. SceneManager.sceneLoaded += (scene, mode) => {
  16. //去除添加OpenLocker的场景
  17. if (!scene.name.StartsWith("Game") &&
  18. !scene.name.Equals("Env0") &&
  19. !scene.name.Equals("Env1") &&
  20. !scene.name.Equals("Env3")) {
  21. Debug.Log("SimulateMouseController:"+ scene.name);
  22. ins.AddOpenLocker("NotGame");
  23. }
  24. };
  25. }
  26. bool bleConnected = false;
  27. //有locker就要保持鼠标开启状态
  28. HashSet<object> openLockerSet = new HashSet<object>();
  29. //AddOpenLocker 和 RemoveOpenLocker 应两两对应
  30. public void AddOpenLocker(object locker) {
  31. openLockerSet.Add(locker);
  32. Debug.Log("AddOpenLock-" + locker);
  33. CheckAndOpenOrClose();
  34. }
  35. public void RemoveOpenLocker(object locker) {
  36. openLockerSet.Remove(locker);
  37. Debug.Log("RemoveOpenLock-" + locker);
  38. CheckAndOpenOrClose();
  39. }
  40. //蓝牙是否处于连接状态
  41. public void SetBleConnected(bool connected) {
  42. bleConnected = connected;
  43. CheckAndOpenOrClose();
  44. }
  45. //检测和改变开关
  46. void CheckAndOpenOrClose() {
  47. Debug.Log("RemoveOpenLock after openLockerSet-" + bleConnected + " == " + openLockerSet.Count);
  48. if (bleConnected) {
  49. if (openLockerSet.Count > 0) {
  50. Open();
  51. } else {
  52. Close();
  53. }
  54. } else {
  55. Close();
  56. }
  57. }
  58. void Open() {
  59. if (SB_EventSystem.ins && !SB_EventSystem.ins.simulateMouseIsAwaked) {
  60. SB_EventSystem.ins.AwakenSimulateMouse();
  61. // Debug.Log("simulate-mouse-open");
  62. }
  63. }
  64. void Close() {
  65. if (SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked) {
  66. SB_EventSystem.ins.AwakenSimulateMouse();
  67. // Debug.Log("simulate-mouse-close");
  68. }
  69. }
  70. }