InputDeviceHandPartFaceHead.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using UnityEngine;
  7. using UnityEngine.EventSystems;
  8. namespace SC.XR.Unity.Module_InputSystem.InputDeviceHand {
  9. public class InputDeviceHandPartFaceHead : InputDeviceHandPartEventBase {
  10. public float faceAngle = 60;
  11. public InputDeviceHandPartFaceHead(InputDevicePartDispatchEventHand inputDevicePartDispatchEventHand) : base(inputDevicePartDispatchEventHand) {
  12. }
  13. public override void OnSCStart() {
  14. base.OnSCStart();
  15. previousEvent = currentEvent = HandEventType.Null;
  16. EventPercent = 0;
  17. }
  18. protected override void OnUpdateEvent() {
  19. currentEvent = HandEventType.Null;
  20. if (API_GSXR_Slam.SlamManager && Camera.main.transform) {
  21. if ((Vector3.Angle(handInfo.normal, Camera.main.transform.up) <= 60 && Vector3.Angle(handInfo.normal, Camera.main.transform.right) >70 && Vector3.Angle(handInfo.normal, Camera.main.transform.right) <110)
  22. ||
  23. Vector3.Angle(handInfo.normal, Camera.main.transform.position - inputDeviceHandPart.inputDataHand.handInfo.centerPosition) < 50
  24. ) {
  25. if (previousEvent == HandEventType.PalmFaceHead || previousEvent == HandEventType.PalmFaceHeadStart) {
  26. currentEvent = HandEventType.PalmFaceHead;
  27. } else {
  28. currentEvent = HandEventType.PalmFaceHeadStart;
  29. }
  30. EventPercent = 1;
  31. } else {
  32. if (previousEvent == HandEventType.PalmFaceHead || previousEvent == HandEventType.PalmFaceHeadStart) {
  33. currentEvent = HandEventType.PalmFaceHeadEnd;
  34. }else {
  35. currentEvent = HandEventType.Null;
  36. }
  37. EventPercent = 0;
  38. }
  39. }
  40. previousEvent = currentEvent;
  41. //if (currentEvent != HandEventType.Null) {
  42. // DebugMy.Log(inputDeviceHandPart.PartType + " Event -----> " + currentEvent + " " + EventPercent, this, true);
  43. //}
  44. }
  45. public override void OnSCDisable() {
  46. if (previousEvent == HandEventType.PalmFaceHead || previousEvent == HandEventType.PalmFaceHeadStart) {
  47. currentEvent = HandEventType.PalmFaceHeadEnd;
  48. }
  49. EventPercent = 0;
  50. base.OnSCDisable();
  51. }
  52. }
  53. }