DragManager.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using SC.XR.Unity.Module_InputSystem;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. /// <summary>
  6. /// 编辑移动场景
  7. /// </summary>
  8. public class DragManager : MonoSingleton<DragManager>
  9. {
  10. public TriggerState triggerState;
  11. public Transform rightKS;
  12. public Transform leftKS;
  13. private Transform selectTrigger;
  14. private Vector3 selectTOldPos;
  15. private Vector3 selectTOldRot;
  16. /// <summary>
  17. /// 编辑状态
  18. /// </summary>
  19. public bool state;
  20. // Start is called before the first frame update
  21. void Start()
  22. {
  23. triggerState = TriggerState.No;
  24. DispatcherBase.KeyDownDelegateRegister(AnyDown);
  25. DispatcherBase.KeyUpDelegateRegister(AnyUp);
  26. }
  27. // Update is called once per frame
  28. void Update()
  29. {
  30. if (state)
  31. {
  32. if (triggerState != TriggerState.No && selectTrigger != null)
  33. {
  34. MachineRoomManager.Instance.transform.eulerAngles -= new Vector3(0, selectTOldRot.y - selectTrigger.eulerAngles.y, 0);
  35. selectTOldRot = selectTrigger.eulerAngles;
  36. MachineRoomManager.Instance.transform.position -= new Vector3(selectTOldPos.x - selectTrigger.position.x, 0, selectTOldPos.z - selectTrigger.position.z);
  37. selectTOldPos = selectTrigger.position;
  38. }
  39. }
  40. }
  41. private void AnyUp(InputKeyCode keyCode, InputDevicePartBase part)
  42. {
  43. // UILogManager.Instance.SendLogText(3, part.PartType.ToString());
  44. if (part.PartType == InputDevicePartType.KSRight && triggerState == TriggerState.RTrigger)
  45. {
  46. // UILogManager.Instance.SendLogText(3, "RTriggerUp");
  47. triggerState = TriggerState.No;
  48. selectTrigger = null;
  49. selectTOldPos = Vector3.zero;
  50. selectTOldRot = Vector3.zero;
  51. }
  52. if (part.PartType == InputDevicePartType.KSLeft && triggerState == TriggerState.LTrigger)
  53. {
  54. // UILogManager.Instance.SendLogText(3, "LTriggerUp");
  55. triggerState = TriggerState.No;
  56. selectTrigger = null;
  57. selectTOldPos = Vector3.zero;
  58. selectTOldRot = Vector3.zero;
  59. }
  60. }
  61. private void AnyDown(InputKeyCode keyCode, InputDevicePartBase part)
  62. {
  63. // UILogManager.Instance.SendLogText(3, part.PartType.ToString());
  64. if (part.PartType == InputDevicePartType.KSRight && triggerState == TriggerState.No)
  65. {
  66. // UILogManager.Instance.SendLogText(3, "RTriggerDown");
  67. triggerState = TriggerState.RTrigger;
  68. selectTrigger = rightKS;
  69. selectTOldPos = selectTrigger.position;
  70. selectTOldRot = selectTrigger.eulerAngles;
  71. }
  72. if (part.PartType == InputDevicePartType.KSLeft && triggerState == TriggerState.No)
  73. {
  74. triggerState = TriggerState.LTrigger;
  75. selectTrigger = leftKS;
  76. selectTOldPos = selectTrigger.position;
  77. selectTOldRot = selectTrigger.eulerAngles;
  78. }
  79. }
  80. }
  81. public enum TriggerState
  82. {
  83. No,
  84. RTrigger,
  85. LTrigger
  86. }