public int TotalCornersInBound(WallsBounds pBoundsToCheck) { int nCornersIntersecting = 0; //TopLeft if (IsCornerInBound(new Vector3(-1, 0, 1), pBoundsToCheck)) { nCornersIntersecting++; } //Top Right if (IsCornerInBound(new Vector3(1, 0, 1), pBoundsToCheck)) { nCornersIntersecting++; } //Bottom Left if (IsCornerInBound(new Vector3(-1, 0, -1), pBoundsToCheck)) { nCornersIntersecting++; } //Bottom Right if (IsCornerInBound(new Vector3(1, 0, -1), pBoundsToCheck)) { nCornersIntersecting++; } return(nCornersIntersecting); }
public static WallsBounds BoxColliderToWallbounds(Vector3 pPosition, BoxCollider pWallCollider) { WallsBounds newWallBounds = new WallsBounds(); Vector3 extends = pWallCollider.bounds.extents; newWallBounds.center = pPosition; newWallBounds.minWallsX = newWallBounds.center.x - extends.x; newWallBounds.maxWallsX = newWallBounds.center.x + extends.x; newWallBounds.minWallsZ = newWallBounds.center.z - extends.z; newWallBounds.maxWallsZ = newWallBounds.center.z + extends.z; return(newWallBounds); }
public bool IsCornerInBound(Vector3 pCorner, WallsBounds pBoundsToCheck) { if (pCorner.z == 1) //Top side { if (pCorner.x == 1) //Top right { if (maxWallsX > pBoundsToCheck.minWallsX && maxWallsX < pBoundsToCheck.maxWallsX && maxWallsZ < pBoundsToCheck.maxWallsZ && maxWallsZ > pBoundsToCheck.minWallsZ) { return(true); } } else // Top left { if (minWallsX > pBoundsToCheck.minWallsX && minWallsX < pBoundsToCheck.maxWallsX && maxWallsZ < pBoundsToCheck.maxWallsZ && maxWallsZ > pBoundsToCheck.minWallsZ) { return(true); } } } else //bottom side { if (pCorner.x == 1) //bottom right { if (maxWallsX > pBoundsToCheck.minWallsX && maxWallsX < pBoundsToCheck.maxWallsX && minWallsZ < pBoundsToCheck.maxWallsZ && minWallsZ > pBoundsToCheck.minWallsZ) { return(true); } } else // bottom left { if (minWallsX > pBoundsToCheck.minWallsX && minWallsX < pBoundsToCheck.maxWallsX && minWallsZ < pBoundsToCheck.maxWallsZ && minWallsZ > pBoundsToCheck.minWallsZ) { return(true); } } } return(false); }
public static WallsBounds ExtendWallBounds(WallsBounds boundsToExtend, WallsBounds boundsReference) { if (boundsReference.minWallsX < boundsToExtend.minWallsX) { boundsToExtend.center.x -= (boundsToExtend.minWallsX - boundsReference.minWallsX) / 2; boundsToExtend.minWallsX = boundsReference.minWallsX; } if (boundsReference.minWallsZ < boundsToExtend.minWallsZ) { boundsToExtend.center.z -= (boundsToExtend.minWallsZ - boundsReference.minWallsZ) / 2; boundsToExtend.minWallsZ = boundsReference.minWallsZ; } if (boundsReference.maxWallsX > boundsToExtend.maxWallsX) { boundsToExtend.center.x -= (boundsToExtend.maxWallsX - boundsReference.maxWallsX) / 2; boundsToExtend.maxWallsX = boundsReference.maxWallsX; } if (boundsReference.maxWallsZ > boundsToExtend.maxWallsZ) { boundsToExtend.center.z -= (boundsToExtend.minWallsZ - boundsReference.minWallsZ) / 2; boundsToExtend.maxWallsZ = boundsReference.maxWallsZ; } return(boundsToExtend); }