SimulateMouseController.cs 1.7 KB

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