Octave3DCollider.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. namespace O3DWB
  4. {
  5. public abstract class Octave3DCollider
  6. {
  7. #region Public Methods
  8. public bool Raycast(Ray ray)
  9. {
  10. Octave3DColliderRayHit colliderRayHit;
  11. return Raycast(ray, out colliderRayHit);
  12. }
  13. public bool RaycastBothDirections(Ray ray, out Octave3DColliderRayHit colliderRayHit)
  14. {
  15. const float originOffsetAlongReverseDirection = 0.001f;
  16. Ray offsetRay = ray;
  17. offsetRay.origin -= offsetRay.direction * originOffsetAlongReverseDirection;
  18. if (Raycast(offsetRay, out colliderRayHit)) return true;
  19. else
  20. {
  21. offsetRay.direction = -offsetRay.direction;
  22. offsetRay.origin = ray.origin - offsetRay.direction * originOffsetAlongReverseDirection;
  23. if (Raycast(offsetRay, out colliderRayHit)) return true;
  24. }
  25. return false;
  26. }
  27. #endregion
  28. #region Public Abstract Methods
  29. public abstract Octave3DColliderType GetColliderType();
  30. public abstract bool Raycast(Ray ray, out Octave3DColliderRayHit colliderRayHit);
  31. #endregion
  32. }
  33. }
  34. #endif