namespace Zinnia.Cast.Operation.Conversion { using System; using UnityEngine; /// /// Converts any supported caster to a . /// public class ToRaycastConverter : CastConverter { /// public override bool ConvertFromBoxCast(PhysicsCast customCast, out RaycastHit hitData, Vector3 center, Vector3 halfExtents, Vector3 direction, Quaternion orientation, float maxDistance) { return customCast.CustomRaycast(new Ray(center, direction), out hitData, maxDistance, false); } /// public override ArraySegment ConvertFromBoxCastAll(PhysicsCast customCast, Vector3 center, Vector3 halfExtents, Vector3 direction, Quaternion orientation, float maxDistance) { return customCast.CustomRaycastAll(new Ray(center, direction), maxDistance, false); } /// public override bool ConvertFromCapsuleCast(PhysicsCast customCast, out RaycastHit hitData, Vector3 point1, Vector3 point2, float radius, Vector3 direction, float maxDistance) { Vector3 origin = GetCenterVector(point1, point2); return customCast.CustomRaycast(new Ray(origin, direction), out hitData, maxDistance, false); } /// public override ArraySegment ConvertFromCapsuleCastAll(PhysicsCast customCast, Vector3 point1, Vector3 point2, float radius, Vector3 direction, float maxDistance) { Vector3 origin = GetCenterVector(point1, point2); return customCast.CustomRaycastAll(new Ray(origin, direction), maxDistance, false); } /// public override bool ConvertFromLinecast(PhysicsCast customCast, out RaycastHit hitData, Vector3 startPosition, Vector3 endPosition) { Vector3 direction = GetDirectionVector(startPosition, endPosition, out float distance); return customCast.CustomRaycast(new Ray(startPosition, direction), out hitData, distance, false); } /// public override bool ConvertFromRaycast(PhysicsCast customCast, out RaycastHit hitData, Ray ray, float maxDistance) { return customCast.CustomRaycast(ray, out hitData, maxDistance, false); } /// public override ArraySegment ConvertFromRaycastAll(PhysicsCast customCast, Ray ray, float maxDistance) { return customCast.CustomRaycastAll(ray, maxDistance, false); } /// public override bool ConvertFromSphereCast(PhysicsCast customCast, out RaycastHit hitData, Vector3 origin, float radius, Vector3 direction, float maxDistance) { return customCast.CustomRaycast(new Ray(origin, direction), out hitData, maxDistance, false); } /// public override ArraySegment ConvertFromSphereCastAll(PhysicsCast customCast, Vector3 origin, float radius, Vector3 direction, float maxDistance) { return customCast.CustomRaycastAll(new Ray(origin, direction), maxDistance, false); } } }