private static void Snap(ZoneTool _this, ref Vector3 point, ref Vector3 direction, ref ItemClass.Zone zone, ref bool occupied1, ref bool occupied2, ref ZoneBlock block) { direction = new Vector3(Mathf.Cos(block.m_angle), 0.0f, Mathf.Sin(block.m_angle)); Vector3 vector3_1 = direction * 8f; Vector3 vector3_2 = new Vector3(vector3_1.z, 0.0f, -vector3_1.x); Vector3 vector3_3 = block.m_position + vector3_1 * 0.5f + vector3_2 * 0.5f; Vector2 vector2 = new Vector2(point.x - vector3_3.x, point.z - vector3_3.z); int num1 = Mathf.RoundToInt((float)(((double)vector2.x * (double)vector3_1.x + (double)vector2.y * (double)vector3_1.z) * (1.0 / 64.0))); int num2 = Mathf.RoundToInt((float)(((double)vector2.x * (double)vector3_2.x + (double)vector2.y * (double)vector3_2.z) * (1.0 / 64.0))); point.x = (float)((double)vector3_3.x + (double)num1 * (double)vector3_1.x + (double)num2 * (double)vector3_2.x); point.z = (float)((double)vector3_3.z + (double)num1 * (double)vector3_1.z + (double)num2 * (double)vector3_2.z); // changed from: // if (num1 < -4 || num1 >= 0 || (num2 < -4 || num2 >= 4)) if (num1 < -4 || num1 >= 4 || (num2 < -4 || num2 >= 4)) { return; } zone = block.GetZone(num1 + 4, num2 + 4); // keep old method (it's only a single call) occupied1 = block.IsOccupied1(num1 + 4, num2 + 4); occupied2 = block.IsOccupied2(num1 + 4, num2 + 4); }
private static void Snap(ZoneTool _this, ref Vector3 point, ref Vector3 direction, ref ItemClass.Zone zone, ref bool occupied1, ref bool occupied2, ref ZoneBlock block) { direction = new Vector3(Mathf.Cos(block.m_angle), 0.0f, Mathf.Sin(block.m_angle)); Vector3 vector3_1 = direction * 8f; Vector3 vector3_2 = new Vector3(vector3_1.z, 0.0f, -vector3_1.x); Vector3 vector3_3 = block.m_position + vector3_1 * 0.5f + vector3_2 * 0.5f; Vector2 vector2 = new Vector2(point.x - vector3_3.x, point.z - vector3_3.z); int num1 = Mathf.RoundToInt((float)(((double)vector2.x * (double)vector3_1.x + (double)vector2.y * (double)vector3_1.z) * (1.0 / 64.0))); int num2 = Mathf.RoundToInt((float)(((double)vector2.x * (double)vector3_2.x + (double)vector2.y * (double)vector3_2.z) * (1.0 / 64.0))); point.x = (float)((double)vector3_3.x + (double)num1 * (double)vector3_1.x + (double)num2 * (double)vector3_2.x); point.z = (float)((double)vector3_3.z + (double)num1 * (double)vector3_1.z + (double)num2 * (double)vector3_2.z); // changed from: // if (num1 < -4 || num1 >= 0 || (num2 < -4 || num2 >= 4)) if (num1 < -4 || num1 >= 4 || (num2 < -4 || num2 >= 4)) return; zone = block.GetZone(num1 + 4, num2 + 4); // keep old method (it's only a single call) occupied1 = block.IsOccupied1(num1 + 4, num2 + 4); occupied2 = block.IsOccupied2(num1 + 4, num2 + 4); }