2021년 4학년 1학기 기업연계프로젝트2 컴퓨터소프트웨어공학과 <원광투어팀> 팀장 : 송유진 팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
3.3 KiB

5 years ago
  1. //========= Copyright 2016-2020, HTC Corporation. All rights reserved. ===========
  2. using UnityEngine;
  3. using UnityEngine.EventSystems;
  4. namespace HTC.UnityPlugin.Pointer3D
  5. {
  6. public static class Pointer3DEventDataExtension
  7. {
  8. public static Pointer3DRaycaster GetRaycaster3D(this PointerEventData eventData)
  9. {
  10. if (!(eventData is Pointer3DEventData)) { return null; }
  11. var eventData3D = eventData as Pointer3DEventData;
  12. return eventData3D.raycaster;
  13. }
  14. public static bool TryGetRaycaster3D(this PointerEventData eventData, out Pointer3DRaycaster raycaster)
  15. {
  16. raycaster = null;
  17. if (!(eventData is Pointer3DEventData)) { return false; }
  18. var eventData3D = eventData as Pointer3DEventData;
  19. raycaster = eventData3D.raycaster;
  20. return true;
  21. }
  22. public static TRaycaster3D GetRaycaster3D<TRaycaster3D>(this PointerEventData eventData) where TRaycaster3D : Pointer3DRaycaster
  23. {
  24. if (!(eventData is Pointer3DEventData)) { return null; }
  25. var eventData3D = eventData as Pointer3DEventData;
  26. if (!(eventData3D.raycaster is TRaycaster3D)) { return null; }
  27. return eventData3D.raycaster as TRaycaster3D;
  28. }
  29. public static bool TryGetRaycaster3D<TRaycaster3D>(this PointerEventData eventData, out TRaycaster3D raycaster) where TRaycaster3D : Pointer3DRaycaster
  30. {
  31. raycaster = null;
  32. if (!(eventData is Pointer3DEventData)) { return false; }
  33. var eventData3D = eventData as Pointer3DEventData;
  34. if (!(eventData3D.raycaster is TRaycaster3D)) { return false; }
  35. raycaster = eventData3D.raycaster as TRaycaster3D;
  36. return true;
  37. }
  38. }
  39. public class Pointer3DEventData : PointerEventData
  40. {
  41. public readonly Pointer3DRaycaster raycaster;
  42. public Vector3 position3D;
  43. public Quaternion rotation;
  44. public Vector3 position3DDelta;
  45. public Quaternion rotationDelta;
  46. public Vector3 pressPosition3D;
  47. public Quaternion pressRotation;
  48. public float pressDistance;
  49. public GameObject pressEnter;
  50. public bool pressPrecessed;
  51. public Pointer3DEventData(Pointer3DRaycaster ownerRaycaster, EventSystem eventSystem) : base(eventSystem)
  52. {
  53. raycaster = ownerRaycaster;
  54. Pointer3DInputModule.AssignPointerId(this);
  55. }
  56. public virtual bool GetPress() { return false; }
  57. public virtual bool GetPressDown() { return false; }
  58. public virtual bool GetPressUp() { return false; }
  59. public override string ToString()
  60. {
  61. var str = string.Empty;
  62. str += "eligibleForClick: " + eligibleForClick + "\n";
  63. str += "pointerEnter: " + Pointer3DInputModule.PrintGOPath(pointerEnter) + "\n";
  64. str += "pointerPress: " + Pointer3DInputModule.PrintGOPath(pointerPress) + "\n";
  65. str += "lastPointerPress: " + Pointer3DInputModule.PrintGOPath(lastPress) + "\n";
  66. str += "pressEnter: " + Pointer3DInputModule.PrintGOPath(pressEnter) + "\n";
  67. str += "pointerDrag: " + Pointer3DInputModule.PrintGOPath(pointerDrag) + "\n";
  68. return str;
  69. }
  70. }
  71. }