public static Vector3 FilterCombine(this Vector3 vector, Vector3 other, AxesFilter filter)
 {
     return(new Vector3(
                filter.x ? vector.x : other.x,
                filter.y ? vector.y : other.y,
                filter.z ? vector.z : other.z));
 }
    public static AxesFilter GetAxesOutOfRangeOrOnEdge(this Vector3 vector, AxesRanges range)
    {
        var filter = new AxesFilter();

        filter.x = !range.xRange.ContainsNotOnEdge(vector.x);
        filter.y = !range.yRange.ContainsNotOnEdge(vector.y);
        filter.z = !range.zRange.ContainsNotOnEdge(vector.z);
        return(filter);
    }
 public static Vector3 Constrain(this Vector3 vector, AxesFilter constraint)
 {
     return(FilterCombine(Vector3.zero, vector, constraint));
 }
 public static Vector3 ToDirection(this AxesFilter filter)
 {
     return(Filter(new Vector3(1.0f, 1.0f, 1.0f), filter));
 }
 public static Vector3 Filter(this Vector3 vector, AxesFilter filter)
 {
     return(FilterCombine(vector, Vector3.zero, filter));
 }