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;
 }