SimulateMouseController.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. if (!scene.name.StartsWith("Game")) {
  17. ins.AddOpenLocker("NotGame");
  18. }
  19. };
  20. }
  21. bool bleConnected = false;
  22. //有locker就要保持鼠标开启状态
  23. HashSet<object> openLockerSet = new HashSet<object>();
  24. public void AddOpenLocker(object locker) {
  25. openLockerSet.Add(locker);
  26. CheckAndOpenOrClose();
  27. // Debug.Log("AddOpenLock-" + locker);
  28. }
  29. public void RemoveOpenLocker(object locker) {
  30. openLockerSet.Remove(locker);
  31. CheckAndOpenOrClose();
  32. // Debug.Log("RemoveOpenLock-" + locker);
  33. }
  34. //蓝牙是否处于连接状态
  35. public void SetBleConnected(bool connected) {
  36. bleConnected = connected;
  37. CheckAndOpenOrClose();
  38. }
  39. //检测和改变开关
  40. void CheckAndOpenOrClose() {
  41. if (bleConnected) {
  42. if (openLockerSet.Count > 0) {
  43. Open();
  44. } else {
  45. Close();
  46. }
  47. } else {
  48. Close();
  49. }
  50. }
  51. void Open() {
  52. if (SB_EventSystem.ins && !SB_EventSystem.ins.simulateMouseIsAwaked) {
  53. SB_EventSystem.ins.AwakenSimulateMouse();
  54. // Debug.Log("simulate-mouse-open");
  55. }
  56. }
  57. void Close() {
  58. if (SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked) {
  59. SB_EventSystem.ins.AwakenSimulateMouse();
  60. // Debug.Log("simulate-mouse-close");
  61. }
  62. }
  63. }