Vector3 CalcuSizeX(IntVector3 begin, IntVector3 end, ECalcuHeight type) { Vector3 size = new Vector3(end.x - begin.x, end.y - begin.y, end.z - begin.z); Vector3 abs_size = new Vector3(Mathf.Abs(size.x), Mathf.Abs(size.y), Mathf.Abs(size.z)); float abs_l = 0.0f; float sign = 1.0f; if (type == ECalcuHeight.XDir) { abs_l = abs_size.x; sign = Mathf.Sign(size.x); } else if (type == ECalcuHeight.ZDir) { abs_l = abs_size.z; sign = Mathf.Sign(size.z); } else { return(size); } float s = Mathf.Abs(abs_l / size.y); if (s < 1) { if (s < 0.5f) { float v = abs_size.y % 3; if (EqualsZero(v)) { abs_l = sign * abs_size.y / 3; } else { abs_l = 1; } } else if (s >= 0.5f) { float v = abs_size.y % 2; if (EqualsZero(v)) { abs_l = sign * abs_size.y * 0.5f; } else { v = abs_size.y % 3; if (EqualsZero(v)) { abs_l = sign * abs_size.y / 3; } else { abs_l = 1; } } } } else if (s > 1) { if (s < 2) { abs_l = sign * abs_size.y; } else if (s >= 2 && s < 3) { abs_l = sign * abs_size.y * 2; } else if (s >= 3) { abs_l = sign * abs_size.y * 3; } } if (type == ECalcuHeight.XDir) { size.x = abs_l; } else if (type == ECalcuHeight.ZDir) { size.z = abs_l; } return(size); }
Vector3 CalcuSizeY(IntVector3 begin, IntVector3 end, ECalcuHeight type) { Vector3 size = new Vector3(end.x - begin.x, end.y - begin.y, end.z - begin.z); Vector3 abs_size = new Vector3(Mathf.Abs(size.x), Mathf.Abs(size.y), Mathf.Abs(size.z)); float abs_l = 0.0f; if (type == ECalcuHeight.XDir) { abs_l = abs_size.x; } else if (type == ECalcuHeight.ZDir) { abs_l = abs_size.z; } else { return(size); } float s = Mathf.Abs(abs_l / size.y); if (s < 1) { if (s < 0.3334f) { size.y = Mathf.Sign(size.y) * abs_l * 3; } else if (s > 0.3333f && s <= 0.5f) { size.y = Mathf.Sign(size.y) * abs_l * 2; } else { size.y = Mathf.Sign(size.y) * abs_l; } } else if (s > 1) { if (s < 3) { float v = abs_l % 2; if (EqualsZero(v)) { size.y = Mathf.Sign(size.y) * abs_l * 0.5f; } else { v = abs_l % 3; if (EqualsZero(v)) { size.y = Mathf.Sign(size.y) * abs_l / 3; } else { size.y = 1; } } } else if (s >= 3) { float v = abs_l % 3; if (EqualsZero(v)) { size.y = Mathf.Sign(size.y) * abs_l / 3; } else { size.y = 1; } } } return(size); }