MeshColliderHitTest.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using UnityEngine;
  2. namespace FairyGUI
  3. {
  4. /// <summary>
  5. ///
  6. /// </summary>
  7. public class MeshColliderHitTest : ColliderHitTest
  8. {
  9. public Vector2 lastHit;
  10. /// <summary>
  11. ///
  12. /// </summary>
  13. /// <param name="collider"></param>
  14. public MeshColliderHitTest(MeshCollider collider)
  15. {
  16. this.collider = collider;
  17. }
  18. /// <summary>
  19. ///
  20. /// </summary>
  21. /// <param name="contentRect"></param>
  22. /// <param name="localPoint"></param>
  23. /// <returns></returns>
  24. override public bool HitTest(Rect contentRect, Vector2 localPoint)
  25. {
  26. RaycastHit hit;
  27. if (!HitTestContext.GetRaycastHitFromCache(HitTestContext.camera, out hit))
  28. return false;
  29. if (hit.collider != collider)
  30. return false;
  31. lastHit = new Vector2(hit.textureCoord.x * contentRect.width, (1 - hit.textureCoord.y) * contentRect.height);
  32. HitTestContext.direction = Vector3.back;
  33. HitTestContext.worldPoint = StageCamera.main.ScreenToWorldPoint(new Vector2(lastHit.x, Screen.height - lastHit.y));
  34. return true;
  35. }
  36. }
  37. }