public KeyValuePair<bool, RaycastHit> checkForHitInFrontOfColliderPoints(raycastOriginOption a, raycastOriginOption b, Vector3 direction, float distanceForward, string mask="Ground", bool debug=true) { Vector3 va, vb; va = convertEnumToRayOrigin(a); vb = convertEnumToRayOrigin(b); float spacingToUse = discoverSpacing(a, b); return hitBetweenPoints(va, vb, direction, distanceForward, spacingToUse, mask, debug); }
// discovers the spacing to use for the raycasts between the known corners float discoverSpacing(raycastOriginOption a, raycastOriginOption b) { if((a == raycastOriginOption.backLeftBottom && b == raycastOriginOption.backLeftTop) || (a == raycastOriginOption.backLeftTop && b == raycastOriginOption.backLeftBottom) || (a == raycastOriginOption.backRightBotton && b == raycastOriginOption.backRightTop) || (a == raycastOriginOption.backRightTop && b == raycastOriginOption.backRightBotton) || (a == raycastOriginOption.frontLeftBottom && b == raycastOriginOption.frontLeftTop) || (a == raycastOriginOption.frontLeftTop && b == raycastOriginOption.frontLeftBottom) || (a == raycastOriginOption.frontRightBotton && b == raycastOriginOption.frontRightTop) || (a == raycastOriginOption.frontRightTop && b == raycastOriginOption.frontRightBotton)) { return Y_axisSpacing; } else if((a == raycastOriginOption.backLeftBottom && b == raycastOriginOption.backRightBotton) || (a == raycastOriginOption.backRightBotton && b == raycastOriginOption.backLeftBottom) || (a == raycastOriginOption.backLeftTop && b == raycastOriginOption.backRightTop) || (a == raycastOriginOption.backRightTop && b == raycastOriginOption.backLeftTop) || (a == raycastOriginOption.frontLeftBottom && b == raycastOriginOption.frontRightBotton) || (a == raycastOriginOption.frontRightBotton && b == raycastOriginOption.frontLeftBottom) || (a == raycastOriginOption.frontLeftTop && b == raycastOriginOption.frontRightTop) || (a == raycastOriginOption.frontRightTop && b == raycastOriginOption.frontLeftTop)) { return X_axisSpacing; } return Z_axisSpacing; }
//converts the enum into the struct //va is a biproduct of me being lazy Vector3 convertEnumToRayOrigin(raycastOriginOption a) { Vector3 va; switch(a) { case raycastOriginOption.backLeftBottom: va = rayOrigins.backLeftBottom; return va; case raycastOriginOption.backLeftTop: va = rayOrigins.backLeftTop; return va;; case raycastOriginOption.backRightBotton: va = rayOrigins.backRightBotton; return va;; case raycastOriginOption.backRightTop: va = rayOrigins.backRightTop; return va;; case raycastOriginOption.frontLeftBottom: va = rayOrigins.frontLeftBottom; return va;; case raycastOriginOption.frontLeftTop: va = rayOrigins.frontLeftTop; return va;; case raycastOriginOption.frontRightBotton: va = rayOrigins.frontRightBotton; return va;; case raycastOriginOption.frontRightTop: va = rayOrigins.frontRightTop; return va;; } Debug.LogError("?? convertEnumToRayOrigin messed up somehow"); return Vector3.zero; }