ZeroVR/ZeroPacientVR/Assets/Octave3D World Builder/Scripts/Objects/Object Colliders/Octave3DCollider.cs

39 lines
1.2 KiB
C#

#if UNITY_EDITOR
using UnityEngine;
namespace O3DWB
{
public abstract class Octave3DCollider
{
#region Public Methods
public bool Raycast(Ray ray)
{
Octave3DColliderRayHit colliderRayHit;
return Raycast(ray, out colliderRayHit);
}
public bool RaycastBothDirections(Ray ray, out Octave3DColliderRayHit colliderRayHit)
{
const float originOffsetAlongReverseDirection = 0.001f;
Ray offsetRay = ray;
offsetRay.origin -= offsetRay.direction * originOffsetAlongReverseDirection;
if (Raycast(offsetRay, out colliderRayHit)) return true;
else
{
offsetRay.direction = -offsetRay.direction;
offsetRay.origin = ray.origin - offsetRay.direction * originOffsetAlongReverseDirection;
if (Raycast(offsetRay, out colliderRayHit)) return true;
}
return false;
}
#endregion
#region Public Abstract Methods
public abstract Octave3DColliderType GetColliderType();
public abstract bool Raycast(Ray ray, out Octave3DColliderRayHit colliderRayHit);
#endregion
}
}
#endif